
Cosa ti serve per la realizzazione:
- Software Arduino installato e aggiornato su computer
- ESP8266 mini D1
- Relè Shield per Mini D1
- Alimentatore USB 3A
- Cavo USB
- Saldatore a Stagno
Se sei un appassionato di Arduino, ESP8266 o automazione Wi-Fi, questo progetto ti farà risparmiare ore di sviluppo, debugging e test. Ho realizzato un firmware per Wemos D1 Mini + Relay Shield che ti permette di controllare un relè direttamente dal tuo smartphone tramite una pratica interfaccia web responsive, senza bisogno di configurazioni complicate.
❌ Nessun Router. ❌ Nessuna connessione Internet. ❌ Nessun Bluetooth.
La scheda crea autonomamente una rete Wi-Fi in modalità Access Point (AP). Questo significa che ti basta accendere il dispositivo, connettere il telefono alla sua rete Wi-Fi e gestire il relè ovunque ti trovi: in garage, in giardino, in camper o in campagna, completamente offline.
🛠️ Caratteristiche Principali (Versione Base Gratuita)
Per i lettori del sito ho deciso di mettere a disposizione in modo completamente gratuito lo sketch .ino in versione base. Con questo codice potrai:
- Controllare il relè tramite smartphone con un semplice click (configurato con impulso di 1 secondo, ideale per cancelli o serrature).
- Sfruttare un’interfaccia web responsive e intuitiva.
- Sfruttare il Captive Portal integrato: una volta connesso al Wi-Fi, il telefono ti aprirà automaticamente la pagina di controllo senza dover digitare l’indirizzo IP nel browser.
- Lavorare in modalità 100% offline tramite l’Access Point generato dall’ESP8266.
- Caricare il codice pulito direttamente tramite Arduino IDE (utilizza il pin D1 nativo del Relay Shield).
⚠️ Nota: Questa versione base ha i parametri Wi-Fi (SSID e Password) fissi nel codice e non include la pagina delle impostazioni avanzate, ma è ideale per chi vuole testare subito il funzionamento del relè. 👉 [Scorri a fondo pagina per copiare il codice base .ino]
🚀 Le Funzioni Esclusive della Versione Plus (Su Ko-fi)
Se cerchi un controllo professionale e vuoi personalizzare il tuo modulo senza dover rimettere mano al codice su Arduino IDE ogni volta, ho sviluppato la Versione Plus.
Oltre alle funzioni base di accensione e spegnimento, questa release include un’intera interfaccia di amministrazione avanzata e protetta da password, con memorizzazione dei dati in memoria Flash (LittleFS) e una personalizzazione totale del comportamento e della grafica del relè direttamente dal tuo browser.
💻 Cosa troverai all’interno del Codice Arduino Plus:
Il codice sorgente della Versione Plus è strutturato in modo professionale, ottimizzato e pronto all’uso. Ecco nel dettaglio tutte le funzioni integrate nello sketch:
- 💾 Gestione Memoria Flash con LittleFS: Tutti i parametri modificati dalla pagina web vengono memorizzati permanentemente sulla memoria della Wemos D1 Mini. Se salta l’alimentazione, il dispositivo non perde le tue impostazioni.
- 🔒 Area Riservata Protetta da Login: Pagina di autenticazione sicura per impedire accessi non autorizzati alla configurazione. La password di accesso al pannello (di default
admin) può essere modificata direttamente dal browser. - 🌐 Personalizzazione Parametri Wi-Fi: Modifica il nome della rete (SSID) e la chiave di sicurezza dell’Access Point generato dall’ESP8266 direttamente dalla pagina web, senza dover riprogrammare la scheda via cavo.
- ⏱️ Regolazione Tempo di Impulso (Inching) al Millisecondo: Configura via web la durata esatta di attivazione del relè (es. 2000ms per un impulso di 2 secondi). Perfetto per adattarsi alle specifiche di qualsiasi cancello automatico, basculante o serratura elettrica.
- 🎨 Personalizzazione Grafica Completa (Interfaccia Web Custom):
- Scelta del Tema: Passa dal Tema Chiaro ☀️ al Tema Scuro 🌙 con un semplice click per una visualizzazione ottimale di notte.
- Colori su Misura: Selettori colore integrati (Hex Color Picker) per modificare al volo la tonalità dello sfondo e del testo del pulsante principale.
- Cambio Nome Pulsante: Rinomina il testo visualizzato sul pulsante (es. “Apri Cancello”, “Accendi Luce”, “Reset Server”) direttamente dal pannello impostazioni.
- Stile Font: Scegli lo stile del testo che preferisci tra Sans-Serif (Lineare), Serif (Classico), Monospace (Meccanico), Cursive (Comic) o Fantasy (Impatto).
- 📋 Cronologia degli Accessi (Log di Sistema): Il firmware include un algoritmo intelligente che cattura la data e l’ora dallo smartphone al momento della connessione e memorizza in modo asincrono gli ultimi 20 impulsi all’interno del file
/log.txt. Potrai monitorare storicamente l’utilizzo e svuotare la lista con un comando dedicato. - 🔄 Ripristino di Fabbrica (Factory Reset): Pulsante di emergenza per azzerare istantaneamente tutti i file di configurazione e i log salvati nella Flash, riportando la scheda ai valori iniziali di default.
- ⚡ Gestione Asincrona del Relè (Zero Delay): Lo spegnimento del relè è gestito in modo intelligente tramite la funzione non bloccante
millis(). L’ESP8266 rimane sempre reattivo, garantendo il corretto funzionamento del server web e del Captive Portal anche durante il conteggio dei millisecondi dell’impulso.
📱 Compatibilità Totale
Il sistema è ottimizzato per Android, ma è perfettamente accessibile da qualsiasi dispositivo dotato di un browser web (Safari, Chrome, Firefox, Edge), inclusi iPhone, iPad, tablet e PC.
📦 Cosa Riceverai Sostenendo il Progetto
Sbloccando la versione completa su Ko-fi riceverai un file ZIP contenente:
- Il file sorgente .ino completo con la gestione dei settaggi avanzati, memorizzazione in memoria flash tramite LittleFS e gestione asincrona (il codice sopra descritto).
- Indicazione delle librerie standard necessarie per la corretta compilazione su Arduino IDE.
- Zero configurazioni complesse: Carichi lo sketch sulla tua Wemos D1 Mini e gestisci tutto comodamente dal telefono.
💡 Ideale per: Progetti di domotica fai-da-te, apertura cancelli automatici, gestione serrature elettriche, reset di server remoti e qualsiasi automazione basata su ESP8266 dove non è presente una rete Wi-Fi domestica o aziendale.
⚠️ IMPORTANTE – Leggere Prima dell’Acquisto (Versione Plus)
Questo codice viene distribuito e venduto con la formula “visto e piaciuto” (As-Is). Ti invitiamo a leggere attentamente le seguenti condizioni prima di completare il download:
- ✅ Cosa ricevi: Esattamente il file sorgente e tutte le funzionalità descritte nella sezione “Versione Plus”.
- ❌ Aggiornamenti: Non sono previsti aggiornamenti futuri, implementazioni di nuove funzionalità o modifiche personalizzate su richiesta.
- ❌ Politica di Reso: Trattandosi di un prodotto digitale scaricabile ed editabile, non si accettano resi, rimborsi o annullamenti dell’acquisto una volta completata la transazione.
Acquistando e scaricando questo prodotto, confermi di aver letto, compreso e accettato integralmente queste condizioni.
☕ Supporta il Progetto su Ko-fi ed ottieni la Versione Plus
Questo firmware è il risultato di molte ore di sviluppo, test e ottimizzazione. Supportando questo progetto su Ko-fi non solo sbloccherai subito la versione avanzata con la pagina dei settaggi, ma contribuirai direttamente allo sviluppo di nuovi firmware, guide e progetti dedicati alla community dei maker!
👉 [SCARICA LA VERDE PLUS CON SETTAGGI SU KO-FI ☕🔧]
📥 Codice Sorgente Base .ino (Senza Settaggi Avanzati)
Puoi copiare questo codice, incollarlo su Arduino IDE e caricarlo subito sulla tua Wemos D1 Mini per testare le funzioni base del relè. Crediti nel codice a PENDOLAS.
I Collegamenti dei Cavi (Piedinatura)
Usa tre colori standard per i cavi per rendere lo schema subito comprensibile a colpo d’occhio:
- 🔴 Cavo Rosso (Alimentazione 5V): Collega il pin 5V della Wemos D1 Mini al pin VCC (o +) del modulo relè.
- ⚫ Cavo Nero (Massa): Collega il pin G (GND) della Wemos D1 Mini al pin GND (o -) del modulo relè.
- 🟡 Cavo Giallo/Blu (Segnale): Collega il pin D1 della Wemos D1 Mini al pin IN (o Signal) del modulo relè. Questo rispecchia la direttiva
pinMode(D1, OUTPUT);
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
// ==========================================
// CONFIGURAZIONE RETE WI-FI (Access Point)
// ==========================================
const char* ssid = "Cancello Pedonale";
const char* password = "123456789";
// Gestione DNS e Web Server
const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 4, 1);
DNSServer dnsServer;
ESP8266WebServer server(80);
// Pagina HTML personalizzata
String htmlPage =
"<html><head><meta name='viewport' content='width=device-width, initial-scale=1'>"
"<style>"
"body{font-family:sans-serif; text-align:center; background:#f4f4f4; padding-top:50px; display:flex; flex-direction:column; height:90vh;}"
".content{flex:1;}"
".btn{display:block; width:250px; margin:20px auto; padding:30px; font-size:22px; color:white; text-decoration:none; border-radius:15px; font-weight:bold; box-shadow: 0 4px #999;}"
".on{background: #2ecc71;} .on:active {background-color: #27ae60; box-shadow: 0 2px #666; transform: translateY(2px);}"
"h1{color:#333;}"
".footer{font-size:14px; color:#888; margin-bottom:20px; letter-spacing:1px;}"
".firma{color: #000000; font-weight: bold; font-size: 16px;}" // Stile specifico per PENDOLAS
"</style></head>"
"<body>"
" <div class='content'>"
" <h1>Comando Cancello</h1>"
" <a href='/apri' class='btn on'>APRI CANCELLO</a>"
" <p>Premi per dare l'impulso</p>"
" </div>"
" <div class='footer'>Creato da <span class='firma'>PENDOLAS</span></div>"
"</body></html>";
void handleRoot() {
server.send(200, "text/html", htmlPage);
}
void handleApri() {
digitalWrite(D1, HIGH);
delay(1000);
digitalWrite(D1, LOW);
server.send(200, "text/html", htmlPage);
}
void setup() {
pinMode(D1, OUTPUT);
digitalWrite(D1, LOW);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP(ssid, password);
dnsServer.start(DNS_PORT, "*", apIP);
server.on("/", handleRoot);
server.on("/apri", handleApri);
server.onNotFound([]() {
server.send(200, "text/html", htmlPage);
});
server.begin();
}
void loop() {
dnsServer.processNextRequest();
server.handleClient();
}