ESP8266 Web server con telemetria

Da raspibo.
Jump to navigation Jump to search

Introduzione

Il presente progetto è un'estensione di ESP8266 Web server touch e si prefigge di aggiungere al progetto citato la restituzione su Display touch di dati misurati da Arduino. In questa estensione si mostra come si possano ottenere sul display touch di un cellulare o di un tablet valori 'prelevati' da Arduino.

  • Per estensione si potrebbe usare, con modifiche 'leggere', questa applicazione in ambito domotico sia per visualizzare lo stato di sensori che per azionare switch o relays.

Il circuito usato per lo scambio dati

La figura mostra come sono stati connessi tra loro ESP8266 ed Arduino.

Oltre a questo sono mostrate le connessioni con il driver motori del Robottino che verrà usato e il collegamento dei sensori con Arduino.

Il progetto illustrato qui è stato ricavato dal modello Ruschino, con piccole variazioni del SW e dell'HW nell'utilizzo del driver motori. In particolare qui si fa uso del ponte H del driver per motori DC del tipo L298N interfacciato con integrato Inverter tipo 4069 che consente di utilizzare solo due segnali PWM per 'governare' i motori. i valori PWM variano da 127 a 255 per il moto in avanti e da 127 a 0 per il moto all'indietro.

Connessioni

1) Sono visibili le connessioni all'alimentazione 6-12v per Arduino (verso pin VIN), 3.3v per ESP8266.

2) Arduino Nano e scheda ESP8266 connessi serialmente su pin 6,7 di Arduino

3) Connessione (di esempio) di un Sensore di Temperatura NTC e misura della Tensione Batteria di Arduino. Dati inviati in telemetria al display touch.

4) Connessione tra ESP e convertitore FTDI USB-Seriale per programmare ESP

5) E' mostrata a parte l'immagine di L298N con 4096 e le relative connessioni.

Modifiche al Software di ESP8266

i file del progetto Ruschino web_sern.lua, init_lua, e index.htm hanno mantenuto lo stesso nome e sono stati modificati come illustrato qui:

init.lua

tmr.alarm(0, 3000, 0, function() dofile('web_serv.lua') end );
print("");
uart.setup(0,57600,8,0,1,0);

Unica modifica la velocità di trasmissione dati da 115200 a 57600. Utilizzando la velocità più alta si riscontrava qualche errore di ricezione da parte di Arduino, non è escluso che si possa far funzionare anche a 115200 bisognerebbe fare altre prove.

web_sev.lua

Vengono mostrati i soli punti di modifica del precedente web_serv.lua

print("R=127&l=127&C=0");

la linea 1 (14 in web_serv.lua originale) ha subito la seguente modifica: Si invia ad Arduino l'azzeramento iniziale delle velocità motori che ora hanno valore PWM=127. Il parametro C=0 è stato utilizzato, per distinguere le varie opzioni touch, per il testing del JavaScript di index.htm e può essere eliminato.

httpRequest["/info.txt"]="info.txt";

Alle linee 16-19 della versione originale è stata aggiunta la linea (20 in web_serv.lua) che consente con la linea (26 in web_serv.lua originale) di gestire le richieste ad Arduino di inviare i dati telemetrici.

getContentType["/info.txt"]="text";

Infine sono state inserite

-- Inserimento
_,_,nome,ext=string.find(requestFile, "(%w+).(%w+)"); 		
if ext=="txt" and nome=="info" then 
	conn:send("{\"V\": \""..uno_var.."\",");
	conn:send("\"K\": \""..due_var.."\"}");
else

la richiesta in Java script viene 'filtrata' e vengono inviate le due Variabili con identificatore V e K al client e mostrate su touch.