Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Autor: Hazel Yang
Ovaj projekt je meteorološka stanica koja koristi Arduino UNO ploču za kontrolu protoka podataka, DHT22 senzor za prikupljanje podataka i OLED zaslon za prikaz podataka.
Korak 1: Popis stavki
1. Zaslon: OLED, 1,3-inčni zaslon SH1106, I2C bijela boja ---- PID: 18283
2. Senzor: Digitalni osjetnik vlage i temperature DHT22 ---- PID: 7375
3. Priključuje: Žice kratkospojnika ---- PID: 10316 ili 10318 ili 10312 (ovisi o duljini) ili možete koristiti punu žicu 22 AWG ---- PID: 22490
Oglasna ploča ---- PID: 10686 ili 10698 ili 103142 (ovisi o veličini)
4. Napajanje: Ovaj kabel može se povezati samo s USB priključkom računala, a kabel se također koristi za prijenos podataka između IDE -a i Arduino ploče. USB KABL, A DO B, M/M, 0,5 M (1,5FT) ---- PID: 29862
Ili možete koristiti ovo za napajanje ploče: 5V 2A AC/DC adapter ---- PID: 10817.
Korak 2: Relativni uvod
Predstavljanje ekrana: 1,3 OLED ekran bijele boje
1. Dokument koji prikazuje osnovne postavke i opise možete pronaći:
Predstavljanje senzora: Senzor vlage i temperature DHT22 1. Dokument koji prikazuje opise možete pronaći na:
Korak 3: Spojite krug
Senzor DHT22 šalje serijske podatke na pin 2. Dakle, spojite drugi pin s lijeve strane, pin "SDA" treba spojiti na pin 2.
Za zaslon SSH1106 za prijenos koristi analogni pin. Sklopovi zaslona bit će "SCL" pin na Arduinovom "A5" i "SDA" pin na Arduinovom "A4". Dok se podaci o položaju piksela kontinuirano prenose, funkcija prikaza u programu pokreće naredbu samo jednom svaki put kada pročita podatke sa senzora.
Senzor i zaslon mogu koristiti 3,3 V za napajanje Arduina kao istosmjernog ulaza napajanja. Za napajanje moramo spojiti oba "VCC" pina na Arduino "3.3V". Igle "GND" mogu se jednostavno spojiti na pin "GND" na Arduino ploči.
Upotrijebite USB A do B kabel, spojite Arudino na računalo.
Korak 4: Pripremite se za sastavljanje
"u8glib" za zaslon SSH1106 od Olikrausa.
"Knjižnica DHT senzora" za DHT22 osjetnik iz Adafruit -a. Trebali biste preuzeti dvije knjižnice: DHT22 senzorsku knjižnicu:
U8glib:
I upotrijebite "upravljanje knjižnicom" u IDE -u da biste ih raspakirali. Mrežne upute za upravljanje knjižnicama:
Korak 5: Ispitni kôd za serijski priključak osjetnika DHT22
Testni koeficijent za serijski port DHT22 osjetnika (koji se nalazi unutar knjižnice DHT22 >> primjeri):
(Ovaj dio možete preskočiti.)
Samo za testiranje DHT22 osjetnik normalno čita podatke
#uključi
#uključi
#uključi
#uključi
#uključi
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
void setup () {
Serial.begin (9600);
Serial.println (F ("DHT22 test!"));
dht.begin ();
}
void loop () {{100} {101}
// Pričekajte nekoliko sekundi između mjerenja.
odgoda (2000);
// Čitanje temperature ili vlažnosti traje oko 250 milisekundi!
// Očitavanja senzora mogu biti i do 2 sekunde "stara" (senzor je vrlo spor)
float h = dht.readHumidity ();
// Očitavanje temperature u Celzijusima (zadano)
float t = dht.readTemperature ();
// Očitavanje temperature kao Fahrenheita (isFahrenheit = istina)
float f = dht.readTemperature (true);
// Provjerite neuspjelo čitanje i prijevremeno izađite (za ponovni pokušaj).
if (isnan (h) || isnan (t) || isnan (f)) {
Serial.println (F ("Očitavanje nije uspjelo s DHT senzora!"));
povratak;
}
// Izračunajte toplinski indeks u Fahrenheitu (zadano)
float hif = dht.computeHeatIndex (f, h);
// Izračunajte toplinski indeks u Celzijusima (isFahreheit = false)
float hic = dht.computeHeatIndex (t, h, false);
Serial.print (F ("Vlažnost:"));
Serijski.tisak (h);
Serial.print (F ("% Temperatura:"));
Serijski.tisak (t);
Serijski.ispis (F ("° C"));
Serijski.ispis (f);
Serial.print (F ("° F Toplinski indeks:"));
Serijski.ispis (hic);
Serijski.ispis (F ("° C"));
Serijski.ispis (hif);
Serial.println (F ("° F"));
}
// Nakon sastavljanja programa kliknite ALATI >> SERIJSKI MONITOR za provjeru podataka.
// Završetak programa testiranja.
Korak 6: Kôd za projekt
#uključi
#uključi
#uključi
#uključi
#uključi
#define DHTPIN 2
#define DHTTYPE DHT22
#uključuje "U8glib.h"
U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);
DHT senzor (DHTPIN, DHTTYPE);
void draw (void) {
u8g.setFont (u8g_font_unifont);
plovak h = senzor.readHumidity ();
// Očitavanje temperature kao Celzijusa (zadano)
float t = sensor.readTemperature ();
// Provjerite neuspjelo čitanje i prijevremeno izađite (za ponovni pokušaj).
if (isnan (h) || isnan (t)) {
u8g.print ("Pogreška.");
za(;;);
povratak;
}
u8g.setPrintPos (4, 10);
u8g.print ("Temperatura (C):");
u8g.setPrintPos (4, 25);
u8g.tisak (t);
u8g.setPrintPos (4, 40);
u8g.print ("Vlažnost (%):");
u8g.setPrintPos (4, 55);
u8g.tisak (h);
}
void setup (void) {
u8g.setRot180 ();
Serial.begin (9600);
sensor.begin ();
}
void loop (void) {
// petlja slike
u8g.firstPage ();
čini {
crtati();
} while (u8g.nextPage ());
// obnoviti sliku nakon nekog kašnjenja (2000);
}
// Kraj glavnog programa.
Korak 7: Opis
Zatim inicijalizirajte pin sklop za Arduino ploču. Budući da knjižnica senzora zahtijeva podatke za deklaraciju objekta.
Podatke senzora možete testirati praćenjem izlaznih podataka putem digitalnog pina 2 pomoću funkcije pod nazivom "Serial.print ()". Budući da je učestalost prijenosa podataka otprilike 1 očitanje svake 2 sekunde (što je 0,5 Hz), kada smo programirani u Arduino IDE -u, moramo postaviti kašnjenje unutar funkcije petlje na više od 2 sekunde. Dakle, unutar funkcije petlje postoji "kašnjenje (2000)". To osigurava da će se podaci često osvježavati. U funkciji "draw" preuzmite podatke sa serijskog podatkovnog porta i stavite ih u plutajuće brojeve pomoću funkcija "readHumidity" i "readTemperature".
Ispišite vlagu i temperaturu pomoću funkcije ispisa u datoteci "u8glib". Položaj možete prilagoditi promjenom broja u funkciji "setPrintPos". Funkcija ispisa može izravno prikazati tekst i brojeve.
Za postavljanje hardvera, dajte serijskom priključku kašnjenje od 10 sekundi. Zatim pozovite start funkciju senzora. Prema mojem krugu, zaslon mi je bio okrenut naopako. Tako sam uključio i funkciju "setRot180" za rotiranje zaslona.
Funkcija petlje Arduino ploče je glavna funkcija. Stalno poziva funkciju crtanja za prikaz teksta i podataka svaki put kad se senzor osvježi.
Zaslon izgleda ovako:
Arduino UNO možete odspojiti s računala i napajati ga pomoću 5V DC adaptera za napajanje koji se spaja na njegovu 2,1 mm utičnicu. Program pohranjuje unutar pogona i može ga kontinuirano pokrenuti nakon uključivanja.