Sadržaj:

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

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

Video: Meteorološka stanica koja koristi Arduino UNO: 7 koraka
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Juli
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 ekran za prikaz podataka.

Korak 1: Lista stavki

Lista stavki
Lista stavki

1. Ekran: OLED, 1,3-inčni ekran SH1106, I2C bijela boja ---- PID: 18283

2. Senzor: Digitalni osjetnik vlage i temperature DHT22 ---- PID: 7375

3. Povezuje: kratkospojne žice ---- PID: 10316 ili 10318 ili 10312 (ovisno o dužini) 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 se može povezati samo s USB portom računala, a kabel se koristi i 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 bele boje

1. Možete pronaći dokument koji prikazuje osnovne postavke i opise:

Predstavljanje senzora: Senzor vlažnosti 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, "SDA" pin bi trebao biti spojen na pin 2.

Za ekran SSH1106 koristi analogni pin za prijenos. Sklop ekrana će biti "SCL" pin na Arduino "A5" i "SDA" pin na Arduino "A4". Dok se podaci o položaju piksela neprestano prenose, funkcija prikaza u programu pokreće naredbu samo jednom svaki put kada pročita podatke sa senzora.

I senzor i zaslon mogu koristiti 3.3V za napajanje Arduina kao ulaza za istosmjernu struju. Za napajanje moramo spojiti oba "VCC" pina na Arduino "3.3V". Igle "GND" se mogu 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 kompajliranje

"u8glib" za ekran SSH1106 kompanije Olikraus.

"Biblioteka DHT senzora" za DHT22 senzor iz Adafruit -a. Trebali biste preuzeti dvije biblioteke: DHT22 senzorsku biblioteku:

U8glib:

I upotrijebite "upravljanje bibliotekom" u IDE -u da biste ih raspakirali. Mrežne upute za upravljanje bibliotekama:

Korak 5: Kôd za testiranje za serijski port senzora DHT22

Testni koeficijent za serijski port DHT22 osjetnika (koji se nalazi unutar biblioteke DHT22 >> primjeri):

(Ovaj dio možete preskočiti.)

Samo za testiranje DHT22 senzor normalno čita podatke

#include

#include

#include

#include

#include

#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}

// Sačekajte nekoliko sekundi između merenja.

kašnjenje (2000);

// Očitavanje temperature ili vlažnosti traje oko 250 milisekundi!

// Očitavanja senzora mogu biti i do 2 sekunde "stara" (to je vrlo spor senzor)

float h = dht.readHumidity ();

// očitavanje temperature kao Celzijusa (zadano)

float t = dht.readTemperature ();

// Očitavanje temperature kao Fahrenheita (isFahrenheit = true)

float f = dht.readTemperature (true);

// Provjerite da li neko čitanje nije uspjelo i izađite ranije (da pokušate ponovo).

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

Serial.println (F ("Očitavanje nije uspjelo sa DHT senzora!"));

return;

}

// 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:"));

Serial.print (h);

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

Serial.print (t);

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

Serial.print (f);

Serial.print (F ("° F Indeks topline:"));

Serial.print (hic);

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

Serial.print (hif);

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

}

// Nakon sastavljanja programa, kliknite ALATI >> SERIJSKI MONITOR kako biste provjerili podatke.

// Završetak programa testiranja.

Korak 6: Kôd za projekat

#include

#include

#include

#include

#include

#define DHTPIN 2

#define DHTTYPE DHT22

#include "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 da li neko čitanje nije uspjelo i izađite ranije (da pokušate ponovo).

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

u8g.print ("Greška.");

za (;;);

return;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (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 ();

uraditi {

draw ();

} while (u8g.nextPage ());

// obnavlja sliku nakon nekog kašnjenja (2000);

}

// Kraj glavnog programa.

Korak 7: Opis

Opis
Opis

Zatim inicijalizirajte pin sklopove za Arduino ploču. Zato što 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čitavanje 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)". Ovo osigurava da će se podaci često osvježavati. U funkciji "draw" preuzmite podatke sa serijskog porta za podatke i stavite ih u plutajuće brojeve pomoću funkcija "readHumidity" i "readTemperature".

Odštampajte vlažnost i temperaturu pomoću funkcije štampanja u datoteci "u8glib". Položaj možete prilagoditi promjenom broja u funkciji "setPrintPos". Funkcija ispisa može direktno prikazati tekst i brojeve.

Za postavljanje hardvera, dajte serijskom portu kašnjenje od 10 sekundi. Zatim pozovite start funkciju za senzor. Prema mom krugu, moj ekran je bio okrenut naopačke. Tako sam uključio i funkciju "setRot180" za rotiranje ekrana.

Funkcija petlje Arduino ploče je glavna funkcija. Stalno poziva funkciju crtanja za prikaz teksta i podataka svaki put kada se senzor osvježi.

Ekran izgleda ovako:

Možete odspojiti Arduino UNO sa računara i napajati ga pomoću 5V DC adaptera za napajanje koji se povezuje na njegovu 2,1 mm utičnicu za napajanje. Pohranjuje program unutar pogona i može ga kontinuirano pokrenuti nakon uključivanja.

Preporučuje se: