Tutorial: Módulo Wifi ESP8266 no Arduino
O Arduino foi possivelmente a plataforma com mais responsabilidade na banalização do desenvolvimento de aplicações de hardware/software capazes de interagir/sentir com o meio. Esta importância foi tal que actualmente muitos projectos comerciais tiveram, e nalguns caos ainda têm, o seu hardware assente nesta plataforma.
Hoje apresentamos a ESP8266, uma pequena placa que aumenta as funcionalidades da plataforma Arduino.
A placa ESP8266 permite, de forma muito simples e rápida, ligar a uma rede wireless, para por exemplo invocar um webservice e registar a temperatura no local, ou em alternativa, pode configurar-se para que ela própria crie uma rede wireless (funcionando como hotspot) e seja um servidor web onde nos ligamos com o nosso smartphone e assim obtermos o valor da temperatura do local. Possibilita ainda, ter os dois modos em simultâneo, ou seja, ligar-se a uma rede web e ele próprio disponibilizar uma rede wireless.
Algo muito interessante é o facto de podermos usar o IDE Arduino para programar esta ESP8266.
Deve, no entanto, referir-se que esta placa no que diz respeito ao pinout é mais limitada que por exemplo o Arduino Uno, dispondo apenas de uma ADC, pelo contrario dispõem de 17 pinos digitais, todos eles com capacidade de fazer PWM. Relativamente à comunicação, é possível usar SPI e dispõem também de 2 portas serie.
Módulo Wireless ESP8266:
- Suporte para redes Wifi 802.11 b/g/n
- Alcance: 91 metros
- Tensão de operação: 3.3 VDC
- Modos de operação : Cliente, Access Point, Cliente+Access Point
- Modos de segurança wireless : OPEN/WEP/WPA-PSK/WPA2-PSK/WPA-WPA2-PSK.
- Suporta comunicação TCP e UDP: até 5 em simultâneo
Vamos ao trabalho...
Comecemos hoje pelo "hello world" da eletrónica (que é ligar e desligar um led) do ESP8266.
Para mais facilmente trabalharmos com o ESP8266 devemos utilizar a biblioteca ESP8266WiFi, disponível aqui.
Configuração do IDE
Para que possamos programar o ESP8266 atráves do IDE Arduino será necessário fazer a instalação desta board no IDE.
Assim no IDE Arduino deve ir-se até menu Ficheiro->Preferências.
Na janela aberta deve adicionar-se a placa, para isso basta colocar no "URL Adicionais do Gestor de Placas" a seguinte link:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
e de seguida fazer OK.
De seguida deve ir-se até ao menu Ferramentas->Placa e abrir o Gestor de placas.
No gestor de placas deve pedir-se a instalação da "esp8266" (normalmente é a ultima da lista)
(A instalação demorará algum tempo)
Após a instalação basta voltar ao menu Ferramentas e escolher a placa "Generic ESP8266 Module"
A ESP8266 deve então ligar-se a placa Arduino para que esta sirva de Gateway com o computador, para isso basta retirar o microcontrolador, ou em alternativa colocar a placa Arduino em Reset. O esquema que usamos foi o seguinte:
Nota: o Arduino da imagem serve apenas de fonte de alimentação (3,3Volt) e gateway.
Código Usado
//código arduino
#include <ESP8266WiFi.h>
// configuração do AP
String AP_NameString = "XPToN.com";
const char WiFiAPPSK[] = "Guarda";
// Pino de ligação do Led
const int LED_PIN = 4;
int val=-1;
//Configuração servidor
WiFiServer server(80);
void setup() {
initHardware();
setupWiFi();
server.begin();
}
int value = 0;
void loop() {
// Verifica se há clientes ligados...
WiFiClient clientS = server.available();
if (!clientS) {
return;
}
// Read the first line of the request
String req = clientS.readStringUntil('\r');
Serial.println(req);
clientS.flush();
val = -1;
if (req.indexOf("/led/0") != -1)
val = 0; // Will write LED low
else if (req.indexOf("/led/1") != -1)
val = 1; // Will write LED high
if (val >= 0)
digitalWrite(LED_PIN, val);
clientS.flush();
// Resposta ao cliente
String s = "HTTP/1.1 200 OK\r\n";
s += "Content-Type: text/html\r\n\r\n";
s += "<!DOCTYPE HTML>\r\n<html>\r\n";
if (val >= 0)
{
s += "O LED está ";
s += (val)?"ligado":"desligado";
}
s +="<h1>PPLWARE ESP8266 by XPToN.com</h1><p>Led <a href=\"led/1\"><button>Ligar</button></a> <a href=\"led/0\"><button>Desligar</button></a></p>";
s += "</html>\n";
// envia codigo HTML
clientS.print(s);
delay(1);
Serial.println("Client disonnected");
}
void setupWiFi()
{
uint8_t mac[WL_MAC_ADDR_LENGTH];
WiFi.softAPmacAddress(mac);
String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
macID.toUpperCase();
char AP_NameChar[AP_NameString.length() + 1];
memset(AP_NameChar, 0, AP_NameString.length() + 1);
for (int i=0; i<AP_NameString.length(); i++)
AP_NameChar[i] = AP_NameString.charAt(i);
WiFi.softAP(AP_NameChar, WiFiAPPSK);
}
void initHardware()
{
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
//configurar a placa para modo AP
WiFi.mode(WIFI_AP);
}
Projecto em demonstração...em vídeo
Este artigo tem mais de um ano
Não está mau mas olha aqui o que fiz à uns tempos:
https://www.youtube.com/watch?v=5XD8KB6MAxk
e
Aqui o mesmo conceito mas através de um web-service:
https://www.youtube.com/watch?v=IackSI2QDK8
Boas pessoal, eu estava a pesquisar deste tipo de coisas para o meu trabalho final de curso. O meu problema era que o arduino não tinha acesso à Internet e então o principal do meu projeto não poderia ser desenvolvido no arduino porque não conseguiria enviar email através do arduino e sendo assim teria de migrar para outra plataforma, tive a ver o raspberry mas é mesmo complicado comparado com o arduino programar para utilizar as portas output do mesmo. O que eu gostava de esclarecer era se podia com esta peça, usar o arduino normalmente é conseguir colocar o código de enviar email que o arduino iria reconhecer e enviar por wifi. Por favor tentem me responder porque preciso de fazer este trabalho senão não consigo concluir o meu curso. Obrigado a quem leu e ajudou.
Não sei se te vai ajudar muito… Pesquisa por esp32. tem os mesmos pinos que o arduino e é da familia do esp8266.
Estou a espera de 1…
Suporta comunicação TCP e UDP: até 5 em simultâneo
Em principio sim. Há que desenvolver um interface para o protocolo de mail a usar ( conversão FTP para SMTP ). Mas já devem haver exemplos feitos disso.
Boa tarde, procuro tutorial de ligar o Android directo ao esp8266-01 e controlar os pinos, a ideia é usar no exterior.
Olá, tens alguma dica ou local para configurar conexões WPA2-Enterprise? Aqui na universidade usam esse tipo de rede, e nós usamos credenciais do tipo User e Pass que devem ser inseridos após pedido de comunicação ao sinal da rede (tem uma SSID dedicada para empregados, outra para alunos, outra para visitantes). No meu caso eles liberaram o MAC de 3 placas ESP (Módulo 12F, ESP 201 e NodeMCU Lolin), mas não sei como configurar e testar, pois não sei como inserir User e Pass para a rede aceitar minha navegação na internet e conectar ao meu Broker.
Como seria a ligação para o mega?