Pierwsze uruchomienie ESP-8266 w środowisku Arduino przy współpracy Arduino NANO

Pierwszy kurs, w którym pokaże jak połączyć się z modułem ESP8266 poprzez port UART Arduino Nano, skonfigurwać połączenie WIFI z AP, sprawdzić otrzymany adres IP z serwera DHCP. Od razu zapraszam do dyskusji związanej z kursem na naszym forum.

esp_mod12

Moduł ESP8266 jest to jak na razie jedyny dostępny moduł, który obsługuje w pełni technologię WIFI, oraz komunikację poprzez RS232 z obsługą komend AT, dzięki takiej technologi kod programu zajmuje bardzo mało miejsca w pamięci FLASH mikrokontrolera, i nie wymaga dużych jego zasobów. To bardzo ważne zalety tego specyficznego innowacyjnego rozwiązania.

Sprzedawany przez nas moduł jest miniaturową wersją dostępnych modułów oraz został wyposażony w dodatkową antenę SMD, a nie jak w wielu innych tylko ścieżkę na PCB.

Wyprowadzenia układu:

moduł z ESP8266 wyprowadzeniaOpis wyprowadzeń (opiszę funkcjonalność tylko tych, z których będziemy korzystać w tym kursie):

GND – Masa
CH_EN – inaczej CHIP ENABLE czyli stan wysoki uruchamia tryb zwykłej pracy.
RST – stan niski reset jest równy komendzie AT+RST, ale o komendach za chwilę
RXD – odbiór UART
TXD – nadawanie UART
VDD – +3,3V

W celu podłączenia modułu do płytki stykowej dolutowałem przewody z końcówkami BLS męskimi tak jak na zdjęciu poniżej :-). Rozstaw poszczególnych pinów to 1,27mm myślę że znakomicie nadał by się do testów Adapter SOP28 do DIL, lecz chyba dolutowanie przewodów jest wygodniejsze do doraźnych testów w płytce stykowej jak i być może w docelowym projekcie.

ESP-8266 lutowanie

esp_mod08Znamy już wyprowadzenia, wiemy jak przykładowo wczepić układ do płytki stykowej, więc najwyższa pora przejść do właściwej części kursu 🙂

Na potrzeby tego kursu zbudowałem układ z modułów. Głównym mózgiem jest Arduino Nano, dodatkowo zastosowałem jeszcze konwerter poziomów napięć bo jak już wiemy moduły ESP-8266 funkcjonuje na logice 3,3V. Oczywiście można od razu zastosować układ który działa na poziomach 3,3V lecz w kursie chcę pokazać co można zrobić, ponieważ ESP-8266 jest elementem przekazującym/odbierającym dane a inne czujniki lub inne peryferia mogą działać na logice 5-cio woltowej.
Arduino Nano jest wyposażone w jeden sprzętowy port UART, co może być nie wystarczające dla równoczesnego przesyłania komend do ESP-8266 jak i realizowania podglądu na żywo w terminalu. Przy takim założeniu moduł z µC jest pośrednikiem transmisji podłączonym przez USB do komputera, oraz do modułu komunikacji bezprzewodowej.  Chwila namysłu i już nasuwa się ROZWIĄZANIE: można przecież stworzyć dodatkowy softwarowy kanał UART 🙂 .

Reasumując:

  • Główny fizyczny UART Arduino NANO będzie naszym kanałem do komunikacji, poprzez komendy AT pomiędzy modułami a komputerem
  • Stworzymy Softwarowy port UART dzięki zaimplementowanej w środowisko Arduino bibliotece SoftwareSerial.h. Do tego celu użyjemy pinów D9 oraz D10. Nowy kanał będzie naszym komunikatorem z modułem ESP poprzez konwerter poziomów napięć.

Arduino Nano i konwerter poziomów

Podłączamy moduł ESP-8266 do konwertera poziomów

Podłączenie ESP do konwertera

Efekt końcowy połączeń:

esp_mod01

ESP-8266

Piszemy program do komend AT poprzez „Monitor portu szeregowego”
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10,9);

void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
while (!Serial) {
;
}
}

void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());

}

Program po prostu sprawdza dostępność portów Uart fizycznego jak i stworzonego wirtualnego mySerial, oraz przerzuca pomiędzy nimi dane.

Standardową, ustawioną prędkość transmisji modułu ESP jest 9600, którą również można zmienić ale to w następnym kursie …

Odpalamy terminal i wpisujemy komendę: AT

ESP komenda ATKomenda AT sprawdza stan modułu, widać że odpowiedział OK czyli możemy się cieszyć 🙂 … moduł jest prawidłowo podłączony oraz pracuje poprawnie. Kolorem czerwonym zaznaczyłem, że musimy włączyć opcję automatycznego wysyłania znaków NL oraz CR , w przeciwnym razie moduł nie będzie przyjmował komend.

A teraz spróbujemy połączyć się z naszym AP jako klient sieci.

Nie będę już robił screenów odpowiedzi modułu bo myślę, że to nie ma czasu. Napiszę jedynie komendy którymi należy się posłużyć oraz jakie powinny być zwracane odpowiedzi 🙂

Na początek musimy ustawić tryb pracy jako klient czyli stacja pracująca w sieci:

AT+CWMODE=1 i już jest klientem

Aby wyświetlić listę dostępnych sieci oraz ich ssid, mac, kanał pracy , siłę sygnału używamy komendy:

AT+CWLAP

Łączymy się z naszym routerkiem:

AT+CWJAP=”nasz_ssid”,”nasze_hasło” przeważnie to trwa chwilkę ok 5 sek jeżeli coś pójdzie nie tak moduł odpowie FAILL

Sprawdzamy jaki adres IP otrzymaliśmy:

AT+CIFSR zwraca jaki adres IP otrzymał moduł

Myślę że ten poradnik będzie wystarczający aby każdy mógł sobie sprawdzić czy moduł działa oraz przystąpić do tworzenia programu, który coś będzie robił 🙂

Zapraszam do dyskusji na temat tego kursu na naszym forum.

16 Replies to “Pierwsze uruchomienie ESP-8266 w środowisku Arduino przy współpracy Arduino NANO”

  1. Do sterowania np przekaźnikami wystarczy prosta konfiguracja.

    AT+CWMODE=2
    AT+CIPMUX=1
    AT+CIPSERVER=1,8080
    AT+CWSAP=” ; Chr(34) ; „ESP8266_2” ; Chr(34) ; „,” ; Chr(34) ; „1234567890” ; Chr(34) ; „,” ; „8080” ; „,4”

    Aplikacja do wydawania poleceń z Androida dostępna za free w Google Play
    UDP TPC Server – Free

    • W kolejnym kursie opiszę zastosowanie tego naprawdę bardzo dobrego, darmowego programu. Gdzie można zrealizować naprawdę wszystko 🙂 …. Jedynie tutaj dodam żeby wszyscy nie pomyśleli, aby realizować te funkcje, esp8266 musi być koniecznie AP’kiem dla innych urządzeń czyli AT+CWMODE=2. Może on pozostać stacją łączącą się już z jakąś inna siecią WIFI AT+CWMODE=1 i też będzie świetnie współpracował z programikiem.

  2. Próbowałem zmienić (upgrade) firmware na wyższy. Przeprogramowanie poszło OK ale po ponownym włączeniu ESP8266 reaguje tylko na kilka komend AT (+RST, +GMR, +CWMODE…) niestety nie reaguje na żadne komendy dotyczące WiFi takie jak +CWLAP, +CWJAP….. Wcześniej działał i widział sieci.
    Czy oprócz firmware trzeba coś jeszcze dodatkowo wgrywać aby działał?

    • A przeprowadziłeś weryfikację wersji hardware?
      Zdaje się może być kilka wersji sprzętowych i może być tak, że nie każde oprogramowanie będzie poprawnie działało z każdym modułem.
      Proponuję odszukać ten firmware, który był oryginalnie w module i się nim posłużyć, by przywrócić dawną świetność urządzenia. Napisz co wgrałeś i z jakiego źródła żeby inni nie popełnili podobnego błędu.
      Ewentualnie aby odtworzyć Twoją sytuację dla rozpoznania „sprawy”.

    • A jaki to moduł jaka wersja wykonania ? taka jak my sprzedajemy czy zupełnie inna ? Baudrate jaki jest ustawiony ? Może zdjęcie ? I co wpisuje teraz po kom. AT+GMR jaka wersja ? Zapraszam z problemem do dyskusji na forum.

  3. Te moduły to jakieś nieporozumienie, co drugi zakupiony z neta nie chce działać prawidłowo :/
    Ktoś zna jakiegoś dostawce który ma na pewno działające wersje ?
    Ja osobiście mam dwa takie moduły i oba albo resetują się w kółko, albo wyskakują jakieś błędy :/

  4. Mam następujący problem z tym modułem i może też ktoś natrafił na coś podobnego.

    1. ESP + konwerter napięć (lub dzielnik na rezystorach) + Konwerter USB-UART FTDI – komendy AT wpisywane z terminala – działa.
    2. Arduino Leonardo + konwerter napięć (lub dzielnik na rezystorach) + ESP – nie działa nawet nie mignie dioda od transmisji na ESP.
    3. Arduino Leonardo + Konwerter USB-UART FTDI – komendy wysyłane przez Leonardo wraz z odpowiednimi przerwami pomiędzy nimi poprawnie są wyświetlane na terminalu.
    Sprawdzałem, jeszcze z inną sztuką ESP – dokładnie tak samo. ESP skonfigurowany poprzez terminal działa stabilnie bez najmniejszych problemów nawet po kilka dni.

    Dzlaczego nie działa mi wariant z ptk2. Sprawdzałem dostępne informacje w Internecie, nie ma tutaj żadnej filoziofi jeżeli chodzi o połączenia, a wychodzi, że polecenia wysyłane przez Ledonardo nie docierając do ESP.
    Ma ktoś jakiś pomysł?
    Dziękuję za wszelką pomoc.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.