{"id":526,"date":"2022-05-10T11:59:18","date_gmt":"2022-05-10T09:59:18","guid":{"rendered":"https:\/\/astropills.it\/?p=526"},"modified":"2022-07-13T14:25:23","modified_gmt":"2022-07-13T12:25:23","slug":"focheggiatore-arduino-sensore-temperatura","status":"publish","type":"post","link":"https:\/\/astropills.it\/focheggiatore-arduino-sensore-temperatura\/","title":{"rendered":"Focheggiatore Arduino: aggiungiamo la temperatura!"},"content":{"rendered":"\n

Questo articolo \u00e8 dedicato a tutti quelli che hanno seguito il tutorial sul focheggiatore Moonlite costruito con Arduino (lo trovate qui<\/a>) e vorrebbero aggiungere la lettura della temperatura a esso.<\/p>\n\n\n\n\n\n\n\n

Stato dell’arte del firmware moonlite<\/h2>\n\n\n\n

Una volta fatto il flash del firmware su arduino e collegato al vostro sistema (perlomeno su Ekos) la temperatura segna sempre 0 anche se dovessimo aggiungere una sonda per la temperatura sul pin corretto.<\/p>\n\n\n\n

Il firmware \u00e8 rotto? Ho cablato male qualcosa? No, assolutamente!<\/p>\n\n\n\n

Potenza del software open source<\/h2>\n\n\n\n

Il firmware disponibile \u00e8 completamente open source (potete sbirciare la versione originale qui<\/a>; il firmware non \u00e8 stato scritto da me, l’ho solo messo su GitHub per visualizzarlo meglio), diamogli un’occhiata insieme e cerchiamo di capire come funziona la lettura della temperatura.<\/p>\n\n\n\n

Ah! Ecco qui il problema!
\"\"\"\"<\/p>\n\n\n\n

Il firmware originale cerca di fare una lettura analogica dal pin 0 di Arduino, anche inserendo un termometro digitale su quel pin non otterremo un granch\u00e8; in ogni caso, essendo il codice sorgente modificabile senza nessun problema, cerchiamo di adattarlo alle nostre esigenze!<\/p>\n\n\n\n

One fix to rule them all (oppure no)<\/h2>\n\n\n\n

Mi piacerebbe, ma la verit\u00e0 \u00e8 che non esiste un unico fix per tutti i termometri in circolazione. Ogni termometro pu\u00f2 avere settaggi differenti, poi ci aggiungiamo digitale VS analogico, i pin dove li vogliamo mettere. Insomma, non esiste un modo unico per sistemare il firmware in modo che possa utilizzare tutti i sensori di temperatura presenti sul mercato, ma con un po’ di pazienza possiamo adattare il codice al termometro in nostro possesso.<\/p>\n\n\n\n

DS1820 – lo standard low cost per la temperatura<\/h2>\n\n\n\n

In questo tutorial user\u00f2 il famoso DS18b20 che \u00e8 probabilmente il pi\u00f9 diffuso sul mercato, si trova a pochi euro in giro (o dalla Cina) e si pu\u00f2 acquistare sia in configurazione THT (con le tre gambette di metallo per intenderci) oppure gi\u00e0 con un cavetto come nel mio caso:<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

In aggiunta c’\u00e8 bisogno di una resistenza da 4.7kOhm che verr\u00e0 utilizzata come pull-up. Iniziamo il circuito!
Colleghiamo il cavetto rosso al 3.3V di Arduino, il nero al GND e il giallo a uno dei pin digitali, io sceglier\u00f2 il numero 7, inoltre dovrete inserire la resistenza tra il pin dati (giallo) e il 3.3V, ecco come dovrebbe essere lo schema completo fatto su una scheda per prototipi<\/p>\n\n\n

\n
\"\"
Cablaggio sulla scheda per prototipi<\/figcaption><\/figure><\/div>\n\n
\n
\"\"
Cablaggio con Arduino uno<\/figcaption><\/figure><\/div>\n\n\n

Cablato il tutto possiamo passare alla modifica del firmware originale, apriamo Arduino IDE e come primissima cosa andiamo a scaricare due librerie aggiuntive da Tools -> Manage Libraries.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

Nel men\u00f9 di ricerca ricercare le librerie “dallas” e onewire, selezionare le stesse versioni delle immagini seguenti e installarle.<\/p>\n\n\n

\n
\"\"
Cerchiamo e installiamo la libreria Dallas Temperatures<\/figcaption><\/figure><\/div>\n\n
\n
\"\"
E successivamente la OneWire<\/figcaption><\/figure><\/div>\n\n\n

Ora apriamo il firmware originale in Arduino IDE (potete fare semplicemente copia incolla dal primo link che ho riportato da github) e apportiamo le seguenti modifiche:<\/p>\n\n\n\n