Sommario:
- Forniture
- Passaggio 1: fallo funzionare
- Passaggio 2: come funziona il codice
- Passaggio 3: impostare NODEMCU come server
- Passaggio 4: caricare il file HTML
- Passaggio 5: provalo
Video: Come utilizzare ESP8266 come server Web: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ciao, attualmente sto usando Windows 10, NodeMCU 1.0 ed ecco l'elenco dei software che ho usato e le guide di installazione che ho seguito:
- Arduino IDE
- Schede aggiuntive per esp8266
- Spiff
Biblioteca utilizzata:
Websocket
Ho usato NodeMCU come server per servire un file HTML che ho creato da questo tutorial. Per servire questo file, ho caricato il file nel file system nodemcu usando Spiffs. Il file HTML invia i dati al nodemcu utilizzando i websocket per essere stampati sul monitor seriale per questo. La comunicazione bidirezionale veloce tramite websocket del server e del client ha permesso di utilizzare questo come controllo remoto. Nei seguenti passaggi, spiegherò come funziona il mio codice
Forniture
NodoMCU
Passaggio 1: fallo funzionare
Ecco i passaggi su come funziona
- Scarica il file allegato e apri il file mousebot.ino
- Vai a schizzo> mostra la cartella dello schizzo e crea una nuova cartella denominata dati
- Salva il file html di questo tutorial nella cartella denominata. Ho chiamato il mio come "Joystick"
- Assicurati che il tuo spiff sia già funzionante andando su strumenti e vedendo il "caricamento dei dati dello schizzo esp8266"
- Carica il file html su nodemcu facendo clic su "esp8266 sketch data upload"
- Dopo il caricamento del file, carica su nodemcu il file mousebot.ino accedendo all'IDE di arduino e premendo ctrl U
Passaggio 2: come funziona il codice
Innanzitutto, includiamo le librerie che verranno utilizzate da questo codice
//per consentire all'ESP8266 di connettersi al WIFI
#include #include #include //Abilita ESP8266 ad agire come server #include //abilita la comunicazione con il server e il client (il tuo dispositivo connesso) #include #include //Per aprire il file caricato sul nodemcu #include
Imposta esp8266 come server web aperto sulla porta 80. Le porte sono percorsi attraverso i quali passeranno i dati. Come porta del server, invierà il file HTML al client (i dispositivi ad esso collegati).
Aggiunge una connessione websocket utilizzando la porta 81 per ascoltare i messaggi dal client
I websocket hanno il parametro num, WStype_t, payload e dimensioni. Il num determina il numero del client, il payload è il messaggio che invia, la dimensione è la lunghezza del messaggio e WStype_t è per diversi eventi come
- WStype_DISCONNECTED - alla disconnessione di un client.
- WStype_CONNECTED: - quando un client si connette
- WStype_TEXT - Dati ricevuti dal client
A seconda del tipo di evento vengono eseguite diverse azioni ed è commentato qui
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Disconnected!\n", num); //stampa i dati sul monitor seriale break; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP(num); // ottiene l'IP del client Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], carico utile); webSocket.sendTXT(num, "Connesso"); //invia "connesso" alla console del browser } break; case WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); //stampa il numero del cliente in %u e i dati ricevuti come stringhe in %s\n break;}}
Passaggio 3: impostare NODEMCU come server
imposta l'ssid e la password che utilizzerai per connetterti ad esso in seguito
const char *ssid = "Prova";
const char *password = "12345678";
sulla configurazione, specifichiamo la velocità con cui comunicheranno il nostro nodemcu e il pc, che è 115200.
void setup(void){
Serial.begin(115200); Serial.print("\n");
impostato su true anche vedere l'output diagnostico wifi sul terminale serila
Serial.setDebugOutput(true);
initaliazzare il filesystem
SPIFFS.begin();
Imposta il nodemcu come accesspoint con ssid e password defiend in precedenza e stampa l'ip del nodemcu con cui ti connetterai in precedenza. per impostazione predefinita è 192.168.4.1
Serial.print("Configurazione punto di accesso…");
WiFi.mode(WIFI_AP); WiFi.softAP(ssid, password); IPAddress mioIP = WiFi.softAPIP(); Serial.print("Indirizzo IP dell'AP: "); Serial.println(mioIP);
Inizializza il websocket sul nodemcu, che è pur server
webSocket.begin();
Chiama la funzione webSocketEvent quando si verifica un evento websocket.
webSocket.onEvent(webSocketEvent);
Per il debug, stampa "Server WebSocket avviato" su una nuova riga. Questo serve per determinare la riga di codice che il nodemcu sta elaborando
Serial.println("Server WebSocket avviato.");
quando un client visita 192.168.4.1, chiamerà la funzione handleFileRead e invierà con essa l'URI del server dei parametri che in questo caso è la nostra informazione nodemcu. La funzione handleFileRead servirà il file html dal file system nodemcu
server.onNotFound((){
if(!handleFileRead(server.uri()))
se non può essere trovato mostrerà "FileNotFound"
server.send(404, "testo/normale", "FileNotFound");
});
Avvia il server e avvia il server HTTP di stampa.
server.begin(); Serial.println("Server HTTP avviato");
Nel nostro loop void, abilitiamo il server a gestire continuamente le comunicazioni del client e dei suoi websocket come segue:
ciclo vuoto(vuoto){
server.handleClient(); webSocket.loop();}
Passaggio 4: caricare il file HTML
useremo una funzione chiamata handleFileRead per aprire e il file html dal file system nodemcu. restituirà un valore booleano per determinare se è caricato o meno.
Quando "192.168.4.1/" è aperto dal client, impostiamo il percorso del file su "/Joystick.html, il nome del nostro file nella cartella dei dati
bool handleFileRead(String path){
Serial.println("handleFileRead: " + percorso); if(path.endsWith("/")) path += "Joystick.html"; if(SPIFFS.exists(percorso)){ File file = SPIFFS.open(percorso, "r"); size_t inviato = server.streamFile(file, "testo/html"); file.close(); restituire vero; } restituisce falso; }
Controlla se il percorso del file "/Joystick.html" esiste
if(SPIFFS.exists(percorso)){
Se esiste, apri il percorso con lo scopo di leggerlo che è specificato dalla "r". Vai qui per più scopi.
File file = SPIFFS.open(percorso, "r");
Invia il file al server come con un tipo di contenuto "testo/html"
size_t inviato = server.streamFile(file, "testo/html");
chiudi il file
file.close();
la funzione handleFileRead restituisce true
restituire vero;}
se il percorso del file non esiste, la funzione handleFileRead restituisce false
restituire vero; }
Passaggio 5: provalo
Connettiti al nodeMCU e vai su "192.168.4.1" e provalo!:)
Consigliato:
Tutorial: come utilizzare ESP32-CAM nel server Web di streaming video: 3 passaggi
Tutorial: come utilizzare ESP32-CAM nel server Web di streaming video: Descrizione: ESP32-CAM è una scheda di sviluppo Vision IoT wireless ESP32 in un fattore di forma molto piccolo, progettata per essere utilizzata in vari progetti IoT, come dispositivi intelligenti domestici, industriali controllo wireless, monitoraggio wireless, identificazione wireless QR
Come utilizzare il motore passo-passo come encoder rotativo e display OLED per passaggi: 6 passaggi
Come utilizzare il motore passo-passo come encoder rotativo e display OLED per i passaggi: In questo tutorial impareremo come tenere traccia dei passaggi del motore passo-passo sul display OLED. Guarda un video dimostrativo. Il merito del tutorial originale va all'utente di YouTube "sky4fly"
Come utilizzare lo strumento Web in Fusion 360: 5 passaggi
Come utilizzare lo strumento Web in Fusion 360: è uno di quegli strumenti sottovalutati che probabilmente non stai utilizzando, ma continua a leggere e vedrai perché è necessario iniziare a sfruttare lo strumento Web in Fusion 360. Lo strumento Web fornisce un modo rapido e super efficiente per aggiungere bretelle incrociate a
Come utilizzare il terminale Mac e come utilizzare le funzioni chiave: 4 passaggi
Come utilizzare il terminale Mac e come utilizzare le funzioni chiave: ti mostreremo come aprire il terminale MAC. Ti mostreremo anche alcune funzionalità all'interno del Terminale, come ifconfig, il cambio di directory, l'accesso ai file e arp. Ifconfig ti permetterà di controllare il tuo indirizzo IP e il tuo annuncio MAC
Come utilizzare il lettore di schede di memoria PS3 interno come dispositivo USB sul tuo PC: 6 passaggi
Come utilizzare il lettore di schede di memoria PS3 interno come dispositivo USB sul tuo PC: prima di tutto questo è il mio primo Instructable (yippie!), Sono sicuro che ce ne saranno molti a venire. Quindi, avevo una PS3 rotta e volevo fare un certo uso dei componenti di lavoro. La prima cosa che ho fatto è stato estrarre la scheda tecnica per il chip del convertitore sulla scheda PS3 r