Sommario:

Stazione meteo con Arduino UNO: 7 passaggi
Stazione meteo con Arduino UNO: 7 passaggi

Video: Stazione meteo con Arduino UNO: 7 passaggi

Video: Stazione meteo con Arduino UNO: 7 passaggi
Video: PROGETTO Arduino: Stazione Meteo con Arduino 2024, Dicembre
Anonim
Stazione meteo con Arduino UNO
Stazione meteo con Arduino UNO

Creato da: Hazel Yang

Questo progetto è una stazione meteo che utilizza una scheda Arduino UNO per controllare il flusso di dati, un sensore DHT22 per raccogliere i dati e uno schermo OLED per mostrare i dati.

Passaggio 1: elenco degli articoli

Elenco articoli
Elenco articoli

1. Schermo: OLED, display da 1,3 SH1106, colore bianco I2C ---- PID: 18283

2. Sensore: sensore di umidità e temperatura digitale DHT22 ---- PID: 7375

3. Collega: Ponticelli ---- PID: 10316 o 10318 o 10312 (dipende dalla lunghezza) oppure è possibile utilizzare un cavo solido 22 AWG ---- PID: 22490

Tagliere ---- PID: 10686 o 10698 o 103142 (dipende dalle dimensioni)

4. Alimentazione: questo cavo può essere collegato solo con una porta USB del computer e il cavo viene utilizzato anche per il trasferimento dei dati tra l'IDE e la scheda Arduino. CAVO USB, DA A A B, M/M, 0,5 M (1,5 FT) ---- PID: 29862

Oppure puoi usarlo per alimentare la scheda: Adattatore AC/DC 5V 2A ---- PID: 10817.

Passaggio 2: introduzione relativa

Introduzione relativa
Introduzione relativa
Introduzione relativa
Introduzione relativa

Introduzione dello schermo: display OLED da 1,3 bianco

1. Puoi trovare il documento che mostra la configurazione di base e le descrizioni:

Introduzione del sensore: sensore di umidità e temperatura DHT22 1. È possibile trovare il documento che mostra le descrizioni:

Passaggio 3: collegare il circuito

Collega il circuito
Collega il circuito

Il sensore DHT22 invia i dati seriali al pin 2. Quindi, collega il secondo pin da sinistra, il pin "SDA" dovrebbe essere collegato al pin 2.

Per il display SSH1106, utilizza il pin analogico per trasmettere. Il circuito dello schermo sarà il pin "SCL" su "A5" di Arduino e il pin "SDA" su "A4" di Arduino. Mentre i dati sulla posizione dei pixel vengono trasmessi continuamente, la funzione di visualizzazione nel programma attiva il comando solo una volta ogni volta che legge i dati dal sensore.

Sia il sensore che lo schermo possono utilizzare 3,3 V per alimentare Arduino come ingresso di alimentazione CC. Per alimentare, dobbiamo collegare entrambi i pin "VCC" al "3.3V" di Arduino. E i pin "GND" possono essere semplicemente collegati al pin "GND" sulla scheda Arduino.

Usa il cavo USB da A a B, collega l'Arudino al computer.

Passaggio 4: prepararsi alla compilazione

"u8glib" per lo schermo SSH1106 di Olikraus.

"Libreria di sensori DHT" per il sensore DHT22 di Adafruit. Dovresti scaricare le due librerie: Libreria di sensori DHT22:

U8glib:

E usa "gestisci libreria" in IDE per decomprimerli. Istruzioni online sulla gestione delle librerie:

Passaggio 5: codice di prova per la porta seriale del sensore DHT22

Test coe per la porta seriale del sensore DHT22 (che si trova all'interno della libreria DHT22 >> esempi):

(Puoi saltare questa parte.)

Solo per testare il sensore DHT22 legge i dati normalmente

#includere

#includere

#includere

#includere

#includere

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

Serial.println(F("Prova DHT22!"));

dht.begin();

}

ciclo vuoto() {

// Attendi qualche secondo tra le misurazioni.

ritardo (2000);

// La lettura della temperatura o dell'umidità richiede circa 250 millisecondi!

// Le letture del sensore possono anche essere "vecchie" fino a 2 secondi (è un sensore molto lento)

float h = dht.readHumidity();

// Legge la temperatura in gradi Celsius (impostazione predefinita)

float t = dht.readTemperature();

// Legge la temperatura come Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature(true);

// Controlla se qualche lettura ha avuto esito negativo ed esci prima (per riprovare).

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println(F("Impossibile leggere dal sensore DHT!"));

Restituzione;

}

// Calcola l'indice di calore in Fahrenheit (predefinito)

float hif = dht.computeHeatIndex(f, h);

// Calcola l'indice di calore in Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, false);

Serial.print(F("Umidità: "));

Serial.print(h);

Serial.print(F("% Temperatura: "));

Serial.print(t);

Serial.print(F("°C "));

Serial.print(f);

Serial.print(F("°F Indice di calore: "));

Serial.print(hic);

Serial.print(F("°C "));

Serial.print(hif);

Serial.println(F("°F"));

}

// Dopo aver compilato il programma, fare clic su STRUMENTI >> MONITOR SERIALE per controllare i dati.

// Fine del programma di test.

Passaggio 6: codice per il progetto

#includere

#includere

#includere

#includere

#includere

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

Sensore DHT (DHTPIN, DHTTYPE);

void draw(void) {

u8g.setFont(u8g_font_unifont);

float h = sensor.readHumidity();

// Legge la temperatura in gradi Celsius (impostazione predefinita)

float t = sensor.readTemperature();

// Controlla se qualche lettura ha avuto esito negativo ed esci prima (per riprovare).

if (isnan(h) || isnan(t)) {

u8g.print("Errore.");

per(;;);

Restituzione;

}

u8g.setPrintPos(4, 10);

u8g.print("Temperatura(C):");

u8g.setPrintPos(4, 25);

u8g.print(t);

u8g.setPrintPos(4, 40);

u8g.print("Umidità(%):");

u8g.setPrintPos(4, 55);

u8g.print(h);

}

void setup(void) {

u8g.setRot180();

Serial.begin(9600);

sensore.begin();

}

ciclo vuoto (vuoto) {

// ciclo di immagini

u8g.firstPage();

fare {

disegno();

} while(u8g.nextPage());

// ricostruisce l'immagine dopo un certo ritardo delay (2000);

}

// Fine del programma principale.

Passaggio 7: descrizione

Descrizione
Descrizione

Quindi, inizializza il circuito dei pin per la scheda Arduino. Perché la libreria dei sensori richiede i dati per dichiarare l'oggetto.

E puoi testare i dati del sensore monitorando i dati di output tramite il pin digitale 2 utilizzando la funzione chiamata "Serial.print()". Poiché la frequenza di trasmissione dei dati è di circa 1 lettura ogni 2 secondi (che è 0,5 Hz), quando programmata nell'IDE di Arduino, è necessario impostare il ritardo all'interno della funzione loop su più di 2 secondi. Quindi c'è un "delay(2000)" all'interno della funzione loop. Ciò garantisce che i dati vengano aggiornati frequentemente. Nella funzione "disegna", prendi i dati dalla porta dati seriale e inseriscili in numeri float utilizzando le funzioni "readHumidity" e "readTemperature".

Stampa l'umidità e la temperatura utilizzando la funzione di stampa nel file "u8glib". È possibile regolare la posizione modificando il numero nella funzione "setPrintPos". La funzione di stampa può mostrare direttamente il testo e i numeri.

Per configurare l'hardware, assegna alla porta seriale un ritardo di 10 secondi. Quindi chiamare la funzione di inizio per il sensore. Secondo il mio circuito, il mio schermo era capovolto. Quindi ho incluso anche una funzione "setRot180" per ruotare il display.

La funzione loop della scheda Arduino è la funzione principale. Continua a chiamare la funzione di disegno per visualizzare il testo e i dati ogni volta che il sensore viene aggiornato.

Lo schermo si presenta così:

Puoi scollegare Arduino UNO dal tuo computer e alimentarlo utilizzando un adattatore di alimentazione da 5 V CC collegato al suo jack di alimentazione da 2,1 mm. Memorizza il programma all'interno della sua unità e può eseguire di nuovo il programma continuamente dopo essere stato alimentato.

Consigliato: