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.

ozio_gallery_jgallery

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; }

Scarica tutto quello che serve: