O NodeMCU ESP8266 é um microcontrolador com um módulo Wifi integrado. Muito fácil de usar, é leve e tem uma memória e capacidade computacional superior à do Arduino. Ideal para os seus projectos ligados. A base para a criação de objectos ligados é ligá-los a uma rede como WiFi. O transmissor e a antena WiFi integrados no microcontrolador permitem a ligação à Internet. Graças a isto, é possível criar um servidor que aloja uma página web permitindo controlar o microcontrolador remotamente. Esta página pode ser utilizada para exibir valores medidos pelo NodeMCU ou para controlar as entradas/saídas do microcontrolador.
Pré-requisito: Programar um NodeMCU com a IDE Arduino
Material
- Computador
- ESP8266
- Cabo USB A Macho/Micro B Macho
Princípio funcional
A placa ESP8266 NodeMCU contém um módulo ESP-12E com um microprocessador de 32 bits. Integra um transreceptor WiFi que lhe permite ligar-se a redes existentes ou criar a sua própria rede. A rede WiFi é uma rede de rádio que funciona nas frequências de 2,45 GHz e 5 GHz.
Esquema
O microcontrolador tem uma entrada analógica e 16 GPIOs (11 Digital I/O)disponíveis nos pinos da placa de desenvolvimento. Nos 25 pinos:
- 1 entrada analógica
- 4 saídas PWM
- Alguns são reservados para protocolos de comunicação em série (SPI, I2C, Serial).
É necessário ter um componente Ethernet ou Wifi integrado ou adicionado ao microcontrolador para ter a capacidade de comunicar na rede. O módulo ESP-12E tem uma interface Wifi. Não requer um componente adicional para se ligar à Internet.
Código
Para utilizar a placa NodeMCU, devemos primeiro instalar o gestor da placa depois de adicionar o endereço http://arduino.esp8266.com/stable/package_esp8266com_index.json nas preferências da IDE Arduino. Para comunicar na rede, devemos utilizar um protocolo específico.
Este protocolo está integrado em todas as bibliotecas relacionadas com a comunicação Wifi.
- O módulo WiFi deve ser ligado à rede
- definir um servidor
- definir um cliente
A biblioteca que nos permitirá gerir o transceptor Wifi é a biblioteca ESP8266WiFi.h. Para carregar o código Arduino no quadro, é necessário seleccionar o quadro certo e o porto certo. No nosso caso, a placa é NodeMCU 1.0 (Módulo ESP-12E). Em seguida, criaremos a interface web do ESP8266 na função da página web em HTML.
N.B.: Não se esqueça de modificar o ssid e a password correspondentes à rede Wifi utilizada no código a seguir.
//Libraries #include <ESP8266WiFi.h>//https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFi.h //Constants #define LED D4 //Parameters String request; char* ssid = "********"; char* password = "********"; String nom = "ESP8266"; //Objects WiFiServer server(80); void setup(){ //Init Serial USB Serial.begin(115200); Serial.println(F("Initialize System")); //Init ESPBrowser Serial.print(F("Connecting to "));Serial.println(ssid); WiFi.begin(ssid, password); // Connect to Wifi network. while (WiFi.status() != WL_CONNECTED) { delay(500);Serial.print(F(".")); } server.begin(); Serial.println(); Serial.println(F("ESPBrowser initialized")); Serial.print(F("IP Address: ")); Serial.println(WiFi.localIP()); //Init WiFi server server.begin(); pinMode(LED, OUTPUT); pinMode(A0,INPUT); } void loop(){ WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); handleRequest(request); webpage(client);//Return webpage } void handleRequest(String request){/* function handleRequest */ ////Handle web client request if (request.indexOf("/light1on") > 0) { digitalWrite(LED, LOW); } if (request.indexOf("/light1off") >0) { digitalWrite(LED, HIGH); } } void webpage(WiFiClient client){/* function webpage */ ////Send wbepage to client client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println("<meta name='apple-mobile-web-app-capable' content='yes' />"); client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />"); client.println("</head>"); client.println("<body bgcolor = '#70706F'>"); client.println("<hr/><hr>"); client.println("<h1 style='color : #3AAA35;'><center> "+nom+" Device Control </center></h1>"); client.println("<hr/><hr>"); client.println("<br><br>"); client.println("<br><br>"); client.println("<center>"); client.println(" Pin A0"); client.println(" <input value="+String(analogRead(A0))+" readonly></input>"); client.println(" </center>"); client.println("<center>"); client.println("Built-in LED"); client.println("<a href='/light1on'><button>Turn On </button></a>"); client.println("<a href='/light1off'><button>Turn Off </button></a><br />"); client.println("</center>"); client.println("<br><br>"); client.println("<br><br>"); client.println("<center>"); client.println("<table border='5'>"); client.println("<tr>"); client.print("<td>LED is </td>"); if (digitalRead(LED)) { client.print("<td> OFF</td>"); }else{ client.print("<td> ON</td>"); } client.println("</tr>"); client.println("</table>"); client.println("</center>"); client.println("</body></html>"); client.println(); delay(1); }
Aplicações
- Use uma interface web para conduzir motores ou gerir sensores ligados ao seu microcontrolador ESP8266
Fontes
- https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html
- https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFi.h
- Tutoriais HTML W3School
- Tutoriais HTML de Mozilla
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie