Mundarija:

Arduino UNO yordamida ob -havo stantsiyasi: 7 qadam
Arduino UNO yordamida ob -havo stantsiyasi: 7 qadam

Video: Arduino UNO yordamida ob -havo stantsiyasi: 7 qadam

Video: Arduino UNO yordamida ob -havo stantsiyasi: 7 qadam
Video: What is a Server? Servers vs Desktops Explained 2024, Iyul
Anonim
Arduino UNO yordamida ob -havo stantsiyasi
Arduino UNO yordamida ob -havo stantsiyasi

Muallif: Hazel Yang

Bu loyiha ma'lumotlar oqimini nazorat qilish uchun Arduino UNO taxtasi, ma'lumotlarni yig'ish uchun DHT22 sensori va ma'lumotlarni ko'rsatish uchun OLED ekran yordamida ob -havo stantsiyasi.

1 -qadam: elementlar ro'yxati

Ob'ektlar ro'yxati
Ob'ektlar ro'yxati

1. Ekran: OLED, 1,3 dyuymli displey SH1106, I2C oq rang ---- PID: 18283

2. Sensor: Raqamli namlik va harorat sensori DHT22 ---- PID: 7375

3. Ulanadi: o'tish simlari ---- PID: 10316 yoki 10318 yoki 10312 (uzunligiga bog'liq) yoki siz qattiq simdan foydalanishingiz mumkin 22 AWG ---- PID: 22490

Non paneli ---- PID: 10686 yoki 10698 yoki 103142 (o'lchamiga bog'liq)

4. Quvvat: Bu kabel faqat kompyuterning USB portiga ulanishi mumkin va kabel IDE va Arduino platasi o'rtasida ma'lumotlarni uzatish uchun ham ishlatiladi. USB kabel, A dan B gacha, M/M, 0,5 M (1.5FT) ---- PID: 29862

Yoki siz kartani quvvatlantirish uchun foydalanishingiz mumkin: 5V 2A AC/DC adapteri ---- PID: 10817.

2 -qadam: Nisbiy kirish

Nisbiy kirish
Nisbiy kirish
Nisbiy kirish
Nisbiy kirish

Ekranga kirish: 1,3 dyuymli OLED displey oq

1. Siz asosiy sozlash va tavsiflarni ko'rsatadigan hujjatni topishingiz mumkin:

Sensorning kiritilishi: namlik va harorat sensori DHT22 1. Siz tavsiflangan hujjatni topishingiz mumkin:

3 -qadam: O'chirish sxemasini ulang

O'chirish davrasini ulang
O'chirish davrasini ulang

DHT22 sensori ketma -ket ma'lumotlarni 2 -pinga yuboradi. Shunday qilib, ikkinchi pinni chapdan ulang, "SDA" pinini 2 -pinga ulash lozim.

SSH1106 displeyi uchun uzatish uchun analog pin ishlatiladi. Ekranning sxemasi Arduino "A5" ga "SCL" va Arduino "A4" ga "SDA" pinli bo'ladi. Pikselli joylashuv ma'lumotlari uzluksiz uzatilayotganda, dasturdagi displey funktsiyasi har safar sensordan ma'lumotlarni o'qiganida buyruqni ishga tushiradi.

Sensor ham, ekran ham 3.3V dan Arduino -ni doimiy quvvat manbai sifatida yoqishi mumkin. Quvvat olish uchun biz ikkala VCC pinini Arduino -ning "3.3V" ga ulashimiz kerak. Va "GND" pinlarini Arduino kartasidagi "GND" piniga ulash mumkin.

USB A - B kabelidan foydalaning, Arudinoni kompyuterga ulang.

4 -qadam: kompilyatsiya qilishga tayyorgarlik

Olikrausdan SSH1106 ekrani uchun "u8glib".

Adafruit DHT22 sensori uchun "DHT sensorlar kutubxonasi". Siz ikkita kutubxonani yuklab olishingiz kerak: DHT22 sensor kutubxonasi:

U8glib:

Ularni ochish uchun IDE -dagi "kutubxonani boshqarish" -dan foydalaning. Kutubxonalarni boshqarishning onlayn ko'rsatmasi:

5 -qadam: DHT22 datchikli seriyali port uchun test kodi

DHT22 sensori ketma -ket portini sinab ko'rish (DHT22 kutubxonasida joylashgan >> misollar):

(Siz bu qismni o'tkazib yuborishingiz mumkin.)

Faqat DHT22 sensorini sinab ko'rish uchun ma'lumot normal o'qiladi

#qo'shing

#qo'shing

#qo'shing

#qo'shing

#qo'shing

#DHTPIN 2 ni aniqlang

#DHTTYPE DHT22 ni aniqlang

DHT dht (DHTPIN, DHTTYPE);

bo'sh o'rnatish () {

Serial.begin (9600);

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

dht.begin ();

}

void loop () {

// O'lchovlar orasida bir necha soniya kuting.

kechikish (2000);

// O'qish harorati yoki namligi taxminan 250 millisekundni oladi!

// Sensor o'qishlari 2 soniyagacha bo'lishi mumkin (u juda sekin)

float h = dht.readHumidity ();

// Haroratni Selsiy bo'yicha o'qing (standart)

float t = dht.readTemperature ();

// Farengeyt haroratini o'qing (isFahrenheit = rost)

float f = dht.readTemperature (rost);

// O'qish muvaffaqiyatsiz bo'lganligini tekshiring va erta chiqing (qaytadan urinish uchun).

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

Serial.println (F ("DHT sensoridan o'qib bo'lmadi!"));

qaytish;

}

// Farengeytda issiqlik indeksini hisoblash (standart)

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

// Tselsiy bo'yicha issiqlik indeksini hisoblash (isFahreheit = false)

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

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

Ketma -ket chop etish (h);

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

Ketma -ket chop etish (t);

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

Ketma -ket chop etish (f);

Serial.print (F ("° F Issiqlik indeksi:"));

Ketma -ket chop etish (hic);

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

Serial.print (hif);

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

}

// Dastur tuzilgandan so'ng, ma'lumotlarni tekshirish uchun TOOLS >> SERIAL MONITOR tugmasini bosing.

// Sinov dasturining oxiri.

6 -qadam: Loyihaning kodi

#qo'shing

#qo'shing

#qo'shing

#qo'shing

#qo'shing

#DHTPIN 2 ni aniqlang

#DHTTYPE DHT22 ni aniqlang

#"U8glib.h" ni qo'shing

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT sensori (DHTPIN, DHTTYPE);

bo'sh durang (bekor) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Haroratni Selsiy bo'yicha o'qing (standart)

float t = sensor.readTemperature ();

// O'qish muvaffaqiyatsiz bo'lganligini tekshiring va erta chiqing (qaytadan urinish uchun).

agar (isnan (h) || isnan (t)) {

u8g.print ("Xato.");

uchun(;;);

qaytish;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.chop (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

u8g.chop (h);

}

bo'sh o'rnatish (bekor) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

bo'sh halqa (bo'sh) {

// rasm aylanishi

u8g.firstPage ();

qil {

chizish ();

} while (u8g.nextPage ());

// kechiktirishdan keyin rasmni qayta tiklash (2000);

}

// Asosiy dasturning oxiri.

7 -qadam: tavsif

Tavsif
Tavsif

Keyin, Arduino kartasi uchun pim sxemasini ishga tushiring. Sensor kutubxonasi ob'ektni e'lon qilish uchun ma'lumotni talab qiladi.

Sensor ma'lumotlarini "Serial.print ()" funktsiyasi yordamida raqamli pin 2 orqali chiqish ma'lumotlarini kuzatish orqali sinab ko'rishingiz mumkin. Ma'lumot uzatish chastotasi har 2 soniyada taxminan 1 o'qish (0,5 Gts) bo'lgani uchun, Arduino IDE -da dasturlashtirilganida, biz loop funktsiyasi ichidagi kechikishni 2 soniyadan ko'proq qilib sozlashimiz kerak. Shunday qilib, loop funktsiyasi ichida "kechikish (2000)" mavjud. Bu ma'lumotlar tez -tez yangilanib turishini ta'minlaydi. "Draw" funktsiyasida ma'lumotlarni ketma -ket ma'lumotlar portidan oling va "readHumidity" va "readTemperature" funktsiyalari yordamida ularni raqamlarga joylashtiring.

Namlik va haroratni "u8glib" faylidagi bosib chiqarish funktsiyasidan foydalanib chop eting. "SetPrintPos" funktsiyasidagi raqamni o'zgartirish orqali pozitsiyani o'zgartirishingiz mumkin. Chop etish funktsiyasi matn va raqamlarni to'g'ridan -to'g'ri ko'rsatishi mumkin.

Uskunani sozlash uchun ketma -ket portga 10 soniya kechikish bering. Keyin sensor uchun start funktsiyasini chaqiring. Mening davramga ko'ra, mening ekranim teskari edi. Men ekranni aylantirish uchun "setRot180" funktsiyasini ham qo'shdim.

Arduino kartasining pastadir funktsiyasi asosiy vazifadir. Sensor har yangilanganida matn va ma'lumotlarni ko'rsatish uchun chizish funksiyasi chaqiriladi.

Ekran quyidagicha ko'rinadi:

Siz Arduino UNO -ni kompyuterdan uzishingiz va uni 2,1 mm quvvat ulagichiga ulangan 5V shahar quvvat adapteri yordamida quvvatlantirishingiz mumkin. U dasturni o'z diskida saqlaydi va quvvat olgandan so'ng dasturni doimiy ravishda qayta ishga tushirishi mumkin.

Tavsiya: