Witam. Ostatnio w internecie głośno o tanim, małym module komunikującym się po WIFI. Wiele osób używa go jako dodatku do arduino i tym samym zwiększa cenę swojego urządzenia. Sam pokazałem taki sposób w moim ostatnim artykule “Proste, małe, bezprzewodowe czujniki temperatury i wilgotności komunikujące się przez WIFI ESP8266” . Osoby interesujące się elektroniką szybko znalazły sposób na wyeliminowanie płytki arduino – ESP8266 posiada swój 80Mhz procesor na który można pisać własny firmware. Kod ten pisze się w skomplikowanym C za pomocą ESP8266 SDK bądź też prościej w języku LUA po poprzednim wgraniu firmware nodeMCU. Jeżeli nie znamy języka lua, a czyste c jest dla nas za trudne – Niedawno wypuszczono testową wersje Arduino IDE dla ESP8266 – Tak! Jest możliwość pisania programów na ten tani moduł w języku C++ znanym z płytek arduino!
Aktualnie nie działają biblioteki tylko pod AVR’y, sterowanie wypełnieniem (PWM) i parę innych rzeczy.
Co nam będzie potrzebne?:
- ESP8266
- Konwerter USB-Serial. Używam chińskiego klona pl2032, lecz lepiej dołożyć do konwertera z układem FT232RL i móc programować nim mikrokontrolery. Można także zastosować Arduino UNO z wyciągniętym mikrokontrolerem.
- Dioda
- Rezystor 220 Ohm
- Mała płytka stykowa
- Kabelki do prototypowania
Jak zainstalować Arduino IDE dla ESP8266?
Wchodzimy na tę stronę: (klik! – nie podaję bezpośrednio linka do paczki ponieważ co chwilę wychodzą nowe aktualizację.). Znajdujemy tabelkę “Downloads” i pobieramy paczkę dla naszego systemu operacyjnego. Po wypakowaniu uruchamiamy plik arduino.exe dla Windows. Dla Linuksa i OS X będąc w wypakowanym folderze uruchamiamy z linii komend:
1 |
./arduino |
Programowanie naszego układu:
Podłączamy nasz układ do konwertera według mojego poprzedniego postu(klik!). Ponieważ będziemy wgrywać nowy firmware podpinamy GPIO0 do GND(masy)!
PAMIĘTAJ!!! ESP8266 nie toleruje 5V!!! Podłącz pod 3V3V!!! – Dla większego bezpieczeństwa warto układ podłączyć pod konwerter poziomów logicznych. Ja takiego nie posiadam więc podłączyłem bezpośrednio.
W przerobionym Arduino IDE wybieramy płytkę “Generic ESP8266” i programator “esptool”. Sprawdzamy połączenia i podłączamy nasz układ pod USB. W “Narzędzia-Port” wybieramy port szeregowy na którym jest podłączony konwerter. Po tych zabiegach wgrywamy jakiś przykład np.: “Blink” i zmieniamy pin 13 na pin 2(GPIO2).
Który pin w Arduino IDE odpowiada wyjściu w ESP8266?:
Zasada jest prosta – numer GPIO odpowiada numerowi pinu.
np.:
- GPIO0 – pin 0
- GPIO2 – pin 2
- GPIO12 – pin 12
Nie ma uniwersalnego obrazka ponieważ jest wiele wersji tego modułu.
Wgrywamy program
Wiemy już jak podłączać piny więc bierzemy się za wgrywanie programu.
Klikamy przycisk wgraj i czekamy chwilę. Po wgraniu odłączamy zasilanie od modułu, GPIO0 odłączamy od GND, a diodę podłączamy o przez opornik(rezystor) 220 Ohm do GPIO2. Po ponownym podłączeniu do zasilania (3.3V!!!) dioda powinna migać.
Co dalej?
W przykładach są szkice pozwalające połączyć się z WIFI, stworzyć serwer, wysyłać dane z czujników. Jeżeli przetestowałeś bibliotekę i działa ona w ESP8266 napisz w komentarzu. Ja dodam że biblioteka Adafruit “DHT.h” działa bezbłędnie.
Dzięki, takiego czegoś szukałem. Sprawdziłem “Blink” i działa. Zasłużone 5/5.
Fellfree Nie wiesz przypadkiem jak zaprogramować to aby po wejściu w jego adres ip , włączył stan high na sekunde ?
Proszę bardzo: http://pastebin.com/r8NKJUJq
Kod to przerobiony przykład HelloServer. Za działanie odpowiadają funkcje server.on(“ścieżka”, funkcja);
Pin na którym jest podawany stan wysoki to pin GPIO2
Pytanie za 100 pkt:
Czy po zmianie oprogramowania w ESP8266, można nadal sterować za pomocą komend AT i zewnętrznych układów powiedzmy Arduino/Atmega?
Czy ta opcja programowania samych tych modułów jest już nieodwracalna?
Aby po wgraniu programu moim sposobem, móc używać komend AT należy przywrócić oryginalny firmware. Jak to zrobić pisałem w moim poprzednim poście: “Proste, małe bezprzewodowe czujniki na esp8266”
Niestety ja zaliczyłem już jedną “porażkę” z tym układem ( padł fizycznie ).
Dioda mrugająca z powyższego przykładu zadziałała .. więc poszedłem dalej i wgrałem program do skanowania sieci WIFI i też zadziałał :) .. Następnie wgrałem program prostego serwera WWW ale układ mi się wieszał przy łączeniu z AP.
Z tego co opisali na stronie http://www.cpmspectrepi.webspace.virginmedia.com/raspberry_pi/MoinMoinExport/USBtoTtlSerialAdapters.html
takie podstawowe konwertery USB/RS mają wydajność prądową 100mA.
ESP pobiera nawet 240mA – https://nurdspace.nl/ESP8266#Specifications.
Postanowiłem więc, że będę go zasilał z oddzielnego gotowego modułu zasilania opartego na AMS1117 12V->3,3V łącząc jego masę z masą konwertera USB->RS FTDI232 [3,3V] oraz masą ESP.
Po chwili już było po układzie :(
Nie wiem z jakiego powodu padł .. Boję się podłączać następnych (zostały 3) :)
Szukając jakiejś gotowej płytki, która by rozwiązała problem zasilania/stabilizacji znalazłem coś takiego – http://forum.atnel.pl/topic10406.html#p121058
A jak Wy sobie radzicie z zasilaniem układu ?
Witam. Ciekawym rozwiązaniem jest płytka nodemcu. Na dniach powinna zacząć się oficjalna sprzedaż tych płytek. Na ebay’u też można znaleźć różne moduły z esp8266 UWAGA! Płytki NODEMCU sprzedawane na ebay’u nie mieszczą się w płytkach stykowych!
Ale, jeżeli nie chcesz kupować gotowca, to użyj stabilizatora LM1117. U mnie na tym układzie żaden moduł nie padł.
Dzięki za info.
http://www.ebay.com/itm/High-quality-Lua-Nodemcu-WIFI-Network-Development-Board-Based-ESP8266-/281638584308?pt=LH_DefaultDomain_0&hash=item4192f7bff4
oraz
http://www.ebay.com/itm/Serial-ESP8266-Stable-Version-WIFI-Wireless-Module-with-Test-Board-Full-IO-Leads-/301564729048?pt=LH_DefaultDomain_0&hash=item4636a896d8
Czy można odłączyć GPIO0 i zrobić RESET ? Czy efekt będzie taki sam ?
Pamiętaj, że ta pierwsza płytka jest za szeroka na standardowe płytki stykowe. Na dniach powinien się zacząć preoder oficjalnych płytek nodemcu, które są węższe. Co do resetu, sprawdziłem i działa.
Nie wiem czy to pytanie jest na miejscu.
Czy nie zapomniałeś o połączeniu ze sobą mas?
Testuje już płytkę z 2 linku. Szkoda, że nie zaczynałem od niej właśnie.
Wszystko działa idealnie. Nic się nie zawiesza. Ma diody na pinach, 1 diodę RGB dla bajeru i chyba fotorezystor oraz zworkę na GPIO0. Dodałem włącznik na przy bateriach i potem już sama przyjemność :)
Właśnie wgrałem testową stronę “z jQuery” .. przeglądarka ją poprawnie zinterpretowała.
Fellfree testowałeś już może i2c ? Jeżeli by mi zadziałało i2c dla LiquidCrystal_I2C oraz DS1307 to bym mógł zrezygnować z AVRa i to by dopiero była ciekawostka :)
możesz odezwać się do mnie na maile gregor36@wp.pl
panowie nie mam wyboru tego programatora może mi ktoś doradzić
:programator “esptool”.”
Masz zainstalowane Arduino IDE 1.6.X z wtyczką ESP8266?
Wszystko fajnie działa, ale jak odlącze zasilanie i podłącze spowrotem program nie działa, musze wgrywać ponownie. Co to może byc?
Inna zależność znalazlem. Jak odpinam zasilanie i załączam ponownie z wpieta dioda program nie działa. Ale jak odpinam zasilanie i podłączam ponownie po czym podpinam dopiero diode to program działa. Coś mam źle podpięte?
Witam. Miałem ten sam problem z moim projektem(Dioda(finalnie przekaźnik 3v3) podłączona pod moduł nie pozwalała na uruchomienie programu – czerwona dioda na module ledwo świeciła) Wystarczyło podpiąć urządzenie pod porządne, stabilizowane min. 300mah źródło prądu, a moduł zaczął działać. Za jakiś czas spróbuję napisać jakiś artykuł o zasilaniu ESP8266. Te moduły są bardzo wrażliwe na zasilanie.
Ciekawe rozwiazanie dla czujnikow IoT, M2M na stronie
https://smart-connected.us
Przyklady na github.com/smart-connected
RX , TX powinno mieć konwersję napięć jak sądzę : >
USBTTL chodzi na 5V więc i te wyjścia mają takie napięcie, karta leci po 3,3V więc coś może się sfajczyć.
Co sądzicie ?
Niestety po przerobieniu arduino nie pojawia się programator “esptool”. Czy da się coś z tym zrobić?
Wybrałeś płytke ESP Generic w ustawieniach? Jak nie to zainstaluj nowe arduino ide. Cytuje z githuba:
Installing with Boards Manager
Starting with 1.6.4, Arduino allows installation of third-party platform packages using Boards Manager. We have packages available for Windows, Mac OS, and Linux (32 and 64 bit).
Install Arduino 1.6.5 from the Arduino website.
Start Arduino and open Preferences window.
Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.
Open Boards Manager from Tools > Board menu and install esp8266 platform (and don’t forget to select your ESP8266 board from Tools > Board menu after installation).
Tak zrobiłem ale programatora esotool nie ma. A żaden inny nie działa.
Wszystko jasne. ESPTOOL nie potrzebne zostaje programator AVRSP mk2. A piny trzeba podłączyć przez rezystory: CHPD-10k-VCC i RST-10k-RST. :)
Mam pytanko: Jak powinien się zachowywać świeżo wyjęty z opakowania? Podobno pokazuje się jako sieć WIFI, ale ja podłączyłem zasilanie i nic nie widać. Czerwona dioda się świeci i tyle. Jak próbowałem się połączyć przez konwerter USB(mam taki z ustawianiem 3,3V/5V) i wysłać jakąś komendę to brak jakiejkolwiek reakcji.
Podłącz pint CH_PD razem z VCC. Po podpięciu GND do GPIO0 Wgrajnowy system. Odepnij GPIO0 i wszystko powinno działać(na dobrych częstotliwościach).
Ma ktoś instalkę tego przerobionego arduino? Nie umiem nigdzie znaleźć, a wgranie z zewnątrz poprzez preferencje wywala mi błąd.
Pozdrawiam.
Ten artykuł to dno. Nie napisałeś nic konkretnego. Ominąłeś, wiele ważnych szczegółów.
Proponuje abyś nas zaprosił na swój artykuł – chetnie poczytam i skomentuję
Witam
warning: espcomm_sync failed
error: espcomm_open failed
Ktoś, coś ? jest tyle możliwości, każdy artykuł coś pomija…
Witam
Znalazłem rozwiązanie :)
Należy wybrać w Arduino :
Arduino as ISP
zewrzeć nóżkę : D3 z masą
i zaprogramować :)
potem rozewrzeć nóżkę i cieszyć się programem :)
Pozdrawiam Grzesiek
Witam.
Znalazłem rozwiązanie problemu z programowaniem ESP pod Arduino.
Należy wybrać w ustawieniach programowania Arduino:
Arduino as IPS
następnie zewrzeć nóżkę D3 z masą
zaprogramować
zdjąć masę z nóżki D3 i cieszyć się programem:)
Grzesiek
Mógłbyś pokazać ten Twoj konwerter, bo z wygladu mam taki, ale nie wiem jak druga strona i czy rx i tx działają na 3,3V?
Autorze, czy mógł byś zaktualizować swój artykuł? Bo trochę wprowadza w błąd np. z tym “esptool”. W bieżącej wersji tj. 2.3.0 nie ma go na liście programatorów:
https://github.com/esp8266/Arduino/issues/138
Po drugie, w opcjach, zwłaszcza dla “Generic ESP8266” pojawiło się mnóstwo dodatkowych opcji w menu, które pasowało by wyjaśnić. Na tej stronie widać zrzut ekranu, z której wynika, że gość stosuje domyślne ustawienia:
https://hackaday.io/project/5150-arduino-ide-for-esp8266-quickstart-guide