W tym artykule dowiecie się w jaki sposób sterować przekaźnikiem wbudowanym w moduł ESP-01 za pomocą aplikacji mobilnej. Do stworzenia aplikacji wykorzystamy środowisko MIT APP Inventor.
Spis treści
- Krótki opis
- Niezbędne elementy
- Kod źródłowy i konfiguracja modułu
- Aplikacja mobilna
- Pliki do pobrania
Krótki opis
Narzędzie programistyczne MIT APP Inventor dzięki kompatybilności z elektroniką, pozwala na stworzenie aplikacji komunikującej się z modułem ESP8266 za pomocą WiFi. Do konfiguracji modułu wykorzystamy gotowy szkic zawarty w bibliotece ESP8266WiFi, który działa w oparciu o stworzony serwer pod adresem IP odpowiadającym naszemu ESP. Na potrzeby ukazania poprawności działania układu do sterowania wykorzystamy diodę LED.
Niezbędne elementy
- Adapter USB/UART do ESP8266.
- dowolne źródło zasilania prądem DC w zakresie od 5 do 12 V w celu zasilania modułu ESP-01,
- dowolne źródło zasilania 5 V DC diody ,
- moduł Relay ESP-01,
- moduł WiFi ESP8266,
- dioda LED.
Schemat połączenia
Kod źródłowy i konfiguracja modułu
Aby poprawnie skonfigurować moduł ESP8266 należy zewrzeć ze sobą pin GPIO2 adaptera z masą w celu wprowadzenia go w tryb konfiguracji. Wybór odpowiednich pinów przedstawiony jest na zdjęciu poniżej.
Jeżeli piny zostały odpowiednio ze sobą zwarte, możemy przejść do wgrywania odpowiedniego programu do naszego modułu. W tym celu należy dodać nasz moduł do Arduino IDE jako osobną płytkę. Uruchamiamy środowisko Arduino, klikamy w zakładkę Plik->Preferencje. Naszym oczom ukaże się następujący widok.
W pole “Dodatkowe adresy URL do menadżera płytek” wpisujemy następujący link http://arduino.esp8266.com/stable/package_esp8266com_index.json i zatwierdzamy przyciskiem OK.
W kolejnym kroku wybieramy opcję Narzędzia->Płytka:->Menadżer płytek. Naszym oczom okaże się widok menadżera płytek.
Jeżeli wszystkie kroki wykonaliśmy poprawnie, to w widoku Narzędzia->Płytka: powinniśmy mieć możliwość wyboru różnych modułów z rodziny ESP8266. Wybieramy opcję Generic ESP8266 Module.
Aby wczytać przykład użyty w artykule, należy uprzednio pobrać i zainstalować bibliotekę ESP8266WiFi. Gotowy plik znajduje się na końcu artykułu. Jeżeli biblioteka została pomyślnie zainstalowana, to przechodzimy do wgrania szkicu. Wybieramy kolejno: Plik->Przykłady->ESP8266WiFi->WiFiManualWebSerwer.
Wgrany szkic wymaga kilku zmian w celu skonfigurowania modułu pod naszą sieć WiFi.
#include <ESP8266WiFi.h> #ifndef STASSID #define STASSID "Nazwa twojej sieci" #define STAPSK "haslo do sieci" #endif #define RELAY_PIN 0 const char* ssid = STASSID; const char* password = STAPSK; WiFiServer server(80);
Najistotniejszym elementem jest wpisanie przy definicji STASSID nazwy sieci WiFi do której podłączony będzie nasz telefon. Adekwatnie w polu STAPSK wpisujemy hasło do tej samej sieci. Dodatkowym elementem jest zdefiniowanie nazwy RELAY_PIN która odpowiada za wyjście GPIO0 naszego modułu, pod które podpięty jest przekaźnik. Domyślnie szkic wykorzystuje port GPIO2, który umożliwia jedynie sterowanie wbudowaną w moduł diodą.
void setup() { Serial.begin(115200); // prepare LED pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, 0);
W funkcji setup() ustawiamy stan pinu RELAY_PIN na wyjście oraz początkowo ustawiamy stan przekaźnika na niski. Ta linijka jest jedynie opcjonalna i może zostać usunięta.
// Set LED according to the request digitalWrite(RELAY_PIN, val);
Teraz przechodzimy do dolnej części kodu gdzie wyszukujemy funkcji odpowiadającej za zmianę stanu naszego przekaźnika w zależności od naciśniętego przycisku. Zmieniamy wartość z LED_BUILTIN na RELAY_PIN.
// Match the request int val; if (req.indexOf(F("/gpio/0")) != -1) { val = 0; } else if (req.indexOf(F("/gpio/1")) != -1) { val = 1; } else { Serial.println(F("invalid request")); val = digitalRead(RELAY_PIN); }
Działanie programu opiera się na utworzeniu serwera o adresie IP odpowiadającemu naszemu modułowi. Każdy z przycisków tworzy wirtualne przekierowanie na stronę, a program czyta koniec jego adresu w celu zweryfikowania który przycisk został wciśnięty. I tak dla przykładu przekierowanie na stronę http://192.168.1.73/gpio/1 sprawia że program przeczyta wartość /gpio/1, co odpowiada stanowi wysokiemu diody. Sprawa przekierowania zostanie szerzej wyjaśniona w rozdziale o aplikacji mobilnej. Jeżeli poprawnie ustawiliśmy wszystkie parametry, to wpinamy moduł ESP8266 do adaptera i wgrywamy program. Podczas wgrywania szkicu uruchamiamy monitor portu szeregowego dla liczby bodów 115200 i odczytujemy wartość IP naszego modułu.
Aplikacji mobilna
Tak jak wspomniałem na początku artykułu, do napisania aplikacji wykorzystamy narzędzie MIT App Inventor. W tym celu wchodzimy na stronę https://appinventor.mit.edu/ i klikamy przycisk Create Apps!. Rejestrujemy się lub logujemy za pomocą konta google i tworzymy nowy projekt. Naszym oczom ukaże się następujący widok :
W polu user interface wybieramy button i przeciągamy na pustą przestrzeń na ekranie telefonu. Kolejnym krokiem jest dodanie z zakładki Connectivity elementu “Web“. Jeżeli wszystko wykonaliśmy poprawnie, to nasz interfejs i lista komponentów powinny przedstawiać się następująco :
Następnie przechodzimy do konfiguracji naszym przycisków. W tym celu naciskamy przycisk “Blocks” widoczny w prawym górnym rogu strony. W zakładce blocks wybieramy Button 1 i przenosimy na pustą przestrzeń pierwszy blok od góry.
Z zakładki Web wybieramy blok SET URL oraz blok JOIN z zakładki text.
W miejsce pustych pól join dodajemy dwa puste pola tekstowe w miejsce których wpisujemy kolejno nasz adres w formacie : http://’adres ip modułu esp’, a dla drugiego pola wpisujemy /gpio/1. Na końcu wybieramy funkcję GET z zakładki Web i umieszczamy ją poniżej. Gotowy blok przedstawia się następująco :
Kopiujemy blok i postępujemy adekwatnie dla przycisku realizującego włączenie przekaźnika.
Szerszy opis możliwości stylizacji i tworzenia zaawansowanych bloków znajdziecie w bogatej bazie poradników wpisując w google frazę “MIT App Inventor tutorial”. Aby uruchomić aplikację na telefonie należy pobrać ze sklepu google play aplikację o nazwie ‘MIT AI2 Companion‘. W strukturze naszego projektu klikamy w zakładkę Connect i wybieramy AI Companion. Ukaże nam się kod, który po wpisaniu w aplikacji mobilnej połączy nas z aktualnie używanym projektem.
Po stworzeniu aplikacji podpinamy nasz moduł ESP8266 do modułu przekaźnika, wpinamy odpowiednie zasilanie i układ sterowania przekaźnikiem jest gotowy. Więcej o zasilaniu przekaźnika znajdziecie w poprzednim artykule.