Uoo-light cz. 2: Pająki

Uoo-light cz. 2: Pająki

Witaj świecie

Tak, Drogi Czytelniku. To już trzeci wpis projektu (wiem – z numeracji wynika co innego). Programowanie zacząć czas. Mamy już zainstalowane najnowsze środowisko Arduino. A właściwie nie mamy – bo od ostatniego wpisu pojawiła się nowsza wersja – z tym, że na pierwszy rzut oka znów niekompatybilna, więc pozostajemy przy 1.6.7). Mamy też dodane narzędzia do programowania modułów opartych na ESP8266. Piałem o tym jak proste w dzisiejszych czasach jest programowanie elektroniki – pora tego dowieść.

[Aktualizacja 15-03-2016: Warto jednak dokładnie czytać mądre strony o instalacji środowiska ESP8266 na Arduino. Nie poszło, bo zapomniałem o katalogu „esp8266com”. Po poprawieniu działa wszystko świetnie z Arduino 1.6.8 – mea culpa.]

It’s alive!

W poprzednich podejściach do tematu zdarzało się, że próba komunikacji z modułem radiowym czy urządzeniem nie powiodła się. Nie wiadomo co było przyczyną – błędy w implementacji komunikacji z modułem, nieodpowiednie zasilanie czy napięcia, problemy z przylutowaniem czy plamy na słońcu. To kolejny powód, żeby w pierwszych próbach wykorzystać NodeMCU a nie sam ESP8266. Odpadają problemy z zasilaniem (wbudowany stabilizator), komunikacją (wbudowany konwerter UART) i problemy lutownicze (NodeMCU jest sprzedawane w pełni złożone z przylutowanymi nóżkami). Nadal problem stanowią plamy na słońcu – ale przynajmniej wiemy kogo winić w przypadku niepowodzenia.

Co potrzebujemy do uruchomienia naszego najpierwszego programu na NodeMCU? Oto lista:

  • NodeMCU
  • Kabel microUSB

No i oczywiście komputer z portem USB, na którym skompilujemy nasz program i wgramy na urządzenie. Tak prezentuje się nasz zestaw uruchomieniowy:

nodeMCU + USB
NodeMCU w podstawce stykowej z kablem USB

Podłączamy urządzenie do portu USB. Powinien nam się pojawić port szeregowy. Uruchamiamy Arduino. Uwaga – na Ubuntu i być może na innych Linuksach dostęp do portu  /dev/ttyX jest ograniczony – najprościej jest uruchomić arduino jako root – ale pewnie nie jest to rozwiązanie do końca bezpieczne – jak ktoś ma lepszy pomysł to zapraszam do opisania w komentarzu :). W menu Narzędzia (Tools – w wersji anglojęzycznej) mamy kilka opcji do ustawienia. Przede wszystkim Płytka (Board) – tu wybieramy „NodeMCU 1.0 (ESP-12E Module)”. Upload using – wybieramy Serial (programowaniem OTA czyli Over the Air zajmiemy się później ale pierwsze programowanie musi odbywać się przez port szeregowy). CPU Frequency – zostawiamy 80MHz (i tak jest to wielokrotnie wyższa częstotliwość niż te osiągane w Arduino – jak będzie nam brakować to zawsze możemy zwiększyć). Flash size – zostawiamy „4M (3M SPIFFS)” (na pewno będzie jeszcze o układzie pamięci w naszym środowisku – dla niecierpliwych link do dokumentacji). Upload speed zostawiamy na 115200. I na koniec najważniejsze – wybieramy port szeregowy, na którym jest nasz NodeMCU.  Wgrywamy sobie gotowca z menu Plik -> Przykłady -> ESP8266 -> Blink.

/*
 ESP8266 Blink by Simon Peter
 Blink the blue LED on the ESP-01 module
 This example code is in the public domain
 
 The blue LED on the ESP-01 module is connected to GPIO1 
 (which is also the TXD pin; so we cannot use Serial.print() at the same time)
 
 Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
*/

void setup() {
 pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
}

// the loop function runs over and over again forever
void loop() {
 digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
 // but actually the LED is on; this is because 
 // it is acive low on the ESP-01)
 delay(1000); // Wait for a second
 digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
 delay(2000); // Wait for two seconds (to demonstrate the active low LED)
}

Klikamy „Wgraj”. I naszym oczom ukazuje się to:

blink

No cóż – może iluminacja nie jest oszałamiająca (dla osób mniej uważnych – obrazek powyżej to animacja) – ale potrafimy „sterować światłem”. Co prawda jest to tylko jedna dioda (łatwo można dodać drugą, która jest na ESP-12 obok anteny) i nie jest to jeszcze sterowanie po WiFi – ale jest to nasz pierwszy działający kod. No może nie nasz – tylko przykładowy – ale w następnych etapach będziemy go rozwijać i wtedy będzie już bardziej nasz.

Pająk

Czas na sterowanie czymś poważniejszym. Zróbmy sobie pająka. Weźmy zasilacz 5v, NodeMCU i moduł z dwoma przekaźnikami (sterowanymi przez optotranzystory). Dodajmy również dwie listwy zasilające – jako urządzenia, które będziemy sterować (wpiąć sobie tam będziemy mogli cokolwiek). Do zasilacza podpinamy tylko 2 kabelki – z fazą i neutralny („uziemić to sobie można w domu pralkę” – jak mawiała mgr Ratuszek na laboratoriach). Do listew zasilających z kolei dołączamy kabel neutralny i uziemienie (na wypadek jakbyśmy chcieli sterować zasilaniem pralki). Fazę natomiast dla każdej listwy przepuszczamy przez przekaźnik. I to tyle prac z niskim napięciem. Przejdźmy do napięć bezpiecznych. 5V z zasilacza podpinamy jako zasilanie do nóżki Vin NodeMCU oraz jako napięcie cewki do modułu z przekaźnikami. Z nodeMCU napięcie 3.3V podłączamy jako napięcie referencyjne do modułu przekaźników. dwa GPIO z NodeMCU podłączamy do wejść modułu przekaźników. Pozostaje nam połączyć masy układów. Całość układa się w taki piękny schemat:

pajak1

Którego sprzętowe urzeczywistnienie wygląda tak:

pajak1

Piękny pająk, prawda? Pracuję nad upchnięciem wszystkich tych kabli w małe pudełko śniadaniowe z Ikei. Będzie to trochę ładniej wyglądać i będzie trochę bezpieczniejsze. Czego nam jeszcze brakuje? Oczywiście przycisków. Dołączymy je później. W najbliższych dniach skupmy się na pierwszym etapie programowania – prosty interfejs www, z którego będziemy mogli sterować naszymi listwami – potem przyjdzie czas na przyciski. Dla osób szczególnie dociekliwych poniżej schemat modułu z przekaźnikami.

schemat modułu z 2 przekaźnikami
schemat modułu z 2 przekaźnikami

Drugi pająk

Uważny czytelnik przypomniałby mi, że w pierwszym wpisie o uoo-light umieściłem zdjęcie jeszcze jednego prototypu. Teraz o nim. Zbudowany na bazie lampki z ikei za 11 złotych. Schemat jak wyżej tylko, że:

  • brakuje uziemienia (lampki tej nie da się w żadnym razie używać w charakterze pralki),
  • jest tylko jedno wyjście z modułu przekaźników (jest użyte do żarówki lampkowej),
  • na „stelażu” z tektury umieściłem zasilacz, nodeMCU i dodatkowo 8 diod z wbudowanymi kontrolerami RGB (WS2812B),
  • dodałem do wejścia analogowego fotorezystor z rezystorem jako czujnik natężenia światła.

Lampka może nie wygląda pięknie (zwłaszcza po zdjęciu klosza), ale jak najbardziej nadaje się na nasz prototyp – i w dodatku możemy trochę poszaleć z kolorami (4 indywidualnie programowalne diody święcą w górę i 4 w dół). Dzięki dwóm różnym prototypom jest większa szansa na bardziej modułowy soft z naszej strony umożliwiający wgrywanie tegoż softu na różne konfiguracje sprzętowe. Poniżej kilka zdjęć lampki.

Dodaj komentarz