Hand Wash Timer realizzazione è un progetto utile per contare quanto tempo dedichi al lavaggio delle tue mani.
Il progetto del timer per lavarsi le mani è molto utile in questo periodo di emergenza sanitaria ma puoi utilizzarlo anche quando l’emergenza sarà conclusa.
Inoltre puoi usare il conta tempo con led neopixel anche per monitorare il lavaggio dei tuoi denti, ad esempio, o di altre attività che richiedono un monitoraggio di questo tipo.
Puoi leggere il precedente articolo Hand Wash Timer per comprendere meglio le finalità del progetto e tutto ciò che ti serve per realizzarlo.
Inoltre ho condiviso il progetto su gitHub e Thingiverse in modo che tu possa scaricare tutti i files 3D, i sorgenti openScad, lo schema e lo sketch arduino.
Il circuito dell’Hand Wash Timer realizzazione
Il circuito che devi realizzare è abbastanza semplice in quanto facendo uso dei neopixel i collegamenti si riducono drasticamente a soli 2:
uno verso l’input neopixel e uno verso il sensore pir:
gli altri collegamenti sono al porta batterie ed al regolatore di tensione ( vedi articolo precedente ).
Ho utilizzato un attiny85 per semplificare i collegamenti e ridurre lo spazio necessario all’elettronica che trova posto nella base stampata in 3d:
il cavo bianco è quello che nello schema ho colorato di azzurro e si collega direttamente al sensore pir a cui fornisci 5v e Gnd attraverso i due pin esterni del connettore a 3 poli ( verde, marrone e bianco ).
Strumenti necessari
Per programmare il micro controllore attiny85 ti servirà anche un programmatore per attiny come quello che ho pubblicato qualche mese fa:
e che mi torna sempre molto utile per realizzare questi semplici progetti.
Ma puoi seguire anche uno dei semplici collegamenti che trovi sul web, con cui anche io ho iniziato, che fanno uso di un Arduino Uno e di una breadboard:
per trasferire il programma sul tuo Attiny85.
Lo sketch
Lo sketch per l’hand wash timer realizzazione è molto simile a quello utilizzato in altri progetti passati, sono infatti partito dalla base usata per la realizzazione della zucca di halloween di qualche anno fa.
Ecco l’elaborazione dello sketch come è adesso per questo progetto:
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define pinPIR 2 #define pinLED 4 #define NUMPIXELS 16 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, pinLED, NEO_GRB + NEO_KHZ800); void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code pinMode( pinPIR,INPUT ); pixels.begin(); // This initializes the NeoPixel library. pixels.setBrightness(127); // circle start for(byte i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(255,255,255)); pixels.show(); delay(50); } // circle stop for(byte i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); delay(50); } delay(5000); } void loop() { if ( digitalRead(pinPIR) == 1) { int timeToWait = ((60000/NUMPIXELS)/2); pixels.setBrightness(255); for(byte i=0;i<=NUMPIXELS;i++) { pixels.setPixelColor((NUMPIXELS-i), pixels.Color(0, 0,255)); pixels.show(); delay(timeToWait); } for(byte i=0;i<=NUMPIXELS;i++) { pixels.setPixelColor((NUMPIXELS-i), pixels.Color(161,66,245)); pixels.show(); delay(timeToWait); } for(byte i=0;i<=NUMPIXELS;i++) { pixels.setPixelColor((NUMPIXELS-i), pixels.Color(0,255,0)); pixels.show(); } delay(10000); } else { for(byte i=0;i<=NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); } } }
in cui le linee 01-04 includono la libreria Adafruit per la gestione dei neopixel;
linee 06-07: definisci i pin a cui sono collegati rispettivamente il sensore pir ed i neopixel;
linea 09: definisci il numero di led ( 16 ) in questo progetto;
linea 11: inizializzi l’oggetto pixels come istanza della libreria Adafruit NeoPixel;
linee 14-18: imposti il clock prescale per l’attiny85 con frequenza 16MHz;
linea 20: imposti la modalità INPUT per il pin a cui è collegato il sensore pir;
linee 22-23: inizializzi l’istanmza pixels e imposti la luminosità a 127, circa il 50%;
linee 25-27: crei due cicli da 0 al numero di neopixel definiti e per il primo li accendi tutti in bianco con un ritardo di 50 millisecondi tra ognuno. Il secondo ciclo li spegne impostando il colore a 0,0,0 per R,G e B;
linea 28; attendi 5 secondi dopo il gioco di accensione/spegnimento dei neopixel prima di passare alla fase di rilevamento.
linea 32: verifica che il sensore pir ti restituisca 1 ossia rilevi una persona in movimento;
alla linea 33 calcolerai il tempo di accensione di ciascun led dividendo il tempo totale per il numero di led a disposizione e ulteriormente diviso 2 in quanto farai due giri;
linea 34: imposti la luminosità dei led a 255;
linee 35-37: crea tre circli da 0 al numero di led disponibili e per ciascun ciclo imposti un colore dei led, ad esempio la linea 35 imposta il colore blu mentre la linea 36 imposta un colore viola e la linea 37 imposta il verde. Per ciascun led e colore attendi tra l’accensione di un led e del successivo il tempo calcolato alla linea 33;
linea 38: imposta un tempo di 10 secondi di accensione per il cerchio di colore verde;
linea 40: spegni tutti i led quando il sensore pir non rileva alcun movimento;
Il video
Il video che hai già visto nel precedente articolo dedicato all’hand wash timer ti mostra come funziona il progetto
Nel prossimo articolo prenderai in esame le parti 3D del modello e potrai modificarle per adattare il progetto a ciò che hai in mente.