Presepino: il presepe con Arduino

Centralina capace di simulare ciclicamente l’avvicendarsi del giorno e della notte, pilotando opportunamente fino a sei uscite (con cui alimentare LED o piccoli motori) corrispondenti alla luce del giorno, al bagliore delle stelle, al fuoco delle case, all’accensione della stella cometa e a due dispositivi mobili. Può, inoltre, controllare strip NeoPixel e, per rendere l’atmosfera più natalizia, riproduce musiche a vostra scelta.

 

Come ogni anno, all’approssimarsi delle Feste Natalizie pensiamo a un progetto a tema che possa renderle originali e più calorose.

Dato che da tanti anni non proponevamo più quello che è poi uno dei classici dell’elettronica – il controllo delle luci del presepe- abbiamo deciso di optare per una centralina del genere, ma ci è sembrato giusto farlo in chiave moderna ed attuale; e per attuale intendiamo con un hardware conosciuto e apprezzato come quello che migliaia di sperimentatori hanno trovato in Arduino.

Ecco nascere, così, Presepino, ossia una centralina di controllo luci e sonoro per presepe, il cui circuito è basato su un ATmega328 (quindi l’hardware di Arduino UNO) e nasce per comandare direttamente dei LED, con tutti i vantaggi del caso, primo fra tutti il fatto che lavora a bassa tensione e può quindi essere collocata anche a portata dei bambini, senza che ne derivi pericolo per la loro salute.

Poi oggi, con la grande disponibilità di strip a LED, realizzare un presepe automatizzato piccolo o grande che sia, risulta semplicissimo. Oltre alle luci, il nostro Presepino permette di gestire anche l’audio, grazie a un innovativo modulo riproduttore di MP3 montato sulla scheda, capace di farvi ascoltare in altoparlante (seppure in mono) i brani contenuti in una SD-Card che potrete scegliere secondo le vostre preferenze.

Il progetto Presepino

Ma andiamo con ordine e vediamo innanzitutto le funzioni disponibili, che differenziano la nostra centralina da quelle per il semplice controllo delle due luci che realizzano la simulazione di alba e tramonto: con Presepino è possibile realizzare un controllo che va oltre il piccolo o grande presepe di casa, per arrivare ai presepi allestiti nelle chiese, negli oratori, nei locali delle comunità e nei luoghi aperti.

Per questo motivo abbiamo realizzato un circuito decisamente prestante, in grado di pilotare quattro carichi luminosi a LED funzionanti a 12 volt e che assorbano una corrente individuale di 6 ampere; questa è anche la massima corrente che la scheda può gestire e può essere aumentata stagnando abbondantemente le piste che portano dalla morsettiera di alimentazione ai MOSFET e da questi alle relative morsettiere di uscita.

Per corrente individuale si intende che ciascun canale può commutare 6 ampere, ma per come è costruito lo stampato non è possibile assorbire 6 ampere costantemente da tutte le uscite insieme. Questi valori, considerato che il circuito nasce per pilotare strip a LED o comunque composizioni di LED, sono più che accettabili e per un presepe da casa sono sovrabbondanti, pur bastando anche per una struttura all’aperto, grazie all’efficienza luminosa dei LED.

Le uscite della centralina sono sei, ma il firmware che forniamo contempla la gestione delle prime quattro per implementare la simulazione della luce del giorno, di quella delle stelle, dei fuochi della capanna/grotta (di Betlemme) e delle case dei pastori, ed infine di illuminare la stella cometa. Le luci si accendono e spengono gradatamente seguendo un ciclo che simula un’intera giornata.

A queste uscite di base potete aggiungere, intervenendo sullo sketch per l’ATmega 328, le altre due, cui potete assegnare il controllo di vari accessori del presepe come una ruota a pale, il movimento di personaggi animati o animali, ecc.

Per quanto riguarda le uscite di base, abbiamo suddiviso la sequenza completa in quattro fasi denominate giorno, tramonto, notte e alba. La durata delle fasi può essere regolata mediante trimmer, e l’escursione corrispondente si può reimpostare intervenendo sullo sketch (ma in maniera uguale per tutte); ciò vale dunque per il giorno e la notte, ma anche per le due fasi di transizione (tramonto e alba).

Queste ultime due sono le fasi più suggestive: durante il tramonto, la luminosità del giorno (realizzata con i LED collegati all’uscita SOLE) diminuisce a poco a poco, mentre nel cielo iniziano a illuminarsi le stelle (si attiva l’uscita omonima); a un certo punto, prima che il ciclo si concluda, si accendono i fuochi delle case e della capanna (uscita FUOCO).

Tra l’altro, il nostro circuito è in grado di simulare il tremolio della legna che arde, pilotando con un’opportuna sequenza di impulsi l’uscita FUOCO. Quando tutte le stelle in cielo sono completamente illuminate, appare anche la stella cometa (accesa dall’uscita COMETA). Ovviamente, salvo piccoli dettagli, durante l’alba si spengono gradatamente tutte le luci luminosi, mentre aumenta lentamente sino a raggiungere la massima luminosità la luce del giorno.

Schema elettrico del presepe con Arduino

Scendiamo ora negli aspetti più tecnici, analizzando il circuito, che è basato sul microcontrollore Atmega328 nel quale gira l’apposito sketch che implementa il controllo delle uscite e del modulo che realizza il sonoro del presepe; il micro, siglato U1, all’inizializzazione imposta PB0 come uscita per l’invio dei comandi seriali a un’eventuale strip Neopixel, e PB1, PB2, PB3, PD3, PD5, PD6 come output per il controllo delle uscite a MOSFET a canale N (i transistor sono dei robusti STP36N06, da 36 ampere di Id e 60V di Vdso) che materialmente commutano l’alimentazione sui LED o strip a LED corrispondenti.

Le linee del micro utilizzate per gestire le uscite pilotano ciascuna il gate del proprio MOSFET attraverso un resistore da 1 kohm e ciascuna di esse e massa è applicato un LED (con rispettiva resistenza di limitazione della corrente) che accendendosi permette di monitorare lo stato del rispettivo transistor.

Ciascuna delle uscite fornisce impulsi rettangolari TTL-compatibili di frequenza costante e modulati in larghezza, secondo la tecnica PWM: ciò consente di variare il valore medio della tensione applicata dai MOSFET ai carichi loro collegati e di conseguenza la potenza e la luminosità, con un’elevatissima efficienza in quanto la resistenza in stato di ON (piena conduzione) dei MOSFET è bassissima (appena 40 milliohm) e quindi la potenza dissipata, a parità di potenza trasferita, è limitatissima se confrontata a quella che comporterebbe un pilotaggio serie a tensione continua, dove il transistor dovrebbe sobbarcarsi la differenza tra la tensione di alimentazione e quella applicata al carico.

I segnali PWM vengono generati dai moduli PWM interni al microcontrollore, opportunamente impostati dal firmware per ciascuna uscita.
L’attuale configurazione circuitale prevede di alimentare le strip di LED collegandone positivo e negativo rispettivamente a + e – della relativa uscita, tuttavia siccome i MOSFET possono “reggere” tensioni drain-source in interdizione pari a 60 volt, è anche pensabile partire da un’alimentazione esterna anche a 24÷36 volt c.c. in modo da ridurre l’assorbimento a parità di potenza elettrica gestita.

Se l’alimentazione non viene presa dal circuito, la striscia di LED va connessa con il + al positivo dell’alimentatore scelto e il – all’uscita della nostra centralina, fermo restando che la massa dell’alimentatore e della scheda vanno unite.

Abbiamo detto in precedenza che la sequenza completa generata dal nostro circuito è composta da quattro fasi (giorno, tramonto, notte e alba) la cui durata può essere regolata indipendentemente tramite gli appositi trimmer alimentati a 5 volt e la cui tensione del cursore viene letta da un I/O del microcontrollore configurato come input e acquisito tramite l’A/D converter interno all’ATmega; nel nostro progetto, l’ADC viene assegnato alle linee PC0÷PC5, con le quali si acquisiscono in scansione le tensioni dei sei trimmer presenti, vale a dire R1, R2, R3, R4 per le funzioni anzidette ed R5 e R6 disponibili per funzioni assegnabili a piacimento programmando opportunamente il microcontrollore.

Per come è strutturato il firmware, la durata dei rispettivi cicli è direttamente proporzionale alla tensione applicata dal relativo trimmer, quindi portando il cursore di R1 verso massa, per esempio, si accorcia la durata del giorno, la quale invece aumenta portandolo verso il positivo dei 5 V.

Attenzione ad un particolare: i trimmer R1, R2, R3, R4 non controllano direttamente il PWM delle uscite per le fasi, ma ne determinano i tempi di esecuzione; il duty-cycle dei segnali PWM alle uscite SOLE, STELLE, COMETA e FUOCO viene gestito secondo la periodicità prevista da apposite subroutine del firmware. Questo funzionamento è logico in quanto le fasi descritte coinvolgono più di un’uscita e, nel caso della transizione giorno/notte (TRAMONTO), per esempio, coinvolgono l’uscita SOLE e quella STELLE, che vanno in dissolvenza, come è, anche nel passaggio notte/giorno (ALBA), seppure al contrario.

I trimmer da R1 a R4 servono dunque per gestire la durata del GIORNO (R1), della NOTTE (R2), dell’ALBA (R3) e del TRAMONTO (R4). Il led LD8, pilotato dalla linea PB4, si accende brevemente quando la centralina passa da una fase all’altra.

La durata di ogni singola fase viene impostata tramite l’apposito trimmer e la durata massima di ogni fase è di circa 100 secondi; per l’esattezza, la durata è ottenuta dalla lettura dell’ADC su 10 bit (tra 0 e 1.023) considerata in millisecondi, moltiplicata per 100 dal firmware. Se volete tempi differenti potete editare lo sketch nella porzione che si occupa di determinare la temporizzazione, che per praticità riportiamo nel Listato 1. Si tratta sostanzialmente della riga:

trimvalue[i]=trimvalue[i]*100;

Listato 1

if(runtime>time_trim+200){
  for (int i=0;i<6;i++){
   trimvalue[i]=(ReadTrimmer(i)); 
   trimvalue[i]=trimvalue[i]*100; 
   delay (1);
  }
  time_trim=millis(); 
}


int ReadTrimmer (int id){
  return(analogRead(trimmer[id])); 
}

Qui potete modificare il valore 100 sostituendolo con ciò che vi aggrada: ad esempio, inserendo 200 ottenete il raddoppio dei tempi, mentre con 50 li dimezzate.

Quanto agli altri due trimmer, sono personalizzabili da firmware, così come le uscite OUTEX1 e OUTEX2; con lo sketch da noi fornito, R5 è libero mentre R6 è stato utilizzato per gestire il volume di riproduzione dell’audio.

Alle uscite a MOSFET possono essere collegate sia delle strip a LED, sia lampadine a 12 volt di piccola potenza, ma anche singoli LED, motori elettrici per azionare ruote e altri meccanismi, come anche pompe per far muovere l’acqua in un laghetto o un fiume e tutto quello che la fantasia suggerisce per realizzare un presepe più “vivo”.

Restando in tema uscite, è il caso di parlare di quella dedicata al controllo di LED NeoPixel, che permette di aggiungere ulteriori animazioni luminose, come ad esempio la coda pulsante di una cometa.

Le strip NeoPixel vengono gestite in parallelo con una sola linea del microcontrollore (più in generale, di Arduino), che nel nostro caso è facilmente assegnabile a piacimento specificandola nello sketch; la comunicazione è unidirezionale e gestisce un gruppo di LED.

NeoPixel è una particolare soluzione a LED RGB “intelligenti” per il controllo, ad esempio, tramite Arduino; ogni LED NeoPixel dispone di controller a bordo, interfacciabile con una sola linea dati. La libreria proprietaria che l’Adafruit (www.adafruit.com) rende disponibile liberamente facilita l’integrazione nell’ambiente Arduino.

Ogni LED RGB può essere gestito individualmente tramite un apposito comando inserito nella stringa seriale e può produrre fino a 256 tonalità del proprio colore, determinando un totale di 16.777.216 combinazioni di colore.

Una particolarità dei LED NeoPixel è che possono essere collegati in cascata in modo che la linea dati da uno passi al successivo, però il prezzo da pagare è che oltre un certo numero di LED, la velocità di gestione deve ridursi sensibilmente; a causa di ciò, se si devono realizzare matrici per mostrare della grafica veloce, occorre impiegare molte linee con pochi LED ciascuna. Ma questa limitazione non interessa il nostro progetto, nel quale peraltro non è stata prevista una funziona predefinita per l’uscita NeoPixel, che potrete invece aggiungere editando lo sketch.

Il canale dati usato per la comunicazione con i LED NeoPixel e quindi con le strip, è simile al tipo oneWire; la comunicazione avviene a un massimo di 800 kbps.

Per ogni strip di LED è possibile impostare a piacimento la frequenza di refresh, in modo da rendere impercettibili determinati giochi di luce, fermo restando il limite dettato dalla quantità di strip collegate.

Il protocollo di comando del sistema NeoPixel prevede l’invio di gruppi di tre byte in una stringa di 24 bit, ognuna delle quali contiene lo stato di illuminazione di ciascun colore base (prima gli otto bit del verde, poi quelli del rosso e infine quelli del blu).

L’alimentazione prevista per i LED NeoPixel è a 5 volt, prelevabili dal contatto 5V del connettore della scheda Presepino, dato che l’assorbimento di ciascuna strip normalmente non è elevato e che i LED tricolore NeoPixel vengono accesi alternativamente. La massa di riferimento di alimentazione e dati (è unica e fa capo al contatto G della strip) è sempre quella del microcontrollore e va quindi connessa a GND. Per gestire eventualmente strip molto lunghe e quindi con un assorbimento più elevato, sul connettore siglato NEOPIXEL abbiamo portato anche i 12 volt, prelevati direttamente a monte del diodo D1. A questa uscita è possibile ad esempio collegare un regolatore switching in grado di fornire la corrente necessaria all’intera fila di led NEOPIXEL.

Passiamo adesso all’audio del presepe, che viene ottenuto grazie a un valido modulo siglato DFR0299 controllabile tramite interfaccia seriale a livello TTL; nel nostro circuito utilizza la seriale hardware del microcontrollore, la stessa impiegata in fase di programmazione per caricare lo sketch sul microcontrollore, ma ciò non costituisce un problema in quanto le linee RX e TX dell’ATmega vengono usate per una funzione alla volta, ovvero una volta che è stato programmato il micro, lo sketch le utilizza per gestire il modulo. Il DFR0299 nello schema lo trovate siglato U3; è in grado di riprodurre direttamente i file MP3 e WAV memorizzati su una SD-Card della capacità massima di 32 GB purché formattata con FAT16 o FAT32, inserita nell’apposito slot.

La particolarità di questo modulo è che è stato progettato e realizzato per il mondo Arduino: anche nella scelta del modulo, vedete, è evidente il vantaggio di avere a bordo della nostra scheda un’architettura Arduino.

Per la gestione del modulo è chiaramente stata sviluppata una libreria specifica che il nostro sketch include, la quale permette di decidere quale file riprodurre, regolare il volume ecc.

Il modulo contiene un decoder in grado di decomprimere l’audio in formato MP3 e un controller in grado di accedere via SPI ai dati contenuti nella SD-Card: man mano che lo stream di dati viene letto, il decoder lo trasforma in audio non compresso, che poi viene amplificato da un piccolo finale integrato, mono con uscita a ponte, da 3 watt, che sono una potenza più che sufficiente a pilotare un altoparlante in grado di farsi sentire nell’ambiente.

Se serve maggior potenza, utilizzate l’uscita audio (+ e – SPK) per pilotare un amplificatore di potenza cui applicare una cassa acustica; in alternativa potete prendere l’audio dai contatti 4 e 5, che sono le uscite audio a basso livello dei canali, rispettivamente, LEFT e RIGHT. In questo caso potete contare su un audio stereo.

Tutte le funzioni del modulo U3 si governano da seriale con specifiche istruzioni che il microcontrollore impartisce; quelle riguardanti il volume vengono generate leggendo l’ADC dell’ATmega quando campiona la tensione sul cursore del trimmer R6.

Abbiamo anche previsto di utilizzare, tra i comandi di gestione della riproduzione (Play, Stop, Pause, FWD ecc.) solo quello di Play/Stop, che viene implementato con i tre pulsanti collegati al microcontrollore tramite le linee PD2, PD4 e PD7 (tutte inizializzate come input dotati di pull-up interno) che hanno tutti la stessa funzione, ovvero quella di abilitare/disabilitare l’audio (Listato 2).

Più esattamente, la pressione di uno dei pulsanti P1, P2, P3 quando è in riproduzione un brano causa l’arresto del medesimo e la successiva pressione fa ricominciare la riproduzione dall’inizio del brano arrestato in precedenza.

Listato 2

void gestAudio(int track){

digitalWrite (LEDPLAY,LOW);
if (playing==true){
   digitalWrite (LEDPLAY,HIGH);
   track++;
   if (track==5) track=1;
     if (stopVol==false){
       if(runtime>time_volume_running+200){ 
         if(startVol==false){ 
           if (volume>3) {
             volume=volume-3; 
             Serial.print(“dec “);
             Serial.println(volume); 
           }
           else
           {
             playtrack(track);
             startVol=true; 
           } 
         }
         else
         { 
           if (volume<(trimvalue[TRIMMER_VOL]/3500)) {
             volume=volume+3;
             Serial.print(“inc “); 
             Serial.println(volume); 
           }
           else
           {
             startVol=false; 
             stopVol=true;
             Serial.println(“finito ciclo”); 
           } 
         } 
         time_volume_running=millis(); 
         setvolume(volume); 
       } 
     } 
   } 
}

 

Quando l’audio è in riproduzione, il LED LD7 viene acceso dalla linea PB5 del microcontrollore, la quale nel normale funzionamento è utilizzata come output; le linee PD0 e PD1, facenti capo all’UART, vengono accoppiate al modulo U3 mediante resistenze per evitare che in programmazione, ovvero quando alla scheda si applica il convertitore Seriale/USB, vi siano interferenze tra le tensioni dei due moduli.

I file dell’audio che volete sia riprodotto devono essere scritti sulla SD-Card con nome nel formato 001.mp3, 002.mp3, 003.mp3 e 004.mp3, perché il primo file viene richiamato durante la fase GIORNO, il secondo durante il TRAMONTO, il terzo quando viene acceso il FUOCO (fuoco tremolante) e il file 004.mp3 viene richiamato quando arriva l’ALBA.

Durante il passaggio tra una fase e l’altra, il volume di riproduzione viene abbassato gradualmente fino al termine del brano e viene avviata, con volume in graduale aumento, la riproduzione del brano successivo (tipo ciò che avviene alla radio o negli album musicali); questo vale nel passaggio dal brano da una fase alla seguente.

Detto ciò completiamo la descrizione del circuito con le parti finora tralasciate, ossia l’alimentazione, l’oscillatore dell’ATmega 328P e la programmazione in-circuit; per quanto riguarda la sezione di alimentazione, il circuito va alimentato con 12÷14 Vcc (la corrente richiesta dipende da quanti utilizzatori collegate alle uscite) tramite la morsettiera +/- PWR, la cui tensione giunge direttamente alle uscite a MOSFET e al connettore per NeoPixel.

La tensione di alimentazione principale giunge anche all’anodo del diodo D1, inserito per proteggere il resto del circuito dall’inversione di polarità, e viene applicata all’ingresso del regolatore di tensione U2, compito del quale è ricavare i 5 volt stabilizzati con cui funzionano il microcontrollore, i componenti di contorno e il modulo audio U3. L’eventuale converter Seriale/USB si alimenterà con la tensione dell’USB del computer cui verrà interfacciato.

I condensatori posti sull’alimentazione d’ingresso servono a filtrare gli impulsi creatisi sulle piste per effetto dell’assorbimento dei LED e in generale dei carichi collegati alle uscite a MOSFET; ciò è necessario in quanto la pulsazione dell’alimentazione dei diodi è a frequenza elevata e altrimenti i disturbi (che poi sono abbassamenti di tensione pur lievi concomitanti con l’accensione dei singoli LED) potrebbero interferire con il corretto funzionamento del microcontrollore. Analoga è la funzione dei condensatori C3 e C4.

Veniamo ora all’interfaccia per la programmazione in-circuit, da utilizzare solo se volete caricare il bootloader in un microcontrollore vergine; a riguardo va detto che il microcontrollore fornito con il kit è già programmato con bootloader e sketch, ma chi preferisce procurarsi da sè l’ATmega 328P dovrà prima caricare il bootloader per poter trasferire lo sketch dall’IDE di Arduino.

Il connettore preposto è quello siglato ICSP e ad esso fanno capo le linee di reset (RST), MISO (ingresso dati del programmatore e uscita del micro U1), MOSI (uscita dati del programmatore e ingresso dati del micro), SCK (clock della comunicazione seriale sull’SPI formato da MISO e MOSI), oltre che la massa e la Vcc, che durante la programmazione viene fornita dal programmatore per alimentare il circuito.

Ricordiamo che quando si programma il bootloader il circuito deve essere alimentato attraverso la morsettiera +/- PWR. Concludiamo con l’oscillatore del microcontrollore, che è impostato come clock ricavato dal quarzo X1, in parallelo al quale troviamo la resistenza R19; i condensatori C5 e C6 completano l’oscillatore, che funziona a 16 MHz, frequenza più che sufficiente a gestire l’intero ciclo di lavoro della centralina.

Piano di montaggio

 

Elenco Componenti:

R1÷R6: Trimmer 10 kohm MO
R7÷R18: 1 kohm
R19: -
R20, R22: 470 ohm
R21: 4,7 kohm
R23, R24: 1 kohm
C1, C3: 100 nF ceramico 
C2, C4: 220 µF 25 VL
elettrolitico
C5: 15 pF ceramico
C6: 15 pF ceramico
C7÷C9: 100 nF ceramico 
D1: 1N4007
U1: ATMEGA328P (MF1230)
U2: 7805
U3: Modulo DFPlayer Mini (DFR0299)
U4: Convertitore USB-TTL (FTDI5V)
LD1÷LD6: LED rosso 5 mm
LD7: LED verde 5 mm
LD8: LED giallo 5 mm
X1: Quarzo 16 MHz
Q1÷Q6: STP36NF06
P1÷P3: Microswitch

Varie: 
- Morsetto 2 poli passo
5,08mm (8 pz)
- Strip femmina 8 vie (2 pz.)
- Strip maschio 3 vie (2 pz.)
- Strip maschio 4 vie
- Strip maschio 6 vie 90°
- Zoccolo 14+14
- Dissipatore (6 pz.)
- Vite 10 mm 3 MA (6 pz.)
- Dado 3 MA (6 pz.)
- Circuito stampato S1230

Funzionamento delle uscite

Di giorno l’unica lampada (o serie di lampade) accesa è quella che simula il sole e che illumina, appunto, “a giorno” il presepe.

Questa lampada resta accesa per un tempo compreso tra 0 e 102 secondi a seconda di come viene settato il trimmer R1.

Scaduto il tempo ha inizio una nuova fase: il tramonto, la cui durata dipende dal trimmer R4.

Agendo su detto trimmer è possibile impostare un valore compreso tra 0 e 102 secondi circa.

A poco a poco la luce del giorno si attenua mentre aumenta la luminosità delle lampade che simulano le stelle, sino al completo spegnimento del sole che coincide con la massima illuminazione delle stelle.

Esattamente a metà di questa fase di transizione iniziano ad accendersi i fuochi delle case che raggiungono la massima luminosità al termine del ciclo.

Da notare che questa uscita genera una luce tremolante che simula il bagliore del fuoco. Infine, al termine del ciclo, si illumina gradatamente anche la luce che simula la stella cometa. Il passaggio dalla minima alla massima luminosità avviene in tempo pari ad 1/4 di quello impostato per il TRAMONTO.

A questo punto ci troviamo in piena notte con le stelle in cielo che brillano, la cometa completamente illuminata ed i fuochi nelle case accesi col loro tipico tremolìo.

La durata di questa fase (compresa, come per il giorno, tra 0 e 102 secondi circa), che è la NOTTE, viene impostata mediante il trimmer R2. Allo scadere del tempo impostato, ha inizio la quarta ed ultima fase: l’alba.

Gradatamente l’intensità luminosa delle stelle si abbassa mentre aumenta la luminosità del giorno sino al completo spegnimento delle stelle ed alla completa accensione delle lampade che simulano la luce del giorno.

All’inizio di questa fase anche la cometa si spegne gradatamente ma molto più velocemente tanto che, trascorso un periodo pari ad 1/4 del tempo impostato per l’alba, la cometa risulta completamente spenta.

Sempre all’inizio di questa fase di transizione, anche la luminosità dei fuochi inizia a calare sino allo spegnimento. In questo caso il passaggio dalla massima luminosità allo spegnimento completo avviene in un tempo pari ad 1/2 di quello impostato per l’ALBA, mediante il trimmer R3.

A questo punto abbiamo simulato un ciclo di 24 ore ed il sistema si appresta a ripetere all’infinito la sequenza programmata.

Realizzazione pratica del presepe con Arduino

Passiamo adesso alla costruzione della scheda: montate i componenti iniziando da quelli a più basso profilo (resistenze e diodo D1) e proseguendo con lo zoccolo del microcontrollore, il pin-strip a 6 poli con terminali a 90° per il convertitore Seriale/USB (facoltativo), i trimmer, i pulsanti da c.s. e i LED, da orientare come indicato nel piano di montaggio, rammentando che il catodo è l’elettrodo situato dal lato smussato del contenitore.

Ora inserite e saldate i due pin-strip femmina a 8 poli ciascuno per montare il modulo audio, il pin-strip per l’ICSP (4 poli), le otto morsettiere e il regolatore 7805, che va tenuto in piedi con il lato delle scritte rivolto allo zoccolo del microcontrollore. Ora bisogna montare i sei MOSFET, ognuno dei quali va inserito nei rispettivi fori dello stampato dopo averne piegato ad angolo retto i terminali ed averlo appoggiato (con il lato scritte verso l’alto) a un dissipatore di calore ad “U” tipo ML26 (22° C/W di resistenza termica).

Completate le saldature e verificato che ogni componente sia montato correttamente e nel verso previsto, inserite il modulo DFR0299 nei propri pin-strip (orientandolo in modo che il porta-SD sia rivolto all’esterno del circuito) e il microcontrollore, la cui tacca di riferimento deve essere rivolta al regolatore integrato U2.

Nel DFR0299 bisogna inserire una microSD della capacità desiderata, con già caricati (fatelo su un computer) i file audio desiderati; per essi vale quanto detto qualche paragrafo indietro, rammentando che per ovvi motivi sarebbe meglio che la durata di ciascuno non ecceda quella impostata per la fase che deve accompagnare, quindi, ad esempio, il motivo suonato per il giorno deve durare non più di quanto impostato per il giorno.

Se il file dura meno in ogni caso non è un problema, in quanto il brano viene riprodotto ciclicamente fino alla fine del tempo impostato per la relativa fase e quindi sfumato per tempo.

Ricordate che i brani vanno preferibilmente inseriti nella root della microSD, ma il modulo è comunque in grado di cercare nelle cartelle, fermo restando che l’ordine di riproduzione, se nella scheda esistono altri file audio, non sarebbe più garantito.

A questo punto la centralina può o meno richiedere la programmazione in base a come l’avete realizzata: se avete acquistato un microcontrollore vergine dovete, con il programmatore ATMEL o una scheda Arduino impostata come programmatore (tecnica di programmazione stand-alone), caricare il bootloader utilizzando, allo scopo, la connessione ICSP.

Fatto ciò, rimuovendo il programmatore e montando il modulo d’interfaccia Seriale/USB nel connettore U4 (si tratta dell’FTDI5V basato sull’integrato FT232RL della FTDI) si collega la presa USB di quest’ultimo a quella di un PC nel quale sia installato l’IDE di Arduino e si carica lo sketch (l’IDE vede la nostra scheda come una Arduino UNO, perché il bootloader caricato nell’ATmega 328P è quello).

Tutto ciò non è richiesto se si acquista il kit di montaggio, dove il microcontrollore viene fornito programmato con le funzionalità base (4 uscite gestibili da 4 trimmer).

Comunque per rendere il progetto facilmente adattabile alle vostre esigenze diamo lo sketch, che potete scaricare qui sotto. Anche se avete acquistato il kit ma non vi accontentate della configurazione base e volete provare ad apportare qualche modifica, dovete procurarvi e montare il convertitore Seriale/USB.

Bene, a questo punto non ci resta che augurarvi buon divertimento e soprattutto Buone Feste!

 

Download sketch Presepino

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu