Podłączanie esp8266 do Arduino. Zespół płytki rozwojowej ESP8266

Zdecydowałem się na naukę Arduino. Zbuduj „inteligentny” dom. Od czegoś trzeba zacząć.
W oparciu o moduł WI-FI ESP8266 można uzyskać czujnik bezprzewodowy temperatura, wilgotność, ciśnienie, światło... Wystarczy zaktualizować oprogramowanie modułu i podłączyć czujniki. Nie są wymagane żadne dodatkowe mikrokontrolery.
Około dwa lata temu na chińskim rynku pojawiły się tanie moduły WI-FI ESP8266 od chińskiego dewelopera. to nie jest proste Moduł WI-FI, ale pełnoprawny 32-bitowy mikrokontroler z własnym zestawem GPIO, w tym SPI, UART, I2C.

Dane techniczne:
Procesor: jednordzeniowy Tensilica L106 o częstotliwości do 160 MHz.
Obsługiwane standardy WI-FI: 802.11 b/g/n.
Obsługiwane typy szyfrowania: WEP, WPA, WPA2.
Obsługiwane tryby pracy: Klient (STA), Punkt Dostępowy (AP), Klient+Punkt Dostępowy (STA+AP).
Napięcie zasilania 1,7...3,6 V.
Pobór prądu: do 215mA w zależności od trybu pracy.
Liczba GPIO: 16 (a właściwie aż 11). Dostępne na modułach: ESP-01 - 4, ESP-03 - 7+1, w tym UART. Istnieją inne opcje modułu.
Interfejsy: 1 ADC, I2C. UART, SPI, PWM.
Zewnętrzną pamięć Flash można ustawić w zakresie od 512KB do 4MB.
RAM danych 80 kB, RAM instrukcji - 64 kB.
Zobaczmy, w jakiej formie to wysłali.


Zamówiłem od razu trzy moduły. Do inteligentnego domu jeden nie wystarczy.

Te moduły są niezwykłe. Posiadać zdolność do łączenia się antena zewnętrzna.


Na stronie sklepu nie ma żadnych informacji technicznych.
Dlatego skupiamy się na tym, co znajduje się na planszy i tym, co wykopaliśmy.
Obwód modułu składa się z minimalnej liczby części: samego układu ESP8266,


pamięć flash 25Q41BT (4M-bitowa pamięć szeregowa Flash, 512 KB, 256 bajtów na programowalną stronę)

i kwarcowy przy 26 MHz.

Za mało pamięci na poważne projekty. Metoda powiększania jest prosta. Wystarczy wlutować pamięć MS do bardziej pojemnej. Niedawno pojawiła się recenzja Muski:

Dla proste projekty ten, który kosztuje, wystarczy.
Do zaprojektowania naszych zadań zdecydowano się wykorzystać model płytki prototypowej. Ale pojawił się problem.


Wyjścia do programowania modułu były wyraźnie „zbędne”. Musiałem to trochę przerobić.

Zdjęcia po lewej stronie są oryginałem, zdjęcia po prawej stronie są po przeróbkach. Nikogo do tego nie zmuszam. To tylko moja decyzja, tak jest dla mnie wygodniej.
Teraz nic nie staje na przeszkodzie, a programowanie jest wygodne.


Jak pisałem wcześniej, moduły te mogą współpracować zarówno z anteną wewnętrzną (na sygnecie), jak i anteną zewnętrzną. Wstępnie moduł jest „skonfigurowany” do współpracy z anteną zewnętrzną. Aby dokonać ponownej konfiguracji, będziesz musiał przelutować zworkę rezystancji.


Postanowiłem sprawdzić jak bardzo różni się zysk anteny wewnętrznej i zewnętrznej. Właśnie w tym celu przelutowałem zworkę na jednym module.
Pojawiła się jednak kolejna trudność: dwa z trzech modułów dotarły puste (bez flashowania).
Jednocześnie trenowałem.
Przydał się kabel konwertujący (USB na RS232 TTL UART) z jednej z moich recenzji o woltomierzu z funkcją licznika PZEM-004.


Zwykły kabel konwertujący.

Mam tańszą opcję. Ale ten jest wygodniejszy (dla mnie).
Instaluję moduł na płytce stykowej i wstawiam do niego przykładowy szkic dla ESP8266 za pomocą ArduinoIDE. Są niuanse. Spójrzmy na schemat połączeń.

Moduł zasilany był z zewnętrznego źródła. W moim przypadku zasilacz był dołączony do płytki prototypowej.
Podczas ładowania szkicu GPIO 00 jest ustawione na Gnd. Aby uruchomić szkic (po flashowaniu), podłącz GPIO 00 do +3,3V.
Podłączyłem, wszystko działa. Pozostaje tylko sprawdzić, która antena ma większy zysk.
Zainstalowałem trzy moduły na płytce stykowej.
- ESP-201 z anteną wewnętrzną.
- ESP-201 z „ogonem” na antenę zewnętrzną (w zestawie).
- I już standardowy moduł oparty na ESP8266, zakupiony rok temu z tego linku:

Do zasilania użyłem PowerBanku. Dla czystości eksperymentu musieliśmy udać się niemal w teren. Jednak jeden nieautoryzowany router został jeszcze złapany :) Nazwa na wykresie została usunięta. To nie będzie przeszkadzać.
Ocenię siłę sygnału za pomocą programu akrylowego Wi-Fi. Programów jest wiele, także na smartfony. Ale ten może śledzić wszystkie zmiany dynamiki.
W bliskiej odległości od modułów.


Wifi_int_ant - ESP-201 z anteną wewnętrzną.
Wifi_ext_ant - ESP-201 z „ogonem” na antenę zewnętrzną.
WeatStat - ESP8266,
Odsunął się na odległość 10 metrów.


Odsunął się o kolejne 10 metrów.


Więcej.


I dalej.


Błędy pomiarowe są naturalnie obecne. Ale ogólny obraz jest jasny.
Pora ogłosić zwycięzców.
1. miejsce: ESP-201 z anteną wewnętrzną.
2. miejsce: moduł standardowy oparty na ESP8266.
3 miejsce: ESP-201 z „ogonem” na antenę zewnętrzną.
Przylutowane do puszki skondensowanego mleka.


Obraz naprawdę się zmienił.


To nie była sprawa kobiety... :)
Z anteną zdalną sygnał jest znacznie silniejszy. Nawet jeśli antena jest zwykłą puszką.
To w zasadzie tyle. To co napisałem powinno wystarczyć do poprawnych wniosków. Jeśli coś jest niejasne, zadawaj pytania. Być może pominąłem pewne punkty.
Mam nadzieję, że przynajmniej komuś to pomogło.
Powodzenia!
Ciąg dalszy nastąpi…

Produkt został udostępniony do napisania recenzji przez sklep. Recenzja została opublikowana zgodnie z punktem 18 Regulaminu.

Planuję kupić +33 Dodaj do ulubionych Recenzja przypadła mi do gustu +29 +58

Z modułem Wi-Fi.

NA Arduino Uno WiFi jest zapewnione we wszystkim wygodną pracę z mikrokontrolerem: 14 wejść/wyjść cyfrowych (6 z nich można wykorzystać jako wyjścia PWM), 6 wejścia analogowe, złącze USB, złącze zasilania, złącze programowania w obwodzie (ICSP) i przycisk resetowania mikrokontrolera.

Najważniejszym elementem płytki jest moduł WiFi ESP8266, który umożliwia Arduino wymianę informacji z innymi modułami za pośrednictwem sieci bezprzewodowych 802.11 b/g/n.

ESP8266 umożliwia flashowanie płytki Arduino bez użycia kabla USB w trybie OTA (Firmware Over The Air).

Recenzja wideo płytki

Podłączenie i konfiguracja

Aby rozpocząć pracę z płytką WiFi Arduino Uno, system operacyjny W systemie Windows pobierz i zainstaluj na swoim komputerze zintegrowane środowisko programistyczne Arduino - Arduino IDE.

Coś poszło nie tak?

Konfiguracja modułu WiFi

Oprogramowanie Arduino przez Wi-Fi

Arduino Uno WiFi ma jeszcze jeden fajny bonus – możliwość przesyłania szkiców bez użycia kabla USB w trybie OTA (Firmware Over The Air). Przyjrzyjmy się bliżej, jak to zrobić.


W tym celu należy wejść do menu: Narzędzia Port i wybierz żądany port.

Ponieważ flashujemy Arduino przez Wi-Fi, płyta zostanie określona jako urządzenie zdalne z adresem IP

Środowisko jest skonfigurowane, płyta jest podłączona. Możesz przystąpić do przesyłania szkicu. Arduino IDE zawiera dużą listę gotowych przykładów, w których można zobaczyć rozwiązanie każdego problemu. Wybierzmy spośród przykładów mrugania diody LED - szkic „Blink”.
Sflashuj tablicę, klikając ikonę pobierania programu.
Po uruchomieniu dioda LED zacznie migać raz na sekundę. Oznacza to, że wszystko się udało.

Teraz możesz przejść dalej przykłady użycia.

Przykłady użycia

serwer internetowy

Skonfigurujmy prosty serwer WWW, który wyświetli stronę z aktualnymi wartościami wejść analogowych.

serwer WWW.ino /* Przykład prostego serwera WWW działającego na Arduino Uno WiFi. Serwer wyświetla wartości na wejściach analogowych i aktualizuje informacje co dwie sekundy. Skontaktuj się z serwerem pod adresem http:// /arduino/webserver/ Uwaga: przykład działa tylko z wersją Arduino Uno WiFi Developer Edition. */#włączać #włączać void setup() ( Wifi.begin () ; Wifi.println („Serwer WWW działa” ); // Wyświetl komunikat o uruchomieniu serwera w konsoli Wi-Fi) void pętli() ( while (Wifi.available () ) ( proces(Wifi) ; ) opóźnienie(50 ) ; ) void proces(klient WifiData) ( String polecenie = klient.readStringUntil ("/" ) ; if (polecenie = = "serwer WWW" ) (Serwer WWW(klient) ; ) ) void WebServer(klient WifiData) ( client.println("HTTP/1.1 200 OK" ) ; client.println("Typ zawartości: tekst/html" ) ; klient. println („Połączenie: zamknij”); klient.println („Odśwież: 2”); // Nagłówek określający okres odświeżania strony w sekundach klient.println(); klient.println(" " ) ; // Utwórz stronę klient.println( " Serwer sieciowy UNO WIFI " ) ; klient.print( "

Przykład wyprowadzania wartości z pinów analogowych

"
) ; klient.print("
    " ); for (int analogChannel = 0 ; analogChannel< 4 ; analogChannel++ ) { int sensorReading = analogRead(analogChannel) ; client.print ("
  • na wejściu analogowym”) ; klient.print(analogChannel) ; klient.print(": " ); klient.print (odczyt czujnika) ; klient.print ("
  • " ) ; ) klient.println ( "
" ) ;klient.print (DELIMITER) ; // Nie zapomnij zamknąć połączenia! }

Elementy planszowe

Mikrokontroler ATmega328P

Sercem platformy Arduino Uno WiFi jest 8-bitowy mikrokontroler Rodzina AVRów-ATmega328P.

Mikrokontroler ATmega16U2

Mikrokontroler ATmega16U2 zapewnia komunikację pomiędzy mikrokontrolerem ATmega328P a portem USB komputera. Po podłączeniu do komputera Arduino Uno WiFi jest wykrywane jako wirtualny port COM. Wykorzystuje oprogramowanie układowe układu 16U2 standardowe sterowniki USB-COM, więc nie jest wymagana instalacja zewnętrznego sterownika.

Piny zasilające

    VIN: Napięcie z zewnętrznego źródła zasilania (niezwiązane z 5V z USB lub innym regulowanym napięciem). Za pomocą tego pinu można zarówno zasilać zewnętrzne zasilanie, jak i pobierać prąd, jeśli do urządzenia podłączony jest zewnętrzny adapter.

    5 V: Pin otrzymuje napięcie 5 V ze stabilizatora płytki. Stabilizator ten zapewnia zasilanie mikrokontrolera ATmega328. Nie zaleca się zasilania urządzenia przez pin 5V – w takim przypadku nie stosuje się stabilizatora napięcia, co może doprowadzić do awarii płytki.

    3,3 V: 3,3 V ze stabilizatora płytki. Maksymalny prąd wyjście - 1 A.

    GND: Wnioski z ziemi.

    IOREF: Pin dostarcza płytom rozszerzeń informację o napięciu pracy mikrokontrolera. W zależności od napięcia płytka rozszerzeń może przełączyć się na odpowiedni zasilacz lub zastosować konwertery poziomów, dzięki czemu może współpracować zarówno z urządzeniami 5V, jak i 3,3V.

Porty we/wy

    Wejścia/wyjścia cyfrowe: piny 0 – 13
    Poziom logiczny jedynki wynosi 5 V, zero to 0 V. Maksymalny prąd wyjściowy wynosi 40 mA. Do styków podłączone są rezystory podciągające, które są domyślnie wyłączone, ale można je włączyć programowo.

    PWM: piny 3, 5, 6, 9, 10 i 11
    Umożliwia wyprowadzanie 8-bitowych wartości analogowych w postaci sygnału PWM.

    ADC: kołki A0 – A5
    6 wejść analogowych, z których każde może reprezentować napięcie analogowe jako liczbę 10-bitową (1024 wartości). Pojemność ADC wynosi 10 bitów.

    TWI/I²C: Piny SDA i SCL
    Do komunikacji z urządzeniami peryferyjnymi przy użyciu protokołu synchronicznego, za pomocą 2 przewodów. Do pracy użyj biblioteki Wire.

    SPI: piny 10(SS), 11(MOSI), 12(MISO), 13(SCK).
    Przez te piny komunikacja odbywa się poprzez Interfejs SPI. Do pracy użyj biblioteki SPI.

    UART: piny 0(RX) i 1(TX)
    Piny te podłączamy do odpowiednich pinów mikrokontrolera ATmega16U2, który pełni funkcję konwertera USB-UART. Służy do komunikacji pomiędzy płytką Arduino a komputerem lub innymi urządzeniami poprzez klasę Serial.

Sygnalizacja LED

Złącze USB typu B

Złącze USB typu B przeznaczony do flashowania platformy Arduino Uno WiFi za pomocą komputera.

Zewnętrzne złącze zasilania

Złącze zewnętrzny zasilacz od 7 V do 12 V.

regulator napięcia 5V

Kiedy płyta jest podłączona do źródło zewnętrzne zasilacza, napięcie przechodzi przez stabilizator MPM3610. Wyjście stabilizatora jest podłączone do pinu 5V. Maksymalny prąd wyjściowy wynosi 1A.

Stabilizator napięcia 3,3V

Stabilizator MPM3810GQB-33 z wyjściem 3,3 V. Zapewnia zasilanie modułu WiFi ESP8266 i jest wyprowadzane na pin 3,3 V. Maksymalny prąd wyjściowy wynosi 1A.

Złącze ICSP dla ATmega328P

Złącze ICSP przeznaczone jest do programowania w obwodzie mikrokontrolera ATmega328P. Korzystając z biblioteki SPI, piny te mogą komunikować się z kartami rozszerzeń poprzez interfejs SPI. Linie SPI są poprowadzone do 6-pinowego złącza i są również powielone na pinach cyfrowych 10(SS), 11(MOSI), 12(MISO) i 13(SCK).

Złącze ICSP dla ATmega16U2

Złącze ICSP przeznaczone jest do programowania w obwodzie mikrokontrolera ATmega16U2.

Od opanowania nowych mikrokontrolerów Arduino minęło niewiele czasu, kiedy moją uwagę przykuła informacja o module ESP8266 i postanowiłem zanurzyć się w nowy dla siebie świat: nowy mikrokontroler i Sieć bezprzewodowa Wi-Fi. Dobra wiadomość jest taka, że ​​możesz zaprogramować takie moduły za pomocą programu Arduino IDE, który już opanowałeś. Ale każdy krok musi zostać sprawdzony.

ESP8266 EX-12E:


 posiada 11 wejść wejścia/wyjścia (GPIO), co rozszerza jego możliwości
 tylko ta wersja posiada wejście ADC
 szansa Montaż SMD Przygotowanie do użycia

Do obsługi modułu potrzebne są:

 zastosuj jedynkę logiczną do wejścia EN (CH_PD)
 aby wejść w tryb firmware, przed włączeniem modułu należy zewrzeć GPIO0 do masy
 złożyć 3,3 V na VCC

Na pierwsze kroki wydawało mi się trochę ryzykowne rozpoczęcie pracy z tym modułem i zamówiłem zestaw Zestaw deweloperski NodeMCU ESP8266 E-12 i tablica rozwojowa Osłona silnika ESP 8266 E-12 Nie miałem zamiaru sterować silnikami, jednak przyciągnęła mnie możliwość bezpośredniego podłączenia modułu do USB i dopasowania zasilania wszystkich obwodów.


Zainstalowałem ARDUINO 1,6,6. Następnie wpisałem to w ustawieniach programu http://arduino.esp8266.com/stable/package_esp8266com_index.json i w Narzędzia wyeksponowano tablice m.in NodeMCU 1.0 (moduł ESP-12E) Pobrałem przykład WiFiClient i podczas kompilacji pojawia się kilka komunikatów o błędach. Poszedłem na forum ESP8266.ru, gdzie polecono mi skorzystać Poprzednia wersja Programy Arduino - 1.6.5. Dla bezpieczeństwa przeinstalowałem system (przywrócony z kopii zapasowej) i zainstalowałem Arduino 1.6.5. Postępowałem zgodnie z tymi samymi procedurami, aby się połączyć wymagane biblioteki. Sprawdzam, wszystko jest w porządku - nie ma błędów!

Dość już tekstów, teraz konkretnie i ze zdjęciami, które zrobiłem.

1. Podaj ścieżkę do bibliotek (możesz je oddzielić przecinkami. Na obrazku jest tylko jedna ścieżka)


2. Z menu wybierz Menedżera tablic


3. Na samym dole listy, która się otworzy, pojawi się pole z nową biblioteką ESP8266. (Musiałem go otworzyć dwa razy, ponieważ kierownik nie odebrał jeszcze bibliotek). Aby przycisk się pojawił, należy zaznaczyć to pole myszką. zainstalować


4. Przejdź ponownie do menu Narzędzia i wybierz tablicę NodeMCU 1.0 (moduł ESP-12E)

Jeśli płytka jest podłączona do komputera, należy natychmiast zainstalować port. Jeżeli komputer nie rozpoznaje nowego urządzenia, co widać w menedżerze urządzeń komputera, należy dokonać instalacji wymagany sterownik. Wymagany mój moduł Sterownik USB CP2102.

Nadszedł czas, aby powiedzieć Ci, co planuję zrobić. Wisi na ścianie w domu duża mapaświat, w którym odwiedzane przeze mnie miejsca są oświetlone diodami LED o różnych kolorach. Tym samym niebieskie diody oświetlają porty i punkty w oceanie - praca w Instytucie Oceanologii; żółty - armia i tak dalej. Diody LED zmieniają swoją jasność i czasami migają. To wszystko jest kontrolowane Arduino Nano. Teraz chcę żeby wszystko było sterowane przez moduł ESP8266 i żeby móc zmieniać tryby ze smartfona przez WiFi. Zadanie nie jest trudne, jeśli wiesz, jak je wykonać, ale kiedy jest to pierwszy raz?!

Pierwszą rzeczą, którą musiałem sprawdzić, było to, których pinów w ESP8266 mogę użyć do wysyłania sygnałów PWM w celu kontrolowania jasności kolorowych kanałów LED. Na mapie świata jest ich w sumie cztery kanał koloru. W każdym kanale znajduje się około 20 diod LED. Szukając bezskutecznie w Internecie, zastosowałem metodę brute-force, zmieniając w programie aktywność pinów GPIO i zidentyfikowałem 4 piny. Później znalazłem tabelkę, mapę nóg modułu ESP8266, która pasowała do mojej opcji.

Indeks IO Pin ESP8266 Indeks IO Pin ESP8266
0 GPIO16 7 GPIO13
1 GPIO5 8 GPIO15
2 GPIO4 9 GPIO3
3 GPIO0 10 GPIO1
4 GPIO2 11 GPIO9
5 GPIO14 12 GPIO10
6 GPIO12

Zatem pierwsza część programu działa. Wybrałem pierwsze cztery piny 0-3, czyli w programie są to odpowiednio GPIO16, GPIO5, GPIO4, GPIO0, a na module DevKit ESP8266 E-12 są to odpowiednio piny D0-D3.

Jak korzystać z Wi-Fi?

W poszukiwaniu rozwiązania trafiłem na stronę blynk.cc, z której pobrałem i zainstalowałem program na smartfona (BLYNK FOR ANDROID) oraz bibliotekę dla Android IDE. Program na smartfona instaluje się automatycznie, bezpośrednio ze strony blynk.cc, bez żadnych problemów.
Bez problemu pobrałem także bibliotekę Blynk_v0.3.1.zip (275 KB) i ją zainstalowałem. W tym celu należy uruchomić program Arduino, wybrać z menu opcję DODAJ bibliotekę .ZIP...


Biblioteki zostały zainstalowane bezpośrednio z archiwum, co jest wygodne.

Zazwyczaj, lepszy program uruchom ponownie po innowacjach.

Wybrana próbka Blynk>BoardsAndShields>ESP8266_Standalone i na tej podstawie napisałem swój szkic:

Do smartfona podłączyłem 4 duże slidery, ustawiając zakres na 0-1023 i jeden przycisk przełączający tryby podświetlenia mapy świata.

Moduł DevKit ESP8266 znajduje się w prawym dolnym rogu karty.

Schemat jest dość prosty. Jedyne, co musiałem zrobić, to ustawić poziomy zasilania i sygnału sterującego. Główny zasilacz 12 V zasila diody LED. W DevKit dostarczyłem 5 woltów przez konwerter


Na rysunku przedstawiono jedną grupę diod LED. W sumie są cztery takie grupy i różnią się one kolorem. Każda grupa może składać się z innej liczby linii LED połączonych równolegle, przy czym w każdej linii nie może znajdować się więcej niż 5 diod LED, o czym decyduje napięcie zasilania 12 V. Jeśli wymagana jest mniejsza liczba diod LED, wówczas w obwodzie włącza się rezystancję tłumiącą lub wymaganą jasność osiąga się za pomocą potencjometru kanałowego.

Moduł ESP8266 zostanie skonfigurowany jako niezależny punkt Dostęp do Wi-Fi. Ten tryb działania nie wymaga powiązania z istniejącym Sieci Wi-Fi. Aby się połączyć, smartfon musi połączyć się z utworzonym punktem dostępu.

Krok 1: Utwórz projekt GUI

Krok 4: Skonfiguruj ESP8266

Moduł ESP8266 wymaga konfiguracji. Być może Twój moduł już to zrobił niezbędne ustawienia domyślnie, ale lepiej to sprawdzić.

Rzeczy do sprawdzenia:

  • Moduł posiada oprogramowanie obsługujące komendy AT w wersji nie niższej niż v0.40;
  • Moduł skonfigurowany jest na prędkość roboczą 115200.

Krok 5: Podłącz ESP8266 do Arduino Uno

Podłącz ESP8266 do Arduino Uno zgodnie ze schematem poniżej. Należy pamiętać, że piny RX-TX są połączone krzyżykiem.

Ponieważ poziomy sygnału modułu ESP8266 wynoszą 3,3 V, a Arduino 5 V, do konwersji poziomu sygnału konieczne jest zastosowanie rezystancyjnego dzielnika napięcia.


Krok 6: Prześlij szkic do Arduino.

Szkic zostanie przesłany do Arduino w zwykły sposób. Jednakże, ponieważ moduł ESP8266 jest podłączony do pinów 0 i 1, programowanie staje się niemożliwe. Kompilator wyświetli błąd.

Przed programowaniem odłącz przewody prowadzące do ESP8266 od pinów 0 i 1. Wykonaj programowanie. Następnie umieść styki z powrotem na miejscu. Naciśnij przycisk resetowania Arduino.

Notatka: Pierwszą oznaką, że programowanie się powiodło, jest miganie niebieskiej diody LED na module ESP8266 przez pół sekundy zaraz po resecie. Niebieska dioda LED miga, wskazując, że trwa wymiana danych pomiędzy Arduino i ESP8266. W ciągu tych pół sekundy Arduino konfiguruje ESP8266 do pracy jako punkt dostępowy.

Krok 7. Połącz się z aplikacji mobilnej.

Jeśli inicjalizacja się powiedzie i zobaczysz ostatnie polecenie AT+CIPSERVER=1.6377, ale przy próbie połączenia z mobilna aplikacja Wystąpił błąd, możliwe, że moduł ESP8266 ma nieaktualne oprogramowanie.

Sprawdź pojemność pamięci swojego ESP8266. Można to również zrobić patrząc na oznaczenia układu pamięci, który znajduje się na płytce obok układu ESP8266. Jeśli rozmiar pamięci wynosi 4 Mbit lub mniej (zainstalowany jest chip 25Q40), najprawdopodobniej moduł ten nie będzie działał jako punkt dostępu dla RemoteXY.

Sprawdź zasilacz ESP8266

Możliwe jest również, że Twój ESP8266 nie ma wystarczającej mocy z zasilacza. Niektóre płytki Arduino mają słaby regulator napięcia 3,3 V, który nie jest w stanie dostarczyć 200-300 mA w trybach szczytowych. W tym przypadku w Serial Monitor zobaczysz także przerwę w sekwencji poleceń.

Sprawdź funkcje swojego smartfona

Niektóre modele smartfonów z systemem Android mają funkcje łączenia punktów dostępu Wi-Fi, przez co punkt dostępu może nie włączać się automatycznie. Najpierw spróbuj ręcznie połączyć się z punktem dostępowym, korzystając z opcji Ustawienia systemowe. Następnie spróbuj połączyć się z urządzeniem za pomocą aplikacji RemoteXY. Jeśli w tym przypadku połączenie zostanie nawiązane, oznacza to, że Twój smartfon ma tę funkcję. Daj nam o tym znać.

Część 1: Przygotowanie ESP8266

Dlaczego ten artykuł? Na hubie jest już wiele artykułów na temat używania ESP w różnych konfiguracjach, ale z jakiegoś powodu bez szczegółów na temat tego, jak dokładnie wszystko jest podłączone, flashowane i programowane. Na przykład: „Wziąłem ESP, dwa Baterie AA, DHT22, wrzuciłem do pudełka, potrząsałem przez godzinę i termometr gotowy!” W rezultacie okazuje się to dziwne: ci, którzy już pracują z ESP, nie widzą nic niezwykłego w tym, co zostało zrobione, a ci, którzy chcą się uczyć, nie rozumieją, od czego zacząć. Dlatego postanowiłem napisać szczegółowy artykuł o tym, jak ESP jest podłączony i flashowany, jak połączyć go z Arduino i światem zewnętrznym oraz jakie problemy napotkałem po drodze. Linki do Aliexpress podaję wyłącznie w celu przedstawienia kolejności cen i wygląd składniki.

Miałem więc dwa mikrokontrolery, siedem różnych czujników, pięć zasilaczy, czujnik temperatury DHT22 i całą masę okablowania najróżniejszych odmian i kolorów, a także niezliczoną ilość rezystorów, kondensatorów i diod. Nie żeby to wszystko było potrzebne w przypadku termometru, ale kiedy zaczniesz pracować nad mikroelektroniką, trudno będzie to przerwać.


Odżywianie

Do działania ESP8266 wymagane jest napięcie 3,3 V i prąd co najmniej 300 mA. Niestety Arduino Uno nie jest w stanie zapewnić takiego prądu, podobnie jak nie są w stanie zapewnić go adaptery USB-UART (programiści) typu FT232RL - ich limit wynosi około 50mA. Oznacza to, że będziesz musiał organizować osobne posiłki. I byłoby lepiej, gdyby Arduino działało również z napięciem 3,3 V, aby uniknąć problemów typu „Podałem sygnał pięciowoltowy do pinu RX modułu ESP, dlaczego śmierdzi spalonym plastikiem?”

Istnieją trzy rozwiązania.

2. Kup gotowy moduł z regulatorem napięcia redukującym z 5V do 3,3V. Być może jest to najwygodniejsza opcja.

3. Zmontuj moduł samodzielnie z regulatora AMS1117 i jednego kondensatora tantalowego 22 µF.

Wybrałem trzecią opcję, ponieważ często potrzebuję 3,3 V, jestem zachłanny i lubię wbudowywać regulatory bezpośrednio w zasilacze.

Z AMS1117 wszystko jest proste: jeśli umieścisz go tekstem do góry, to napięcie na nóżkach rośnie od lewej do prawej: 0 (Gnd), 3,3 V (Vout), 5 V (Vin).
Pomiędzy zerem a wyjściem potrzebny jest kondensator tantalowy 22 µF (zgodnie z instrukcją, co się stanie, jeśli zamontujesz kondensator elektrolityczny - nie sprawdzałem). Kondensator tantalowy SMD ma plus w miejscu, gdzie jest listwa. Trochę potworne lutowanie elementów SMD zupełnie nie przeznaczone do takiego barbarzyństwa i:

Koniecznie sprawdź napięcie wyjściowe. Jeśli jest znacznie mniejsze niż 3,3 V (np. 1,17 V) - po lutowaniu poczekaj, aż regulator ostygnie i sprawdź styki. Jeśli umieścisz kondensator większy niż 22 µF, multimetr może pokazać wyższe napięcie.

Dlaczego AMS1117? Jest powszechnie stosowany. Można go znaleźć niemal wszędzie, nawet w Arduino Uno, najczęściej AMS1117-5.0.
Jeśli znacie coś o podobnych gabarytach i cenie, jeszcze prostszego w obsłudze, napiszcie.

Ważny punkt. Nie wiem dlaczego, ale AMS1117 jest niezwykle wybredny jeśli chodzi o jakość połączeń. Kontakty muszą być niezawodne. Lepiej - lutowane. W przeciwnym razie w testach wytwarza 3,3 V, ale nie wytwarza niczego pod obciążeniem.

Podłączenie ESP8266

Wybrałem model 07, ponieważ posiada doskonały metalowy ekran, który pełni funkcję ochrony przed zakłóceniami, wpływy mechaniczne i jako grzejnik. To ostatnie robi różnicę pomiędzy przepalonym modułem a po prostu nagrzanym. Dodatkowo jest gniazdo na antenę zewnętrzną.

Aby układ wystartował, należy połączyć VCC i CH_P przez rezystor 10 kOhm. Jeśli tak nie jest, wystarczy dowolny zakres 1–20 kOhm. Dodatkowo konkretnie model 07 wymaga również aby GPIO15 (najbliżej GND) było „uziemione” (na zdjęciu tego nie widać, bo złącze jest z drugiej strony).

Teraz bierzemy adapter USB-UART, przełączamy go na 3,3 V i podłączamy RX do TX, TX do RX i GND do masy (bez tego transmisja jest dla mnie niestabilna). Jeśli nie możesz przełączyć się na 3,3 V, możesz użyć prostego rezystorowego dzielnika napięcia: podłącz ESP RX do adaptera TX przez rezystancję 1 kOhm, a ESP RX do masy przez 2 kOhm. Istnieje wiele bardziej złożonych i niezawodnych sposobów podłączenia 3,3 V i 5 V, ale w tym przypadku i to wystarczy.

A łączymy się z prędkością 9600 poprzez wymagany port COM (widać to w menedżerze urządzeń).

Ja korzystam z SecureCRT, Putty też się nadaje, a znawcy Linuksa już wiedzą co robić i gdzie szukać.

(AT+RST resetuje chip)

Jeśli nic się nie dzieje - wyłącz - włącz zasilanie, jeśli nadal nic się nie dzieje - sprawdź dopasowanie TX/RX, spróbuj je przestawić lub przylutować do chipa.

Czasami podczas próbnych eksperymentów chip zawiesza się i wtedy trzeba go odłączyć od zasilania, m.in. poprzez odłączenie adaptera (na przykład wyciągając go z USB), gdyż nawet dochodzące okruchy prądu wystarczą, aby chip uparcie się zawieszał i nie działa.

Czasami sztuczki z adapterem polegają na zawieszeniu portu USB. Możesz użyć innego portu USB jako rozwiązania tymczasowego, ale ogólnie lepiej jest zrestartować komputer.

Czasami zmienia się numer portu COM. W systemie Linux można to rozwiązać za pomocą udev.

Jeśli zamiast SMS-a otrzymujesz śmieci, sprawdź ustawienia prędkości. Niektóre starsze chipy działają przy 115200.

Na początku chip się nagrzewa, ale jeśli jest naprawdę gorący i nagrzewa się nadal, odłącz i sprawdź wszystkie połączenia. Aby +3,3 V nie docierało do obudowy, aby nigdzie nie docierało 5 V, aby „masa” adaptera była połączona z „masą” chipa. Modele z metalowym ekranem są bardzo trudne do wypalenia (ale nie ma rzeczy niemożliwych), a na modele bez ekranów pojawiają się skargi, że nawet niewielki błąd może być ostatnim w życiu chipa. Ale tego nie sprawdzałem.

Oprogramowanie sprzętowe

Mój wybór to NodeMCU. Ma problemy z obsługą pamięci i sprzętu, ale to wielokrotnie procentuje prostotą kodu i łatwością debugowania.

Będziesz także potrzebować flashera NodeMCU i LuaLoadera (ten ostatni jest opcjonalny; istnieją inni klienci do pracy z tym oprogramowaniem).

Wyłącz chip. Podłączamy GPIO0 do masy i włączamy układ:

Jeżeli nic się nie dzieje i pola AP MAC/STA MAC są puste, sprawdź ponownie, czy GPIO0 jest podłączone do masy.
Jeśli oprogramowanie układowe uruchomiło się, ale zawiesza się, spójrz na zakładkę Log, z jakiegoś powodu ten konkretny układ odmówił flashowania na FT232RL, ale został flashowany bez problemów na PL2303HX z prędkością 576000. PL2303HX w określonej wersji nie ma przełącznika na 3,3V, aby go użyć, trzeba go otworzyć plastikowa obudowa i przelutuj przewód z 5V na 3,3V, są opcje z pięcioma wyjściami: 3.3, 5, TX, RX, Gnd.


Uwaga: STA MAC uległ zmianie. Podejrzewam, że flasher pokazał to błędnie, ale wymagana jest weryfikacja.

Aby zaoszczędzić wysiłku i nerwów, możesz wziąć wersję gotową lub półgotową.

Istnieją jednorazowe adaptery z wygodnym okablowaniem.
Jeść