Sterowanie pinami RasbperryPi

Co uzyskamy.

Całość kursu jest dostępna w formie wideo.

Do RasbperryPi jest podłączony przycisk i dioda Led. Na stronie internetowej będą dwa przyciski jeden będzie kontrolował stan diody, drugi będzie kontrolowany przez przycisk na RPi. Analogicznie w aplikacji mobilnej będą dwa przełączniki jeden do sterowania diodą Led drugi sterowany przez RasbperryPi.

Jest to bardzo prosty przykład sterowania stanami pinów RasbperryPi.

Aplikacja na Androida ( nie jest wymagana, jak nie chcesz sterować aplikacją odrazu przejdź do kroku dodawania strony internetowej)

Pobierz i zainstaluj Arduino Remote LITE. Zaloguj się aplikacją do swojego konta w RemoteMe. Jak nie masz konta w RemoteMe załóż je tutaj

Po zalogowaniu na aplikacji mobilnej w zakładce Variables zostaną utworzone zmienne sterowane przez aplikację.

  1. Zakładka Variables (zmienne)
  2. Zmienne
  3. Dobrze jest kliknąć ikonkę dyskietki i zaznaczyć zmienne Relay_01 i Relay_02. Dzięki temu pomiędzy resetowanie programy na RasbperryPi czy włączaniu strony aplikacji mobilnej będziemy mieli ostatni zapisany stan

Możemy zmieniać stan zmiennych przez aplikację, zmiany pojawią się w belce poszczególnych zmiennych.

 

 

Dodawanie strony internetowej (nie jest wymagany, ale wtedy musisz zainstalować aplikacja mobilną)

Kod Samej strony zostanie wygenerowany automatycznie, gdy dodamy korzystając z kreatora (wizarda), jest to najprostszy sposób. Można oczywiście pisać własne kontrolery korzystając z gotowych bibliotek które umożliwiają komunikacje z systemem.

Strony internetowe są przechowywane w chmurze remoteMe i jest do nich dostęp z każdego miejsca gdzie mamy internet. Możesz więc sterować swoim RaspberryPi z dowolnego miejsca na świecie.

Dodamy jedną stronę internetową z dwoma przyciskami. Przyciski parujemy ze zmiennymi RELAY_01 i RELAY_02

 

Dodawanie strony

  • Zakładka Devices
  • New Device w prawym górnym rogu
  • New WebPage
    • name :controlWeb
    • deviceId:10
    • template — nie zmieniamy.
    • więcej o stronach internetowych tutaj
  • W nowo utworzonej stronie klikamy index.html, a następnie “Edit with wizard”
    • Klikamy przycisk: Insert Component
    • i wypełniamy okno:

    • nowo utworzony przycisk będzie zmieniał stan zmiennej Relay_01
    • dodajemy analogicznie drugi przycisk do zmiennej RELAY_02
    • zamykamy okno
    • klikamy na index.html następnie open in newTab
    • Po kliknięciu na przyciski zmienia się ich stan. Analogicznie, gdy mamy otwartą aplikację androidową zmienia się stan przełączników.

 

RasbperryPi

Ogólnie rzecz biorąc na RasbperryPi będzie uruchomiony program (instalacja programu tutaj ) Po uruchomieniu w skonfigurowaniu programu połączy się on do naszego konta w remoteMe i uruchomi także nasz skrypt pythonowy który będzie odpowiedzialny za sterowanie stanami pinów, a także będzie reagował na wciskanie przycisku podpiętego do jednego z pinów. W czasie tworzenia skryptu pythonowego poprzez generator, tworzone są metody do sterowania zmiennymi. Uzupełniamy funkcje w zależności co chcemy aby nasze Rpi zrobiło gdy stan jakiejś zmiennej się zmieni, albo w przypadku tego kursu skopiujemy cały skrypt i po prostu go wkleimy w oknie edycji

Teraz pora podłączyć nasze RasbperryPi. Podłączamy według schematu. Pamiętając, żeby sprawdzić połączenia przed włączeniem RPi, inaczej możesz spalić swoją malinkę

 

  • Anodę diody led jest podłączona do pinu 19
  • Katoda diody led przez opornik jest podłączona do uziemienia
  • Jedna nóżka przycisku jest podłączona do pinu 26 druga do uziemienia

Po podłączeniu przycisku i diody pora napisać skrypt sterujący więcej o skryptach tutaj

W menu kontekstowym RasbperryPi w zakładce devices wybieramy “Add external script with wizard”

W pierwszym kroku wybieramy

drugi krok dediveId:5, name python.

W kroku ostatnim klikamy na “create Device”. Wtedy program zarządzający na RasbperryPi zostanie zresetowany i po ponownym podłączeniu otrzymamy

Zielone ikonki połączenia oznaczają, że zarówno nasze RPi jak i skrypt pythonowy są podłączone do chmury RemoteMe

Oczywiście dioda ani przycisk nie będą działały dopóki nie zaimplementujemy funkcji do obsługi i zmieniania stanu zmiennych remoteMe

  • Rozwijamy belkę Python script device
  • następnie klikamy na python.py i wybieramy Edit
  • Wklejamy kod:
    Po zapisaniu i automatycznym zresetowaniu skryptu i programu zarządzającego, będziemy mogli sterować naszą diodą przez stronę internetową albo aplikacje na smartphonie. A jak klikniemy przycisk podłączony do Rpi, stan przycisku na stronie i przełącznika w aplikacji zmieni się na przeciwny.

 

Jak to działa

Kiedy w zakładce Variables rozwiniesz belki Relay_01 i Relay_02 otrzymamy:

oznacza to że wszystkie trzy urządzenia (strona internetowa, Rpi i aplikacja na androida) obserwują zmienne RELAY_01 i RELAY_02, co oznacza że jeżeli zostanie ona zmieniona przez jedno z urządzeń, zmiana zostanie rozpropagowana na wszystkie inne urządzenia.

Więcej tutaj, tutaj i tutaj

 

Kiedy wartość zmiennych RELAY_01 lub RELAY_02 jest zmieniana, zmiana jest propagowana do innych urządzeń które te zmienne obserwują. W RasbeprryPi kiedy przyjdzie informacja o zmianie wartości zmiennej zostanie wywołana funkcja

 

a ta funkcja po prostu zmienia stan piny do którego jest podpięta dioda led

Kiedy natomiast zostanie zmienia zmienna RELAY_02 :

po prostu zapamiętujemy ją w zmiennej globalnej relay2

Kiedy wciśniemy przycisk podpięty do RPi

A ta funkcja  zmieni wartość zmiennej relay2 na przeciwny i wyśle nową wartość do systemy remoteme  setRELAY_02(relay2) , a system remoteMe rozpropaguje tą zmianę do strony i aplikacji mobilnej.