Costruire il tuo termometro Arduino fai-da-te è un modo divertente e pratico per espandere le tue abilità di armeggiare, ma da dove dovresti iniziare? Unisciti a noi mentre approfondiamo il cablaggio e la codifica per trasformare un Arduino, una sonda di temperatura DS18B20, e un display OLED in un termometro digitale preciso che può funzionare bene in stanze, acquari e persino all'aperto.

Di cosa hai bisogno per realizzare un termometro digitale Arduino fai-da-te?

Tutti questi componenti possono essere trovati su siti Web come eBay e Amazon.

Una scheda Arduino

Puoi usare praticamente qualsiasi Arduino con un'uscita 5V per questo progetto. Stiamo usando un Arduino Pro Micro in modo che il nostro termometro finito sia compatto, ma puoi usare una scheda più grande come un Arduino Uno se vuoi evitare le saldature per questo progetto.

DS18B20 Sonda di temperatura

I sensori di temperatura DS18B20 possono essere trovati come piccoli sensori autonomi, PCB con sensori collegati o come sonde impermeabili su cavi lunghi. Abbiamo scelto quest'ultimo, poiché ci consente di utilizzare il nostro termometro all'interno di un acquario, ma puoi scegliere qualsiasi variante del sensore di temperatura DS18B20. A differenza di altri tipi di sensori di temperatura, i DS18B20 forniscono un segnale diretto al digitale al tuo Arduino, piuttosto che i segnali analogici che provengono da opzioni come i sensori di temperatura LM35.

instagram viewer

Uno schermo OLED/LCD

Il display che scegli per il tuo termometro avrà un grande impatto sul prodotto finito. Abbiamo scelto un display OLED bianco monocromatico da 1,3 pollici compatibile con I2C per il nostro termometro, ma puoi scegliere quello che preferisci purché supporti I2C.

Piccole parti aggiuntive

  • Resistenza da 4,7K (kiloohm).
  • Cavo isolato in silicone/PVC da 28 a 22 AWG
  • Una breadboard (opzionale per chi non desidera saldare)

Cablaggio del tuo termometro fai-da-te

Il cablaggio per questo progetto è molto più semplice di quanto potresti immaginare. Usando lo schema elettrico sopra, puoi creare il tuo termometro digitale fai-da-te con poco sforzo, ma abbiamo anche suddiviso lo schema in basso per renderlo più facile da seguire.

Cablaggio della sonda di temperatura DS18B20

Il cablaggio corretto della sonda di temperatura DS18B20 è fondamentale per questo progetto e devi assicurarti di utilizzare la resistenza da 4,7 K di cui abbiamo parlato in precedenza o la sonda non funzionerà correttamente. La sonda viene fornita con tre fili: terra (solitamente nero), VCC (solitamente rosso) e dati.

  • VCC si collega a un pin 5V sul tuo Arduino
  • Ground si collega a un pin GND sul tuo Arduino
  • I dati possono connettersi a qualsiasi pin digitale sul tuo Arduino (abbiamo scelto il pin digitale 15)
  • Anche i cavi Data e VCC devono essere collegati tra loro con un resistore da 4,7K

Cablaggio del display OLED I2C

Poiché utilizziamo una connessione I2C tra il nostro display OLED e il nostro Arduino, dobbiamo solo collegare quattro fili prima di poter iniziare a utilizzare il nostro display: VCC, Ground, SDA e SCL. Quasi tutti i moderni Arduino hanno pin SDA e SCL integrati, offrendo la possibilità di collegare fino a 128 componenti I2C unici su una singola scheda.

Il nostro Arduino Pro Micro ha SDA sul pin digitale 2 e SCL sul pin digitale 3, ma potrebbe essere necessario cercare un diagramma di piedinatura della scheda specifica che hai scelto prima di iniziare.

  • VCC si collega a un pin 5V sul tuo Arduino
  • Ground si collega a un pin GND sul tuo Arduino
  • SDA si collega al pin SDA sul tuo Arduino
  • SCL si collega al pin SCL su Arduino

Testare il tuo circuito

È fondamentale testare il circuito che hai realizzato prima di iniziare a scrivere il codice finale per esso, ma puoi usare i progetti di esempio forniti con le librerie discusse di seguito per testare il circuito che hai fatto.

Codifica del sensore di temperatura e del display OLED

La codifica del tuo termometro digitale fai-da-te è più complicato del cablaggio, ma l'IDE Arduino può essere utilizzato per renderlo più semplice.

Scegliere le biblioteche corrette

  • Libreria display OLED: Stiamo utilizzando la libreria Adafruit_SH1106.h per il nostro display, poiché questa è la libreria con cui è stato progettato per funzionare. Altri display OLED possono utilizzare le proprie librerie, come la libreria Adafruit_SSD1306.h, e di solito puoi scoprire quale ti serve dalla pagina del prodotto da cui hai ricevuto il display.
  • Sonda di temperatura DS18B20: Abbiamo bisogno di due librerie per la nostra sonda di temperatura. DallasTemperature.h viene utilizzato per raccogliere dati sulla temperatura e OneWire.h per rendere possibile la nostra connessione a filo singolo.

Una volta che queste librerie sono state installate e incluse nel tuo progetto, il tuo codice dovrebbe assomigliare allo snippet di seguito. Nota che abbiamo incluso anche il codice per impostare i pin per i nostri componenti.

#includere  //Visualizza libreria
#includere
#includere //Libreria delle sonde di temperatura
#define OLED_RESET -1
Display Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin del cavo dati sonda temperatura
OneWire oneWire (ONE_WIRE_BUS); //Di' a OneWire quale pin stiamo usando
DallasSensori di temperatura(&oneWire); //Riferimento OneWire alla temperatura di Dallas

Costruire le funzioni

  • configurazione vuota: Stiamo usando lo standard impostare funzione per inizializzare sia il nostro display che la nostra sonda di temperatura.
  • ciclo vuoto: Il nostro standard ciclo continuo la funzione verrà utilizzata solo per chiamare il nostro Schermo funzione.
  • visualizzazione vuota: Abbiamo aggiunto a Schermo funzione che chiama il nostro Temp funzione e fornisce informazioni al nostro display.
  • int: I nostri Temp la funzione viene utilizzata per ottenere una lettura della temperatura per il nostro Schermo funzione.

Una volta completato, dovrebbe apparire come lo snippet qui sotto.

configurazione vuota() {
}
ciclo vuoto() {
}
visualizzazione vuota() {
}
int Temp() {
}

Codifica del display OLED

Prima di poter aggiungere codice al nostro Schermo funzione, dobbiamo assicurarci che il pannello OLED sia inizializzato nel ns configurazione vuota funzione. Per prima cosa, utilizziamo a visualizza.inizio comando per avviare la visualizzazione, seguito da a display.clearDisplay comando per assicurarsi che il display sia chiaro.

configurazione vuota() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Cambia in base alla tua libreria di visualizzazione
display.clearDisplay();
}

Da qui, possiamo aggiungere codice al nostro Schermo funzione. Questo inizia con un altro display.clearDisplay comando, prima di dichiarare una nuova variabile intera con un valore che chiama il Temp funzione (ne parleremo più avanti). Siamo quindi in grado di utilizzare questa variabile per visualizzare la temperatura sul display utilizzando il codice seguente.

visualizzazione vuota() {
display.clearDisplay();
int intTemp = Temp(); //Chiama la nostra funzione Temp
display.setTextSize (3); //Imposta la dimensione del testo
display.setTextColor (BIANCO); //Imposta il colore del nostro testo
display.setCursor (5, 5); //Imposta la posizione del nostro testo sul display
display.print (intTemp); //Stampa il valore fornito dalla funzione Temp
display.drawCircle (44, 7, 3, BIANCO); //Disegna un simbolo di laurea
display.setCursor (50, 5);
display.print("C"); //Aggiunge C per indicare che la nostra temperatura è in Celsius
}

Codifica della sonda di temperatura DS18B20

Come il nostro display, anche la nostra sonda di temperatura necessita di un codice di configurazione per inizializzare il componente.

configurazione vuota() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensori.inizio();
}

Successivamente, è il momento di programmare la sonda stessa e dobbiamo aggiungere codice al nostro Temp funzione. Per prima cosa, richiederemo la temperatura dalla nostra sonda, quindi registrare il risultato come variabile float e convertirlo in un numero intero. Se questo processo ha esito positivo, la temperatura viene ripristinata Schermo funzione.

int Temp() {
sensori.richiestaTemperature(); // Invia il comando per ottenere le temperature
float tempC = sensori.getTempCByIndex (0); //Questo richiede la temperatura in Celsius e la assegna a un float
int intTemp = (int) tempC; //Questo converte il float in un intero
if (tempC != DEVICE_DISCONNECTED_C) //Controlla se la nostra lettura ha funzionato
{
ritorno intTemp; //Restituisce il nostro valore di temperatura alla funzione Display
}
}

Terminando

Infine, dobbiamo solo raccontare il nostro principale ciclo continuo funzione per chiamare il nostro Schermo funzione con ogni ciclo del codice, lasciandoci con un progetto simile a questo.

#includere  //Visualizza libreria
#includere
#includere //Libreria delle sonde di temperatura
#define OLED_RESET -1
Display Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin del cavo dati sonda temperatura
OneWire oneWire (ONE_WIRE_BUS); //Di' a OneWire quale pin stiamo usando
DallasSensori di temperatura(&oneWire); //Riferimento OneWire alla temperatura di Dallas
configurazione vuota() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensori.inizio();
}
ciclo vuoto() {
Schermo(); //Chiama la nostra funzione di visualizzazione
}
visualizzazione vuota() {
display.clearDisplay();
int intTemp = Temp(); //Chiama la nostra funzione Temp
display.setTextSize (3); //Imposta la dimensione del testo
display.setTextColor (BIANCO); //Imposta il colore del nostro testo
display.setCursor (5, 5); //Imposta la posizione del nostro testo sul display
display.print (intTemp); //Stampa il valore fornito dalla funzione Temp
display.drawCircle (44, 7, 3, BIANCO); //Disegna un simbolo di laurea
display.setCursor (50, 5);
display.print("C"); //Aggiunge C per indicare che la nostra temperatura è in Celsius
}
int Temp() {
sensori.richiestaTemperature(); // Invia il comando per ottenere le temperature
float tempC = sensori.getTempCByIndex (0); //Questo richiede la temperatura in Celsius e la assegna a un float
int intTemp = (int) tempC; //Questo converte il float in un intero
if (tempC != DEVICE_DISCONNECTED_C) //Controlla se la nostra lettura ha funzionato
{
ritorno intTemp; //Restituisce il nostro valore di temperatura alla funzione Display
}
}

Costruire un termometro digitale fai-da-te

Questo progetto dovrebbe essere divertente e informativo, ma anche darti la possibilità di creare un oggetto pratico. Abbiamo progettato questo codice per essere il più semplice possibile, ma puoi usarlo come base per un progetto più complicato man mano che impari.

15 fantastici progetti Arduino per principianti

Ti interessano i progetti Arduino ma non sai da dove iniziare? Questi progetti per principianti ti insegneranno come iniziare.

Leggi Avanti

CondividereTwittaE-mail
Argomenti correlati
  • Fai da te
  • Arduino
  • Elettronica
Circa l'autore
Samuel L. Garbetto (35 articoli pubblicati)

Samuel è uno scrittore di tecnologia con sede nel Regno Unito con una passione per tutto ciò che è fai-da-te. Avendo avviato attività nei settori dello sviluppo web e della stampa 3D, oltre a lavorare come scrittore per molti anni, Samuel offre una visione unica del mondo della tecnologia. Concentrandosi principalmente su progetti tecnologici fai-da-te, non ama altro che condividere idee divertenti ed eccitanti che puoi provare a casa. Al di fuori del lavoro, di solito si può trovare Samuel in bicicletta, giocare ai videogiochi per PC o tentare disperatamente di comunicare con il suo granchio domestico.

Altro da Samuel L. Garbetto

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti