Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/itstreet/public_html/classes/CMySQL.php on line 22

Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/itstreet/public_html/classes/CMySQL.php on line 24
ITstreet -NodeMCU ESP-12E - osnove
Preskoči na sadržaj

ITstreet postovi

NodeMCU ESP-12E - osnove

Jedan krajnje zanimljiv modul vam sada predstavljam. NodeMCU je modul koji na sebi ima ugrađen Wi-Fi primopredajnik zasnovan na čipu ESP8266 koji mu omogućava bežično povezivanje sa manje-više svim i svačim. Čip ESP8266 se sastoji iz varijante Tensilica L106 32-bitnog MCU-a (micro controler unit) i radi na 80Mhz (overklok do 160Mhz). Ima sopstvenu memoriju, malu (96KB data RAM + 64KB instruction RAM), ali sasvim dovoljnu za svoje potrebe. Podržava IEEE802.11 b/g/n i TCP/IP protokole a antena je štampana na PCB-u. Modul radi na 2,4Ghz i ima sigurnosne WPA/WPA2 modove. Podržani protokoli su UART,HSPI, I2C, I2S, PWM, GPIO i IR daljinsko upravljanje. Možemo reći da je ESP8266 SoC koji daje dosta mogućnosti za izuzetno malu cenu.

ESP-12E je modul na koga je ESP8266 zalemljen i koji ima još 4096 kilobajta sopstvene memorije. Ovaj modul ima pinove sa razmakom od 0,1" i pogodan je za prototipsku ploču. Uz njega dolazi i firmver NodeMCU pa otuda i naziv. NodeMCU ima podršku za programski jezik LUA, koji je dosta sličan JavaScriptu i oni koji su se bavili web programiranjem će primetiti sličnosti. Modul koji sam ja uzeo ima CP2102 kontroler, zadužen za komunikaciju sa računarom preko USB/UART interfejsa.



Red je da se latimo mikroskopa i vidimo šta sve ima na ovom malenom modulu. Centralno mesto zauzima ESP8266 sa odštampanom antenom i jasno se vidi da je u pitanju modul koji je zalemljen na drugi. Na drugom kraju je mikro USB port sa dva malena tastera oko njega, reset i flash. Između USB porta i Wi-Fi modula se još našlo mesta za AMS117 regulator, dobro poznat u svetu mikro računara. NodeMCU radi nazivno na 5V, do ovog regulatora. Na dalje je sve 3,3V, što će reći da su i svi izlazni pinovi 3,3V. Tu je i pomenuti CP2102 kontroler. Ovde ide napomena da postoji i modul sa CH340G kontrolerom. Tu su još i par LED i nešto elektronike. Na obodima su dva puta po 15 pinova a rekao sam da su 0,1" razmaka i da su pogodni za prototipsku ploču.



Pinout NodeMCU modula je malo čudan. Najveće greške prilikom povezivanja ovog modula se prave pogrešnim odabirom pinova. Počeću sa levom stanom:

  • Vin - 5V (4,5V-9V)
  • GND - Ground
  • RST - Reset ESP12
  • EN  - Chip Enable
  • 3V3 - 3,3V
  • GND - Ground
  • CLK - SPI CLK (clock)
  • SD0 - SPI MISO (master input slave output)
  • CMD - CS
  • SD1 - SPI MOSI (master output slave input)
  • SD2 - GPIO9
  • SD3 - GPIO10
  • RSV - Reserved
  • RSV - Reserved
  • A0  - Analog
Desna strana:
  • 3V3 - 3,3V
  • GND - Ground
  • TX(D10)  - UART Output/GPIO01
  • RX(D9)  - UART Input/GPIO03
  • D8  - GPIO15
  • D7  - GPIO13
  • D6  - GPIO12
  • D5  - GPIO14
  • GND - Ground
  • 3V3 - 3,3V
  • D4  - GPIO2
  • D3  - GPIO0
  • D2  - GPIO4
  • D1  - GPIO5
  • D0  - GPIO16


Na GitHub-u se pored slike koju sam preuzeo može naći kompletan devkit i uputstvo za flešovanje NodeMCU-a. Već sam napomenuo da često dolazi do grešaka prilikom povezivanja ovog modula a par objašnjenja i uputstava imate ovde i ovde.

Prvo povezivanje modula sa računarom ide preko mikro USB kabla. Mala plava LED će se nakratko upaliti i potom ugasiti. Plava LED će trepnuti i ako se pritisne RST (reset) dugme. Ukoliko računar ne prepozna modul, potrebno je preuzeti drajver za CP2102 koji imate ovde. Nakon toga bi trebalo skeniranjem dostupnih Wi-Fi signala da se modul prijavi, u mom slučaju kao ESP_06E569.



Sledeće je dodavanje modula u Arduino IDE, tako što idemo na File->Preferences->Settings tab i u polje Additional Board Manager URLs kucamo http://arduino.esp8266.com/stable/package_esp8266com_index.json. Na ovaj način će IDE prikupiti potrebne drajvere za NodeMCU sa esp8266.com sajta. Dalje idemo na ok. Zatim idemo na Tools->Board->Boards Manager i tu pod Type biramo Contributed gde će se između ostalih izlistati i esp8266 by ESP8266 Community. A možemo i ako u polje za pretragu pored kucamo esp. Biramo našu novu ploču i instaliramo najnoviju verziju drajvera. Instalacija može da potraje. Nakon toga idemo opet Tools->Board->NodeMCU 1.0(ESP-12E Module), tj. biramo ploču sa kojom će Arduino IDE imati komunikaciju a koju smo upravo dodali. Dalje biramo Upload Speed (Tools) i stavljamo 9600 Bauda jer je tako po specifikaciji za moj modul a to piše na strani gde su pinovi. Takođe biramo Port (Tools) u mom slučaju je COM12. CPU frequency ostavljamo na 80MHz a postoji opcija za overclock.





Na kraju da testiramo naš NodeMCU i vidimo da li sve radi kako treba. Probaćemo da pustimo integrisanu LED na modulu da trepće tako što idemo na File->Examples->ESP8266->Blink. Otvara se novi skeč sa već ispisanim kodom. Kompajliramo ga i prebacujemo na modul. Plava LED pored same "odštampane" antene (sistemska LED) će treptati za vreme uploada a kada se proces završi počeće da trepće ugrađena plava LED do samog naponskog regulatora.



So far, so good. Sada je na redu da uposlimo sam ESP8266. Na Codebender.cc preuzimamo skeč i tu menjamo SSID i pasword iz naše lokalne mreže. Menjamo Upload Speed na 115200 Bauda. Kompajliramo i prebacujemo na modul. Idemo na Serial Monitor i tu bi trebalo da nam izađe IP adresa modula. Adresu kucamo u adresnu liniju našeg omiljenog pregledača i ... Zdravo Svete!!!! Na žalost, IP adresi možemo na ovaj način pristupiti samo iz lokalne mreže.







Igramo se i dalje...
Rekao sam da NodeMCU ima GPIO pinove. Ako je tako onda bi trebalo da se mogu koristiti na identičan način kao i oni na Arduinu? Da probamo da nateramo LED da trepće preko GPIO pina, recimo D8. Rukovodeći se prema šemi, to je GPIO15 i u skeču ćemo ulogu izlaza dati digitalnom pinu 15. Povezivanje po Fritzing šemi ispod. Anoda, duži krak LED ide na plus (D8) a katoda, kraći krak ide na minus (GND).



---------------------------------------
void setup() {
  pinMode(15, OUTPUT);
}
void loop() {
  digitalWrite(15, HIGH);
  delay(1000);           
  digitalWrite(15, LOW);  
  delay(1000);            
  digitalWrite(15, HIGH);
  delay(500);           
  digitalWrite(15, LOW);  
  delay(500);  
}
-----------------------------------------

Skeč je prilično prost. U setup funkciji dodeljujemo pinu 15 izlaz. U loop funkciji digitalnim upisom stavljamo pin 15 na HIGH, nakon 1 sekunde, vraćamo na LOW, pa opet na HIGH. LED će se naizmenično paliti i gasiti.



Ovo je samo vrh ledenog brega mogućnosti NodeMCU-a. Svakako najzanimljiviji deo je upravljanje modulom putem web pregledača. Postoji dosta aplikacija za mobilne telefone koji mnogo pojednostavljauju proces, ali na taj način se neće naučiti ništa. A bez muke nema nauke.

Ostavite poruku

Vaša mejl adresa neće biti objavljena.Označena polja su obavezna*