Mündəricat:

Arduino UNO istifadə edən Hava İstasyonu: 7 addım
Arduino UNO istifadə edən Hava İstasyonu: 7 addım

Video: Arduino UNO istifadə edən Hava İstasyonu: 7 addım

Video: Arduino UNO istifadə edən Hava İstasyonu: 7 addım
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Iyul
Anonim
Arduino UNO istifadə edərək Hava İstasyonu
Arduino UNO istifadə edərək Hava İstasyonu

Hazırladı: Hazel Yang

Bu layihə, məlumat axını idarə etmək üçün Arduino UNO lövhəsi, məlumat toplamaq üçün DHT22 sensoru və məlumatları göstərmək üçün OLED ekranı istifadə edən bir hava stansiyasıdır.

Addım 1: maddə siyahısı

Maddə siyahısı
Maddə siyahısı

1. Ekran: OLED, 1.3 Ekran SH1106, I2C ağ rəng ---- PID: 18283

2. Sensor: Rəqəmsal Nəmlik və İstilik Sensoru DHT22 ---- PID: 7375

3. Bağlayır: Jumper Telləri ---- PID: 10316 və ya 10318 və ya 10312 (uzunluğa bağlıdır) və ya möhkəm tel 22 AWG ---- PID: 22490 istifadə edə bilərsiniz

Çörək paneli ---- PID: 10686 və ya 10698 və ya 103142 (ölçüdən asılıdır)

4. Güc: Bu kabel yalnız kompüterin USB portu ilə bağlana bilər və kabel də IDE və Arduino lövhəsi arasında məlumat ötürülməsi üçün istifadə olunur. USB KABEL, A-B, M/M, 0.5M (1.5FT) ---- PID: 29862

Ya da lövhəni gücləndirmək üçün istifadə edə bilərsiniz: 5V 2A AC/DC Adapter ---- PID: 10817.

Addım 2: Nisbi Giriş

Nisbi Giriş
Nisbi Giriş
Nisbi Giriş
Nisbi Giriş

Ekranın Giriş: 1.3 OLED Ekran Ağ

1. Əsas quruluşu və təsvirləri göstərən sənədi tapa bilərsiniz:

Sensorun Giriş: Nəmlik və Temperatur Sensoru DHT22 1. Təsvirləri göstərən sənədi tapa bilərsiniz:

Addım 3: Dövrəni bağlayın

Dövrəni bağlayın
Dövrəni bağlayın

DHT22 sensoru pin 2 -ə seriya məlumatları göndərir. Beləliklə, ikinci pimi soldan bağlayın, "SDA" pimi pin 2 -yə bağlanmalıdır.

SSH1106 ekranı üçün ötürmək üçün analog pin istifadə edir. Ekranın sxemi Arduino "A5" ə "SCL" pin və Arduino "A4" üçün "SDA" pin olacaq. Piksel mövqeyi məlumatları davamlı olaraq ötürülsə də, proqramdakı görüntü funksiyası sensordan verilənləri oxuduqda hər dəfə əmri işə salır.

Həm sensor, həm də ekran 3.3V -dən Arduino -nu DC enerji girişi olaraq işə sala bilər. Gücləndirmək üçün həm "VCC" pinlərini Arduinonun "3.3V" cihazına bağlamalıyıq. Və "GND" pinləri sadəcə Arduino lövhəsindəki "GND" pininə bağlana bilər.

USB A - B kabelindən istifadə edin, Arudino'yu kompüterə qoşun.

Addım 4: Kompilyasiya etməyə hazırlaşın

Olikraus -dan SSH1106 ekranı üçün "u8glib".

Adafruit -dən DHT22 sensoru üçün "DHT sensor kitabxanası". İki kitabxananı yükləməlisiniz: DHT22 sensor kitabxanası:

U8glib:

Onları açmaq üçün IDE -də "kitabxananı idarə et" istifadə edin. Kitabxanaları idarə etmək üçün onlayn təlimat:

Addım 5: DHT22 Sensor Serial Portu üçün Test Kodu

DHT22 sensor seriya portu üçün test coe (DHT22 kitabxanasının içərisində olan >> nümunələri):

(Bu hissəni atlaya bilərsiniz.)

Yalnız DHT22 sensorunun normal oxumasını yoxlamaq üçün

#daxil edin

#daxil edin

#daxil edin

#daxil edin

#daxil edin

#DHTPIN 2 təyin edin

#DHTTYPE DHT22 təyin edin

DHT dht (DHTPIN, DHTTYPE);

boş quraşdırma () {

Serial.begin (9600);

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

dht.begin ();

}

boşluq döngəsi () {

// Ölçmələr arasında bir neçə saniyə gözləyin.

gecikmə (2000);

// Oxuma temperaturu və ya rütubət təxminən 250 millisaniyə çəkir!

// Sensor oxunuşları da 2 saniyəyə qədər ola bilər (çox yavaş bir sensordur)

float h = dht.readHumidity ();

// İstiliyi Selsi olaraq oxuyun (standart)

float t = dht.readTemperature ();

// İstiliyi Fahrenheit olaraq oxuyun (isFahrenheit = doğru)

float f = dht.readTemperature (doğru);

// Oxunanların uğursuz olub olmadığını yoxlayın və erkən çıxın (yenidən cəhd etmək üçün).

əgər (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("DHT sensorundan oxunmadı!"));

qayıtmaq;

}

// Fahrenheit -də istilik indeksini hesablayın (standart)

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

// İstilik indeksini Selsi ilə hesablayın (isFahreheit = false)

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

Serial.print (F ("Rütubət:"));

Serial. çap (h);

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

Serial. çap (t);

Serial. çap (F ("° C"));

Serial. çap (f);

Serial.print (F ("° F İstilik indeksi:"));

Serial. çap (hic);

Serial. çap (F ("° C"));

Serial. çap (hif);

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

}

// Proqramı tərtib etdikdən sonra məlumatları yoxlamaq üçün TOOLS >> SERIAL MONITOR düyməsini basın.

// Test proqramının sonu.

Addım 6: Layihə üçün kod

#daxil edin

#daxil edin

#daxil edin

#daxil edin

#daxil edin

#DHTPIN 2 təyin edin

#DHTTYPE DHT22 təyin edin

#"U8glib.h" daxil edin

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT sensoru (DHTPIN, DHTTYPE);

boş çəkmə (boş) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// İstiliyi Selsi olaraq oxuyun (standart)

float t = sensor.readTemperature ();

// Oxunanların uğursuz olub olmadığını yoxlayın və erkən çıxın (yenidən cəhd etmək üçün).

əgər (isnan (h) || isnan (t)) {

u8g.print ("Xəta.");

üçün (;;);

qayıtmaq;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g çap (t);

u8g.setPrintPos (4, 40);

u8g.print ("Rütubət (%):");

u8g.setPrintPos (4, 55);

u8g çap (h);

}

boş quraşdırma (boş) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

boşluq döngəsi (boş) {

// şəkil döngəsi

u8g.firstPage ();

etmək {

çəkmək ();

} isə (u8g.nextPage ());

// bir qədər gecikmədən sonra şəkli yenidən qurun (2000);

}

// Əsas proqramın sonu.

Addım 7: Təsvir

Təsvir
Təsvir

Sonra, Arduino lövhəsi üçün pin sxemini işə salın. Sensor kitabxanası obyekti elan etmək üçün məlumat tələb edir.

"Serial.print ()" adlı funksiyanı istifadə edərək rəqəmsal pin 2 vasitəsilə çıxış məlumatlarını izləyərək sensorun məlumatlarını yoxlaya bilərsiniz. Məlumat ötürmə tezliyi təxminən hər 2 saniyədə 1 oxunuş olduğu üçün (0,5 Hz), Arduino IDE -də proqramlaşdırıldıqda, döngə funksiyasındakı gecikməni 2 saniyədən çox olaraq təyin etməliyik. Deməli, loop funksiyasının içərisində "gecikmə (2000)" var. Bu, məlumatların tez -tez yenilənməsini təmin edir. "Çək" funksiyasında, məlumatları serial məlumat portundan əldə edin və "readHumidity" və "readTemperature" funksiyalarından istifadə edərək nömrələri üzmək üçün qoyun.

"U8glib" faylındakı çap funksiyasından istifadə edərək rütubəti və temperaturu çap edin. "SetPrintPos" funksiyasındakı nömrəni dəyişdirərək mövqeyi tənzimləyə bilərsiniz. Çap funksiyası mətni və rəqəmləri birbaşa göstərə bilər.

Donanımı qurmaq üçün serial portuna 10 saniyə gecikmə verin. Sonra sensor üçün başlanğıc funksiyasını çağırın. Dövrümə görə ekranım tərs idi. Ekranı döndərmək üçün "setRot180" funksiyasını da daxil etdim.

Arduino lövhəsinin loop funksiyası əsas funksiyadır. Sensor hər dəfə yenilənəndə mətni və məlumatları göstərmək üçün çəkmə funksiyasını çağırır.

Ekran belə görünür:

Arduino UNO -nu kompüterinizdən ayıra və 2,1 mm güc yuvasına qoşulan 5V DC güc adapterindən istifadə edərək onu gücləndirə bilərsiniz. Proqramı sürücüsünün içərisində saxlayır və enerjini aldıqdan sonra proqramı yenidən davam etdirə bilər.

Tövsiyə: