Kazalo:

Vremenska postaja z uporabo Arduino UNO: 7 korakov
Vremenska postaja z uporabo Arduino UNO: 7 korakov

Video: Vremenska postaja z uporabo Arduino UNO: 7 korakov

Video: Vremenska postaja z uporabo Arduino UNO: 7 korakov
Video: CS50 2015 - Week 7 2024, Julij
Anonim
Vremenska postaja z uporabo Arduino UNO
Vremenska postaja z uporabo Arduino UNO

Ustvaril: Hazel Yang

Ta projekt je vremenska postaja, ki uporablja ploščo Arduino UNO za nadzor pretoka podatkov, senzor DHT22 za zbiranje podatkov in zaslon OLED za prikaz podatkov.

1. korak: Seznam elementov

Seznam predmetov
Seznam predmetov

1. Zaslon: OLED, 1,3-palčni zaslon SH1106, I2C bela barva ---- PID: 18283

2. Senzor: Digitalni senzor vlažnosti in temperature DHT22 ---- PID: 7375

3. Priključi: Mostične žice ---- PID: 10316 ali 10318 ali 10312 (odvisno od dolžine) ali pa uporabite trdno žico 22 AWG ---- PID: 22490

Ogledna plošča ---- PID: 10686 ali 10698 ali 103142 (odvisno od velikosti)

4. Napajanje: Ta kabel se lahko poveže samo z računalniškimi vrati USB, kabel pa se uporablja tudi za prenos podatkov med ploščo IDE in Arduino. USB KABEL, A DO B, M/M, 0,5 M (1,5FT) ---- PID: 29862

Lahko pa uporabite to za napajanje plošče: 5V 2A AC/DC adapter ---- PID: 10817.

2. korak: Relativni uvod

Relativni uvod
Relativni uvod
Relativni uvod
Relativni uvod

Predstavitev zaslona: 1,3 -palčni OLED zaslon, bel

1. Dokument, ki prikazuje osnovne nastavitve in opise, najdete:

Predstavitev senzorja: Senzor vlažnosti in temperature DHT22 1. Dokument z opisi najdete na:

3. korak: Priključite vezje

Priključite vezje
Priključite vezje

Tipalo DHT22 pošlje serijske podatke na pin 2. Torej, drugi zatič priključite z leve strani, zatič "SDA" mora biti priključen na pin 2.

Za zaslon SSH1106 za prenos uporablja analogni pin. Vezje zaslona bo pin "SCL" na Arduino "A5" in "SDA" pin na Arduino "A4". Medtem ko se podatki o položaju pikslov neprestano prenašajo, funkcija prikaza v programu sproži ukaz le enkrat, ko prebere podatke s senzorja.

Tako senzor kot zaslon lahko uporabljata 3,3 V za vklop Arduina kot enosmernega vhoda. Za napajanje moramo oba zatiča "VCC" povezati z Arduinovim "3.3V". Zatiči "GND" se lahko preprosto povežejo z zatičem "GND" na plošči Arduino.

S kablom USB A do B povežite Arudino z računalnikom.

4. korak: Pripravite se na sestavljanje

"u8glib" za zaslon SSH1106 podjetja Olikraus.

"Knjižnica senzorjev DHT" za senzor DHT22 iz Adafruit. Prenesite dve knjižnici: knjižnico senzorjev DHT22:

U8glib:

Uporabite »upravljanje knjižnice« v IDE, da jih razpakirate. Spletna navodila za upravljanje knjižnic:

5. korak: Preskusna koda za serijska vrata senzorja DHT22

Testni koeficient za serijska vrata senzorja DHT22 (ki je v knjižnici DHT22 >> primeri):

(Ta del lahko preskočite.)

Samo za preizkus senzor DHT22 normalno bere podatke

#vključi

#vključi

#vključi

#vključi

#vključi

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

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

dht.begin ();

}

void loop () {

// Med meritvami počakajte nekaj sekund.

zamuda (2000);

// Odčitavanje temperature ali vlažnosti traja približno 250 milisekund!

// Odčitki senzorjev so lahko tudi do 2 sekundi "stari" (zelo počasen senzor)

float h = dht.readHumidity ();

// Temperatura se bere kot Celzij (privzeto)

float t = dht.readTemperature ();

// Temperatura se bere kot Fahrenheit (isFahrenheit = res)

float f = dht.readTemperature (true);

// Preverim, ali kakšno branje ni uspelo, in izstopite zgodaj (poskusite znova).

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

Serial.println (F ("Ni bilo mogoče prebrati s senzorja DHT!"));

vrnitev;

}

// Izračun toplotnega indeksa v Fahrenheitu (privzeto)

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

// Izračun toplotnega indeksa v Celzijih (isFahreheit = false)

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

Serial.print (F ("Vlažnost:"));

Serijski.tisk (h);

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

Serial.print (t);

Serijski.tisk (F ("° C"));

Serial.print (f);

Serial.print (F ("° F Toplotni indeks:"));

Serial.print (hic);

Serijski.tisk (F ("° C"));

Serial.print (hif);

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

}

// Po sestavljanju programa kliknite ORODJA >> SERIJSKI MONITOR, da preverite podatke.

// Konec preskusnega programa.

6. korak: Koda za projekt

#vključi

#vključi

#vključi

#vključi

#vključi

#define DHTPIN 2

#define DHTTYPE DHT22

#vključi "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Senzor DHT (DHTPIN, DHTTYPE);

void draw (void) {

u8g.setFont (u8g_font_unifont);

plovec h = senzor.readHumidity ();

// Temperatura se bere kot Celzij (privzeto)

float t = sensor.readTemperature ();

// Preverim, ali kakšno branje ni uspelo, in izstopite zgodaj (poskusite znova).

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

u8g.print ("Napaka.");

za (;;);

vrnitev;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.tisk (t);

u8g.setPrintPos (4, 40);

u8g.print ("Vlažnost (%):");

u8g.setPrintPos (4, 55);

u8g.tisk (h);

}

void setup (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

void loop (void) {

// slikovna zanka

u8g.firstPage ();

naredi {

draw ();

} while (u8g.nextPage ());

// obnovi sliko po nekaj zamiku (2000);

}

// Konec glavnega programa.

7. korak: Opis

Opis
Opis

Nato inicializirajte vezje pinov za ploščo Arduino. Ker knjižnica senzorjev zahteva podatke za razglasitev objekta.

Podatke senzorja lahko preizkusite s spremljanjem izhodnih podatkov prek digitalnega zatiča 2 s funkcijo, imenovano "Serial.print ()". Ker je frekvenca prenosa podatkov približno 1 odčitavanje na 2 sekundi (kar je 0,5 Hz), moramo pri programiranju v Arduino IDE zakasnitev znotraj funkcije zanke nastaviti na več kot 2 sekundi. Torej znotraj funkcije zanke obstaja "zakasnitev (2000)". To zagotavlja, da se bodo podatki pogosto osveževali. V funkciji "draw" vzemite podatke iz serijskih podatkovnih vrat in jih s funkcijami "readHumidity" in "readTemperature" prenesite v plavajoče številke.

Natisnite vlažnost in temperaturo s funkcijo tiskanja v datoteki "u8glib". Položaj lahko prilagodite s spreminjanjem številke v funkciji "setPrintPos". Funkcija tiskanja lahko neposredno prikaže besedilo in številke.

Za nastavitev strojne opreme dajte serijskim vhodom 10 sekund zamude. Nato pokličite funkcijo start za senzor. Po mojem vezju je bil moj zaslon obrnjen na glavo. Zato sem vključil tudi funkcijo "setRot180" za zasuk zaslona.

Funkcija zanke Arduino plošče je glavna funkcija. Nenehno kliče funkcijo risanja za prikaz besedila in podatkov vsakič, ko senzor osvežite.

Zaslon izgleda takole:

Arduino UNO lahko odklopite iz računalnika in ga napajate s 5V DC napajalnikom, ki je priključen na 2,1 mm vtičnico. Program shrani v pogon in ga lahko po zagonu znova zažene znova.

Priporočena: