Sisukord:

Ilmajaam Arduino UNO abil: 7 sammu
Ilmajaam Arduino UNO abil: 7 sammu

Video: Ilmajaam Arduino UNO abil: 7 sammu

Video: Ilmajaam Arduino UNO abil: 7 sammu
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Juuli
Anonim
Ilmajaam Arduino UNO abil
Ilmajaam Arduino UNO abil

Looja: Hazel Yang

See projekt on ilmajaam, mis kasutab andmevoo juhtimiseks Arduino UNO plaati, andmete kogumiseks DHT22 andurit ja andmete kuvamiseks OLED -ekraani.

Samm: üksuste loend

Üksuste loend
Üksuste loend

1. Ekraan: OLED, 1,3 ekraan SH1106, I2C valge värv ---- PID: 18283

2. Andur: digitaalne niiskuse ja temperatuuri andur DHT22 ---- PID: 7375

3. Ühendab: hüppajajuhtmed ---- PID: 10316 või 10318 või 10312 (sõltub pikkusest) või võite kasutada täisjuhet 22 AWG ---- PID: 22490

Leivalaud ---- PID: 10686 või 10698 või 103142 (sõltub suurusest)

4. Toide: seda kaablit saab ühendada ainult arvuti USB -pordiga ja seda kaablit kasutatakse ka andmete edastamiseks IDE ja Arduino plaadi vahel. USB-KAABLI, A – B, M/M, 0,5 M (1,5 FT) ---- PID: 29862

Või saate seda kasutada plaadi toiteks: 5V 2A AC/DC adapter ---- PID: 10817.

2. samm: suhteline sissejuhatus

Suhteline sissejuhatus
Suhteline sissejuhatus
Suhteline sissejuhatus
Suhteline sissejuhatus

Ekraani tutvustus: 1,3 OLED ekraan valge

1. Dokumendi, mis näitab põhiseadistusi ja kirjeldusi, leiate siit:

Anduri tutvustus: niiskus- ja temperatuuriandur DHT22 1. Dokumendi, mis näitab kirjeldusi, leiate siit:

Samm: ühendage ahel

Ühendage ahel
Ühendage ahel

DHT22 andur saadab seeriaandmed kontaktile 2. Seega ühendage teine tihvt vasakult, "SDA" tihvt tuleb ühendada tihvtiga 2.

SSH1106 ekraani puhul kasutab see edastamiseks analoogpinge. Ekraani vooluahelaks on "SCL" pin Arduino "A5" ja "SDA" pin Arduino "A4" külge. Kuigi pikslite asukohaandmeid edastatakse pidevalt, käivitab programmi kuvamisfunktsioon käsu ainult üks kord iga kord, kui see andmeid andurilt loeb.

Nii andur kui ka ekraan saavad Arduino alalisvoolu sisendina sisselülitamiseks kasutada 3.3V. Toiteallikaks peame ühendama mõlemad "VCC" tihvtid Arduino "3.3V" -ga. Ja "GND" tihvte saab lihtsalt ühendada Arduino tahvli "GND" tihvtiga.

Kasutage USB A kuni B kaablit, ühendage Arudino arvutiga.

Samm: valmistuge kompileerimiseks

"u8glib" SSH1106 ekraani jaoks Olikrausilt.

"DHT andurite kogu" DHT22 anduri jaoks Adafruitist. Peaksite alla laadima kaks raamatukogu: DHT22 andurite kogu:

U8glib:

Ja kasutage IDE -s „teegi haldamist”, et need lahti pakkida. Raamatukogude haldamise veebijuhend:

Samm 5: DHT22 anduri jadapordi testkood

DHT22 anduri jadapordi (mis asub DHT22 raamatukogu sees >> näited) testimisseade:

(Võite selle osa vahele jätta.)

See lihtsalt DHT22 anduri testimiseks loeb andmeid normaalselt

#kaasake

#kaasake

#kaasake

#kaasake

#kaasake

#defineeri DHTPIN 2

#defineeri DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

tühine seadistus () {

Seriaalne algus (9600);

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

dht.begin ();

}

void loop () {

// Oodake mõõtmiste vahel mõni sekund.

viivitus (2000);

// Temperatuuri või niiskuse lugemine võtab aega umbes 250 millisekundit!

// Anduri näidud võivad olla ka kuni 2 sekundit vanad (see on väga aeglane andur)

ujuk h = dht.readHumidity ();

// Temperatuuri lugemine Celsiuse järgi (vaikimisi)

ujuk t = dht.readTemperature ();

// Temperatuuri lugemine Fahrenheiti järgi (isFahrenheit = tõene)

float f = dht.readTemperature (tõene);

// Kontrollige, kas mõni lugemine ebaõnnestus, ja väljuge varakult (uuesti proovimiseks).

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

Serial.println (F ("DHT -andurilt ei õnnestunud lugeda!"));

tagasipöördumine;

}

// Soojusindeksi arvutamine Fahrenheiti järgi (vaikimisi)

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

// Soojusindeksi arvutamine Celsiuse järgi (isFahreheit = false)

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

Serial.print (F ("Niiskus:"));

Seeriatrükk (h);

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

Jadajälg (t);

Seeriatrükk (F ("° C"));

Seeriatrükk (f);

Serial.print (F ("° F Heat index:"));

Serial.print (hic);

Seeriatrükk (F ("° C"));

Serial.print (hif);

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

}

// Pärast programmi koostamist klõpsake andmete kontrollimiseks TOOLS >> SERIAL MONITOR.

// Testimisprogrammi lõpp.

6. samm: projekti kood

#kaasake

#kaasake

#kaasake

#kaasake

#kaasake

#defineeri DHTPIN 2

#defineeri DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT -andur (DHTPIN, DHTTYPE);

tühine viik (tühine) {

u8g.setFont (u8g_font_unifont);

ujuk h = sensor.readHumidity ();

// Temperatuuri lugemine Celsiuse järgi (vaikimisi)

ujuk t = sensor.readTemperature ();

// Kontrollige, kas mõni lugemine ebaõnnestus, ja väljuge varakult (uuesti proovimiseks).

kui (isnan (h) || isnan (t)) {

u8g.print ("Viga");

(;;) jaoks;

tagasipöördumine;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Niiskus (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

tühine seadistus (tühine) {

u8g.setRot180 ();

Seriaalne algus (9600);

sensor.begin ();

}

void loop (void) {

// pildisilmus

u8g.firstPage ();

tee {

joonista ();

} while (u8g.nextPage ());

// pildi taastamine pärast mõningast viivitust (2000);

}

// Põhiprogrammi lõpp.

Samm 7: Kirjeldus

Kirjeldus
Kirjeldus

Seejärel lähtestage Arduino plaadi tihvtide ahel. Kuna anduriteek nõuab objekti deklareerimiseks andmeid.

Ja saate anduri andmeid testida, jälgides väljundandmeid digitaalse tihvti 2 kaudu, kasutades funktsiooni nimega "Serial.print ()". Kuna andmete edastamise sagedus on ligikaudu 1 lugemine iga 2 sekundi järel (mis on 0,5 Hz), peame Arduino IDE programmeerimisel seadistama silmusfunktsiooni viivituse üle 2 sekundi. Seega on silmusfunktsiooni sees "viivitus (2000)". See tagab andmete sagedase värskendamise. Funktsioonis "joonista" hankige andmed jadaandmeportist ja pange need funktsioonide "readHumidity" ja "readTemperature" abil ujuvnumbritesse.

Printige niiskus ja temperatuur, kasutades faili "u8glib" printimisfunktsiooni. Saate asendit reguleerida, muutes funktsiooni "setPrintPos" numbrit. Prindifunktsioon võib teksti ja numbreid otse näidata.

Riistvara seadistamiseks andke jadaportile 10 sekundilist viivitust. Seejärel helistage anduri käivitusfunktsioonile. Minu vooluringi kohaselt oli mu ekraan tagurpidi. Seega lisasin ekraani pööramiseks ka funktsiooni "setRot180".

Arduino plaadi silmusfunktsioon on peamine funktsioon. See kutsub pidevalt joonistusfunktsiooni, et kuvada tekst ja andmed iga kord, kui andurit värskendatakse.

Ekraan näeb välja selline:

Saate Arduino UNO arvutist lahti ühendada ja toita seda 5 V alalisvoolu toiteadapteriga, mis ühendatakse selle 2,1 mm toitepistikuga. See salvestab programmi oma draivi ja saab pärast toite käivitamist programmi pidevalt uuesti käivitada.

Soovitan: