Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE

crbjsfso 14 Jun 2019 18:26 7572 22
IGE-XAO
  • 1. Wprowadzenie

    Wiele młodych osób zaczyna obecnie swoją przygodę z elektroniką od Adruino UNO R3 lub jakiś gotowych zestawów opartych na tej właśnie platformie, czy też jej klonów.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Arduino UNO R3 od frontu

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Arduino UNO R3 od tyłu

    Po wstępnym zapoznaniu się z możliwościami Arduino, przećwiczeniu przykładów z oficjalnej strony projektu, wszelkiej maści kursów czy poradników przychodzi kolej na bardziej samodzielne projekty, w których jako programator możemy wykorzystać Arduino.

    W obecnych czasach, gdzie Internet jest już nieodłączną częścią naszej rzeczywistości prędzej czy później przyjdzie pora na IoT, czyli Internet rzeczy, którego reprezentantem są wszelkiej maści urządzenia podłączone do Internetu. Od prostych termometrów, poprzez różnego rodzaju oświetlenia RGB, sprzętach AGD, RTV, na autonomicznych samochodach kończąc.

    2. ESP8266

    Najbardziej popularnym układem zapewniającym naszym projektom komunikację z siecią jest ESP8266 i występuje on w wielu wersjach i formach. Wykorzystywany jest obecnie w większości rozwiązań IoT czy to amatorskich, czy komercyjnych.

    Głównymi cechami całej rodziny ESP8266 są między innymi niska cena, spore możliwości wbudowanego mikrokontrolera i co kluczowe obsługi WiFi w standzie IEEE 802.11 b/g/n co w zupełności wystarcza do większości projektów.

    Podstawowe parametry układów ESP8266:
    - 32-bitowy procesor RISC taktowany zegarem 80MHz (możliwość zwiększenia w niektórych modelach do 160MHz);
    - 64 KB pamięci RAM na program;
    - 96 KB pamięci RAM na dane;
    - od 512 KB do 4 MB pamięci FLASH na oprogramowanie sprzętowe;
    - do 16 linii cyfrowych wejścia/wyjścia,
    - jedno 10-bitowe wejście ADC;
    - obsługa interfejsów: SPI, I2C, I2S, UART;
    - zasilanie napięciem 3.3V;
    - pobór mocy w stanie spoczynku to ~10uA;
    - WiFi 802.11 b/g/n;
    - częstotliwość pracy 2,4 GHz;
    - wspiera zabezpieczenia WPA i WPA2;
    - możliwość pracy w trybie AP (Access Point), STA (Standalone) oraz AP+STA;
    - wsparcie dla komend AT

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Porównanie wizualne ESP8266 z ESP8266-01S od frontu

    ESP8266-01S jest nieznacznie poprawioną wersją cechującą się lepszą stabilnością pracy układu i większą pamięcią. Dla wersji bez dopisku "S" pamięć ma rozmiar 512kB, zaś wersja z dopiskiem ma jej 1MB.

    3. Projekt i narzędzia

    Dziś zajmiemy się jedną z najprostszych wersji, a mianowicie ESP8266-01 i jego programowaniem przy użyciu znanego już Arduino.

    Aby zaprogramować układ znajdujący się na płytce ESP8266-01 możemy skorzystać z dedykowanego lub uniwersalnego programatora albo użyć prostej przejściówki / końcówki, którą zaraz wykonamy. Umożliwi ona nam programowanie przy użyciu Arduino IDE

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Przykładowy programator od frontu

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Przykładowy programator od tyłu

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Gotowa przejściówka / końcówka z jednej strony

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Gotowa przejściówka / końcówka z drugiej strony

    Do wykonania przejściówki / końcówki i przetestowania wszystkiego będzie nam potrzebne:
    - ESP8266-01 lub ESP8266-01S;
    - Adruino UNO R3 lub klon;
    - Arduino IDE;
    - przewody, na przykład do płytek stykowych lub ze skrętki: 4 sztuki - 10 cm, 1 sztuka - 4 cm, 2 sztuki - 2 cm;
    - żeńskie wtyki goldpin: 1 sztuka 2x4 i 4 sztuki pojedyncze;
    - żeńskie styki do wtyków goldpin: 8 sztuk;
    - męskie styki do wtyków goldpin: 4 sztuki;
    - rezystor w przedziale od 1 do 10 kΩ;
    - lutownica / stacja lutownicza i stop lutowniczy;
    - cążki do cięcia metalu;
    - szczypce / kombinerki, ewentualnie zagniatarka;
    - opcjonalnie biały papier samoprzylepny do opisu pinów;

    4. Schemat połączeń

    Wyprowadzenia dla ESP8266-01 i ESP8266-01S są identyczne, a ich rozkład prezentuje poniższy rysunek.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Schemat modułu ESP8266-01 z zaznaczonymi wyprowadzeniami

    Aby ustawić ESP8266 w tryb programowania, trzeba podłączyć jego wyjścia w następujący sposób.

    ESP8266Arduino
    RXDRX
    GPIO0GND
    GPIO2brak połączenia
    GNDGND
    VCC3.3 V
    RSTbrak połączenia
    CH_PD3.3 V przez rezystor
    TXDTX


    Tak też będzie wyglądała nasza przejściówka / końcówka do programowania.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Widok od strony, do której będzie przyłączany ESP8266

    Przewody należy zagnieść przy pomocy szczypiec, bądź zagniatarki i umieścić w żeńskich wtyczkach goldpin. W przypadku pojedynczych przewodów należy pierwsze zagniecenie wykonać na odizolowanym przewodzie, drugie zaś na przewodzie z izolacją. W przypadku podwójnych wejść, gdzie w jednym wtyku znajdują się 2 przewody, jak VCC 3.3 V i GPIO0 należy dokonać obu zagnieceń przewodów ze zdjętą izolacją, w przeciwnym wypadku będziemy mieć spory problem z umieszczeniem takiego pinu w gnieździe. Rezystor między CH_PD i VCC 3.3V najlepiej jest przylutować do przewodów przez zagniataniem wtyków.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Widok pojedynczego przewodu gotowego do zagniecenie, izolacja ściągnięta częściowo

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Widok podwójnego przewodu gotowe do zagniecenia, izolacja ściągnięta całkowicie

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Gotowa przejściówka / końcówka wpięta w klon Arduino UNO R3

    Po wykonaniu końcówki można wydrukować opis wyjść / wejść na papierze samoprzylepnym i przykleić go do odpowiednich pinów, co ułatwi przyszłe użytkowanie.

    5. Arduino IDE

    Gdy już zbudowaliśmy naszą przejściówkę nadszedł czas na testy. W celu obsłużenia ESP8266 będzie nam potrzebna odpowiednia biblioteka.

    Spora część z was zapewne ma już zainstalowane Arduino IDE, lecz jeśli nie to należy pamiętać, aby pobierać je zawsze z oficjalnej strony dystrybutora. Zminimalizuje to możliwość pobrania przy okazji złośliwego oprogramowania. Oficjalny dystrybutor to:
    Code:
    arduino.cc/en/Main/Software

    Po pobraniu, zainstalowaniu czy też ewentualnej aktualizacji oprogramowania należy z górnego menu wybrać: Plik > Preferencja.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Interfejs Arduino IDE, opcje Plik > Preferencja

    Pojawi się nowe okno z opcjami. W polu „Dodatkowe adresy URL do menedżera płytek:” należy wkleić adres:
    Code:
    https://arduino.esp8266.com/stable/package_esp8266com_index.json

    I zatwierdzić klawiszem [OK].

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Okno Preferencje z opcjami

    Następnie z menu wybieramy: Narzędzia > Płytka: … > Menedżer płytek…

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Interfejs Arduino IDE, opcje Narzędzia > Płytka: … > Menedżer płytek…

    Pojawi się nowe okno. W polu wyszukiwarki należy wpisać „ESP8266” i zatwierdzić ENTERem. Pojawi się biblioteka, którą należy zainstalować klikając na przycisk [Instaluj]. Po udanej instalacji zamykamy to okno i resetujemy Arduino IDE.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Menedżer płytek

    Po ponownym uruchomieniu Arduino IDE w menu: Narzędzia > Płytka: … powinny być widoczne układy z serii ESP8266.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Biblioteka układów ESP8266

    6. Programowanie

    Gdy już wszystko zostało zrobione, możemy przystąpić do testowania. Wybieramy z menu: Plik > Przykłady > ESP8266WiFi > WiFiScan

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Interfejs Arduino IDE, opcje Plik > Przykłady > ESP8266WiFi > WiFiScan

    Wpinamy moduł ESP8266-01 do wykonanej końcówki, a końcówkę do Arduino zgodnie z oznaczeniami. Należy pamiętać, że moduł który będziemy programować działa tylko i wyłącznie na napięciu 3.3V i napięcie 5V jest dla niego zabójcze. Należy jeszcze ustawić tryb programowania w Arduino zwierając wyjście RST z wejściem GND na płytce Arduino.

    Gdy już wszystko jest zostało połączone, to podpinamy Ardunio przy pomocy przewody USB do komputera. Upewniamy się, że wybrana płytka to „Generic ESP8266 Module” i sprawdzamy poprawność portu COM. Teraz możemy przystąpić do kompilacji i wgrywania kodu.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
    Komunikat w przypadku udanego zaprogramowania układu

    Po zaprogramowaniu układu włączamy monitor portu szeregowego (Narzędzia > Monitor portu szeregowego) i naszym oczom powinna ukazać się lista wszystkich dostępnych sieci WiFi w okolicy.

    W przypadku gdy wgrywanie kodu się nie powiedzie należy odpiąć Arduino od komputera i podpiąć jeszcze raz. gdy błąd będzie się powtarzał należy rozpiąć cały układ i złożyć go jeszcze raz.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    crbjsfso
    Level 6  
    Offline 
  • IGE-XAO
  • #2
    khoam
    Level 41  
    Nie bardzo rozumiem, po co i w jakim celu zostało użyte Uno w tym artykule tzn. wiem, że można użyć Uno w charakterze konwertera USB/UART wykorzystując tylko i wyłącznie ATMEGA16U2 czy CH340 (klon Uno) z tej płytki, ale trzeba wtedy pamiętać o konwerterach poziomów 5V/3.3V (przynajmniej dla TX z Uno), o których Kolega nie napisał (i chyba nie użył), a jedynie wspomniał, że:
    crbjsfso wrote:
    Należy pamiętać, że moduł który będziemy programować działa tylko i wyłącznie na napięciu 3.3V i napięcie 5V jest dla niego zabójcze.


    Jest również dość istotna różnica pomiędzy ESP-01 a ESP-01S. Ten pierwszy dysponuję 512kB flash, drugi natomiast 1MB. Lepiej więc zainwestować w ESP-01S.

    Jeżeli chodzi o "przejściówki" do programowania ESP-01S, to lepiej się zaopatrzyć w taką, jak na poniższym obrazku (koszt praktycznie ten sam). Z jednej strony moduł taki pozwala na automatyczne wejście w tryb programowania, z drugiej strony mamy w dalszym ciągu dostęp do pinów ESP-01S i możemy takiej "przejściówki" użyć w charakterze devboard również wtedy, kiedy nie programujemy modułu.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
  • #3
    Janusz_kk
    Level 34  
    Możesz dać linka do tej przejściówki albo napisać jak się ona nazywa?
  • IGE-XAO
  • #4
    khoam
    Level 41  
    Na ali ta przejściówka nazywa się: ESP8266 ESP-01/ESP-01S WIFI Module Adapter Download Debug Link Kit
    Wystarczy w wyszukiwarce wpisać: "ESP8266 Download Debug Link"
  • #6
    crbjsfso
    Level 6  
    Dziękuję za zwrócenie uwagi na aspekty, które mi umknęły.

    khoam wrote:
    Nie bardzo rozumiem, po co i w jakim celu zostało użyte Uno w tym artykule tzn. wiem, że można użyć Uno w charakterze konwertera USB/UART wykorzystując tylko i wyłącznie ATMEGA16U2 czy CH340 (klon Uno) z tej płytki, ale trzeba wtedy pamiętać o konwerterach poziomów 5V/3.3V (przynajmniej dla TX z Uno), o których Kolega nie napisał (i chyba nie użył), a jedynie wspomniał, że:
    crbjsfso wrote:
    Należy pamiętać, że moduł który będziemy programować działa tylko i wyłącznie na napięciu 3.3V i napięcie 5V jest dla niego zabójcze.


    Arduino UNO zostało użyte w celach edukacyjno-rozrywkowych. Takie hobby, że buduje się i testuje samodzielnie różne rozwiązania czy to mechaniczne, czy elektroniczne. Poznaje zasady działania, różne koncepcje. Na początku proste, z czasem coraz bardziej skomplikowane.

    Nie wiem dlaczego, ale programowanie za pomocą przejściówki bez użycia konwertera poziomów logicznych nie prowadzi do uszkodzenia układu. Będę musiał dokładniej zbadać te sprawę i przeprowadzić więcej testów. Gdy dojdę do jakiś sensownych wniosków, to zostaną one dopisane do artykułu.

    khoam wrote:
    Jest również dość istotna różnica pomiędzy ESP-01 a ESP-01S. Ten pierwszy dysponuję 512kB flash, drugi natomiast 1MB. Lepiej więc zainwestować w ESP-01S.


    Informacja o różnicach w pamięci dla modelu z dopiskiem "S" i bez dopisku została dodana. Zgadzam się, chyba, że ktoś otrzymał wersję bez dopisku "S" na przykład jako gratis do zamówienia.

    khoam wrote:

    Jeżeli chodzi o "przejściówki" do programowania ESP-01S, to lepiej się zaopatrzyć w taką, jak na poniższym obrazku (koszt praktycznie ten sam). Z jednej strony moduł taki pozwala na automatyczne wejście w tryb programowania, z drugiej strony mamy w dalszym ciągu dostęp do pinów ESP-01S i możemy takiej "przejściówki" użyć w charakterze devboard również wtedy, kiedy nie programujemy modułu.

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE


    Tak zgadzam się, gotowa przejściówka jest najbardziej racjonalnym rozwiązaniem, chyba, że jest sobota wieczór a my w szufladzie mamy jedynie parę przewodów (ja zazwyczaj tak mam), a mimo to chcemy poświęcić się swojemu hobby, aby się zrelaksować.
  • #7
    khoam
    Level 41  
    crbjsfso wrote:
    Nie wiem dlaczego, ale programowanie za pomocą przejściówki bez użycia konwertera poziomów logicznych nie prowadzi do uszkodzenia układu.

    Zwykle nie prowadzi, a przynajmniej nie od razu. Dobrą praktyką jest jednak zapewnienie konwersji napięć wtedy, kiedy łączymy układy o innej logice napięciowej. W wypadku Twojej "przejściówki" wystarczy dodać rezystor i diodę (to jest najprostszy konwerter poziomów):

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
  • #8
    khoam
    Level 41  
    uzi18 wrote:
    Zgodnie ze specyfikacja układu esp8266 toleruje on 5V z jednym tylko zastrzeżeniem zasilanie procka nie. moze przekroczyć 3V.

    Zgodnie ze specyfikacją:
    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE

    Źródło: https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf (strona 18)

    Jeżeli ktoś chce się kierować hipsterskimi opiniami na temat toleracji 5V przez ESP8266 to niech to robi tylko i wyłącznie na własną odpowiedzialność.
  • #10
    khoam
    Level 41  
    uzi18 wrote:
    W starszych specyfikacjach byly inne informacje, mi sie nie udalo nigdy uwalic esp podajac na piny 5V sygnaly.

    W specyfikacjach również zdarzają się błędy i dlatego też powstają ich nowe wersje/rewizje, w celu usunięcia tychże błędów i nieścisłości. Mam nadzieję, że jest to oczywiste. W załączeniu umieszczam dokument producenta "ESP8266EX FAQs" - w szczególności polecam lekturę punktu 5.14 (strona 25).

    uzi18 wrote:
    ciekawy komentarz:

    Znam te artykuły i parę jeszcze innych, w tym "atrakcyjne" wideoklipy na YT. Nie będę tego komentował, nie znam się na technikach voodoo.
  • #11
    khoam
    Level 41  
    Na ali pojawiła się jakaś nowa dziwna wersja ESP-01W (obrazek poniżej). Ze specyfikacji wynika, że został użyty "ARM Cortex-M3 chip running freeRTOS". Moduł wyposażono w 8MB flash. Jest to dla mnie całkowita zagadka, ale za cenę 6 PLN z wysyłką chyba warto sprawdzić, co to za cudo :)

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
  • #12
    tronics
    Level 38  
    To nie ESP tylko Winner Micro W600, a kompatybilne to jest chyba tylko pinowo.
  • #13
    khoam
    Level 41  
    tronics wrote:
    To nie ESP tylko Winner Micro W600, a kompatybilne to jest chyba tylko pinowo.

    Tak, to wynika ze specyfikacji, która jest umieszczona w aukcjach na ali. ESP-01W wygląda na reinkarnację modułu Grove W600 od Seeed Studio, "tylko" cena jest 5 razy niższa. Raczej nie ma 8MB flash, jak jest to opisane w aukcji, a jedynie 1MB - chińscy sprzedawcy zwykle nie rozróżniają bajtów od bitów ;)
    Zamówiłem do testów.
  • #14
    crbjsfso
    Level 6  
    khoam wrote:
    crbjsfso wrote:
    Nie wiem dlaczego, ale programowanie za pomocą przejściówki bez użycia konwertera poziomów logicznych nie prowadzi do uszkodzenia układu.

    Zwykle nie prowadzi, a przynajmniej nie od razu. Dobrą praktyką jest jednak zapewnienie konwersji napięć wtedy, kiedy łączymy układy o innej logice napięciowej. W wypadku Twojej "przejściówki" wystarczy dodać rezystor i diodę (to jest najprostszy konwerter poziomów):

    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE


    Czyli to powinno być coś takiego?
    Prosta przejściówka / końcówka do programowanie ESP8266-01 za pomocą Arduino IDE
  • #15
    khoam
    Level 41  
    crbjsfso wrote:
    Czyli to powinno być coś takiego?

    Tak.
  • #17
    khoam
    Level 41  
    Zubiik wrote:
    Czy można te moduły programować z innego środowiska niż arduino?

    Tak. np. z Visual Studio Code, Eclipse czy Visual Micro.
  • #20
    khoam
    Level 41  
    Zubiik wrote:
    wciąż napotykam na problemy z interpretacją wgranego kodu czasem trzeba

    A więc możesz mieć problemy z samym interpreterem Lua (firmware), który jest już wgrany do ESP. Proponuję więc najpierw wgrać inną (nowszą) wersję tego interpretera, zgodnie z informacjami zamieszczonymi pod poniższymi linkami. Esplorer do tego nie jest potrzebny.
    https://nodemcu-build.com/index.php
    https://nodemcu.readthedocs.io/en/master/flash/

    Programy w Lua możesz pisać w dolnym edytorze, ale to już wykracza poza zakres tego wątku.
  • #21
    Zubiik
    Level 13  
    Trudno się w tym wszystkim połapać (wiele różnych płytek, dużo wersji oprogramowania). Nie do końca rozumiem o jaki programator kolega pyta na płytce jest konwerter CH340G flash wgrywałem poprzez node mcu firmware programer.
    crbjsfso wrote:
    Testowałeś inne edytory?
    Czy edytor ma aż takie znaczenie w tym przypadku?
  • #22
    crbjsfso
    Level 6  
    Więc jest to tak zwana płytka deweloperska z wbudowanym programatorem USB, tak w uproszczeniu. Czyli tutaj raczej nie ma co szukać źródła problemu. Edytor nie ma znaczenia jeśli jest poprawnie skonfigurowany pod daną platformę. Jak wspomina użytkownik khoam, wygląda to na problem softwarowy.