Obsah:

Meteorologická stanica používajúca Arduino UNO: 7 krokov
Meteorologická stanica používajúca Arduino UNO: 7 krokov

Video: Meteorologická stanica používajúca Arduino UNO: 7 krokov

Video: Meteorologická stanica používajúca Arduino UNO: 7 krokov
Video: Arduino uno - wireless weather station - solar 2024, November
Anonim
Meteostanica využívajúca Arduino UNO
Meteostanica využívajúca Arduino UNO

Vytvorila: Hazel Yang

Tento projekt je meteorologická stanica využívajúca dosku Arduino UNO na riadenie toku údajov, snímač DHT22 na zber údajov a obrazovku OLED na zobrazenie údajov.

Krok 1: Zoznam položiek

Zoznam položiek
Zoznam položiek

1. Obrazovka: OLED, 1,3 displej SH1106, I2C biela farba ---- PID: 18283

2. Senzor: Digitálny snímač vlhkosti a teploty DHT22 ---- PID: 7375

3. Pripojenie: prepojovacie vodiče ---- PID: 10316 alebo 10318 alebo 10312 (v závislosti od dĺžky), alebo môžete použiť pevný drôt 22 AWG ---- PID: 22490

Breadboard ---- PID: 10686 alebo 10698 alebo 103142 (závisí od veľkosti)

4. Napájanie: Tento kábel je možné pripojiť iba k portu USB počítača a kábel sa používa aj na prenos údajov medzi doskou IDE a Arduino. USB KABEL, A TO B, M/M, 0,5 M (1,5 ft) ---- PID: 29862

Alebo to môžete použiť na napájanie dosky: 5V 2A AC/DC adaptér ---- PID: 10817.

Krok 2: Relatívny úvod

Relatívny úvod
Relatívny úvod
Relatívny úvod
Relatívny úvod

Predstavenie obrazovky: 1,3 OLED displej biely

1. Dokument, ktorý ukazuje základné nastavenie a popisy, nájdete:

Predstavenie senzora: Snímač vlhkosti a teploty DHT22 1. Dokument s popisom nájdete tu:

Krok 3: Pripojte obvod

Pripojte obvod
Pripojte obvod

Senzor DHT22 odosiela sériové údaje na kolík 2. Pripojte teda druhý kolík zľava, kolík „SDA“by mal byť zapojený do kolíka 2.

V prípade displeja SSH1106 používa na prenos analógový kolík. Obvody obrazovky budú „SCL“pin na Arduino „A5“a „SDA“pin na Arduino „A4“. Kým údaje o polohe pixelov nepretržite vysielajú, funkcia zobrazovania v programe spustí príkaz iba raz, keď načítava údaje zo snímača.

Senzor aj obrazovka môžu používať 3,3 V na napájanie Arduina ako vstupu jednosmerného prúdu. Na napájanie musíme pripojiť oba kolíky „VCC“k „3,3 V“Arduino. A kolíky „GND“je možné jednoducho pripojiť k kolíku „GND“na doske Arduino.

Použite kábel USB A na B, pripojte Arudino k počítaču.

Krok 4: Pripravte sa na kompiláciu

„u8glib“pre obrazovku SSH1106 od spoločnosti Olikraus.

"Knižnica senzorov DHT" pre senzor DHT22 od spoločnosti Adafruit. Mali by ste si stiahnuť dve knižnice: Knižnica senzorov DHT22:

U8glib:

A použite „spravovať knižnicu“v IDE, aby boli rozbalené. Online výučba správy knižníc:

Krok 5: Testovací kód pre sériový port snímača DHT22

Testovací coe pre sériový port snímača DHT22 (ktorý je v knižnici DHT22 >> príklady):

(Túto časť môžete preskočiť.)

Len na testovanie, či snímač DHT22 číta údaje normálne

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

neplatné nastavenie () {

Serial.begin (9600);

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

dht.begin ();

}

prázdna slučka () {

// Medzi meraniami počkajte niekoľko sekúnd.

oneskorenie (2000);

// Čítanie teploty alebo vlhkosti trvá asi 250 milisekúnd!

// Hodnoty snímačov môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý snímač)

float h = dht.readHumidity ();

// Čítanie teploty ako Celzia (predvolené)

float t = dht.readTemperature ();

// Prečítajte teplotu ako Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature (true);

// Skontrolujte, či niektoré čítanie zlyhalo, a ukončite operáciu predčasne (skúste to znova).

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

Serial.println (F ("Nepodarilo sa prečítať zo senzora DHT!"));

návrat;

}

// Vypočítajte tepelný index vo Fahrenheite (predvolené)

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

// Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false)

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

Serial.print (F ("Vlhkosť:"));

Serial.print (h);

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

Serial.print (t);

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

Serial.print (f);

Serial.print (F ("° F Tepelný index:"));

Serial.print (hic);

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

Serial.print (hif);

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

}

// Po zostavení programu skontrolujte údaje kliknutím na NÁSTROJE >> SÉRIOVÝ MONITOR.

// Koniec testovacieho programu.

Krok 6: Kód pre projekt

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Snímač DHT (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Čítanie teploty ako Celzia (predvolené)

float t = sensor.readTemperature ();

// Skontrolujte, či niektoré čítanie zlyhalo, a ukončite operáciu predčasne (skúste to znova).

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

u8g.print ("Chyba.");

pre (;;);

návrat;

}

u8g.setPrintPos (4, 10);

u8g.print („Teplota (C):“);

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Vlhkosť (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

prázdna slučka (prázdna) {

// obrazová slučka

u8g.firstPage ();

urobiť {

kresliť ();

} while (u8g.nextPage ());

// prestavba obrazu s určitým oneskorením oneskorenia (2000);

}

// Koniec hlavného programu.

Krok 7: Popis

Popis
Popis

Potom inicializujte obvody pinov pre dosku Arduino. Pretože knižnica senzorov vyžaduje údaje na deklaráciu objektu.

A údaje senzora môžete testovať monitorovaním výstupných údajov prostredníctvom digitálneho pinu 2 pomocou funkcie s názvom „Serial.print ()“. Pretože frekvencia prenosu údajov je zhruba 1 čítanie každé 2 sekundy (čo je 0,5 Hz), pri programovaní v Arduino IDE musíme vo funkcii slučky nastaviť oneskorenie viac ako 2 sekundy. Vnútri funkcie slučky je teda „oneskorenie (2000)“. To zaisťuje, že údaje sa budú často obnovovať. Vo funkcii „kresliť“získajte údaje zo sériového dátového portu a vložte ich do plávajúcich čísel pomocou funkcií „readHumidity“a „readTemperature“.

Vlhkosť a teplotu vytlačte pomocou funkcie tlače v súbore „u8glib“. Pozíciu môžete upraviť zmenou čísla vo funkcii „setPrintPos“. Funkcia tlače môže priamo zobrazovať text a čísla.

Na nastavenie hardvéru dajte sériovému portu 10 -sekundové oneskorenie. Potom zavolajte funkciu zahájenia pre senzor. Podľa môjho obvodu bola moja obrazovka hore nohami. Zahrnul som teda aj funkciu „setRot180“na otáčanie displeja.

Funkcia slučky dosky Arduino je hlavnou funkciou. Stále vyvoláva funkciu kreslenia, aby zobrazovala text a údaje pri každom obnovení senzora.

Obrazovka vyzerá takto:

Arduino UNO môžete odpojiť od počítača a napájať ho pomocou 5 V jednosmerného napájacieho adaptéra, ktorý sa pripája k 2,1 mm napájaciemu konektoru. Uloží program na svoj disk a po zapnutí môže program nepretržite znova spustiť.

Odporúča: