PrettyPrint

venerdì 12 febbraio 2010

LM35+LCD+web+MySQL - 1) Panoramica

Quello che andrò a descrivere è un semplice progettino per la misura di una temperatura interna, che vede impiegato ovviamente Arduino, il noto sensore LM35, un classico LCD HD44780 compatibile e un PC con OS Linux (es. Debian oppure una distribuzione derivata come Ubuntu).

L'LM35 e l'LCD sono collegati ad Arduino che a a sua volta è collegato a un PC sul quale gira un server web Apache, un server MySQL oltre ad ospitare i vari interpreti PHP e Perl





Dal lato Arduino:


il sensore è collegato a uno dei sei ingressi analogici, mentre l'LCD è collegato a 7 pin (4 per i dati + 2 per il controllo) del port I/O digitale di Arduino. Lo sketch nel suo loop esegue tre compiti molto semplici assegnati a tre rispettive funzioni:

  1. legge la tensione dell'LM35 e la converte in gradi Celsius;
  2. se dal PC gli arriva un carattere convenzionale (es. la lettera 's'), risponde inviando al PC stesso la temperatura acquisita (es. '15.42')
  3. invia comunque sull'LCD locale ogni mezzo secondo circa la temperatura acquisita

Dal lato PC:

il carattere di richiesta invio temperatura viene inviato dal PC ad Arduino in due scenari d'uso:
  1. dalla pagina web, on demand, ogni qualvolta il visitatore apre la pagina stessa o ne fa il refresh; la temperatura restituita da Arduino viene così visualizzata nella pagina web
  2. da uno script eseguito automaticamente dal sistema ogni mezz'ora; il dato della temperatura prelevata da Arduino viene inserito in un database MySQL
I dati memorizzati nel database vengono successivamente elaborati, creando un grafico delle temperature acquisite nelle ultime 24hh.

Quindi dal lato server, a un livello generale, abbiamo bisogno di:

  1. Un primo script, fetcher, che ha il compito fondamentale di aprire la seriale(USB), mandare ad Arduino un carattere (es. 's') e leggere da questo la temperatura in quel momento. Questo script verrà dunque utilizzato, per produrre la stampa nella pagina web della temperatura corrente.

  2. Un secondo script, logger, il quale anche esso sfrutta fetcher per prendersi la temperatura, ma non la visualizza: la va a inserire in un database di MySQL. Questo script viene lanciato automaticamente dal sistema ogni mezz'ora, dunque verranno memorizzati nel database le temperature lette ogni mezz'ora (es. 10:00, 10:30...ecc.)

  3. Un terzo e ultimo script plotter, che ha il compito di prendersi dal server MySQL le temperature loggate da logger nelle ultime 24hh e creare, dinamicamente, un'immagine con il grafico delle temperature in funzione degli orari. Quest'immagine verrà poi visualizzata in una pagina web.

  4. Una pagina web dinamica (es. in PHP), chiamiamola temp, che ogni qualvolta viene aperta, va a leggersi la temperatura misurata in quel momento da fetcher e la stampa a video. Inoltre, deve visualizzare anche il grafico generato da plotter.
Nel prosieguo scenderemo nei dettagli, prima dal lato Arduino e poi dal lato PC.

Nessun commento:

Posta un commento