# Robotica educativa/Termostato

Robotica educativa

## Introduzione

* PrerequisitiRobotica educativa/Prerequisiti
* Etica della roboticaRobotica educativa/Etica della robotica

## Robotica con Arduino

* Le basi dell'informaticaRobotica educativa/Le basi dell'informatica
* Le basi dell'elettronicaRobotica educativa/Le basi dell'elettronica

## Primi passi nella robotica

* Invio di un SOSRobotica educativa/Invio di un SOS
* Che tempo che faRobotica educativa/Temperatura e umidità
* TermostatoRobotica educativa/Termostato
* Misurazione della distanzaRobotica educativa/Misurazione della distanza
* Sensore di parcheggioRobotica educativa/Sensore di parcheggio
* Gestione di un servomotoreRobotica educativa/Servomotore
* TelepassRobotica educativa/Telepass
* Dal computer ad ArduinoRobotica educativa/Dal computer ad Arduino
* Musica maestro!Robotica educativa/Musica maestro

## Ora che abbiamo un'idea...

Modifica il sommario
Ora che si è appreso come misurare la temperatura ambiente, si procede alla realizzazione di un vero e proprio termostato.

## Principio di funzionamento

Una volta acquisita la temperatura ambiente, tramite il sensore di temperatura DHT11, si può procedere a diverse cose:
* attivare un impianto di riscaldamento, se questa è inferiore a una soglia prefissata;
* attivare un impianto di refrigerazione, quando la temperatura supera una soglia prestabilita.
Le due azioni, apparentemente in contrasto tra loro, sono le due modalità di lavoro di ogni comune termostato domestico. Rispettivamente, vengono chiamate modalità invernale e modalità estiva.
L'accensione dell'impianto (di riscaldamento, come di raffreddamento) corrisponde all'accensione e allo spegnimento di un led. Per esempio: un led rosso quando si attiva l'impianto di riscaldamento e un led blu quando si attiva l'impianto di raffreddamento.
Di seguito lo pseudocodice dove t corrisponde alla temperatura restituita dal sensore, mentre t_min è la temperatura minima, sotto la quale l'impianto di riscaldamento deve attivarsi. Similmente t_max è la temperatura massima, superata la quale, si attiverà l'impianto di climatizzazione.
L'impianto che realmente è presente nelle abitazioni è comandato da un codice molto simile a questo. Si potrebbe obiettare che l’impianto di casa è più complesso di un singolo led. Questo è vero, ma non nella parte di controllo e automazione. In casa vi è un sensore (o più se si è fatta una divisione, come zona giorno e zona notte, ma questo non cambia il principio di funzionamento) che data la temperatura ambiente invia un impulso all'impianto di accensione o spegnimento.
Il codice che è stato mostrato fa esattamente questo. Non rimane altro da fare che:
* stabilire i valori di temperatura minima e massima (possono essere fissi o variabili);
* visualizzare lo stato del nostro impianto per avere un riscontro di cosa sta accadendo;
* inviare al monitor seriale la temperatura acquisita, così da capire se si stanno commettendo errori.

## Schema di montaggio

Di seguito lo schema di montaggio. Si noti che il sensore di temperature è l'ingresso. Le uscite sono due: il led rosso è la modalità invernale, quando si scende al di sotto di una temperatura prestabilita rappresenta l'impianto di riscaldamento; viceversa, il led blu è la modalità estiva, al di sopra di una temperatura limite attiva il climatizzatore che - in questo caso - è stato realizzato con un motore a corrente continua collegato a una ventola.
Si noti che i led sono connessi a una resistenza da $220~\Omega$, questo per evitare che passino a miglior vita non appena gli arriva un segnale alto ($5~{\text{V}}$). In quel caso la loro resistenza si abbassa drasticamente e la corrente erogato sarebbe troppo elevata.
La scelta della resistenza dipende da quanta luminosità vogliamo dai led: una bassa resistenza implica alta luminosità, ma minor vita media; viceversa, alzando il valore della resistenza, diminuisce la luminosità, ma aumenta la vita media dei componenti.

## Codice

Si noti che la prima parte del codice ricalca l'esempio precedente. In aggiunta vengono definiti i due valori di soglia t_min e t_max, così da poterli modificare agevolmente, e i pin a cui si collegano i led e il motore (quest'ultimo non serve definirlo perché si aziona assieme al led blu). Inoltre, nel setup si deve specificare che i pin connessi ai led sono uscite.
Si noti che le poche righe dello pseudocodice, mostrato all'inizio, rappresentano il cuore di tutto il programma.
In totale si trovano:
* definizioni che è buona prassi inserire sempre in testa al codice, così da ritrovarle e poterle modificare agevolmente;
* impostazioni iniziali contenute nel setup che vengono eseguite una sola volta (e dopo la pressione del tasto di reset);
* lettura della temperatura dal sensore DHT11;
* verifica che il dato esista;
* azionamento dell'impianto di riscaldamento o ventilazione;
* invio dei dati alla porta seriale;
* intervallo tra due azioni.

## Espansioni suggerite

* Chi ha seguito con attenzione avrà sicuramente notato che per modificare le temperature di soglia occorre modificare il codice. Quindi la prima e più semplice espansione è l'aggiunta di due potenziometri che impostino le temperature di comfort, così da poter utilizzare il dispositivo senza doverlo riprogrammare.
* Per gli appassionati di controlli automatici, non è difficile inserire un ciclo di isteresi (data una temperatura di soglia, far si che accensione e spegnimento siano leggermente spostate sopra e sotto di essa). Questo è ciò che avviene nella pratica quotidiana, per prolungare la vita media dei dispositivi ed evitare che un impianto di riscaldamento (a una temperatura pari a quella di soglia) si accenda e spenga in continuazione.

## Note

* ↑ Non si pensi al costo del singolo componente (un led costa davvero poco, meno di un centesimo) ma una volta inserito in un circuito, dissaldarlo e sostituirlo non è affatto economico, in particolare se il componente è molto piccolo.
* ↑ Si noti che questi possono essere visualizzati anche sotto forma di grafico.
* ↑ Anche in questo caso è bene ricordare che si è utilizzato un tempo pari a $2~{\text{s}}$ per non appesantire troppo l'attesa. In una situazione domestica si esegue una lettura ogni due minuti per via dell'inerzia termica.