Pagine

mercoledì 24 maggio 2017

FTPMicro: un webserver sul palmo della vostra mano!

Fermi tutti… osservate per dieci secondi la foto qui sotto.



Una piccola scheda elettronica di 10x2cm… ma… c’è un connettore di rete!

Ebbene si: questo che vedete è a tutti gli effetti un webserver capace di connettersi ad internet con il classico cavetto LAN ed ospitare al suo interno un applicativo capace di navigare online!

Cosa ci possiamo fare?
Di tutto… ospitare un sito internet statico, implementare un piccolo server di invio di posta elettronica, inviare dati ad un WebService ecc…

Personalmente  sarei interessato ad utilizzare questo bel prodotto per inviare ad un webservice (da me sviluppato) i dati catturati da alcuni sensori  che ho intorno a casa (che costituiscono in sostanza le basi di una piccola stazione metereologica).
I dati rilevati verrebbero spediti al webservice che a sua volta li salverebbe su database. Attraverso un’applicazione web potrei visualizzare, consultare e filtrare questi valori.

Inoltre, spingendosi ad un’integrazione con il sistema di irrigazione (sviluppato con Arduino) sarebbe carino sviluppare un’interfaccia web per la configurazione dei timer tramite PC e sempre da qui, monitorare il livello dell’acqua piovana rimanente nella cisterna (da 30.000 litri) installata sotto il mio giardino…



Ma torniamo con i piedi per terra ed analizziamo alcuni dei dettagli della scheda FTPMicro.

Utilizzare il WebServer è semplicissimo (anche con una comunissima breadboard si può già cominciare a smanettare!): dispone di un package compatibile DIP40!

Monta un PIC18F67J60 ad 8bit (programmabile con il comunissimo PicKit2 della Microchip, dopo aver realizzato un semplicissimo cavetto di adattamento del connettore ICSP).
Ecco il datasheet per maggiori informazioni: datasheet PIC18F67J60 

Permette di archiviare dati su una memoria MMC/SD tramite comunicazione SPI (quindi di archiviare dati in locale!)

Dispone di un sensore di temperatura onboard, per poter cominciare subito a giocare con un dato reale, pronto da esser spedito online.

Dispone di diversi pin di uscita… attivabili  per esempio da remoto!


Per ulteriori informazioni riguardo questo prodotto e più in generale per mantenervi sempre aggiornati sulle ultime novità del mondo dell'elettronica, visitate il blog  ELETTRONICA OPEN SOURCE

Buona progettazione "on the Web" a tutti!!!



venerdì 8 aprile 2016

IRRIGHINO: quando Arduino diventa un aiuto-giardiniere!

Ogni giardino, anche di piccole dimensioni, può essere migliorato con un impianto d’irrigazione automatico.
Il poter mantenere la corretta umidità del terreno durante il periodo primaverile ed estivo contribuisce ad avere il nostro “angolo verde” sempre in ottima forma.

In questo articolo descriverò come realizzare una centralina per un impianto d’irrigazione.
Il cuore del progetto è una scheda Arduino Duemilanove, a cui si va ad aggiungere uno shield LCD ed uno shield progettato ad hoc (Irrighino Shield) che contiene un chip RTC (RealTimeClock) ed i Relè.
La centralina deve poter automatizzare l’apertura/chiusura delle elettrovalvole atte a irrigare le varie zone del giardino. A questo scopo sono disponibili 9 timer settimanali, completamente programmabili.
Per ogni timer è possibile configurare:
-          I giorni della settimana d’attività
-          L’ora d’inizio irrigazione
-          L’ora di fine irrigazione
-          L’uscita da attivare
E’ possibile configurare più timer per la stessa uscita (per esempio per settare due irrigazioni al giorno in un semenzaio dove bisogna mantenere un’elevata umidità).
E’ inoltre possibile gestire manualmente le uscite, visualizzandone lo stato.

Di seguito sono approfonditi i principali aspetti  del progetto.

Irrighino Shield


Questo shield permette di montare su di esso ulteriori shield. Nel caso specifico l’LCD shield.
Esso monta 4 relè (5V) comandati dal driver ULN2003.
Un fusibile protegge il trasformatore che alimenterà le elettrovalvole.
Trova spazio anche il chip RTC DS1307. Esso ha il compito di mantenere data ed ora nel sistema.
Per ottenere una maggior precisione, al posto di un quarzo da 32Khz, è usato il chip DS32Khz.
Quest’ultimo componente garantisce la compensazione in temperatura e tensione.
Lasciando acceso il nostro timer per qualche mese, potremo notare come l’utilizzo di questo chip mantenga preciso l’orario nel tempo.
Una batteria tampone mantiene aggiornata la data e ora anche in caso di mancanza dell’alimentazione principale.

L’intero shield può essere realizzato su una basetta singola faccia. Personalmente utilizzo basette presensibilizzate e pronte per la fotoincisione (UV).





Nell’immagine seguente è visibile l’impiego di ogni singolo Pin di ArduinoDuemilanove. 

 

Software


Appena alimentata la centralina, verrà visualizzata data ed ora (in questa versione sperimentale data ed ora va impostata via codice alla prima programmazione).



Attraverso i pulsanti presenti sull’LCD Shield (http://cgi.ebay.it/LCD-Keypad-Shield-for-Arduino-Duemilanove-LCD1602/290533701464?pt=LH_DefaultDomain_0&hash=item43a5287758#ht_2494wt_905) è possibile navigare attraverso le diverse videate presenti.

Premendo il pulsante “UP” accediamo alla videate del primo timer.



Continuando a premere “UP” avremo modo di visualizzare le videate relative a tutti i 9 timer (Da P1 a P9 dove P sta per Programma).
Arrivati alla videata del nono timer, premendo “UP” visualizzaeremo la videata relativa alla visualizzazione degli stati dei relè.
Tornando alla videata sopra riportata (del timer P1) sono leggibili le seguenti impostazioni:
-          Il timer P1 è attualmente disattivato
-          Il timer P1 entrerebbe in azione tutti i giorni della settimana
-          Il timer P1 entrerebbe in azione tra le 6 e le 7 di mattina
-          Il timer P1 attiverebbe il relè 1.

Premendo il pulsante “SET” è possibile modificare ad uno ad uno i valori sopra citati (verrà visualizzato un cursore lampeggiante su ogni valore da modificare, premendo “UP/DOWN” si varierà il valore, premendo “SET” si confermerà il valore per poi passare al successivo).

Si nota a questo punto l’estrema flessibilità del sistema. Ogni timer può lavorare su più relè ed è possibile selezionare singolarmente i giorni della settimana necessari.
E’ inoltre possibile, per esempio, selezionare l’attivazione del timer tra le 23.00 e le 3.00. Il sistema riconoscerà automaticamente il cambio data ed attiverà correttamente il timer tra le 23.00 e le 3 di notte.
Nel caso vi sia un blackout, al ritorno della corrente il timer ricomincerà a funzionare regolarmente, attivando i timer ove necessario. Infatti, lo stato dei relè non viene cambiato solamente allo scadere dell’orario di “start” e “stop”, ma calcolato ed impostato costantemente, garantendo un funzionamento stabile e sicuro.

Di seguito è riportata la videata riguardante lo stato delle uscite:



Notiamo che le uscite 1 e 3 sono influenzate dai timer ed al momento sono aperte.
L’uscita 2 è forzata allo stato “Acceso” (V) indipendentemente dai timer. Vediamo infatti lo stato chiuso di questa uscita.
L’uscita 4 è forzata allo stato “Spento” (X) indipendentemente dai timer. Vediamo infatti lo stato aperto di questa uscita.
Premendo “SET” è possibile settare il funzionamento di ogni uscita (influenzato dai Timer, Acceso, Spento).
Abbiamo così il controllo completo di ogni uscita, in caso di necessità anche manualmente.


Il presente progetto occupa circa 1/3 dello spazio di memoria programma del chip AtMega328 installato su Arduino2009. Abbiamo così molteplici possibilità di espandere tale centralina per adattarla alle esigenze di ognuno.

In primo luogo sarebbe da aggiungere la funzionalità di modifica della data/ora via software, agendo sui pulsanti della centralina.
Potrebbe essere utile aggiungere un sensore di luminosità ambientale… per esempio per poter accendere le luci del giardino al calar del sole. Si potrebbe dedicare un’uscita (con relè Normalmente Chiuso) per poter collegare tali luci in serie. Avremo così la possibilità di attivare un timer per esempio dalle 00.00 alle 5.00, facendo spegnere le luci in questo periodo notturno. Otterremo in questo modo un’accensione automatica al calare del sole e uno spegnimento automatico al sorgere del sole. Per evitare sprechi energetici, il timer andrebbe a  forzare lo spegnimento delle luci esterne tra la mezzanotte e le 5 di mattina.
…4 relè non sono sufficienti? Potremmo riprogettare l’Irrighino Shield aggiungendo un PortExpander I2C. A questo punto otterremmo N uscite (decine e decine di relè…). Rimarrebbe necessario a questo punto aumentare  il numero di timer…  la eeprom interna dell’AtMega potrebbe contenere i dati di almeno un centinaio di programmi differenti.
Si potrebbe monitorare il livello di una cisterna di raccolta acqua piovana.
Si potrebbe loggare l’andamento del livello della cisterna.
Si potrebbe implementare un controllo a distanza (RS485) per portare in posizione comoda in giardino i comandi manuali di accensione/spegnimento delle elettrovalvole.

Le idee a riguardo potrebbero essere infinite, ma soprattutto improntate alle esigenze di ogni singolo giardino/proprietario. Il solo limite a questo punto è la vostra fantasia!
Buon divertimento!

Nel file compresso qui linkato troverete tutto il materiale del progetto (schema e PCB dell’IrrighinoShield (Eagle) e lo Sketch Arduino): Irrighino.zip

Un particolare ringraziamento allo staff di Elettronica Open Source per avermi regalato (attraverso l’iniziativa Review4U) la possibilità di cimentarmi nello studio del progetto Arduino.
Grazie a tutti per il tempo riservatomi nella lettura dell’articolo.



mercoledì 14 luglio 2010

Timer per Bromografo con Arduino

Avvicinandoti al mondo dell'elettronica ti sarai facilmente ritrovato a montare i primi circuiti su schede preforate, poi volendo fare il salto di qualità avrai imparato a realizzare circuiti con tecniche più complesse, di cui forse la più comune: la tecnica della fotoincisione.
Dopo un po' di esperimenti scoprirai l'importanza di avere in laboratorio un buon bromografo, capace di poter ripetere con certezza i parametri di esposizioni.
Da qui la comunissima necessità di un timer per bromografo.
In rete ce ne sono tanti, probabilmente molti già realizzati con Arduino.
Quello presentato di seguito è il frutto di una rielaborazione di alcuni tentativi di un amico (Sergio), che avvicinandosi al mondo di Arduino ha sperimentato molto, ma che alla fine non ha resistito di chiedermi una manina per far funzionare il tutto.
Ebbene si, mi son lasciato coinvolgere dal progetto e nel giro di qualche mezz'ora ecco il primo rilascio del mio timer per bromografo.

Su un display lcd 16x2 caratteri è visualizzato lo stato del timer.
Sono previsti 3 pulsanti (settati in internal pullup): Start/Stop, Up, Down
Con i tasti Up e Down è possibile settare il numero di secondi (min 5, max 255 sec) il quale sarà persistito in eeprom.
Premendo il tasto Start/Stop si avvierà il timer e contemporaneamente verrà portato a livello alto l'uscita per il comando del relè.
Allo scadere del tempo, sarà il relè sarà portato a livello basso e contemporaneamente sarà attivato il buzzer per la segnalazione.

Un progettino semplicissimo, veloce e facile... per un utilissimo scopo.

Buon lavoro Sergio... e buon lavoro a tutti!

http://www.intrinseco.it/elettronica/BromografoTimer.zip



venerdì 9 luglio 2010

Timer programmabile x PIC16F84A

Ciao a tutti!
Estrapolo da un vecchio progettino un minuscolo ma funzionale timer, utilizzato per diverso tempo sul mio bromografo fatto in casa.
Quasi tutti i progetti di timer che si trovano in rete sono dotati di display LCD o 7segmenti... cosa che (allora... :-D) volevo evitare.

Mi sono perciò messo a scrivere un'applicazione per PIC (16F84A).

Il timer in questione dispone di tre pulsanti (pulsante UP (RA1) , DOWN (RA0), START/STOP (RA2)), due led (Minuti (RB2), Secondi(RB3)), un cicalino (RB0) e l'uscita a cui collegare la lampada del bromografo (RB1).

Il quarzo da utilizzare e il classico 4Mhz.

SCHEMA ELETTRICO



Accendendo il timer la prima volta, udiamo subito due bip del buzzer: l'autoconfigurazione e completata (timer impostato a 5min e 30 sec)
Seguono subito dopo 5 lampeggi del 'Led Minuti' e 3 lampeggi del 'Led Secondi'.
Già abbiamo capito come grazie a soli due led il timer colloquierà con l'utente: tanti lampeggi tanti minuti e secondi!

Premendo il tasto Start/Stop verrà portato a 1 l'uscita predisposta per la Lampada UV, il 'Led Minuti' e 'Led Secondi' lampeggieranno altenativamente segnalando l'attivazione.
Al termine del tempo prefissato, verrà spenta la Lampada UV ed il Buzzer suonerà intermittente per circa 5 secondi segnalando la fine del processo.
Se durante il countdown ci accorgiamo di aver sbagliato qualcosa e vogliamo interrompere il processo sarà sufficiente premere il tasto Start/Stop.
Se si verificasse un blackout, al ritorno della corrente il timer emetterà 3 bip, riaccenderà la lampada UV e terminerà l'esposizione per il tempo rimanente.

Per programmare un nuovo tempo di esposizione premete il tasto Start/Stop per 4 secondi.
Udendo 2 bip capiamo di essere entrati nella modalità di programmazione.
Il 'Led Minuti' lampeggerà tante volte quanti sono i minuti attualmente impostati (5 lampeggi), quindi con il tasto UP o DOWN impostiamo i minuti voluti (se vogliamo impostare 8 min dovremo premere 3 volte il tasto UP)
Premiamo a questo punto il tasto Start/Stop: Il 'Led Secondi' lampeggerà tante volte quanti sono le decine di secondi attualmente impostate (3 lampeggi significano 30 secondi), quindi con il tasto UP o DOWN impostiamo i secondi voluti (se vogliamo impostare 20 secondi dovremo premere 1 volta il tasto DOWN)
Premiamo il tasto Start/Stop: un doppio bip ci avverte dell'avvenuta impostazione e salvataggio del nuovo tempo d'esposizione nella eeprom (tale salvataggio sarà persistente anche togliendo alimentazione al circuito)
Appena finita la programmazione avremo la conferma del tempo di esposizione impostato tramite i lampeggi dei Led (noteremo ora 8 lampeggi di 'Led Minuti' e 2 lampeggi di 'Led Secondi')

Il meccanismo di lettura ed impostazione del timer sembra macchinoso ma vi assicuro che è istantaneo e semplice!

Allego il file hex del progetto così da poter programmare il PIC!

Clicca qui per scaricarlo!

Buon lavoro e buone incisioni!!! :-D

mercoledì 7 luglio 2010

Termostato PIC12F675 - LM35dz

Il circuito qui di seguito presentato, è stato progettato per far fronte ad un'esigenza hobbystica.
Ho l'esigenza di mantenere un frigorifero alla temperatura costante di 16°C.

Sostituendo il termostato originale del frigorifero con questo da me progettato, ho raggiunto l'obbiettivo prefissato!



Descrizione
L'intero circuito (molto semplice come potete notare) gravita attorno ad un LM35dz e un PIC12F675.
Il sensore LM35dz misura il range di temperatura da 0° a 100°C, restituendo sul pin2 10mV/°C.
Il PIC rileva tale tensione tramite la porta GP0 e convertendola (tramite l'ADC interno) ottiene il valore in digitale.
Da qui effettua un banale controllo:
se la temperatura sale al di sopra dei 17°C, eccita il relè;
se la temperatura scende sotto i 15°C diseccita il relè.
Ho così dotato il mio circuito di isteresi, evitando il noto comportamento a singhiozzo, che arrecherebbe non pochi problemi al relè, ma soprattutto alla pompa del frigorifero.

Per monitorare la temperatura letta, ogni 10 secondi, parte una sequenza di lampeggi del Led1 secondo questa regola:
lampeggio Led1 tante volte quante sono le decine del valore misurato;
pausa di 1 secondo;
lampeggio Led1 tante volte quante sono le unità del valore misurato;
Se per esempio l'LM35 sta leggendo una temperatura di 25°C, otterremmo 2 lampeggi, pausa di 1 secondo, 5 lampeggi.
In questo modo la lettura è semplice ed immediata, senza dover far ricorso a display LCD, Display a segmenti led o altro.

Il Led2 segnala semplicemente lo stato del relè.



Progettazione Hardware

Il progetto è stato sviluppato con Eagle Free.
Avendo a disposizione un alimentatorino da 8V DC ho sviluppato un piccolo riduttore di tensione tramite un diodo zener, una resistenza e un transistor NPN.
Ho inoltre deciso di portare all'esterno (tramite pinstrip femmina) le porte GP1 e GP2 per eventuali sviluppi futuri.








Progettazione Software

Il software per il Pic è stato sviluppato in C con il semplicissimo NotePad e compilato con il compilatore Hi-tech PICC.
Il listato prodotto occupa il 41% dello spazio dedicato al programma, quindi sarà possibile in futuro implementare nuove funzionalità.
Nel caso si vogliano modificare i valori di temperatura massima e minima, basta modificare il sorgente, ricompilare e riprogrammare il Pic.

Clicca qui per scaricare il sorgente e il file Hex da inserire nel PIC

Benvenuti su Intrinseco.it!

Ciao a tutti!
E' un gran piacere aprire questo portale, dedicato ai progetti che sto sviluppando.
L'obbiettivo di questo sito è poter condividere esperienze, emozioni, successi...
Di tanto in tanto tornate a visitarmi: ne vedrete di interessanti!