Sadržaj:

Meteorološka postaja koja koristi Arduino UNO: 7 koraka
Meteorološka postaja koja koristi Arduino UNO: 7 koraka

Video: Meteorološka postaja koja koristi Arduino UNO: 7 koraka

Video: Meteorološka postaja koja koristi Arduino UNO: 7 koraka
Video: REVAN - THE COMPLETE STORY 2024, Srpanj
Anonim
Meteorološka stanica koristi Arduino UNO
Meteorološka stanica koristi Arduino UNO

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

Popis stavki
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

Relativni uvod
Relativni uvod
Relativni uvod
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

Spojite krug
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

Opis
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.

Preporučeni: