INHOUDSOPGAWE:

Weerstasie met behulp van Arduino UNO: 7 stappe
Weerstasie met behulp van Arduino UNO: 7 stappe

Video: Weerstasie met behulp van Arduino UNO: 7 stappe

Video: Weerstasie met behulp van Arduino UNO: 7 stappe
Video: 🇳🇱 HC-SR04 ULTRASOON AFSTAND SENSOR - Arduino les #7 2024, November
Anonim
Weerstasie met behulp van Arduino UNO
Weerstasie met behulp van Arduino UNO

Geskep deur: Hazel Yang

Hierdie projek is 'n weerstasie wat 'n Arduino UNO -bord gebruik om die datavloei te beheer, 'n DHT22 -sensor om die data te versamel en 'n OLED -skerm om die data te wys.

Stap 1: Itemlys

Itemlys
Itemlys

1. Skerm: OLED, 1,3 skerm SH1106, I2C wit kleur ---- PID: 18283

2. Sensor: Digitale humiditeits- en temperatuursensor DHT22 ---- PID: 7375

3. Verbind: Jumper Wires ---- PID: 10316 of 10318 of 10312 (hang af van die lengte) of u kan soliede draad 22 AWG gebruik ---- PID: 22490

Broodbord ---- PID: 10686 of 10698 of 103142 (hang af van grootte)

4. Krag: Hierdie kabel kan slegs met 'n rekenaar -USB -poort verbind word, en die kabel word ook gebruik vir data -oordrag tussen die IDE- en Arduino -bord. USB-KABEL, A TOT B, M/M, 0.5M (1.5FT) ---- PID: 29862

Of u kan dit gebruik om die bord aan te dryf: 5V 2A AC/DC-adapter ---- PID: 10817.

Stap 2: Relatiewe inleiding

Relatiewe inleiding
Relatiewe inleiding
Relatiewe inleiding
Relatiewe inleiding

Bekendstelling van die skerm: 1.3 OLED -skerm wit

1. U kan die dokument vind met die basiese opstelling en beskrywings:

Bekendstelling van sensor: humiditeits- en temperatuursensor DHT22 1. U kan die dokument vind met die beskrywings:

Stap 3: Koppel die stroombaan

Koppel die stroombaan
Koppel die stroombaan

Die DHT22 -sensor stuur seriële data na pen 2. Koppel dus die tweede pen van links, die "SDA" -pen moet aan pen 2 gekoppel word.

Vir die SSH1106 -skerm gebruik dit die analoog pen om oor te dra. Die kring van die skerm sal 'SCL' pen na Arduino se 'A5' en 'SDA' pen na Arduino se 'A4' wees. Terwyl die pixelposisie -data deurlopend oorgedra word, aktiveer die vertoningsfunksie in die program slegs een keer die opdrag wanneer dit die data van die sensor lees.

Beide die sensor en die skerm kan die 3.3V gebruik om Arduino as 'n GS -ingang aan te skakel. Om krag te kry, moet ons albei die "VCC" -penne aan die Arduino se "3.3V" koppel. En die "GND" -penne kan eenvoudig aan die "GND" -pen op die Arduino -bord gekoppel word.

Gebruik die USB A tot B -kabel, verbind die Arudino met die rekenaar.

Stap 4: Berei voor om saam te stel

"u8glib" vir SSH1106 -skerm van Olikraus.

"DHT -sensorbiblioteek" vir DHT22 -sensor van Adafruit. U moet die twee biblioteke aflaai: DHT22 sensorbiblioteek:

U8glib:

En gebruik 'bestuur biblioteek' in IDE om dit uit te rits. Aanlyn instruksie vir die bestuur van biblioteke:

Stap 5: Toetskode vir die seriële poort van die DHT22 -sensor

Toets die seriële poort van die DHT22 -sensor (wat binne die DHT22 -biblioteek >> voorbeelde is):

(U kan hierdie deel oorslaan.)

Dit is net om die DHT22 -sensor te toets, lees data normaalweg

#insluit

#insluit

#insluit

#insluit

#insluit

#definieer DHTPIN 2

#definieer DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

ongeldige opstelling () {

Serial.begin (9600);

Serial.println (F ("DHT22 -toets!"));

dht.begin ();

}

leemte -lus () {

// Wag 'n paar sekondes tussen metings.

vertraging (2000);

// Leestemperatuur of humiditeit neem ongeveer 250 millisekondes!

// Sensorlesings kan ook tot 2 sekondes oud wees (dit is 'n baie stadige sensor)

float h = dht.readHumidity ();

// Lees temperatuur as Celsius (standaard)

float t = dht.readTemperature ();

// Lees temperatuur as Fahrenheit (isFahrenheit = waar)

float f = dht.readTemperature (waar);

// Kontroleer of enige lees misluk het en vertrek vroeg (om weer te probeer).

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

Serial.println (F ("Kan nie lees van DHT -sensor nie!"));

terugkeer;

}

// Bereken hitte -indeks in Fahrenheit (die standaard)

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

// Bereken hitte -indeks in Celsius (isFahreheit = false)

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

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

Reeks.afdruk (h);

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

Reeks.afdruk (t);

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

Reeks.afdruk (f);

Serial.print (F ("° F Warmte -indeks:"));

Serial.print (hic);

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

Reeks.afdruk (hif);

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

}

// Nadat u die program saamgestel het, klik op TOOLS >> SERIAL MONITOR om die data na te gaan.

// Einde van die toetsprogram.

Stap 6: Kode vir die projek

#insluit

#insluit

#insluit

#insluit

#insluit

#definieer DHTPIN 2

#definieer DHTTYPE DHT22

#sluit "U8glib.h" in

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT -sensor (DHTPIN, DHTTYPE);

leegte trek (leeg) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Lees temperatuur as Celsius (standaard)

float t = sensor.readTemperature ();

// Kontroleer of enige lees misluk het en vertrek vroeg (om weer te probeer).

as (isnan (h) || isnan (t)) {

u8g.print ("Fout.");

vir (;;);

terugkeer;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

u8g.print (h);

}

ongeldige opstelling (ongeldig) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

leegte -lus (leegte) {

// prentlus

u8g.firstPage ();

doen {

trek ();

} terwyl (u8g.nextPage ());

// herbou die prentjie na 'n vertraging (2000);

}

// Einde van die hoofprogram.

Stap 7: Beskrywing

Beskrywing
Beskrywing

Inisialiseer dan die penkringe vir die Arduino -bord. Omdat die sensorbiblioteek die data benodig om die voorwerp te verklaar.

En u kan die sensor se data toets deur die uitvoerdata deur middel van digitale pen 2 te monitor deur die funksie genaamd "Serial.print ()" te gebruik. Omdat die frekwensie van data -oordrag ongeveer 1 lesing elke 2 sekondes is (wat 0,5 Hz is), moet ons die vertraging binne die lusfunksie meer as 2 sekondes stel as dit in Arduino IDE geprogrammeer word. Daar is dus 'n "vertraging (2000)" in die lusfunksie. Dit verseker dat die data gereeld verfris word. In die funksie "trek", kry die data van die seriële data -poort en sit dit in getalle met behulp van die "readHumidity" en "readTemperature" funksies.

Druk die humiditeit en temperatuur uit met die afdrukfunksie in die "u8glib" -lêer. U kan die posisie aanpas deur die nommer in die "setPrintPos" -funksie te verander. Die drukfunksie kan die teks en syfers direk wys.

Gee die seriële poort 'n vertraging van 10 sekondes om die hardeware op te stel. Bel dan die beginfunksie vir die sensor. Volgens my kring was my skerm onderstebo. Ek het dus ook 'n "setRot180" -funksie ingesluit om die skerm te draai.

Die lusfunksie van die Arduino -bord is die belangrikste funksie. Dit bel die tekenfunksie steeds om die teks en data te vertoon elke keer as die sensor opgedateer word.

Die skerm lyk so:

U kan die Arduino UNO van u rekenaar ontkoppel en met 'n 5V DC -adapter aansluit wat aansluit op die 2,1 mm -aansluiting. Dit stoor die program in sy skyf en kan die program voortdurend weer uitvoer nadat dit aangeskakel is.

Aanbeveel: