İçindekiler:
- Adım 1: Öğe Listesi
- 2. Adım: Göreli Giriş
- Adım 3: Devreyi Bağlayın
- Adım 4: Derlemeye Hazırlanın
- Adım 5: DHT22 Sensör Seri Bağlantı Noktası için Test Kodu
- Adım 6: Proje Kodu
- 7. Adım: Açıklama
Video: Arduino UNO Kullanan Hava İstasyonu: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Oluşturan: Hazel Yang
Bu proje, veri akışını kontrol etmek için bir Arduino UNO kartı, verileri toplamak için bir DHT22 sensörü ve verileri göstermek için bir OLED ekranı kullanan bir hava istasyonudur.
Adım 1: Öğe Listesi
1. Ekran: OLED, 1.3 Ekran SH1106, I2C beyaz renk ---- PID: 18283
2. Sensör: Dijital Nem ve Sıcaklık Sensörü DHT22 ---- PID: 7375
3. Bağlantılar: Atlama Kabloları ---- PID: 10316 veya 10318 veya 10312 (uzunluğa bağlıdır) veya katı kablo kullanabilirsiniz 22 AWG ---- PID: 22490
Breadboard ---- PID: 10686 veya 10698 veya 103142 (boyuta göre değişir)
4. Güç: Bu kablo sadece bir bilgisayarın USB portuna bağlanabilir ve kablo aynı zamanda IDE ile Arduino kartı arasında veri aktarımı için de kullanılır. USB KABLOSU, A'DAN B'YE, M/M, 0,5M (1,5FT) ---- PID: 29862
Veya bunu karta güç sağlamak için kullanabilirsiniz: 5V 2A AC/DC Adaptör ---- PID: 10817.
2. Adım: Göreli Giriş
Ekranın Tanıtımı: 1.3 OLED Ekran Beyaz
1. Temel kurulum ve açıklamaları gösteren belgeyi bulabilirsiniz:
Sensör Tanıtımı: Nem ve Sıcaklık Sensörü DHT22 1. Açıklamaları gösteren dokümana buradan ulaşabilirsiniz:
Adım 3: Devreyi Bağlayın
DHT22 sensörü pin 2'ye seri veri gönderir. Yani soldan ikinci pini bağlayın, "SDA" pini pin 2'ye bağlanmalıdır.
SSH1106 ekranı için, iletmek için analog pini kullanır. Ekranın devresi Arduino'nun "A5"ine "SCL" pini ve Arduino'nun "A4"üne "SDA" pini olacaktır. Piksel konum verileri sürekli olarak iletilirken, programdaki görüntüleme işlevi, sensörden gelen verileri her okuduğunda komutu yalnızca bir kez tetikler.
Hem sensör hem de ekran, Arduino'yu DC güç girişi olarak çalıştırmak için 3.3V'u kullanabilir. Güç vermek için, her iki "VCC" pinini Arduino'nun "3.3V" sine bağlamamız gerekiyor. Ve "GND" pinleri Arduino kartındaki "GND" pinine basitçe bağlanabilir.
USB A - B kablosunu kullanın, Arudino'yu bilgisayara bağlayın.
Adım 4: Derlemeye Hazırlanın
Olikraus'tan SSH1106 ekranı için "u8glib".
Adafruit'ten DHT22 sensörü için "DHT sensör kütüphanesi". İki kütüphaneyi indirmelisiniz: DHT22 sensör kütüphanesi:
U8glib:
Ve onları sıkıştırılmış hale getirmek için IDE'deki “kütüphaneyi yönet”i kullanın. Kütüphaneleri yönetmek için çevrimiçi talimat:
Adım 5: DHT22 Sensör Seri Bağlantı Noktası için Test Kodu
DHT22 sensör seri bağlantı noktası için test coe (DHT22 kitaplığının içindedir>>örnekler):
(Bu kısmı atlayabilirsiniz.)
Sadece DHT22 sensörünü test etmek için verileri normal şekilde okur
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
geçersiz kurulum() {
Seri.başla(9600);
Serial.println(F("DHT22 testi!"));
dht.begin();
}
boşluk döngüsü () {
// Ölçümler arasında birkaç saniye bekleyin.
gecikme(2000);
// Sıcaklık veya nemin okunması yaklaşık 250 milisaniye sürer!
// Sensör okumaları ayrıca 2 saniyeye kadar 'eski' olabilir (çok yavaş bir sensör)
float h = dht.readHumidity();
// Sıcaklığı Celsius olarak oku (varsayılan)
float t = dht.readTemperature();
// Sıcaklığı Fahrenheit olarak oku (isFahrenheit = true)
float f = dht.readTemperature(true);
// Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve erken çıkın (tekrar denemek için).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("DHT sensöründen okunamadı!"));
dönüş;
}
// Isı endeksini Fahrenhayt cinsinden hesapla (varsayılan)
float hif = dht.computeHeatIndex(f, h);
// Isı indeksini Celsius cinsinden hesapla (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Nem: "));
Seri.baskı(h);
Serial.print(F("% Sıcaklık: "));
Seri.baskı(t);
Serial.print(F("°C "));
Seri.baskı(f);
Serial.print(F("°F Isı indeksi: "));
Seri.print(hic);
Serial.print(F("°C "));
Seri.print(hif);
Serial.println(F("°F"));
}
// Programı derledikten sonra verileri kontrol etmek için TOOLS >> SERIAL MONITOR'a tıklayın.
// Test programının sonu.
Adım 6: Proje Kodu
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#define DHTPIN 2
#define DHTTYPE DHT22
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
DHT sensörü (DHTPIN, DHTTYPE);
void beraberlik(void) {
u8g.setFont(u8g_font_unifont);
kayan nokta h = sensor.readHumidity();
// Sıcaklığı Celsius olarak oku (varsayılan)
float t = sensor.readTemperature();
// Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve erken çıkın (tekrar denemek için).
if (isnan(h) || isnan(t)) {
u8g.print("Hata.");
için(;;);
dönüş;
}
u8g.setPrintPos(4, 10);
u8g.print("Sıcaklık(C):");
u8g.setPrintPos(4, 25);
u8g.print(t);
u8g.setPrintPos(4, 40);
u8g.print("Nem(%):");
u8g.setPrintPos(4, 55);
u8g.print(h);
}
geçersiz kurulum(void) {
u8g.setRot180();
Seri.başla(9600);
sensör.begin();
}
void loop(void) {
// resim döngüsü
u8g.firstPage();
yapmak {
Berabere();
} while(u8g.nextPage());
// resmi biraz gecikmeden sonra yeniden oluştur(2000);
}
// Ana programın sonu.
7. Adım: Açıklama
Ardından, Arduino kartı için pin devresini başlatın. Çünkü sensör kitaplığı, nesneyi bildirmek için verilere ihtiyaç duyar.
Ve "Serial.print()" adlı fonksiyonu kullanarak dijital pin 2 üzerinden çıkış verilerini izleyerek sensörün verilerini test edebilirsiniz. Arduino IDE'de programlandığında, veri aktarım frekansı yaklaşık olarak her 2 saniyede 1 okuma (ki bu 0,5 Hz) olduğundan, döngü fonksiyonu içindeki gecikmeyi 2 saniyeden fazla olacak şekilde ayarlamamız gerekir. Yani döngü fonksiyonunun içinde bir "delay(2000)" var. Bu, verilerin sık sık yenilenmesini sağlar. "draw" işlevinde, verileri seri veri portundan alın ve "readHumidity" ve "readTemperature" işlevlerini kullanarak bunları kayan sayılara koyun.
"u8glib" dosyasındaki yazdırma işlevini kullanarak nem ve sıcaklığı yazdırın. "setPrintPos" fonksiyonunda sayıyı değiştirerek pozisyonu ayarlayabilirsiniz. Yazdırma işlevi, metni ve sayıları doğrudan gösterebilir.
Donanımı kurmak için seri bağlantı noktasına 10 saniyelik bir gecikme verin. Ardından sensör için başlatma işlevini çağırın. Devreme göre ekranım baş aşağıydı. Bu yüzden ekranı döndürmek için bir "setRot180" işlevi de ekledim.
Arduino kartının döngü işlevi ana işlevdir. Sensör her yenilendiğinde metni ve verileri görüntülemek için çizim işlevini çağırmaya devam eder.
Ekran şöyle görünür:
Arduino UNO'yu bilgisayarınızdan ayırabilir ve 2.1mm güç jakına bağlanan 5V DC güç adaptörü kullanarak çalıştırabilirsiniz. Programı sürücüsünde saklar ve güç verildikten sonra programı sürekli olarak tekrar çalıştırabilir.
Önerilen:
Arduino ve ThingSpeak Kullanan Mini Hava İstasyonu: 4 Adım
Arduino ve ThingSpeak Kullanan Mini Hava İstasyonu: Herkese merhaba. Bu Eğitilebilir Kitapta, kişiselleştirilmiş bir mini hava istasyonu yapma adımlarında size rehberlik edeceğim. Ayrıca, hava durumu verilerimizi sunucularına yüklemek için ThingSpeak API'sini kullanacağız veya başka bir hava durumu verisinin amacı nedir?
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 8 Adım (Resimlerle)
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 2 farklı lokasyonda 1 yıllık başarılı operasyonun ardından, güneş enerjili meteoroloji istasyonu proje planlarımı paylaşıyor ve gerçekten uzun süre hayatta kalabilen bir sisteme nasıl evrildiğini açıklıyorum. güneş enerjisinden dönemler. Takip ederseniz
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: 7 Adım (Resimlerle)
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: Bu projede size bir WiFi sensör istasyonu ile birlikte bir hava istasyonunun nasıl oluşturulacağını göstereceğim. Sensör istasyonu, yerel sıcaklık ve nem verilerini ölçer ve WiFi aracılığıyla hava durumu istasyonuna gönderir. Hava durumu istasyonu daha sonra t görüntüler
Arduino ve BME280 Kullanan Oda Hava İstasyonu: 4 Adım
Arduino ve BME280 Kullanan Oda Hava İstasyonu: Daha önce yerel bölgenin Sıcaklığını ve Nemini gösteren basit bir hava durumu istasyonunu paylaşmıştım. Bununla ilgili sorun, güncellemenin zaman alması ve verilerin doğru olmamasıydı. Bu derste bir İç mekan hava durumu monitörü yapacağız
Raspberry Pi ve Weewx Kullanan Acurite 5'i 1 Arada Hava İstasyonu (Diğer Hava İstasyonları Uyumludur): 5 Adım (Resimlerle)
Acurite 5'i 1 Arada Hava İstasyonu Raspberry Pi ve Weewx Kullanarak (diğer Hava İstasyonları Uyumludur): Acurite 5'i 1 arada meteoroloji istasyonunu satın aldığımda, evde yokken hava durumunu kontrol edebilmek istedim. Eve gelip kurduğumda, ekranı bir bilgisayara bağlamam ya da akıllı hub'larını satın almam gerektiğini fark ettim,