Kurs Arduino i ESP8266: Wstęp

Jest mi niezmiernie miło móc powitać Cię na kursie podstaw programowania Arduino i ESP8266! Będzie to dość nietypowy kurs, ponieważ zamiast jednej z najpopularniejszych, oficjalnych płytek rozwojowych Arduino (np. Uno), wykorzystamy w nim bardzo popularną w ostatnim czasie płytkę rozwojową nazywaną NodeMCU. Układ ten zbudowany jest w oparciu o chip ESP8266, którego główną zaletą jest wbudowany moduł WiFi i niska cena wynikająca z niewielkiego skomplikowania układu. Płytka ta umożliwi nam rozpoczęcie przygody z Arduino niewielkim kosztem oraz poznanie niesamowicie interesującej i dynamicznie rozwijającej się dziedziny technologii jaką jest Internet Rzeczy (ang. IoT – Internet of Things). W trakcie nauki wykonamy też wiele praktycznych projektów, które będą mogły stać się podstawą Twojego własnego systemu domu inteligentnego! Jeśli jesteś pierwszy raz na moim blogu, zachęcam Cię też do odwiedzenia strony O mnie! 🙂

Moduł NodeMCU wykorzystywany w kursie
Oficjalna płytka NodeMCU w wersji v1.0. [1]

Czym jest Arduino, NodeMCU i ESP8266?

Jeśli trafiłeś tu sam, to pewnie doskonale znasz odpowiedzi na powyższe pytania! Na wszelki wypadek postaram się jednak jak najzwięźlej opisać głównych bohaterów niniejszego kursu. 🙂

Arduino

Arduino, to najprościej mówiąc platforma składająca się z języka programowania (którym jest tak naprawdę język C++ wraz z dodatkowymi rozszerzeniami) oraz dostosowanego do niego środowiska programistycznego oraz układów elektronicznych zawierających mikroprocesor, na który wgrywany jest kod programu. Charakterystyczną cechą płytek z Arduino jest zestaw standardowych złączy, które umożliwiają łatwe podłączanie dodatkowych modułów rozszerzających funkcjonalność płytki bazowej. Inną bardzo ważną cechą Arduino jest przynależność do ruchu otwartego oprogramowania oraz hardware’u (ang. Open source software / hardware). Oznacza to, że każdy może wykorzystywać środowisko programistyczne oraz produkować układy (nawet dokładne kopie oficjalnych płytek!) zgodne z Arduino bez żadnych opłat!

Prostota języka programowania Arduino oraz otwartość platformy umożliwiły zgromadzenie ogromnej społeczności hobbystów oraz profesjonalistów, którzy wspólnie rozwijają system projektując dodatkowe moduły sprzętowe oraz biblioteki upraszczające oprogramowywanie najczęstszych czynności. Ciekawostką jest fakt, że projekt Arduino rozpoczął się w 2003 jako program, który miał ułatwiać studentom z Włoch tworzenie urządzeń oddziałujących z otoczeniem za pomocą czujników. Z kolei nazwa Arduino pochodzi od baru w miejscowości Ivrea, w którym spotykali się twórcy projektu. Bar ten z kolei nazwany jest na cześć króla Włoch – Arduina z Ivrei.

Płytka bazowa Arduino Uno
Arduino Uno – jedna z najpopularniejszych płytek rozwojowych. [2]

NodeMCU

No dobrze, czym jest zatem NodeMCU? Otóż, to też jest platforma składająca się z hardware’u, którym jest zazwyczaj płytka zawierająca wspomniany już układ ESP8266 oraz kilka elementów, które pomagają budować, oprogramowywać i testować prototypowe urządzenia. Tymi elementami najczęściej są:

  • układ konwertera UART <-> USB, który umożliwia podłączenie płytki do komputera za pomocą popularnych kabli z wtykiem microUSB,
  • stabilizator napięcia LDO, który obniża napięcie zasilania z 5V (standard dla złączy USB), do napięcia 3.3V akceptowanego przez ESP8266,
  • fizyczne przyciski Reset oraz Flash, które ułatwiają testowanie, wgrywanie nowych programów, oraz oprogramowania modułu ESP8266
  • listwy goldpin umożliwiające umieszczenie modułu na płytce stykowej.

W niektórych, droższych modelach można znaleźć również niewielkie wyświetlacze oraz złącza umożliwiające podłączenie akumulatora LiPo oraz ładowanie go przez specjalny kontroler. Częścią platformy NodeMCU jest również firmware, czyli specjalne oprogramowywanie wgrywane na układ ESP8266. Nie będziemy się na razie zagłębiać w kwestie związane ze zmianą oprogramowania na płytkach NodeMCU, ale ważne jest, żeby wiedzieć, że istnieje taka możliwość. Tak jak w przypadku Arduino, zarówno hardware jak i oprogramowanie udostępniane są na tzw. „wolnej licencji”, zatem każdy może rozpocząć produkcję własnych modułów zgodnych z NodeMCU. Również w tym przypadku umożliwiło to obniżenie ceny modułu, co przyczyniło się do zdobycia ogromnej popularności, jako pierwszy tak tani moduł umożliwiający połączenie z siecią WiFi.

ESP8266

Wreszcie docieramy do sedna naszego tematu! ESP8266 jest sercem omawianej wcześniej płytki NodeMCU. Jest to układ, który składa się mikroprocesora, w pamięci którego przechowywane będą pisane przez nas programy, oraz dodatkowych modułów takich jak pamięć zewnętrzna oraz układ WiFi ze zintegrowaną anteną. Wśród najważniejszych parametrów mikroprocesora możemy wymienić:

  • 32-bitowa architektura RISC,
  • taktowanie domyślne 80MHz (z możliwością ustawienia 160MHz),
  • 32kB pamięci instrukcji oraz 80kB pamięci na dane użytkownika,
  • możliwość dołączenia do 16MB pamięci flash (zazwyczaj 512kB do 4MB na płytkach NodeMCU),
  • 16 pinów GPIO,
  • SPI,
  • I2C,
  • I2S,
  • UART,
  • 10-bitowy przetwornik ADC,
  • Wi-F w standardzie 802.11 b/g/n.

Nie przejmuj się, jeśli nic Ci nie mówią te skróty, zapoznamy się z tymi funkcjami w trakcie kursu realizując interesujące projekty! Zanim przejdziemy jednak do zabawy z NodeMCU musimy poświęcić jeszcze chwilę, żeby omówić wersje w jakich występują płytki. Będzie znacznie prościej, jeżeli w trakcie kursu będziemy wykorzystywać ten sam sprzęt!

Moduł ESP8266 na płytce drukowanej
Moduł ESP8266 na płytce drukowanej. [3]

Warianty płytek NodeMCU

Zanim przejdziemy do działania, musimy podjąć ważną decyzję i wybrać płytkę NodeMCU. Omówię ten temat bardzo krótko i skupię się na kilku najważniejszych różnicach, ponieważ zdaję sobie sprawę, że ten wpis jest już i tak stanowczo zbyt długi, a temat różnic sprzętowych pomiędzy płytkami kompatybilnymi z NodeMCU mógłby trafić spokojnie na oddzielny artykuł.

Oficjalne płytki

Twórcy NodeMCU wprowadzili na rynek dwie wersje płytek. Wersja pierwsza oznaczana jest w internecie jako v0.9, V1 lub „1st generation”. Cechuje się ona dużą szerokością, co utrudnia korzystanie z niej na standardowej płytce stykowej. Druga oficjalna generacja płytek, oznaczana jako v1.0, V2 lub „2nd generation” została przeprojektowana tak, aby rozwiązać ten problem. Zmieniony został również układ umożliwiający konwersję UART/USB oraz zastosowany został nowszy moduł ESP-12E. W trakcie kursu będziemy wykorzystywali właśnie płytkę NodeMCU v1.0 (drugiej generacji), widoczną na poniższym zdjęciu po prawej.

Porównanie płytek NodeMCU v0.9 oraz v1.0
Porównanie płytek NodeMCU v0.9 (po lewej) oraz v1.0

„Nieoficjalne” płytki

Wykorzystanie przez twórców NodeMCU tzw. „wolnej licencji” doprowadziło do wprowadzenia na rynek lawiny klonów oryginalnej płytki. Różnią się one zazwyczaj formą, ponieważ w przypadku urządzeń IoT wielkość płytki z elektroniką ma bardzo duże znaczenie. Innymi istotnymi różnicami jest zastosowany układ konwertera UART/USB oraz dodatkowe moduły sprzętowe wbudowane w płytkę.

NodeMCU „V3”

Wśród płytek pochodzących od producentów niezwiązanych z projektem NodeMCU jedną z najpopularniejszych opcji jest tzw. NodeMCU V3 produkowane przez firmę LoLin. Sprzętowo nie różni się ona prawie wcale od wersji V2 – na jednym z pinów zostało dodane wyprowadzenie napięcia USB. Oprócz tego producent zastosował tańszy układ konwertera UART/USB (CH340G), który potrafi jednak przysporzyć sporych problemów ze względu na kiepsko przygotowane sterowniki. Oprócz tego płytka jest szersza od oficjalnej płytki w wersji v1.0, co utrudnia nieco projektowanie układów na płytkach stykowych.

Pozostałe

Inne warte wymienienia przykłady płytek kompatybilnych z NodeMCU to WeMos D1 mini, która cechuje się niewielkimi wymiarami. SparkFun ESP8266 Thing, to kolejny układ który oprócz niewielkich wymiarów posiada złącze do podłączenia akumulatora LiPo oraz kontroler ładowania. Inną popularną opcją jest Adafruit Huzzah, które przypomina nieco wspomniane już WeMos D1.

Potrzebny sprzęt

W trakcie kursu oprócz programowania będziemy też budować proste urządzenia. Aby ułatwić sobie pracę, będziesz potrzebował kilku dodatkowych modułów, które bez problemu znajdziesz w większości sklepów z elektroniką. Poniżej przedstawiam listę części potrzebnych w trakcie kursu:

  • płytka NodeMCU,
  • kabel USB <-> MicroUSB (wtyk męski),
  • Płytka stykowa (ile pól?),
  • Zestaw łączówek do płytek stykowych,
  • Diody LED (ok. 5 sztuki),
  • Brzęczyk piezo z wbudowanym generatorem,
  • Moduł z przekaźnikiem (najlepiej z izolacją optyczną),
  • Moduł konwertera napięć 3.3/5V,
  • Akumulator LiPo,
  • Moduły do ładowania LiPo (znaleźć),
  • Fotoogniwo (opcjonalnie),
  • diody WS2812B (NeoPixel),
  • Gniazdo oraz wtyk 230V (najlepiej montowane na kabel),
  • gniazdo kart SD + odpowiednia karta,
  • termometr DS18b20,
  • microswitche (ok. 4 sztuki),
  • głośnik ze wzmacniaczem,
  • czujnik kontaktronowy.

Dodatkowo, w przypadku konieczności walki z problemami z układem przydatny byłby również multimetr, lecz postaramy sobie poradzić bez niego.

Zaczynamy!

Uff, dotarliśmy do końca wstępu oraz zapoznaliśmy się z wszelkimi informacjami organizacyjnymi. Czas wreszcie zainstalować Arduino i stworzyć nasz pierwszy projekt! 🙂 Ale to już w następnej części naszego kursu Arduino i ESP8266. Mam nadzieję, że zobaczymy się już wkrótce!

 

Linki i źródła:

[1] https://commons.wikimedia.org/wiki/File:Nodemcu_amica_bot_02.png

[2] https://commons.wikimedia.org/wiki/File:Arduino_uno_r3.jpg

[3] https://commons.wikimedia.org/wiki/File:AI-thinker_ESP-012_module.jpg

http://www.nodemcu.com/index_en.html – strona producenta NodeMCU

https://www.arduino.cc – strona projektu Arduino

https://github.com/nodemcu – repozytorium z materiałami dotyczącymi NodeMCU

https://hackaday.io/projects?tag=ESP8266 – galeria projektów z wykorzystaniem ESP8266

Podziel się stroną ze znajomymi! :)

Dodaj komentarz