Reklama
Wi-Fi jest niezbędnym zestawem do każdego projektu DIY w Internecie rzeczy, ale nasze ulubione Arduino nie jest wyposażone w Wi-Fi, a dodanie osłony Wi-Fi może przynieść całkowity koszt około 40 USD. Co jeśli powiem ci, że jest płyta deweloperska kompatybilna z Arduino z wbudowanym Wi-Fi za mniej niż 10 USD? Cóż, jest.
Poznaj Arduino Killer: ESP8266. To tylko kwestia czasu, zanim korona zostanie skradziona z błyszczącej głowy naszej drogiej planszy rozwojowej Arduino. Czy można zakochać się w płytce drukowanej?
Pomijając chwytliwe nazwy, ESP8266 (znany również jako NodeMCU) był pierwotnie sprzedawany jako tani dodatek do Wi-Fi dla tablic Arduino, dopóki społeczność hakerów nie zorientuje się, że można wyciąć Arduino z równania całkowicie.
W ciągu niecałego roku ESP8266 zyskał na popularności, a teraz jest tak dobrze obsługiwany i rozwijany, że jeśli obecnie używasz Arduino, musisz wstać i zwrócić uwagę. Kup teraz, a następnie postępuj zgodnie z tym przewodnikiem, aby rozpocząć programowanie ESP8266 - wszystko z poziomu znanego Arduino IDE.
Oczywiście nie jesteś ograniczony do używania Arduino IDE - są one również kompatybilne z Luą (która wygląda jak uproszczony Python do mojego oczy początkujące), ale ponieważ zajmujemy się tym z perspektywy tych, którzy nauczyli się Arduino, to omówimy wyłącznie dzisiaj.
W okolicy jest już sporo modeli ESP8266, ale zamierzam polecić ten: ESP-12E (znany również jako NodeMCU 1.0 lub najnowszy brat NodeMCU 2.0).
Jest nieco droższy od innych (6,50 USD w porównaniu do 4 USD!), Ale zawiera sterownik szeregowy potrzebny do zaprogramowania układu i ma wbudowany regulator mocy, a także wiele pinów IO. Jest szeroko obsługiwany i naprawdę nie potrzebuje niczego oprócz połączenia USB do programowania lub zasilania, więc najłatwiej jest z nim pracować. Jeśli kupisz inny rodzaj płytki ESP8266, możesz potrzebować osobnego regulatora mocy 3,3 V i odpowiedniego połączenia FTDI do programowania.
Rozpoczęcie pracy z ESP8266-12E i Arduino
Pierwszy, zainstaluj sterowniki szeregowe dla tej tablicy. Może być konieczne wyłącz podpisywanie KEXT jeśli korzystasz z El Capitan z powodu nowych systemów bezpieczeństwa.
Następnie musimy włączyć obsługę ESP8266 z poziomu menedżera zarządu Arduino IDE. Otwórz Preferencje i wpisz następujący adres URL tam, gdzie jest napisane Dodatkowe adresy URL menedżera zarządu:
Naciśnij Ok, a następnie otwórz Menedżer zarządów od Narzędzia -> Tablica menu, wyszukaj esp8266 i zainstaluj platformę. Teraz powinieneś zobaczyć wybór dla NodeMCU 1.0.
Pozostaw procesor i szybkość przesyłania bez zmian, a następnie wybierz nowo zainstalowany port szeregowy. W systemie Mac wygląda to jak cu. SLAB_USBtoUART.
Jako pierwszy program proponuję prosty skaner Wi-Fi - znajdź go Plik -> Przykłady -> ESP8266WiFi -> WifiScan. Pamiętaj, że przesyłanie jest dość powolne, ale w końcu powie „gotowe przesyłanie” i w tym momencie (nie wcześniej, albo przerwiesz proces przesyłania) możesz otworzyć monitor szeregowy. Powinieneś zobaczyć coś podobnego do tego:
Sukces! Teraz spróbujmy połączyć się z jednym.
Oto absolutnie prosty kod barebone do łączenia się z siecią Wi-Fi. Nie robi nic poza połączeniem, ale możesz dodać to później. Pamiętaj tylko, aby zmienić YOUR_SSID i YOUR_PASSWORD na swoje dane Wi-Fi. Prześlij, otwórz konsolę szeregową i powinieneś zobaczyć, jak się łączy.
#include const char * ssid = "YOUR_SSID"; const char * hasło = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print („Łączenie z”); Serial.println (ssid); WiFi.begin (ssid, hasło); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print („.”); } Serial.println (""); Serial.println („WiFi połączone”); Serial.println („Adres IP:”); Serial.println (WiFi.localIP ()); } void loop () {}
Czy to nie wspaniałe, jak śmiesznie to było proste?
Zanim przejdziemy dalej, oto schemat pinouta - może się przydać później. Zauważ, że numery pinów, o których mowa w kodzie, to numery GPIO, a nie D0-16 prawdopodobnie zapisane na płytce drukowanej. Jeśli absolutnie, pozytywnie nie możesz zrozumieć, dlaczego czujnik nie działa, prawdopodobnie pomieszałeś numery pinów.
Szybki inteligentny czujnik domowy z MQTT i DHT11
Oto praktyczny przykład, który możesz od razu wykorzystać do monitorowania domu. Dodamy czujnik temperatury i wilgotności DHT11, a następnie raportujemy wartości przy użyciu protokołu MQTT przez sieć Wi-Fi, w moim przypadku do systemu automatyki domowej OpenHAB dla majsterkowiczów (jeśli nie, możesz przeczytać nasz przewodnik dla początkujących, jak uruchomić OpenHAB na Raspberry Pi Rozpoczęcie pracy z OpenHAB Home Automation na Raspberry PiOpenHAB to dojrzała platforma automatyki domowej o otwartym kodzie źródłowym, która działa na różnych urządzeniach i jest niezależny od protokołu, co oznacza, że można go podłączyć do prawie każdego sprzętu automatyki domowej na rynku dzisiaj. Czytaj więcej oraz część 2, która dotyczy konkretnie instalowanie serwera MQTT Przewodnik dla początkujących OpenHAB Część 2: ZWave, MQTT, zasady i wykresyOpenHAB, oprogramowanie do automatyzacji domu o otwartym kodzie źródłowym, znacznie przewyższa możliwości innych systemów automatyki domowej na rynku - ale konfiguracja nie jest łatwa. W rzeczywistości może być wręcz frustrujące. Czytaj więcej ).
Po stronie okablowania podłącz czujnik DHT do GND, 3.3v, i ~ D4 (lub GPIO 2). Na razie to wszystko, czego potrzebujemy.
Pobieranie te biblioteki MQTT i DHT. Nawet jeśli już je masz, mimo to pobierz te, zrób kopię zapasową tego, co masz, i zastąp je. Najnowsza biblioteka DHT11 firmy Adafruit wykorzystuje automatyczny algorytm do określania prędkości, z jaką dane są odczytywane z czujnika, ale są uszkodzone na ESP8266 i 90% czasu kończy się niepowodzeniem odczyty.
W starej wersji 1.0 biblioteki, którą zawarłem do pobrania, możesz ręcznie zmienić czas: 11 działa najlepiej dla tych kart ESP2866. Przejrzałem także wiele kopii biblioteki MQTT, próbując znaleźć dobry oddzwonić funkcja, wreszcie lądowanie na tym dołączonym. Po wymianie musisz ponownie uruchomić Arduino IDE.
Tutaj jest kompletny kod dla projektu. U góry znajdują się wszystkie zmienne, które należy zmienić, w tym szczegóły Wi-Fi, serwer MQTT (można użyć adresu URL zamiast tego, jeśli używasz serwera w chmurze (choć nie ma uwierzytelnienia) i kanałów, na których możesz publikować dane.
Oto jak to działa i kilka notatek:
- Najpierw łączymy się z Wi-Fi, następnie z serwerem MQTT, a następnie zaczynamy od głównego pętla().
- W pętli sondujemy czujnik DHT co 60 sekund i publikujemy odczyty do odpowiednich kanałów MQTT. Ponownie, jeśli okaże się, że większość odczytów powoduje komunikat o błędzie, masz niepoprawną wersję biblioteki DHT - przejdź na wersję 1.0.
- client.loop () przekazuje kontrolę do biblioteki MQTT, pozwalając jej reagować na przychodzące wiadomości.
- Jest wiadomość otrzymana() funkcja, w której obsługujemy wiadomości przychodzące - po prostu zrób prostą instrukcję if, aby porównać ładunek z oczekiwaną wiadomością. Możesz użyć tego na przykład do aktywacji przekaźnika.
- Po uruchomieniu ich przez kilka dni okazało się, że losowo przestaną działać - zakładam, że to jakiś wyciek pamięci, ale biorąc pod uwagę Nie mam umiejętności kodowania, aby sobie z tym poradzić i może to być z bibliotekami podstawowymi, zdecydowałem się na prosty miękki reset co dzień. Dokładnie dzień po aktywacji węzłów czujników same się zrestartują.
- Podczas zasilania tych tanich modułów DHT11 z 3,3 V wartości wilgotności są znacznie niższe niż powinny. Rozwiązałem to za pomocą prostego pomnożenia i skalibrowałem względem komercyjnego czujnika. Radzę też potwierdzić w oparciu o własne znane źródło, zanim zaczniesz polegać na odczytach. Alternatywnie, zasil je 5 V - ale musisz umieścić przełącznik poziomu logicznego 5v-3.3v między pinem danych a ESP8266, w przeciwnym razie go uszkodzisz.
Jeśli wszystko poszło dobrze, powinieneś teraz otrzymywać odczyty czujników w brokerze MQTT i możesz połączyć je z OpenHAB, jak opisano w część 2 naszego przewodnika dla początkujących Przewodnik dla początkujących OpenHAB Część 2: ZWave, MQTT, zasady i wykresyOpenHAB, oprogramowanie do automatyzacji domu o otwartym kodzie źródłowym, znacznie przewyższa możliwości innych systemów automatyki domowej na rynku - ale konfiguracja nie jest łatwa. W rzeczywistości może być wręcz frustrujące. Czytaj więcej , gdzie pokazałem również, jak sporządzić wykres danych.
Żegnaj Arduino, tak bardzo cię kochaliśmy. Żartuję: nie wszędzie w moim domu można nawet korzystać z Wi-Fi, więc do tych miejsc nadal potrzebuję sieci kratowej z odbiornikami Arduino i RF.
Zabawny projekt, sprawdź jak zrobić przycisk Wi-Fi za pomocą ESP8266 Jak zrobić własny przycisk Wi-Fi podłączony za pomocą ESP8266W tym samouczku dowiesz się, jak utworzyć przycisk z obsługą Wi-Fi za pomocą NodeMCU i IFTTT. Czytaj więcej .
Ale co zrobisz z ESP8266? Jakieś projekty wykorzystujące ESP8266, które chciałbyś zobaczyć w MakeUseOf? Daj nam znać w komentarzach!
James ma licencjat z zakresu sztucznej inteligencji i jest certyfikowany przez CompTIA A + i Network +. Jest głównym programistą MakeUseOf i spędza wolny czas grając w paintball VR i gry planszowe. Buduje komputery od dziecka.