Tartalomjegyzék:

Időjárás állomás az Arduino UNO használatával: 7 lépés
Időjárás állomás az Arduino UNO használatával: 7 lépés

Videó: Időjárás állomás az Arduino UNO használatával: 7 lépés

Videó: Időjárás állomás az Arduino UNO használatával: 7 lépés
Videó: #1 - Mi az az Arduino? 2024, Július
Anonim
Időjárás állomás Arduino UNO használatával
Időjárás állomás Arduino UNO használatával

Készítette: Hazel Yang

Ez a projekt egy meteorológiai állomás, amely egy Arduino UNO kártyát használ az adatáramlás szabályozására, egy DHT22 érzékelőt az adatok gyűjtésére és egy OLED képernyőt az adatok megjelenítésére.

1. lépés: Elemlista

Tétel lista
Tétel lista

1. Képernyő: OLED, 1,3 hüvelykes kijelző SH1106, I2C fehér színű ---- PID: 18283

2. Érzékelő: Digitális páratartalom- és hőmérsékletérzékelő DHT22 ---- PID: 7375

3. Csatlakoztatás: Jumper vezetékek ---- PID: 10316 vagy 10318 vagy 10312 (a hosszúságtól függően), vagy használhat tömör vezetéket 22 AWG ---- PID: 22490

Kenyeretábla ---- PID: 10686 vagy 10698 vagy 103142 (mérettől függően)

4. Tápellátás: Ez a kábel csak a számítógép USB -portjához csatlakoztatható, és a kábel adatátvitelre is használható az IDE és az Arduino kártya között. USB KÁBEL, A-B, M/M, 0,5M (1,5FT) ---- PID: 29862

Vagy használhatja a tápellátást: 5V 2A AC/DC adapter ---- PID: 10817.

2. lépés: Relatív bevezetés

Relatív bevezetés
Relatív bevezetés
Relatív bevezetés
Relatív bevezetés

A képernyő bemutatása: 1,3 -os OLED kijelző fehér

1. Az alapvető beállításokat és leírásokat bemutató dokumentumot megtalálja:

Az érzékelő bemutatása: Páratartalom és hőmérséklet érzékelő DHT22 1. A leírást tartalmazó dokumentum megtalálható:

3. lépés: Csatlakoztassa az áramkört

Csatlakoztassa az áramkört
Csatlakoztassa az áramkört

A DHT22 érzékelő soros adatokat küld a 2 -es tűre. Tehát csatlakoztassa a második tűt balról, az "SDA" csapot a 2 -es tűhöz kell csatlakoztatni.

Az SSH1106 kijelző esetében az analóg tűt használja az átvitelhez. A képernyő áramköre "SCL" érintkező lesz Arduino "A5" és "SDA" érintkezője Arduino "A4". Amíg a képpont pozíció adatai folyamatosan továbbítanak, a program megjelenítési funkciója csak egyszer aktiválja a parancsot minden alkalommal, amikor az adatokat kiolvassa az érzékelőből.

Mind az érzékelő, mind a képernyő a 3.3 V -ot használhatja az Arduino egyenáramú bemenetként történő bekapcsolására. Az áramellátáshoz mindkét "VCC" csatlakozót az Arduino "3.3V" -ához kell csatlakoztatnunk. És a "GND" csapok egyszerűen csatlakoztathatók az Arduino táblán lévő "GND" csapokhoz.

Az USB A -B kábellel csatlakoztassa az Arudino -t a számítógéphez.

4. lépés: Felkészülés a fordításra

"u8glib" az Olikraus SSH1106 képernyőjéhez.

"DHT szenzortár" az Adafruit DHT22 érzékelőjéhez. Töltse le a két könyvtárat: DHT22 szenzortár:

U8glib:

És használja a „könyvtár kezelését” az IDE -ben, hogy kicsomagolja őket. Online utasítások a könyvtárak kezeléséhez:

5. lépés: A DHT22 érzékelő soros portjának tesztkódja

Vizsgálja meg a DHT22 érzékelő soros portját (amely a DHT22 könyvtárban található >> példák):

(Ezt a részt kihagyhatja.)

Csak a DHT22 érzékelő teszteléséhez rendesen leolvassa az adatokat

#befoglalni

#befoglalni

#befoglalni

#befoglalni

#befoglalni

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Sorozat.kezdet (9600);

Soros.println (F ("DHT22 teszt!"));

dht.begin ();

}

void loop () {

// Várjon néhány másodpercet a mérések között.

késleltetés (2000);

// A hőmérséklet vagy páratartalom leolvasása körülbelül 250 milliszekundumot vesz igénybe!

// Az érzékelő leolvasása akár 2 másodperces "régi" is lehet (nagyon lassú érzékelő)

float h = dht.readHumidity ();

// A hőmérséklet olvasása Celsius -ban (alapértelmezett)

float t = dht.readTemperature ();

// A hőmérséklet olvasása Fahrenheit szerint (isFahrenheit = igaz)

float f = dht.readTemperature (igaz);

// Ellenőrizze, hogy valamelyik olvasás nem sikerült -e, és lépjen ki korán (újrapróbálkozáshoz).

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

Serial.println (F ("Nem sikerült olvasni a DHT érzékelőből!"));

Visszatérés;

}

// Hőindex kiszámítása Fahrenheitben (alapértelmezett)

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

// Hőindex számítása Celsius -ban (isFahreheit = false)

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

Soros.nyomat (F ("Páratartalom:"));

Soros.nyomat (h);

Soros.nyomat (F ("% hőmérséklet:"));

Soros.nyomat (t);

Soros.nyomat (F ("° C"));

Sorozatnyomat (f);

Soros.nyomat (F ("° F hőindex:"));

Soros.nyomtatás (hic);

Soros.nyomat (F ("° C"));

Soros.nyomat (hif);

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

}

// A program összeállítása után kattintson a TOOLS >> SERIAL MONITOR elemre az adatok ellenőrzéséhez.

// A tesztprogram vége.

6. lépés: A projekt kódja

#befoglalni

#befoglalni

#befoglalni

#befoglalni

#befoglalni

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT érzékelő (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// A hőmérséklet olvasása Celsius -ban (alapértelmezett)

float t = sensor.readTemperature ();

// Ellenőrizze, hogy valamelyik olvasás nem sikerült -e, és lépjen ki korán (újrapróbálkozáshoz).

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

u8g.print ("Hiba");

a (;;);

Visszatérés;

}

u8g.setPrintPos (4, 10);

u8g.print ("Hőmérséklet (C):");

u8g.setPrintPos (4, 25);

u8g.nyom (t);

u8g.setPrintPos (4, 40);

u8g.print ("Páratartalom (%):");

u8g.setPrintPos (4, 55);

u8g.nyomtatás (h);

}

void setup (void) {

u8g.setRot180 ();

Sorozat.kezdet (9600);

sensor.begin ();

}

void loop (void) {

// képhurok

u8g.firstPage ();

csinál {

húz();

} while (u8g.nextPage ());

// némi késleltetés után újjáépíteni a képet (2000);

}

// A fő program vége.

7. lépés: Leírás

Leírás
Leírás

Ezután inicializálja a pin áramkört az Arduino kártyához. Mivel az érzékelőkönyvtár megköveteli az adatokat az objektum deklarálásához.

És tesztelheti az érzékelő adatait úgy, hogy figyeli a kimeneti adatokat a 2. digitális tűn keresztül a "Serial.print ()" nevű funkció használatával. Mivel az adatátvitel gyakorisága nagyjából 1 leolvasás 2 másodpercenként (ami 0,5 Hz), az Arduino IDE programozásakor a cikluson belüli késleltetést 2 másodpercnél hosszabbra kell állítanunk. Tehát van egy "késleltetés (2000)" a ciklusfüggvényen belül. Ez biztosítja az adatok gyakori frissítését. A "draw" funkcióban szerezze be az adatokat a soros adatportról, és tegye őket úszószámokba a "readHumidity" és a "readTemperature" függvények segítségével.

Nyomtassa ki a páratartalmat és a hőmérsékletet az "u8glib" fájl nyomtatási funkciójával. A pozíciót a "setPrintPos" funkció számának megváltoztatásával állíthatja be. A nyomtatási funkció közvetlenül megjeleníti a szöveget és a számokat.

A hardver beállításához adjon 10 másodperces késést a soros portnak. Ezután hívja az érzékelő start funkcióját. Az áramköröm szerint a képernyő fejjel lefelé volt. Tehát a kijelző elforgatásához egy "setRot180" funkciót is beépítettem.

Az Arduino kártya hurokfüggvénye a fő funkció. Folyamatosan hívja a rajzolási funkciót, hogy megjelenítse a szöveget és az adatokat minden alkalommal, amikor az érzékelő frissül.

A képernyő így néz ki:

Az Arduino UNO -t leválaszthatja a számítógépről, és a 2,1 mm -es hálózati aljzathoz csatlakoztatott 5 V -os egyenáramú tápegység segítségével bekapcsolhatja. Tárolja a programot a meghajtójában, és folyamatosan tudja futtatni a programot, miután bekapcsolta.

Ajánlott: