Orodha ya maudhui:

Kituo cha Hali ya Hewa Kutumia Arduino UNO: Hatua 7
Kituo cha Hali ya Hewa Kutumia Arduino UNO: Hatua 7

Video: Kituo cha Hali ya Hewa Kutumia Arduino UNO: Hatua 7

Video: Kituo cha Hali ya Hewa Kutumia Arduino UNO: Hatua 7
Video: Mambo 3 Ya Kufanya Leo Ili Uondoe Stress Maishani Mwako 2024, Julai
Anonim
Kituo cha Hali ya Hewa Kutumia Arduino UNO
Kituo cha Hali ya Hewa Kutumia Arduino UNO

Iliundwa na: Hazel Yang

Mradi huu ni kituo cha hali ya hewa kinachotumia bodi ya Arduino UNO kudhibiti mtiririko wa data, sensor ya DHT22 kukusanya data na skrini ya OLED kuonyesha data.

Hatua ya 1: Orodha ya Bidhaa

Orodha ya Bidhaa
Orodha ya Bidhaa

1. Skrini: OLED, 1.3 Onyesha SH1106, I2C rangi nyeupe ---- PID: 18283

2. Sensor: Unyevu wa dijiti na Sura ya Joto DHT22 ---- PID: 7375

3. Inaunganisha: waya za Jumper ---- PID: 10316 au 10318 au 10312 (inategemea urefu) au unaweza kutumia waya thabiti 22 AWG ---- PID: 22490

Breadboard PID: 10686 au 10698 au 103142 (inategemea saizi)

Nguvu: Kebo hii inaweza tu kuungana na bandari ya USB ya kompyuta na kebo hiyo pia hutumiwa kwa uhamishaji wa data kati ya bodi ya IDE na Arduino. Cable ya USB, A TO B, M / M, 0.5M (1.5FT) ---- PID: 29862

Au unaweza kutumia hii kuwezesha bodi: 5V 2A AC / DC Adapter ---- PID: 10817.

Hatua ya 2: Utangulizi wa Jamaa

Utangulizi wa Jamaa
Utangulizi wa Jamaa
Utangulizi wa Jamaa
Utangulizi wa Jamaa

Utangulizi wa Skrini: 1.3 OLED Onyesha Nyeupe

1. Unaweza kupata hati inayoonyesha usanidi wa msingi na maelezo:

Utangulizi wa Sensorer: Unyevu na Sura ya Joto DHT22 1. Unaweza kupata hati inayoonyesha maelezo:

Hatua ya 3: Unganisha Mzunguko

Unganisha Mzunguko
Unganisha Mzunguko

Sensorer ya DHT22 hutuma data ya serial kubandika 2. Kwa hivyo, unganisha pini ya pili kutoka kushoto, pini ya "SDA" inapaswa kushikamana na kubandika 2.

Kwa onyesho la SSH1106, hutumia pini ya analog kusambaza. Mzunguko wa skrini itakuwa pini ya "SCL" kwa pini ya Arduino "A5" na "SDA" kwa Arduino "A4". Wakati data ya msimamo wa pikseli inapita kila wakati, kazi ya kuonyesha katika programu inasababisha amri mara moja kila wakati inasoma data kutoka kwa sensa.

Sensorer na skrini zinaweza kutumia 3.3V kuwezesha Arduino kama pembejeo ya umeme wa DC. Kwa nguvu, tunahitaji kuunganisha pini zote mbili za "VCC" kwa Arduino "3.3V". Na pini za "GND" zinaweza kushikamana tu na pini ya "GND" kwenye ubao wa Arduino.

Tumia kebo ya USB A hadi B, unganisha Arudino kwenye kompyuta.

Hatua ya 4: Jitayarishe kukusanya

"u8glib" kwa skrini ya SSH1106 kutoka Olikraus.

"Maktaba ya sensorer ya DHT" ya sensorer ya DHT22 kutoka Adafruit. Unapaswa kupakua maktaba mbili: maktaba ya sensorer ya DHT22:

U8glib:

Na tumia "dhibiti maktaba" katika IDE kuifanya ifunguliwe. Maagizo ya mkondoni ya kusimamia maktaba:

Hatua ya 5: Nambari ya Mtihani ya Bandari ya Siri ya Sense ya DHT22

Mtihani wa jaribio la bandari ya sensa ya DHT22 (ambayo iko ndani ya maktaba ya DHT22 >> mifano):

(Unaweza kuruka sehemu hii.)

Ni kujaribu tu sensorer ya DHT22 inasoma data kawaida

# pamoja

# pamoja

# pamoja

# pamoja

# pamoja

#fafanua DHTPIN 2

#fafanua DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

usanidi batili () {

Kuanzia Serial (9600);

Serial.println (F ("mtihani wa DHT22!"));

kuanza ();

}

kitanzi batili () {

// Subiri sekunde chache kati ya vipimo.

kuchelewa (2000);

// Joto la kusoma au unyevu huchukua karibu milliseconds 250!

Kusoma kwa sensorer pia kunaweza kuwa hadi sekunde 2 'zamani' (ni sensorer polepole sana)

kuelea h = dht.read Humidity ();

// Soma joto kama Celsius (chaguomsingi)

kuelea t = dht. soma Joto ();

// Soma joto kama Fahrenheit (isFahrenheit = kweli)

kuelea f = dht. soma Joto (kweli);

// Angalia ikiwa usomaji wowote umeshindwa na utoke mapema (kujaribu tena).

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

Serial.println (F ("Imeshindwa kusoma kutoka kwa sensorer ya DHT!"));

kurudi;

}

// Fanya fahirisi ya joto katika Fahrenheit (chaguomsingi)

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

// Fanya faharisi ya joto katika Celsius (isFahreheit = uwongo)

kuelea hic = dht.computeHeatIndex (t, h, uwongo);

Printa ya serial (F ("Unyevu:"));

Printa ya serial (h);

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

Printa ya serial (t);

Printa ya serial (F ("° C"));

Printa ya serial (f);

Serial.print (F ("° F Kiashiria cha joto:"));

Serial.print (hic);

Printa ya serial (F ("° C"));

Printa ya serial (hif);

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

}

// Baada ya kuandaa programu, bonyeza VITUO >> MONITOR WA SERIAL kuangalia data.

// Mwisho wa mpango wa upimaji.

Hatua ya 6: Nambari ya Mradi

# pamoja

# pamoja

# pamoja

# pamoja

# pamoja

#fafanua DHTPIN 2

#fafanua DHTTYPE DHT22

# pamoja na "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor ya DHT (DHTPIN, DHTTYPE);

chora batili (batili) {

u8g.setFont (u8g_font_unifont);

kuelea h = sensorer. Unyenyekevu ();

// Soma joto kama Celsius (chaguomsingi)

kuelea t = sensor.read Joto ();

// Angalia ikiwa usomaji wowote umeshindwa na utoke mapema (kujaribu tena).

ikiwa (isnan (h) || isnan (t)) {

u8g.print ("Kosa.");

kwa (;;);

kurudi;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

uchapishaji (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

uchapishaji (h);

}

usanidi batili (utupu) {

u8g.setRot180 ();

Kuanzia Serial (9600);

sensor. kuanza ();

}

kitanzi batili (batili) {

// kitanzi cha picha

ukurasa wa Kwanza ();

fanya {

chora ();

} wakati (u8g.nextPage ());

// kujenga tena picha baada ya kucheleweshwa kwa kuchelewa (2000);

}

// Mwisho wa programu kuu.

Hatua ya 7: Maelezo

Maelezo
Maelezo

Kisha, anzisha mzunguko wa pini kwa bodi ya Arduino. Kwa sababu maktaba ya sensorer inahitaji data kutangaza kitu.

Na unaweza kujaribu data ya sensorer kwa kufuatilia data ya pato kupitia pini 2 ya dijiti kwa kutumia kazi inayoitwa "Serial.print ()". Kwa sababu mzunguko wa usafirishaji wa data ni kusoma 1 kila sekunde 2 (ambayo ni 0.5 Hz), wakati imewekwa katika Arduino IDE, tunahitaji kuweka ucheleweshaji ndani ya kazi ya kitanzi kuwa zaidi ya sekunde 2. Kwa hivyo kuna "kuchelewesha (2000)" ndani ya kazi ya kitanzi. Hii inahakikisha data itaburudishwa mara kwa mara. Katika kazi "chora", pata data kutoka kwa bandari ya data ya serial na uiweke kwenye idadi ya kuelea ukitumia kazi za "readHumidity" na "readTemperature".

Chapisha unyevu na joto kwa kutumia kazi ya kuchapisha kwenye faili ya "u8glib". Unaweza kurekebisha nafasi kwa kubadilisha nambari katika kazi ya "setPrintPos". Kazi ya kuchapisha inaweza kuonyesha moja kwa moja maandishi na nambari.

Kuanzisha vifaa, toa bandari ya serial ucheleweshaji wa sekunde 10. Kisha piga kazi ya kuanza kwa sensor. Kulingana na mzunguko wangu, skrini yangu ilikuwa chini chini. Kwa hivyo nilijumuisha pia kazi ya "setRot180" ili kuzungusha onyesho.

Kazi ya kitanzi ya bodi ya Arduino ndio kazi kuu. Inaendelea kuita kazi ya kuteka ili kuonyesha maandishi na data kila wakati kitambuzi kinapoburudishwa.

Skrini inaonekana kama hii:

Unaweza kukata Arduino UNO kutoka kwa kompyuta yako na kuiweka nguvu kwa kutumia adapta ya umeme ya 5V DC inayounganisha na jack yake ya nguvu ya 2.1mm. Inahifadhi programu ndani ya gari lake na inaweza kuendelea kuendesha programu tena baada ya kuwezeshwa.

Ilipendekeza: