ESP8266 NodeMCU v3 jest modułem WiFi opartym na układzie ESP8266 pracującym w standardzie b/g/n. Na płytce znajduje się wbudowany konwerter USB<->UART, który umożliwia programowanie bezpośrednio poprzez port USB. Oprócz standardowych skryptów pisanych w środowisku Ardiuno IDE , moduł obsługuje również skrypty napisane za pomocą języka skryptowego Lua.
Krok pierwszy instalacja programu Arduino IDE
Pobieramy program Arduino IDE ze strony https://www.arduino.cc/en/Main/Software i instalujemy.
W Arduino IDE musimy podać ścieżkę do zainstalowania wymaganych bibliotek płytki ESP8266. Z menu wybieramy Plik->Preferencje w polu „Dodatkowe adresy URL do menadżera płytek:” wpisujemy:
http://arduino.esp8266.com/staging/package_esp8266com_index.json
Przechodzimy do Narzędzia -> Płytka „Arduni Yuk” -> Menadżer płytek… . W wyszukiwarce wpisujemy „ESP” wybieramy esp8266 by ESP8266 Community wybieramy najnowszą wersje, klikamy instaluj.
Jeżeli nie wyszuka nam się esp8266 by ESP8266 Community sprawdźmy czy jesteśmy podłączeni do internetu i czy strona producenta jest dostępna (czasami strona potrafi być niedostępna). Jeśli nie jest dostępna musimy spróbować później.
Gdy już zainstalujemy biblioteki do modułu ESP8266 NodeMcu, podłączamy moduł przez USB do komputera, sterowniki powinny zainstalować się automatycznie. Jak by były jakieś problemy z instalacją sterowników ch3406 możemy je pobrać i zainstalować ręcznie (przykładowo dla Windowsa można pobrać sterowniki ze strony http://www.arduined.eu/ch340-windows-8-driver-download ).
ESP8266 w akcji
Zbudujmy nasz pierwszy układ. Do pinu D6 podpinamy diodę dłuższą nóżką (+) a drugą nóżkę krótszą (-) do GND (masa) tak jak jest to pokazane na rysunku.
Wklejamy poniższy przykładowy skrypt do edytora Arduino IDE.
int ledPin = 12; //D6 ustawiamy, do którego pinu jest podłączona dioda
// funkcja setap uruchamia się raz przy uruchomieniu
void setup() {
pinMode(ledPin, OUTPUT); // ustawiamy pin jako wyjście
}
// funkcja loop uruchamia się w nieskończonej pętli
void loop() {
digitalWrite(ledPin, HIGH); // włączmy diodę, podajemy stan wysoki
delay(1000); // czekamy sekundę
digitalWrite(ledPin, LOW); // wyłączamy diodę, podajemy stan niski
delay(1000); // czekamy sekundę
}
Wybieramy na jaką płytkę chcemy wgrać nasz skrypt. Wubieramy Narzędzia -> Płytka „Arduni Yuk” -> NodeMCU 1.0 (ESP-12E Module). Wybieramy port do którego podłączyliśmy USB z modułem ESP8266.
Gdy już wybierzemy odpowiednią płytkę i port wgrywamy skrypt na nasze urządzenie, klikamy ikonkę strzałki ”wgraj” na górze. Program skompiluje nasz skrypt i wgra go na nasze urządzenie.
Po wgraniu skryptu dioda zacznie migać.
Pora na coś trudniejszego
Zbudujmy układ jak poniżej. Podłączmy drugą diodę do D4 (dłuższą nóżką +) i do GND (krótszą nóżką -).
Wgrajmy kolejny przykład. W miejscu ssid i password podajemy nazwę naszego WiFi i hasło.
#include <ESP8266WiFi.h>
const char* ssid =" "; // Tu wpisz nazwę swojego wifi
const char* password = ""; // Tu wpisz hasło do swojego wifi
int ledPin = 2; // D4
int ledPin2 = 12; // D6
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin2, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
int timewate = 0;
while(!client.available()){
delay(1);
timewate = timewate +1;
if(timewate>1800)
{
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
if (request.indexOf("/LED2=ON") != -1) {
digitalWrite(ledPin2, HIGH);
value = HIGH;
}
if (request.indexOf("/LED2=OFF") != -1) {
digitalWrite(ledPin2, LOW);
value = LOW;
}
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("");
client.println("");
client.print("Led pin is now: ");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
Wgrywamy nasz nowy skrypt do naszego układu, w międzyczasie otwieramy monitor portu szeregowego z Narzędzia -> Monitor portu szeregowego.
Po pewnym czasie powinniśmy dostać komunikat:
Connecting to (nasze WiFi)
………….
WiFi connected
Server started
Use this URL to connect: http://192.168.0.15/
W przeglądarce wchodzimy na podany adres w moim przypadku jest to 192.168.0.15 aby się dostać do panelu sterującego podłączonymi diodami.
Jak by były jakieś problemy z konfiguracją połączenia z modułem ESP8266, możemy spróbować wgrać nowy flush. Pobieramy programik ESP8266Flasher, odpalamy, wskazujemy port gdzie jest podpięte nasze urządzenie po czym klikamy FLUSH. Program już sam automatycznie pobierze najnowsze oprogramowanie do naszego modułu WiFi.
Linki do pobrania programu ESP8266Flasher:
https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe
https://github.com/nodemcu/nodemcu-flasher/raw/master/Win64/Release/ESP8266Flasher.exe
Udanej zabawy z modułem ESP8266 NodeMcu v3.