matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki...

7
Dobry start do Internetu Rzeczy - moduł NodeMCU Marek Matusiak Internet Rzeczy (Internet of Things) jest w ostatnim czasie szeroko badanym i wdrażanym kierunkiem informatyki. Oprogramowane mikroukłady cyfrowe mają zdolność do odbierania i przetwarzania analogowych oraz przede wszystkim cyfrowych sygnałów pochodzących z czujników, a także wyprowadzania przetworzonych cyfrowych sygnałów sterujących innymi urządzeniami. Dodatkowo wyposażone są w układy komunikacji przewodowej lub coraz częściej bezprzewodowej. Stanowią więc sobą bazę sprzętowo-programistyczną do wykorzystania w informatyce, robotyce i szeroko rozumianej automatyce. Wiele firm włącza się aktualnie do projektowania i produkcji mikrokontrolerów przydatnych w powyższych zastosowaniach. Jednym z nich jest moduł NodeMCU wdrożony przez firmę Espressif Systems zawierający programowalne wejścia i wyjścia oraz komunikacyjne obwody radiowe działające w paśmie WiFi 2,4GHz. Cały układ koncepcyjnie przypomina inne, wcześniej znane rozwiązania mikrokomputerowe, np. Arduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym rzędzie. Wygląd płytki modułu oraz opis pinów zostały pokazane na rys.1.

Transcript of matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki...

Page 1: matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym

Dobry start do Internetu Rzeczy - moduł NodeMCU

Marek Matusiak

Internet Rzeczy (Internet of Things) jest w ostatnim czasie szeroko badanym i wdrażanym kierunkiem informatyki. Oprogramowane mikroukłady cyfrowe mają zdolność do odbierania i przetwarzania analogowych oraz przede wszystkim cyfrowych sygnałów pochodzących z czujników, a także wyprowadzania przetworzonych cyfrowych sygnałów sterujących innymi urządzeniami. Dodatkowo wyposażone są w układy komunikacji przewodowej lub coraz częściej bezprzewodowej. Stanowią więc sobą bazę sprzętowo-programistyczną do wykorzystania w informatyce, robotyce i szeroko rozumianej automatyce. Wiele firm włącza się aktualnie do projektowania i produkcji mikrokontrolerów przydatnych w powyższych zastosowaniach.

Jednym z nich jest moduł NodeMCU wdrożony przez firmę Espressif Systems zawierający programowalne wejścia i wyjścia oraz komunikacyjne obwody radiowe działające w paśmie WiFi 2,4GHz. Cały układ koncepcyjnie przypomina inne, wcześniej znane rozwiązania mikrokomputerowe, np. Arduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym rzędzie. Wygląd płytki modułu oraz opis pinów zostały pokazane na rys.1.

Rys.1. Układ wyprowadzeń modułu NodeMCU.

Cały układ pracuje w cyfrowej logice 3,3V; napięcia 5V mogą być wykorzystane przez inne urządzenia, ale należy zachować ostrożność przy sprzęganiu ich z ESP8266, układem bazowym modułu NodeMCU. Zestaw 11 programowanych cyfrowych wejść/wyjść oznaczonych literą D pozwala na przetwarzanie sygnałów pochodzących od czujników lub innych urządzeń sygnałowych, wtedy są to

Page 2: matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym

sygnały wejściowe dla modułu. Po przeprogramowaniu funkcji poszczególnych pinów można ich używać także jako wyjściowych i w ten sposób sterować działaniem innych urządzeń (urządzenia wykonawcze). Wszystkie piny D za wyjątkiem D0 mogą generować sygnały PWM (Pulse Width Modulation) będące ciągami impulsów prostokątnych (amplituda 3,3V) o ustalonej częstotliwości (dla tego modułu wynosi ona 1kHz) i zmienianej szerokości wypełnienia. Takie sygnały wyjściowe bywają nazywane pseudo-analogowymi, a doprowadzone do obiektów o dostatecznie dużej bezwładności sprawiają wrażenie doprowadzania do nich sygnałów o zmieniającej się amplitudzie. Mogą to być zarówno silniki, elektrozawory, jaki diody elektroluminescencyjne (LED). W tym ostatnim przypadku nie tyle LED’y są bezwładne w działaniu, co ludzki system wzrokowy (oczy oraz mózg).

Moduł zawiera równolegle realizowany system oznaczeń w postaci GPIO (General Purpose Input Output), które są pinami ogólnego wykorzystania (niespecjalizowane).

Widok modułu od strony podzespołów SMD pokazano na rys.2.

Rys.2. Widok modułu NodeMCU v.3.

Z lewej strony płytki oprócz meandra nadrukowanej anteny WiFi widoczny jest układ mikrokomputera (mikrokontrolera). W niektórych wykonaniach można spotkać moduły ograniczone wyłącznie do tego układu. Brakuje wtedy obwodów komunikacji z komputerem. Na przedstawionej powyżej płytce takie komunikacyjne funkcje pełni układ CH340G. Przed jego użyciem należy zainstalować jego sterownik dla używanego systemu operacyjnego. Po tych czynnościach komunikacja będzie możliwa poprzez złącze Micro-USB. Mikrokontroler (MCU) AI-Thinker wbudowany w układzie modułu ESP-0.1 dysponuje następującymi parametrami:

1. Procesora. Architektura RISC Tensilica Xtensa L106, 32-bitowab. Częstotliwość taktowania 80MHzc. Pamięć Flash 4MBd. RAM: 64kB dla instrukcji, 96kB dla danych

2. WiFia. Standardy: IEEE 802.11 b/g/nb. Moc wyjściowa max. standard b: +25dBm

Page 3: matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym

c. Bezpieczeństwo: WEP/WPA/WPA23. Interfejsy We/Wy

a. 16 pinów GPIOb. Jedno We analogowe 10-bit 0-1V (A0, ADC0)c. Magistrale: SPI, I2C, 1-wire

Objaśnienie oznaczeń pinów poza GPIO pokazano w Tabeli 1.

Tabela 1. Oznaczenia pinów układu NodeMCU.

Nazwa Funkcja DziałanieADC, ADC0, A0 Przetwornik A/D WejścieG Masa (Ground)VU Napięcie doprowadzane do modułu,

tu 5VNapięcie pobrane z gniazda Mikro-USB

SD3, SD03, S3 GPIO Wejście/WyjścieSD2, SD02, S2 GPIO Wejście/WyjścieSD1, SD01, S1 SPI INT – Serial Peripheral Interface,

MOSI (Master Output Slave Input)SC, CMD SPI – Slave Control, wybór układu

podrzędnegoWejście

S0, SD0 SPI – MISO (Master Input Slave Output)

SK, CLK SPI – Serial Clock (zegar taktujący)3V 3,3V do wykorzystania Ograniczenie prądowe, wyjścieEN Dostępność układu WejścieRST Restart układu ESP12E WejścieVIN Zapięcie zasilania modułu 4,5-9V WejścieD0-D8 Cyfrowe I/O + PWM Wejście/WyjścieRX UART - odbiór sygnałów WejścieTX UART – wysyłanie sygnałów Wyjście

Omawiany moduł może być zasilany z:

Dowolnego urządzenia zawierającego host USB przy poborze prądu do 1A, czyli USB 3.0 lub 3.1. Napięcie doprowadzane jest do modułu kablem Micro-USB. Na płytce modułu zainstalowano stabilizator 3,3V, z którego zasilana jest cała elektronika.

Dowolnego zasilacza napięcia 4,5-9 V i wydajności prądowej 1A dołączonego do zacisków VIN (+) i G (-).

Zasilacza stabilizowanego 3,3V/1A dołączonego pomiędzy piny 3V i G (GND). Nie wolno wtedy jednocześnie podłączać wyżej wymienionych zasilaczy.

Producenci modułu często ładują do pamięci Flash interpreter skryptowego języka programowania Lua. Można wykorzystywać wtedy środowisko programistyczne (IDE) ESPlorer (napisane i uruchamiane w środowisku JAVA) lub po zainstalowaniu dodatku NodeMCU w IDE Atom.

W przypadku chęci wykorzystania IDE Arduino mogą wystąpić kłopoty z jego użyciem z powodu niedostosowania ESP8266 do niego. Istnieje jednak dodatek, który po zainstalowaniu umożliwia programowanie w Arduino C++. Pakiet dodatku można pobrać z lokalizacji: http://arduino.esp8266.com/stable/package_esp8266com_index.json i zainstalować

Page 4: matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym

w środowisku Arduino nie starszym niż wersja 1.6.4. W celu dezaktywacji interpretera Lua można użyć oprogramowania Flasher albo:

Jednocześnie przez co najmniej sekundę nacisnąć przyciski RST i FLASH Po odczekaniu ok. 3 s krótko nacisnąć przycisk RST (reset)

Pierwszym programem, który zwykle sprawdza się zaczynając programowanie jest „Hello World”. W Arduino i innych mikrokontrolerach jest to projekt Blink, w którym zainstalowana na płytce lub dołączona zewnętrzna dioda LED miga z zaprogramowaną częstotliwością. Do rysowania schematów połączeń (wiring) można użyć oprogramowania Fritzing. Anoda LED połączona jest do pinu D0, a katoda do masy G (GND). Zwykle, szeregowo z diodą instaluje się rezystor ograniczający prąd płynący w tym obwodzie. W tym przypadku napięcie piny D0 w stanie wysokim (HIGH) jest bliskie napięcia przewodzenia LED, a uwzględniając rezystancje obwodowe ograniczające prąd można zastosować takie uproszczone rozwiązanie. Rysunek 3 pokazuje schemat połączenia.

Rys.3. Schemat układu w programie Fritzing.

Do tak przygotowanego hardware należy dodać odpowiednie oprogramowanie w środowisku Arduino IDE. Poniżej przedstawiono listing programu:

// Opracowane i sprawdzone przez M.Matusiak

int ledPin = D0

void setup()

{

pinMode(ledPin, OUTPUT);

}

void loop()

{

digitalWrite(ledPin, HIGH);

Page 5: matusiak.netmatusiak.net/wyklady/NodeMCU_01.docx · Web viewArduino, czy Raspberry Pi. Szpilki stykowe (piny) w wersji nr 3 (v.3) tworzą 2 rzędy wyprowadzeń po 15 sztuk w każdym

delay(250);

digitalWrite(ledPin, LOW);

delay(1000);

}

Po załadowaniu kodu otrzymuje się komunikat:

Archiving built core (caching) in: C:\Users\sp7mu\AppData\Local\Temp\arduino_cache_777402\core\core_esp8266_esp8266_nodemcuv2_CpuFrequency_80,UploadSpeed_115200,FlashSize_4M3M_1afef0aa6d46de5acebf2b70f0db6959.a

Szkic używa 222237 bajtów (21%) pamięci programu. Maksimum to 1044464 bajtów.

Zmienne globalne używają 31580 bajtów (38%) pamięci dynamicznej, pozostawiając 50340 bajtów dla zmiennych lokalnych. Maksimum to 81920 bajtów.

Uploading 226384 bytes from C:\Users\sp7mu\AppData\Local\Temp\arduino_build_87422/NodeMCU_Blink.ino.bin to flash at 0x00000000

................................................................................ [ 36% ]

................................................................................ [ 72% ]

.............................................................. [ 100% ]

Skutkiem tak przygotowanego sprzętu i oprogramowania jest błyskanie LED w cyklu: 0,25 s (250ms) – świecenie, 1 s (1000ms) – brak świecenia.

Zaprezentowany moduł o wymiarach 57x31 mm pozwala na zastąpienie większych i podobnych co do możliwości płytek, choćby Arduino Uno. NodeMCU wykazuje jednak swoją przewagę będąc wyposażonym w dobrej jakości komponent WiFi, co pozwala sprzęgać go z lokalnymi sieciami bezprzewodowymi. Staje się tym samym dobrą bazą do tworzenia Internetu Rzeczy. Inne przykłady zastosowań zostaną przedstawione w najbliższej przyszłości.