PitPresa
PitPresa, presa comandata tramite interfaccia WEB.
Il funzionamento di PitPresa è molto semplice. Attraverso l'interfaccia web viene azionato un pin che attiva o disattiva un relay a sua volta collegato ad una presa elettrica. All'interno del contenitore (presa) trovano spazio il modulo di alimentazione HLK-PM01 (220V --> 5V) e il modulo relay predisposto per l'ESP-01.
Il codice è semplice ed è stato ripreso dal lastminuteengineers.com. Anzichè accendere e spegnere un led viene attivato e disattivato il relay montato sullo shield per ESP-01. Indicazioni utili e precise con un codice alternativo sono presenti sul sito del prof. Michele Maffucci.
Il relay viene impostato normalmente chiuso ed è collegato al pin GPIO0 dell'ESP01. Adesso va fatta una rivisitazione dell'interfaccia web.
Cosa serve:
- ESp8266 - ESP-01
- Modulo Relay per ESP-01
- Contenitore presa
- Modulo di alimentazione HLK-PM01
- Spina elettrica
- cavetti
Codice sorgente:
/*
PitPresa
Zappoco - PitPresa_19_11_02 04/11/2019 -- Adattamento di https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/
*/
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
/* Put your SSID & Password */
const char* ssid = "MySsid";
const char* password = "MyPassword";
/* Put IP Address details */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
//uint8_t LED1pin = D7; //WeMos D1 R1 Version
uint8_t LED1pin = 0; //ESP01 Version
bool LED1status = LOW;
//uint8_t LED2pin = D6; //WeMos D1 R1 Version
uint8_t LED2pin = 2; //ESP01 Version
bool LED2status = LOW;
void setup() {
delay (2000);
Serial.begin(115200);
pinMode(LED1pin, OUTPUT);
pinMode(LED2pin, OUTPUT);
WiFi.softAP(ssid, password);
WiFi.softAPConfig(local_ip, gateway, subnet);
delay(100);
server.on("/", handle_OnConnect);
server.on("/led1on", handle_led1on);
server.on("/led1off", handle_led1off);
server.on("/led2on", handle_led2on);
server.on("/led2off", handle_led2off);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("HTTP server started");
// Stampa l'indirizzo IP
Serial.print("Usa questo URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP()); // Restituisce i'IP della scheda
Serial.println("/");
}
void loop() {
server.handleClient();
if(LED1status)
{digitalWrite(LED1pin, HIGH);}
else
{digitalWrite(LED1pin, LOW);}
if(LED2status)
{digitalWrite(LED2pin, HIGH);}
else
{digitalWrite(LED2pin, LOW);}
}
void handle_OnConnect() {
LED1status = LOW;
LED2status = LOW;
Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status,LED2status));
}
void handle_led1on() {
LED1status = HIGH;
Serial.println("GPIO7 Status: ON");
server.send(200, "text/html", SendHTML(true,LED2status));
}
void handle_led1off() {
LED1status = LOW;
Serial.println("GPIO7 Status: OFF");
server.send(200, "text/html", SendHTML(false,LED2status));
}
void handle_led2on() {
LED2status = HIGH;
Serial.println("GPIO6 Status: ON");
server.send(200, "text/html", SendHTML(LED1status,true));
}
void handle_led2off() {
LED2status = LOW;
Serial.println("GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status,false));
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
String SendHTML(uint8_t led1stat,uint8_t led2stat){
String ptr = " \n";
ptr +="\n";
ptr +="LED Control \n";
ptr +="\n";
ptr +="\n";
ptr +="\n";
//ptr +="ESP8266 Web Server
\n";
//ptr +="Using Access Point(AP) Mode
\n";
ptr +="PitPresa
\n";
ptr +="Access Point(AP) Mode
\n";
if(led1stat)
{ptr +="Status: ON
OFF\n";}
else
{ptr +="Status: OFF
ON\n";}
/*
if(led2stat)
{ptr +="LED2 Status: ON
OFF\n";}
else
{ptr +="LED2 Status: OFF
ON\n";}
*/
ptr +=" \n";
ptr +="\n";
return ptr;
}