Hoje eu vou falar sobre o ARDUINO
DUE ATmel-SAM3XAE que, ligado a um ESP8266/ESP12, te possibilita controlar Deus
e o mundo pelo WiFi. Vou, então, te apresentar uma aplicação integrando Arduino
DUE e ESP8266 utilizando comunicação UART, bem como um exemplo de WebServer com
ESP8266.
RECURSOS USADOS
- ESP8266 Nodemcu Esp-12e
- Arduino Due ATmel-SAM3XAE
- Led
- Resistor 220 ohm ou 330 ohm
- Protoboard
- Jumpers
MONTAGEM
PINOUT
Arduino DUE
ESP8266-12e
ESP-01
MONTAGEM - TABELA
O LED está ligado na porta A11
do DUE.
CÓDIGO
FLUXOGRAMA
DUE
ESP8266
CÓDIGO DUE
Declarações e variáveis
// Serial utilizada para comunicação com o ESP8266 (Tx3 e RX3) #define ESP8266 Serial3 // Led const int led = A11;
Setup
void setup()
{
// Iniciamos a serial para debug
Serial.begin(115200);
// Iniciamos a serial 3 de comunicação com o ESP
ESP8266.begin(115200);
// Setamos o pino do led como saída
pinMode(led, OUTPUT);
Serial.println("Aguardando mensagens do ESP8266...");
}
void loop()
{
// Se uma nova mensagem foi recebida
if(ESP8266.available()) // check if the esp is sending a message
{
Serial.println("Recebido:");
// Efetua a leitura da mensagem vinda do ESP8266
String msg = ESP8266.readString();
Serial.println("'"+msg+"'");
// Se a mensagem corresponde a "ON" ligamos o led, e vice-versa
if(msg.substring(0,msg.indexOf("\n")-1).equalsIgnoreCase("ON"))
digitalWrite(led, HIGH);
else
if(msg.substring(0,msg.indexOf("\n")-1).equalsIgnoreCase("OFF"))
digitalWrite(led, LOW);
}
delay(1);
}
CÓDIGO ESP
Declarações e variáveis
// Bibliotecas wifi #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> // SSID e senha da rede WiFi que o ESP utilizará (Access Point) const char* ssid = "SSID"; const char* password = "SENHA"; // Objeto referente ao WebServer ESP8266WebServer server(80); // IP fixo const IPAddress IP = IPAddress(192, 168, 3, 120); // IP fixo que o ESP utilizará const IPAddress GATEWAY = IPAddress(192, 168, 3, 1); // Gateway const IPAddress SUBNET = IPAddress(255, 255, 255, 0); // Máscara // Nomeamos a serial como DUE #define DUE Serial
Setup
void setup()
{
// Iniciamos a Serial
DUE.begin(115200);
// Aguardamos 1 segundo
delay(1000);
// Setamos o pino do led interno como saida
// Esse led piscará indicando que o wifi está sendo configurado/iniciado
pinMode(LED_BUILTIN, OUTPUT);
// Iniciamos o WiFi
WiFi.begin(ssid, password);
// Conectamos o wifi e piscamos o led enquanto isso
digitalWrite(LED_BUILTIN, LOW);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
// Configuramos o WiFi com o IP definido anteriormente
if (!WiFi.config(IP, GATEWAY, SUBNET))
{
DUE.println("Erro ao configurar IP");
delay(5000);
ESP.restart();
}
digitalWrite(LED_BUILTIN, HIGH);
// Enviamos para o arduino due os dados de rede (debug)
DUE.print("Connected to ");
DUE.println(ssid);
DUE.print("IP address: ");
DUE.println(WiFi.localIP());
// Enviamos para o arduino due a String "Ready" que indica sucesso na inicialização do ESP
DUE.println("Ready");
// Definimos a página raiz (root)
server.on("/", handleRoot);
// Definimos a página responsável por ligar o led
server.on("/on", []()
{
server.send(200, "text/html", "<form action="/off">
"
"Status: ON<br/>
"
"<button type="submit">SET LED OFF</button>"
"</form>
");
DUE.println("ON");
});
// Definimos a página responsável por desligar o led
server.on("/off", []()
{
server.send(200, "text/html", "<form action="/on">
"
"Status: OFF<br/>
"
"<button type="submit">SET LED ON</button>"
"</form>
");
DUE.println("OFF");
});
// Definimos a página de erro
server.onNotFound(handleNotFound);
// Iniciamos o servidor
server.begin();
delay(1000);
}
Loop
void loop()
{
// Executamos os eventos dos client conectados no servidor do ESP
server.handleClient();
// Se o WiFi se desconectou, tentamos reconectar
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
WiFi.reconnect();
}
digitalWrite(LED_BUILTIN, LOW);
}
handleRoot
// Página raiz
void handleRoot()
{
//server.send(200, "text/plain", );
server.send(200, "text/html", "<form action="/on">"
"ESP8266's Page!
"
"<button type="submit">SET LED ON</button>"
"</form>");
}
HandleNotFound
// Página de erros (not found)
void handleNotFound()
{
// Exibimos na página "File Not Found"
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++)
{
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}






















0 Comentários