Popularny post Leoneq Napisano Luty 23, 2020 Popularny post Udostępnij Napisano Luty 23, 2020 Po kursie Arduino chcesz nauczyć się czegoś jeszcze? Albo chcesz zrobić inteligenty dom? A może Arduino po prostu ci nie wystarcza - na to wszystko jest rozwiązanie! ESP8266 to wydajny i tani mikrokontroler. Znajdziemy go na wielu płytkach, od małego 01 na NodeMCU kończąc. Dzisiaj zobaczymy jakie są rodzaje płytek, co w sobie ukrywa kostka mikrokontrolera, oraz spróbujemy przygotować środowisko i wgrać Blinka. Niestety, tak nie robimy - tylko zewrzemy piny. Spis treści serii artykułów: 1. Omówienie, i przygotowanie środowiska 2. Zapoznanie z nowym środowiskiem, praca jako Arduino, prosty serwer WWW 3. Przyspieszony kurs na webmastera 4. Wykresy, zapis do SPIFFS, mini smart-dom 5. Odbiór danych z przeglądarki, stałe IP, łączenie modułów ESP Ten wpis brał udział konkursie na najlepszy artykuł o elektronice lub programowaniu. Sprawdź wyniki oraz listę wszystkich prac » Partnerem tej edycji konkursu (marzec 2020) był popularny producent obwodów drukowanych, firma PCBWay. Możliwości ESP8266 Uznałem, że najlepiej będzie zestawić NodeMCU v3 z Arduino UNO. Najważniejsze informacje podałem w tabeli. Pamiętamy, że ESP pracuje na napięciu 3.3v. Kiedy podłączałem do 5V (nie róbcie tego w domu) się tylko grzał, ale lepiej tego nie róbcie. ESP ma także pamięć FLASH w oddzielnej kostce - co pozwala na dużą jej pojemność (zależy to od wersji modułu). Co więcej, interfejsy możemy zdefiniować na (prawie) każdym pinie. ESP pracuje o wiele szybciej od Arduino - bo aż na 80MHz (z możliwością do 160!), i przede wszystkim ESP jest 32 bitowe. No, i ESP się lekko grzeje, ale to nic złego. Warianty ESP8266 Ten mały mikrokontroler możemy znaleźć na równie małych płytkach, lub znacznie większych i rozbudowanych modułach. Jednym z mniejszych, samodzielnych modułów jest ESP12. Posiada wiele wyprowadzeń, lecz nie jest (nawet z przejściówką) zbyt przyjazny dla płytki stykowej. Posiada natomiast aż 4MB pamięci FLASH (wersja ESP12F). Będzie to optymalny wybór dla rozwiązań wbudowanych (np. własnych płytek). ESP12 Jeżeli natomiast szukamy czegoś równie małego, ale bardziej przyjaznego dla nas, tutaj nadchodzi ESP01. Ten mały modulik ma niestety mniej pamięci (niebieska wersja 512kB, czarna 1MB), oraz tylko 8 wyprowadzonych pinów - lecz do konkretnego zastosowania, np. gniazdka z przekaźnikiem, wystarczy. ESP01 (niebieski) ESP03 i ESP07 to uboższe wersje ESP12, ale posiadają ceramiczną antenę - a ESP07 nawet złącze do zewnętrznej anteny. ESP07 Pozostałe moduły rzadko się spotyka, różnią się jedynie ilością wyprowadzeń, rozmiarem, i sposobem montażu. Przygotowanie ESP do programowania W zależności od tego, jaki moduł wybrałeś, będziesz musiał albo przylutować przewody do jego wyprowadzeń, lub podłączyć się przewodami do płytki stykowej. Dlatego na początek nauki, najlepiej zakupić NodeMCU (płytkę deweloperską z ESP12 na pokładzie), Wemos (troszkę mniejsze płytki z ESP12) - mają wszystko wbudowane. Jeżeli taką płytkę wybrałeś, możesz pominąć ten krok. Mając "surowe" ESP12 lub 01, musisz je odpowiednio podłączyć. Połączenie ESP01 z konwerterem USB ↔ UART. Rozpiska pinów dla ESP01. Do tego będziemy potrzebować dwóch przycisków tact switch, kondensatora elektrolitycznego (z zakresu 100-1000µF), dwóch rezystorów 10kΩ, przewodów, oraz oczywiście ESP i konwertera. Pokazałem to na przykładzie ESP01, ale każdy ESP też ma takie wyprowadzenia: pin CH_PD łączymy na stałe do napięcia zasilania przez rezystor 10kΩ pin RST podciągamy do VCC rezystorem 10kΩ, oraz podpinamy przycisk zwierający do masy pin GPIO0 podpinamy do przycisku zwierającego z masą między VCC a GND dajemy kondensator pin RX konwertera łączymy z pinem TX ESP, a pin TX konwertera z pinem RX ESP piny VCC i GND ESP łączymy z pinami VCC i GND konwertera napięcie na konwerterze ustawiamy na 3.3V! Na NodeMCU także znajdziemy dwa przyciski. Przycisk RST odpowiada ze reset mikrokontrolera - tak samo jak w Arduino. Ale co robi przycisk PRG? Otóż, jeżeli na pin GPIO0 podamy logiczne 0 podczas startu mikrokontrolera, wprowadzimy go w tryb programowania. Dzięki temu będziemy mogli wgrać do niego nasz kod. Jeżeli nie mamy zainstalowanych sterowników dla konwertera (np. CH340), powinniśmy je pobrać i zainstalować. Przygotowanie środowiska ESP możemy programować na dwa sposoby, w języku lua - oraz klasycznie, jak arduino, w c++. Opiszę wam sposób jak programować ESP jako Arduino - a do tego potrzebne będzie Arduino IDE. Jeżeli jeszcze takowego nie mamy, pobieramy najnowszą wersję stąd, po czym instalujemy. Dokładny proces instalacji został opisany na kursie Arduino - jeżeli mamy już zainstalowane środowisko, uruchamiamy je, a następnie przechodzimy do zakładki Plik → Preferencje. Powinno nam się otworzyć nowe okno. Szukamy okienka "Dodatkowe adresy URL do menedżera płytek", i wklejamy ten adres: https://arduino.esp8266.com/stable/package_esp8266com_index.json Całość powinna teraz wyglądać tak: Klikamy OK - następnie przechodzimy do zakładki Narzędzia → Płytka → Menedżer płytek Szukamy "esp8266", i klikamy Instaluj. Pobrane zostanie ok. 100MB danych. Od teraz możemy wybrać płytkę ESP jak zwykłą płytkę Arduino. ALE! Jeżeli już kiedyś programowałeś, w innym IDE, zapewne wiesz, że Arduino IDE jest troszkę przestarzałe. Brak autouzupełniania, podpowiedzi, rozbudowanego systemu plików, GIT, i innych funkcji. Jest na to sposób! Dlatego w tym poradniku także opiszę instalację i konfigurację Microsoft Visual Studio Code do pracy z Arduino. Dzięki temu będzie o wiele prościej i wygodniej pisać programy. Pobieramy zatem najnowsze VS Studio Code z tej strony. Jak widać jest ono dostępne na Windowsa, Linuxa, i MacOS. Po pobraniu i zainstalowaniu, powinniśmy zobaczyć taki widok: Jeżeli ciemny motyw nam nie odpowiada, możemy to zmienić naciskając koło zębate (lewy, dolny róg) i "Color Theme" - jasny motyw to Light+. Problemem dla niektórych może być język angielski - lecz w informatyce jest on niezbędny do funkcjonowania. Nie ma problemu aby wrócić do spolszczonego Arduino IDE. Jeżeli jednak chcesz zostać przy VS Code, musimy zainstalować rozszerzenie Platform.io. Dokładniej masz to opisane w tym forbotowym artykule. Po zainstalowaniu Platformio, klikamy magiczny przycisk F1 (musimy go zapamiętać!), i ukazuje nam się to okno: Znajdziemy tam wszystkie funkcje znane z Arduino IDE! Teraz możemy podpiąć nasz konwerter lub NodeMCU do komputera. Tworzymy nowy projekt, i szukamy po lewej pliku platformio.ini. Tam możemy wybrać inną płytkę niż ta, którą wybraliśmy podczas tworzenia projektu. Możemy także ustalić inne rzeczy - więcej w dokumentacji. Otwieramy podfolder src, i szukamy pliku main.cpp. Otworzyło nam się nowe okno - pierwsze co widzimy, to biblioteka Arduino. Dołączy ona wszystkie funkcje z starego IDE. Wklejamy poniższy kod. Największą różnicą ESP w stosunku do Arduino, jest tutaj zapalenie poprzez ustawienie LOW na pinie. #include <Arduino.h> void setup() { pinMode(LED_BUILTIN, OUTPUT); //pin drugi jako wyjście } void loop() { digitalWrite(LED_BUILTIN, LOW); //zapalamy diodę delay(1000); //czekamy sekundę digitalWrite(LED_BUILTIN, HIGH); //gasimy diodę delay(1000); //czekamy sekundę } Teraz przyszedł moment na wgranie szkicu. Klikamy przycisk PRG (gdzieniegdzie opisywany jako FLASH), trzymamy, a następnie RESET, i puszczamy. Dioda powinna raz mrugnąć - oznacza to, że ESP jest gotowe do zaprogramowania. Klikamy zatem znowu F1, a następnie "Platformio: Upload". Cierpliwie czekamy, aż program się wgra. Kiedy zobaczymy ten komunikat: Przyciskamy przycisk reset na naszej płytce - i dioda powinna zacząć mrugać. Na dole, po lewej, na niebieskim pasku są także małe ikonki pozwalające wgrać szkic. Gratulacje, udało Ci się zaprogramować ESP! Możesz je teraz wykorzystać jako moduł Wifi, samodzielne urządzenie, zastosowań jest tyle ile dla Arduino, a nawet i więcej. Udało Ci się także skonfigurować poprawnie VS Code do pracy z płytkami Arduino (i nie tylko!). W następnym odcinku zobaczymy co tak naprawdę oferuje przesiadka na VS Code, oraz spróbujemy połączyć się przez Wifi. Liźniemy nawet trochę HTMLa z CSSem, aby postawić stronę WWW! W przypadku jakichkolwiek problemów, nie bójcie się pisać komentarzy. Spis treści serii artykułów: 1. Omówienie, i przygotowanie środowiska 2. Zapoznanie z nowym środowiskiem, praca jako Arduino, prosty serwer WWW 3. Przyspieszony kurs na webmastera 4. Wykresy, zapis do SPIFFS, mini smart-dom 5. Odbiór danych z przeglądarki, stałe IP, łączenie modułów ESP 13 1 Link do komentarza Share on other sites More sharing options...
Rogal Marzec 1, 2020 Udostępnij Marzec 1, 2020 Super! 🙂 Aż zapisałem sobie linka w zakładkach. 1 Link do komentarza Share on other sites More sharing options...
ethanak Marzec 1, 2020 Udostępnij Marzec 1, 2020 Bardzo ładny artykuł. Jedna prośba: siedzę właśnie nad artykułem o http w iot - pogadalibyśmy na privie, żeby nie pisać tego samego w dwóch miejscach? 2 Link do komentarza Share on other sites More sharing options...
AdamSamborski Marzec 1, 2020 Udostępnij Marzec 1, 2020 Jeśli to możliwe to proszę o tutka jak programować w czystym C. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
SOYER Marzec 1, 2020 Udostępnij Marzec 1, 2020 @AdamSamborski może trzeba nauczyć się tego języka? Link do komentarza Share on other sites More sharing options...
ethanak Marzec 1, 2020 Udostępnij Marzec 1, 2020 33 minuty temu, AdamSamborski napisał: proszę o tutka jak programować w czystym C W tutka to se możesz cygareta zwinąć. Tu masz kurs: https://pl.wikibooks.org/wiki/C Link do komentarza Share on other sites More sharing options...
AdamSamborski Marzec 1, 2020 Udostępnij Marzec 1, 2020 (edytowany) 2 godziny temu, SOYER napisał: @AdamSamborski może trzeba nauczyć się tego języka? Niestety całe arduino i ten dziwaczny język uważny jest przez moich klientów za jakiś żart. O ile przejdzie w rozwiązaniach homemade to w rozwiązaniach profesjonalnych już nie bardzo, preferowany jest czysty C lub C++. Prosząc o "tutuka" - tutorial myślałem o konfiguracji dowolnego IDE dla ESP8266 (Eclipse, VS Studio Code). Znalazłem to co chciałem na zagranicznych forach lecz wymaga to ściągnięcia 10 różnych rzeczy a potem przebijanie się przez konfigurację. Edytowano Marzec 1, 2020 przez AdamSamborski Link do komentarza Share on other sites More sharing options...
Matthew11 Marzec 1, 2020 Udostępnij Marzec 1, 2020 9 minut temu, AdamSamborski napisał: preferowany jest czysty C lub C++ Arduino to nadal "czyste" C i C++ (nawet C++11). Prędzej można to nazwać frameworkiem niż nowym językiem. 16 minut temu, AdamSamborski napisał: Znalazłem to co chciałem na zagranicznych forach lecz wymaga to ściągnięcia 10 różnych rzeczy a potem przebijanie się przez konfigurację. Wracając do pytania - co prawda odpowiedź nie odnosi się do ESP8266, ale do ESP32 - ale to własnie pod ESP32, Espressif do VSC przygotował dedykowaną wtyczkę. Instalujesz, wyklikujesz i pobiera za Ciebie cały toolchain i narzędzia i po paru chwilach możesz pisać w C (i nawet w C++) korzystając z ESP-IDF. Link. Nie wykorzystałem "produkcyjnie", ale po własnych szybkich testach stwierdzam, że jest to bardzo dobrze przygotowane i z integrowane z VSC bez konieczności żmudnej konfiguracji. 1 Link do komentarza Share on other sites More sharing options...
Belferek Marzec 1, 2020 Udostępnij Marzec 1, 2020 (edytowany) 3 godziny temu, AdamSamborski napisał: Niestety całe arduino i ten dziwaczny język uważny jest przez moich klientów za jakiś żart. O ile przejdzie w rozwiązaniach homemade to w rozwiązaniach profesjonalnych już nie bardzo, preferowany jest czysty C lub C++. To masz klientów, którzy drukują kod źródłowy, oprawiają w ramki i wieszają w salonie? Moim zdaniem całe sedno w tym aby program działał właściwie i niezawodnie. To czy będzie on napisany w C, Basicu, Pythonie czy innym języku programowania to przecież rzecz drugorzędna. Zawsze możesz sobie zainstalować inne środowisko IDE np. Eclipse, Atmel Studio czy Visual Code i ..... zaimportować szkic Arduino. Wtedy to będzie profesjonalny program? Bez przesady. Swoją drogą co w tym języku dziwacznego? Edytowano Marzec 1, 2020 przez Belferek 1 Link do komentarza Share on other sites More sharing options...
Leoneq Marzec 1, 2020 Autor tematu Udostępnij Marzec 1, 2020 Właśnie, chcielibyście żebym także opisał programowanie ESP w lua? Uznałem że jak jest kurs Arduino nie ma sensu męczyć innego języka, ale jeżeli chcecie - nie ma problemu (pytanie do społeczności) Link do komentarza Share on other sites More sharing options...
Belferek Marzec 1, 2020 Udostępnij Marzec 1, 2020 Ja bym chętnie poczytał nie tyle o LUA co o np. timerach, przerwaniach, interfejsach, pamięci .... itd. w języku C z poziomu np. Arduino IDE Link do komentarza Share on other sites More sharing options...
SOYER Marzec 1, 2020 Udostępnij Marzec 1, 2020 @Belferek napisałeś 21 minut temu, Belferek napisał: Moim zdaniem całe sedno w tym aby program działał właściwie i niezawodnie. To czy będzie on napisany w C, Basicu, Pythonie czy innym języku programowania to przecież rzecz drugorzędna. poźniej 13 minut temu, Belferek napisał: Ja bym chętnie poczytał nie tyle o LUA co o np. timerach, przerwaniach, interfejsach, pamięci .... itd. w języku C z poziomu np. Arduino IDE Więc jest ta jakościowa różnica czy nie ma? Dlaczego lepiej coś napisać w C niż w "dialekcie" Arduino? Link do komentarza Share on other sites More sharing options...
Belferek Marzec 1, 2020 Udostępnij Marzec 1, 2020 (edytowany) 42 minuty temu, SOYER napisał: Więc jest ta jakościowa różnica czy nie ma? Dlaczego lepiej coś napisać w C niż w "dialekcie" Arduino? To pewnie nie ten wątek ale powiem tak. Dziś zainstalowałem Eclipse i Visual Code, wcześniej doposażyłem się w Atmel Studio z głębokim przeświadczeniem, że przesiądę się na któryś z tych IDE gdyż standardowe Arduino IDE wiesza mi komputer (nowy Win 10 Home, aktualny i legalny bez udziwnień) i ..... ja stary człowiek zostałem przytłoczony ogromem ustawień, konfiguracji itp. tych środowisk. Kompilując program w efekcie końcowym mam to samo co w konsoli Arduino IDE, wielkość pliku wynikowego jest podobna (jak nie taka sama) i program .... działa oczywiście tak samo. Dla wyjadaczy i miłośników szczegółowej konfiguracji środowiska (np. definiowania includowanych ścieżek, workspac-ów, itd.) to te kombajny są super. Są super także dla tych, którzy nie ograniczają się do Arduino. Można w nich tworzyć projekty w C/C++ praktycznie na każdą platformę sprzętową (no może za wyj. Atmel Studio bo to "fabryczny soft") - więc to plus. Przytłaczają mnie trochę te programy tym bardziej, że okazało się iż np. Arduino IDE LLC (to nie to samo IDE co z arduino.cc) dostępne w Microsoft Store działa u mnie prawidłowo - nie zawiesza mi komputera więc sobie spokojnie działam, a nie działa z Visual Code. Piszesz o dialekcie Arduino - takiego moim zdaniem nie ma. Są za to dedykowane biblioteki producenta z ich funkcjami np. digitalWrite(); pinMode() itd. ale to przecież C/C++ a nie żadna odmiana, dialekt języka. Tak więc moim zdaniem jeśli poruszamy się w świecie Arduino to IDE producenta jest wystarczające i najłatwiejsze do opanowania. Obsługa tego środowiska to praktycznie OTWÓRZ, ZAPISZ, CTRL+R i CTRL+U - czy da się prościej? Wracając do tematu ponieważ Arduino IDE wspiera ESP8266 i większość użytkowników forum z pewnością też z tego środowiska korzysta więc proponuję by dalszą część tego kursu (jeśli będzie) oprzeć na tym właśnie IDE. Kto korzysta z Eclipse czy innych kombajnów z pewnością sobie poradzi. Edytowano Marzec 1, 2020 przez Belferek Link do komentarza Share on other sites More sharing options...
Leoneq Marzec 1, 2020 Autor tematu Udostępnij Marzec 1, 2020 Eclipse to chyba pod wszystko jest. Tam także wszystko chyba jest 😛 Swoją drogą, ostatnio zauważyłem że nawet w codeblocksach jest specjalny szablon pod projekt Arduino. Tak więc wybór środowiska jest i to duży. Link do komentarza Share on other sites More sharing options...
Rogal Marzec 1, 2020 Udostępnij Marzec 1, 2020 Jakiś czas programowałem AVRy w atmel studio i mi w arduino brakuje delikatnie niższego poziomu. Nawet nie chodzi mi o jakieś wstawki w ASM tylko bardziej właśnie o dokładną konfiguracje timerow, adc, uart etc, także podział projektu na pliki. Wiem, że generalnie kompilator zrobi robotę i pewnie w 99% bede mial to czego potrzebuje no ale taki przywilej hobbysty, że mogę się rozdwodzic nad prescalerem adc i sleep mode żeby osiągnąć lepsze rezultaty a nie tylko wystarczające. Oczywiście na obecnym etapie w modulach ESP to ciesze się, że w ogóle wiem jak wgrać program :) Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »