Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

crbjsfso 14 Cze 2019 18:26 1368 14
  • 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.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    crbjsfso napisał 18 postów o ocenie 30, pomógł 0 razy. Jest z nami od 2019 roku.
  • PCBway
  • #2
    khoam
    Poziom 32  
    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 napisał:
    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
    Poziom 21  
    Możesz dać linka do tej przejściówki albo napisać jak się ona nazywa?
  • PCBway
  • #4
    khoam
    Poziom 32  
    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
    Poziom 4  
    Dziękuję za zwrócenie uwagi na aspekty, które mi umknęły.

    khoam napisał:
    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 napisał:
    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 napisał:
    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ło wersję bez dopisku "S" na przykład jako gratis do zamówienia.

    khoam napisał:

    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
    Poziom 32  
    crbjsfso napisał:
    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
    Poziom 32  
    uzi18 napisał:
    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
    Poziom 32  
    uzi18 napisał:
    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 napisał:
    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
    Poziom 32  
    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
    Poziom 37  
    To nie ESP tylko Winner Micro W600, a kompatybilne to jest chyba tylko pinowo.
  • #13
    khoam
    Poziom 32  
    tronics napisał:
    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
    Poziom 4  
    khoam napisał:
    crbjsfso napisał:
    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
    Poziom 32  
    crbjsfso napisał:
    Czyli to powinno być coś takiego?

    Tak.