Pplware

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:

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>&nbsp;<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

Exit mobile version