Non ci sono prodotti a carrello.
Presentiamo la candidatura del Sig. Felice Pascarelli che si propone per la realizzazione del firmware del progetto TiDiGino e che ci presenta una sua recente applicazione con Arduino: Automazione per Giardino con PC e Arduino.
Lasciamo la parola a Felice:
Lavoro da ventiquattro anni nel campo dell’elettronica, inizialmente facendo il tecnico presso un centro assistenza audio/video. In quegli anni cominciavo a imparare la programmazione in assembler dei microcontrollori PIC e ST6 proseguita successivamente in C con i dsPIC e attualmente con gli ARM. Successivamente ho gestito per vari anni un laboratorio di assistenza e servizi elettronici (dalla progettazione alla riparazione di sistemi elettronici). Attualmente sono consulente per un’azienda leader nel settore dell’elettronica ferroviaria. In campo informatico programmo correntemente in C, C++ e C#.
Vi propongo la mia candidatura con un progetto di automazione di giardini realizzato con Arduino interfacciato ad un PC tramite comunicazione Bluetooth da 100m (Classe 2).
L’idea è nata quando, alcuni giorni fa, sono stato ospite di un amico nella sua nuova villa con piscina (beato lui!!). Mentre eravamo in giardino sotto l’ombrellone a gironzolare su internet con i nostri PC portatili e le nostre consorti in piscina, riceviamo la telefonata di un altro amico che ci comunica che da alcuni minuti era fuori dal cancello con un altro folto gruppo di persone (che attendevamo da un po’) e che cercavano in tutti i modi (campanello e strombazzate di clacson) di “notificarci” la loro presenza.
Una volta aperto il cancello ognuno dei nuovi arrivati ha proposto una soluzione per replicare il suono del campanello: chi ha proposto di montare una sirena, chi di inserire lampade tipo stroboscopio da discoteca ed io, da elettronico, ho proposto di replicare il campanello, e magari anche l’apertura del cancello, sul computer.
A questo punto il padrone di casa, con tono ironico, mi ha chiesto se potessi fare di meglio e cioè di poter comandare anche le luci del giardino ed il sistema di irrigazione e magari di controllare lo stato dei sensori a microonde dell’antifurto perimetrale installato a protezione del giardino (per evitare che quando lui è in piscina qualcuno possa scavalcare la recinzione e intrufolarsi in casa approfittando di porte e finestre aperte).
Ritornato a casa ho cominciato a pensare a come risolvere la questione. Ho pensato di progettare un software da far girare sul PC che comunica via Bluetooth con una centralina costruita intorno ad Arduino ed interfacciata al quadro elettrico generale.
È nato così il progetto “Automazione Giardino”.
Naturalmente il software che ho progettato ed il firmware di Arduino, anche se perfettamente funzionanti, andrebbero ottimizzati ma, per mancanza di tempo (il 31 agosto è il termine ultimo per partecipare), lo invio ugualmente. Ed ecco il progetto Automazione Giardino con Personal Computer e Arduino:Il software da installare su PC comunica via Bluetooth (naturalmente il PC deve essere dotato di Bluetooth incorporato o su USB) con un altro modulo convertitore Bluetooth/RS232 della HandyWave, e montato su Arduino sfruttando le linee della UART seriale di quest’ultimo disponibile sui pin 0(RX) e 1(TX) del connettore di interfaccia.
Per interfacciare Arduino al quadro elettrico ho utilizzato dei relè, mentre per l’interfacciamento con antifurto e campanello ho utilizzato un circuito con optoisolatori per evitare possibili problemi di scariche e sovratensioni che potrebbero danneggiare la scheda Arduino.
Ho disegnato lo schema elettrico ma, per mancanza di tempo, ho preferito montare momentaneamente il tutto su basetta millefori (vedi figura sotto).
Questo è il disegno di una possibile ingegnerizzazione del tutto:
Mentre questo è lo schema elettrico del circuito:
Questo è l’elenco dei componenti necessari:
C1 100nF
C2 100uF
C3 0,33uF
C4 0,33uF
C5 0,33uF
C6 100nF
C7 47uF
C8 0,33uF
C9 0,33uF
C10 1uF
C11 1uF
C12 100nF
C13 100nF
D1 1N4007
D2 4,8V
D3 4,8V
D4 1N4007
D5 1N4007
D6 LED
D7 LED
D8 LED
D9 LED
D10 LED
D11 LED
J1 DB9
K1 RELAY_G5V-2
K2 RELAY_G5V-2
K3 RELAY_G5V-2
K4 RELAY_G5V-2
K5 RELAY_G5V-2
K6 RELAY_G5V-2
K7 CONN_3_V
K8 CONN_3_V
K9 CONN_3_V
K10 CONN_3_V
K11 CONN_3_V
K12 CONN_3_V
P1 CONN_6
P2 CONN_8
P3 CONN_2_V
P4 CONN_8
P5 CONN_2_V
P6 CONN_2_V
R1 10 K
R2 10 K
R3 270 Ohm
R4 270 Ohm
R5 470 Ohm
R6 470 Ohm
R7 330 Ohm
R8 330 Ohm
R9 330 Ohm
R10 330 Ohm
R11 330 Ohm
R12 330 Ohm
U1 7805
U2 PHDARL
U3 PHDARL
U4 MAX232
U5 ULN2803A
Prima di avviare il software “Automazione_Giardino” sul PC, bisogna associare, utilizzando l’apposita utility presente sul PC, il Bluetooth del PC con il modulo montato su Arduino.
Una volta associato il Bluetooth e avviato il software “Automazione_Giardino”, basta selezionare dall’apposita casellina la porta seriale associata al Bluetooth e premere il pulsante “connetti” presente in basso nell’applicativo (vedi l’ubicazione di detti controlli nella figura in alto).
A questo punto basta premere sulle icone delle lampadine per eccitare o diseccitare i relè corrispondenti sulla scheda di interfaccia collegata ad Arduino. Per il relè del cancello ho previsto il funzionamento ad impulso. Ogni qualvolta si preme sull’icona di apertura cancello il relè associato si chiude per 1s e quindi si riapre.
Per notificare il suono del campanello o l’intervento dell’antifurto perimetrale anche quando il software è ridotto a icona, ho previsto una finestra che si apre in automatico al verificarsi dell’evento e si sovrappone a qualsiasi altra applicazione aperta sul PC. Basta poi cliccarci sopra per chiuderla.
Il firmware installato su Arduino non fa altro che ricevere i comandi in arrivo sulla porta seriale, interpretarli, accendere o spegnere i relativi relè e reinviare al PC il nuovo stato delle uscite o degli ingressi. Come detto prima, il firmware va ottimizzato e magari inserita una routine di checksum sulla comunicazione seriale. Ma comunque così come è funziona ugualmente.
Al posto del convertitore RS232/Bluetooth utilizzato è possibile impiegare qualsiasi altro modulo magari con uscita TTL. Utilizzando un modulo con uscita TTL è possibile eliminare il convertitore RS232/TTL (MAX232 e componenti di contorno) inserito per interfacciare Arduino al modulo Bluetooth della HandyWave.
Per chi non disponesse di un trasmettitore Bluetooth e volesse provare il circuito, può tranquillamente utilizzare Arduino collegato via USB al PC su quale è installato il software e selezionare nel campo Porta Seriale la COM assegnata ad Arduino.
Ed ecco lo sketch per Arduino:
// Sistema Di Automazione Giardino // Felice Pascarelli 2011 // [email protected] long ritardo =300; byte rxrs232; String ricezione = ""; String rele = "0"; String bufferrx = "0"; String uscite = "K"; String rel = "0"; String rel1 = "a"; String rel2 = "b"; String rel3 = "c"; String rel4 = "d"; String rel5 = "e"; String rel6 = "f"; String in1 = "2"; String in2 = "4"; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(11, INPUT); pinMode(12, INPUT); Serial.begin(19200); } void loop() { if (Serial.available() > 0) ricevirs232(); ingressi(); delay(ritardo); if(rel == "1") { if (rele == "A") { rel1 = rele; digitalWrite(2, HIGH); } if (rele == "B") { rel2 = rele; digitalWrite(3, HIGH); } if (rele == "C") { rel3 = rele; digitalWrite(4, HIGH); } if (rele == "D") { rel4 = rele; digitalWrite(5, HIGH); } if (rele == "E") { rel5 = rele; digitalWrite(6, HIGH); } if (rele == "F") { rel6 = rele; digitalWrite(7, HIGH); delay(1000); digitalWrite(7, LOW); rel6 = "f"; } if (rele == "a") { rel1 = rele; digitalWrite(2, LOW); } if (rele == "b") { rel2 = rele; digitalWrite(3, LOW); } if (rele == "c") { rel3 = rele; digitalWrite(4, LOW); } if (rele == "d") { rel4 = rele; digitalWrite(5, LOW); } if (rele == "e") { rel5 = rele; digitalWrite(6, LOW); } if (rele == "f") { rel6 = rele; digitalWrite(7, LOW); } rel = "0"; } Serial.print(rel1);Serial.print(rel2);Serial.print(rel3);Serial.print(rel4); Serial.print(rel5);Serial.print(rel6);Serial.print(in1);Serial.print(in2); } void ingressi() { if (digitalRead(8) == 0) { in1 = "1"; } if (digitalRead(8) == 1) { in1 = "2"; } if (digitalRead(9) == 0) { in2 = "3"; } if (digitalRead(9) == 1) { in2 = "4"; } } void ricevirs232() { if (Serial.available() > 0) { rxrs232 = Serial.read(); if (isDigit(rxrs232)) { ricezione += (char)rxrs232; } if(rxrs232 =='A' || rxrs232 =='B'|| rxrs232 =='C'|| rxrs232 =='D'|| rxrs232 =='E'|| rxrs232 =='F' ||rxrs232 =='a'|| rxrs232 =='b'|| rxrs232 =='c'|| rxrs232 =='d'|| rxrs232 =='e'|| rxrs232 =='f') { rele = rxrs232,BYTE; rel = "1"; } } }
Tutti i file relativi al progetto, ovvero:
Automazione_Giardino.exe (programma da installare sul PC);
Cartella AutoGiardino_pde (con sketch da caricare in Arduino);
Cartella Progetto_Kicad (schematici in formato Kicad);
Foto_Progetto_Auto_Giardino.jpg (fotografia del progetto montato su millefori);
sw_Auto_Giardino.jpg (foto della schermata del software);
Arduino_Auto_Giardino.jpg (foto del circuito montato);
PCB_Auto_Giardino.jpg (foto di una possibile ingegnerizzazione);
Sch_Auto_Giardino.jpg (foto schema elettrico);
Elenco_Componenti.txt (elenco componenti)
Sono presenti all’interno di questa cartella zip.
Grande lavoro Felice!!
.
37 Commenti