Turinys:

Orų stotis naudojant „Arduino UNO“: 7 žingsniai
Orų stotis naudojant „Arduino UNO“: 7 žingsniai

Video: Orų stotis naudojant „Arduino UNO“: 7 žingsniai

Video: Orų stotis naudojant „Arduino UNO“: 7 žingsniai
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Lapkritis
Anonim
Orų stotis naudojant „Arduino UNO“
Orų stotis naudojant „Arduino UNO“

Kūrėjas: Hazel Yang

Šis projektas yra orų stotis, naudojanti „Arduino UNO“plokštę duomenų srautui valdyti, DHT22 jutiklis duomenims rinkti ir OLED ekranas duomenims rodyti.

1 žingsnis: elementų sąrašas

Prekių sąrašas
Prekių sąrašas

1. Ekranas: OLED, 1,3 colio ekranas SH1106, I2C balta spalva ---- PID: 18283

2. Jutiklis: skaitmeninis drėgmės ir temperatūros jutiklis DHT22 ---- PID: 7375

3. Jungiasi: jungiamieji laidai ---- PID: 10316 arba 10318 arba 10312 (priklauso nuo ilgio) arba galite naudoti 22 AWG vielos laidą ---- PID: 22490

Duonos lenta ---- PID: 10686 arba 10698 arba 103142 (priklauso nuo dydžio)

4. Maitinimas: Šis kabelis gali būti prijungtas tik prie kompiuterio USB prievado, o kabelis taip pat naudojamas duomenims perduoti tarp IDE ir „Arduino“plokštės. USB KABELIS, A – B, M/M, 0.5M (1.5FT) ---- PID: 29862

Arba galite tai naudoti maitindami plokštę: 5V 2A AC/DC adapteris ---- PID: 10817.

2 žingsnis: santykinis įvadas

Santykinis įvadas
Santykinis įvadas
Santykinis įvadas
Santykinis įvadas

Ekrano pristatymas: 1,3 colio OLED ekranas baltas

1. Dokumentą, kuriame parodyta pagrindinė sąranka ir aprašymai, rasite:

Jutiklio pristatymas: drėgmės ir temperatūros jutiklis DHT22 1. Dokumentą, kuriame rodomi aprašymai, rasite:

3 žingsnis: prijunkite grandinę

Prijunkite grandinę
Prijunkite grandinę

DHT22 jutiklis siunčia serijinius duomenis į 2 kaištį. Taigi, prijunkite antrą kaištį iš kairės, „SDA“kaištis turi būti prijungtas prie 2 kaiščio.

SSH1106 ekranui perduoti naudojamas analoginis kaištis. Ekrano grandinės bus „SCL“kaištis prie „Arduino“„A5“ir „SDA“kaištis - prie „Arduino“„A4“. Kol pikselių padėties duomenys nuolat perduodami, programos rodymo funkcija komandą suaktyvina tik vieną kartą kiekvieną kartą, kai ji nuskaito duomenis iš jutiklio.

Tiek jutiklis, tiek ekranas gali naudoti 3.3 V, kad įjungtų „Arduino“kaip nuolatinės srovės maitinimą. Norėdami įjungti maitinimą, turime prijungti abu „VCC“kaiščius prie „Arduino“„3.3V“. „GND“kaiščius galima tiesiog prijungti prie „GND“kaiščio „Arduino“plokštėje.

Naudokite USB A – B kabelį, prijunkite „Arudino“prie kompiuterio.

4 žingsnis: pasiruoškite kompiliavimui

„u8glib“SSH1106 ekranui iš „Olikraus“.

„DHT jutiklių biblioteka“, skirta DHT22 jutikliui iš „Adafruit“. Turėtumėte atsisiųsti dvi bibliotekas: DHT22 jutiklių biblioteka:

U8glib:

Ir naudokite „tvarkyti biblioteką“IDE, kad jie būtų išpakuoti. Internetinė bibliotekų valdymo instrukcija:

5 žingsnis: DHT22 jutiklio nuoseklaus prievado bandymo kodas

Išbandykite DHT22 jutiklio nuosekliojo prievado kodą (kuris yra DHT22 bibliotekos >> pavyzdžiuose):

(Galite praleisti šią dalį.)

Tai tik norint patikrinti, ar DHT22 jutiklis paprastai nuskaito duomenis

#įtraukti

#įtraukti

#įtraukti

#įtraukti

#įtraukti

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

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

dht.begin ();

}

void loop () {

// Palaukite kelias sekundes tarp matavimų.

vėlavimas (2000 m.);

// Temperatūros ar drėgmės nuskaitymas trunka apie 250 milisekundžių!

// Jutiklio rodmenys taip pat gali būti senesni nei 2 sekundės (tai labai lėtas jutiklis)

plūdė h = dht.readHumidity ();

// Skaityti temperatūrą kaip Celsijų (numatytasis)

plūdė t = dht.readTemperature ();

// Skaityti temperatūrą kaip Farenheitą (isFahrenheit = tiesa)

plūdė f = dht.readTemperature (tiesa);

// Patikrinkite, ar nepavyko nuskaityti, ir išeikite anksčiau (bandykite dar kartą).

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

Serial.println (F ("Nepavyko nuskaityti iš DHT jutiklio!"));

grįžti;

}

// Skaičiuoti šilumos indeksą Farenheitu (numatytasis)

plūdė hif = dht.computeHeatIndex (f, h);

// Apskaičiuoti šilumos indeksą Celsijaus (isFahreheit = false)

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

Serijinis atspaudas (F („Drėgmė:“));

Serijinis atspaudas (h);

Serijinis atspaudas (F ("% temperatūra:"));

Serijinis atspaudas (t);

Serijinis atspaudas (F ("° C"));

Serijinis atspaudas (f);

Serijinis atspaudas (F ("° F šilumos indeksas:"));

Serial.print (hic);

Serijinis atspaudas (F ("° C"));

Serijinis atspaudas (hif);

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

}

// Sudarę programą, spustelėkite ĮRANKIAI >> SERIJOS MONITORIUS, kad patikrintumėte duomenis.

// Bandymo programos pabaiga.

6 žingsnis: projekto kodas

#įtraukti

#įtraukti

#įtraukti

#įtraukti

#įtraukti

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT jutiklis (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

plūdė h = sensor.readHumidity ();

// Skaityti temperatūrą kaip Celsijų (numatytasis)

plūdė t = sensor.readTemperature ();

// Patikrinkite, ar nepavyko nuskaityti, ir išeikite anksčiau (bandykite dar kartą).

jei (isnan (h) || isnan (t)) {

u8g.print („Klaida“);

dėl(;;);

grįžti;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temperatūra (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Drėgmė (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// paveikslo kilpa

u8g.firstPage ();

daryti {

piešti ();

} while (u8g.nextPage ());

// atstatyti paveikslėlį po tam tikro uždelsimo (2000);

}

// Pagrindinės programos pabaiga.

7 žingsnis: aprašymas

apibūdinimas
apibūdinimas

Tada inicijuokite „Arduino“plokštės kaiščio grandinę. Kadangi jutiklių biblioteka reikalauja duomenų objektui deklaruoti.

Jutiklio duomenis galite patikrinti stebėdami išvesties duomenis per 2 skaitmeninį kaištį, naudodami funkciją „Serial.print ()“. Kadangi duomenų perdavimo dažnis yra maždaug 1 skaitymas kas 2 sekundes (tai yra 0,5 Hz), užprogramavus „Arduino IDE“, mes turime nustatyti, kad delsos ciklo funkcijos viduje būtų daugiau nei 2 sekundės. Taigi ciklo funkcijos viduje yra „uždelsimas (2000)“. Tai užtikrina, kad duomenys bus dažnai atnaujinami. Funkcijoje „atkreipti“gaukite duomenis iš nuoseklaus duomenų prievado ir sudėkite juos į plūduriuojančius skaičius naudodami funkcijas „readHumidity“ir „readTemperature“.

Išspausdinkite drėgmę ir temperatūrą naudodami spausdinimo funkciją „u8glib“faile. Padėtį galite reguliuoti pakeisdami funkciją „setPrintPos“. Spausdinimo funkcija gali tiesiogiai parodyti tekstą ir skaičius.

Norėdami nustatyti aparatinę įrangą, atidėkite nuoseklųjį prievadą 10 sekundžių. Tada iškvieskite jutiklio pradžios funkciją. Pagal mano schemą mano ekranas buvo apverstas aukštyn kojomis. Taigi aš taip pat įtraukiau „setRot180“funkciją, kad pasuktų ekraną.

„Arduino“plokštės kilpos funkcija yra pagrindinė funkcija. Jis kaskart atnaujina jutiklio skambinimo funkciją, kad būtų rodomas tekstas ir duomenys.

Ekranas atrodo taip:

Galite atjungti „Arduino UNO“nuo kompiuterio ir įjungti maitinimą naudodami 5 V nuolatinės srovės maitinimo adapterį, prijungtą prie jo 2,1 mm maitinimo lizdo. Ji saugo programą savo diske ir gali nepertraukiamai paleisti programą po maitinimo.

Rekomenduojamas: