İçindekiler:
- Adım 1: Attiny85 ile Mini Hava İstasyonu: Verici
- Adım 2: Attiny85 ile Mini Hava İstasyonu: Alıcı
- Adım 3: Attiny85/45 ile Mini Hava İstasyonu: Ekran
- Adım 4: Attiny85/45 ile Mini Hava İstasyonu: Olasılıklar/Sonuçlar
- Adım 5: Mini Hava İstasyonu: Anten
- Adım 6: Bir BMP180 Ekleme
Video: Attiny85 ile Mini Hava İstasyonu: 6 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Yakın tarihli bir talimatta Indigod0g, iki Arduino kullanarak oldukça iyi çalışan bir mini hava istasyonunu tanımladı. Belki herkes nem ve sıcaklık okumaları için 2 Arduino'yu feda etmek istemiyor ve ben de iki Attiny85 ile benzer bir işlevi yapmanın mümkün olması gerektiğini yorumladım. Sanırım konuşmak kolay, bu yüzden paramı ağzımın olduğu yere koysam iyi olur.
Aslında, daha önce yazdığım iki talimatı birleştirirsem:
Arduino veya Attiny için 2 Telli LCD arayüzü ve Attiny85 (Arduino IDE 1.06) arasında veri alıp gönderme, ardından işin çoğu zaten yapılır. Sadece yazılımı biraz uyarlamanız gerekiyor.
Attiny'de kaydırma yazmacının uygulanması I2C veriyolundan daha kolay olduğu için I2C LCD yerine kaydırma kaydına sahip iki telli bir lcd çözümü seçtim. Ancak… örneğin bir BMP180 veya BMP085 basınç sensörünü okumak istiyorsanız, bunun için yine de I2C'ye ihtiyacınız var, böylece bir I2C LCD de kullanabilirsiniz. TinyWireM, Attiny'de I2C için iyi bir kitaplıktır (ancak fazladan alan gerektirir).
BOM Verici: DHT11 Attiny85 10 k direnç 433MHz verici modülü
Alıcı Attiny85 10k direnç 433 MHz alıcı modülü
Ekran 74LS164 kaydırma yazmacı 1N4148 diyot 2x1k direnç 1x1k değişken direnç bir LCD ekran 2x16
Adım 1: Attiny85 ile Mini Hava İstasyonu: Verici
Verici, Attiny85'in sıfırlama hattında yukarı çekme direnci olan çok temel bir konfigürasyonudur. Dijital pim '0'a bir verici modülü takılır ve DHT11 veri pimi dijital pim 4'e bağlanır. Anten olarak 17,2 cm'lik bir kablo bağlayın (çok daha iyi bir anten için 5. adıma bakın.) Yazılım aşağıdaki gibidir:
//Atiny üzerinde çalışacak//RF433=D0 pin 5
//DHT11=D4 pin 3 // kitaplıklar #include //Rob Tillaart'tan #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 //vericinizin bağlı olduğu yeri sabitleyin //değişkenler kayan nokta h=0; yüzer t=0; int iletim_t = 0; int iletim_h = 0; int iletim_verileri = 0; geçersiz kurulum() { pinMode(1, INPUT); man.setupTransmit(TX_PIN, MAN_1200); } geçersiz döngü() { int chk = DHT11.read11(DHT11PIN); h=DHT11.nem; t=DHT11.sıcaklık; // Biliyorum, burada 3 tamsayı değişkeni kullanıyorum // burada 1 kullanabilirdim // ancak bu yüzden takip etmek daha kolay iletim_h=100* (int) h; iletim_t=(int) t; iletim_verileri=transmit_h+transmit_t; man.transmit(transmit_data); gecikme(500); }
Yazılım, verileri göndermek için Manchester kodunu kullanır. DHT11'i okur ve sıcaklık ve nemi 2 ayrı şamandırada saklar. Manchester kodu kayan nokta değil bir tam sayı gönderdiği için birkaç seçeneğim var:1- kayan noktaları her birini iki tam sayıya bölün ve bunları gönderin2- her kayan noktayı bir tamsayı olarak gönderin3- iki kayan noktayı bir tamsayı olarak gönderin Seçenek 1 ile birleştirmem gerekiyor tamsayılar alıcıda tekrar yüzer ve hangi tamsayının ne olduğunu tanımlamam gerekir, kodu uzun süre sarmalı Seçenek 2 ile hala hangi tamsayının nem için hangisinin sıcaklık için olduğunu belirlemem gerekir. İletimde bir tam sayının kaybolması durumunda tek başına sıra ile gidemem, bu yüzden tamsayıya eklenmiş bir tanımlayıcı göndermem gerekecek. Seçenek 3 ile sadece bir tamsayı gönderebilirim. Açıkçası bu, okumaları biraz daha az doğru yapar - 1 derece içinde - ve sıfırın altında sıcaklıklar gönderilemez, ancak bu sadece basit bir koddur ve bunun etrafında yollar vardır. Şimdilik sadece prensiple ilgili. Yani yaptığım şey, yüzenleri tam sayılara çevirip nemi 100 ile çarpıyorum. Daha sonra çarpılan neme sıcaklığı ekliyorum. Nemin asla %100 olmayacağı gerçeğini göz önünde bulundurarak. Alacağım maksimum sayı 9900. Sıcaklığın da 100 dereceyi geçmeyeceği gerçeği göz önüne alındığında maksimum sayı 99 olacak, bu nedenle göndereceğim en yüksek sayı 9999 ve alıcı tarafında ayrılması kolay. 3 tamsayı kullandığım hesaplamam, 1 değişkenle kolayca yapılabileceği için aşırıya kaçıyor. Ben sadece kodu takip etmeyi kolaylaştırmak istedim. Kod artık şu şekilde derleniyor:
İkili çizim boyutu: 2, 836 bayt (maksimum 8, 192 bayttan), böylece bir Attiny 45 veya 85NOTE'a sığar, kullandığım dht.h kitaplığı Rob Tillaart'tandır. Bu kütüphane aynı zamanda bir DHT22 için de uygundur. 1.08 sürümünü kullanıyorum. Ancak Attiny85, kitaplığın daha düşük sürümleriyle bir DHT22'yi okurken sorun yaşayabilir. 1.08 ve 1.14'ün - normal bir Arduino üzerinde çalışmasına rağmen - Attiny85'te bir DHT22 okumada sorun yaşadığı bana doğrulandı. Attiny85'te bir DHT22 kullanmak istiyorsanız, bu kitaplığın 1.20 sürümünü kullanın. Her şey zamanlama ile ilgili. Kütüphanenin 1.20 versiyonu daha hızlı okunmaktadır. (Bu kullanıcı deneyimi için teşekkürler Jeroen)
Adım 2: Attiny85 ile Mini Hava İstasyonu: Alıcı
Yine Attiny85, Reset pininin 10 k'lık bir dirençle yükseğe çekildiği temel bir konfigürasyonda kullanılır. Alıcı modülü, dijital pim 1'e (çip üzerindeki pim 6'ya) bağlıdır. LCD, 0 ve 2 numaralı dijital pinlere bağlıdır. Anten olarak 17,2 cm'lik bir kablo takın. Kod aşağıdaki gibidir:
#Dahil etmek
#include LiquidCrystal_SR lcd(0, 2, TWO_WIRE); #define RX_PIN 1 //= fiziksel pin 6 void setup() { lcd.begin(16, 2); lcd.home(); man.setupReceive(RX_PIN, MAN_1200); man.beginReceive(); }void loop() { if (man.receiveComplete()) { uint16_t m = man.getMessage(); man.beginReceive(); lcd.print("Nemli: "); lcd.baskı(m/100); lcd.setCursor(0, 1); lcd.print("Sıcaklık"); lcd.print(m%100); } }
Kod oldukça basittir: iletilen tamsayı 'm' değişkeninde alınır ve saklanır. Nemi vermek için 100'e bölünür ve 100'ün modülü sıcaklığı verir. Öyleyse alınan tamsayının 33253325/100=333325 % 100 olduğunu varsayalım. =25Bu kod 3380 bayt olarak derlenir ve bu nedenle 45 ile değil, yalnızca bir attiny85 ile kullanılabilir
Adım 3: Attiny85/45 ile Mini Hava İstasyonu: Ekran
Ekran için en iyisi iki kablolu ekrandaki talimatlarıma başvurmam. Kısacası, ortak bir 16x2 ekran, iki dijital pin ile çalışabilmesi için bir shiftregister kullanır. Tabii ki I2C hazır bir ekran kullanmayı tercih ederseniz, yani mümkün, ancak o zaman Attiny'de bir I2C protokolü uygulamanız gerekir. Tinywire protokolü bunu yapabilir. Bazı kaynaklar bunun 1 Mhz'lik bir saat beklediğini söylese de, (başka bir projede) 8MhzAnyway'de kullanmakta herhangi bir sıkıntı yaşamadım, burada hiç uğraşmadım ve shift register kullandım.
Adım 4: Attiny85/45 ile Mini Hava İstasyonu: Olasılıklar/Sonuçlar
Dediğim gibi, bunu iki attiny85'li bir mini meteoroloji istasyonu yapılabileceğini göstermek için yaptım (bir attiny85+1 attiny45 ile bile). DHT11 kullanarak sadece nem ve sıcaklık gönderir. Ancak, Attiny'nin kullanmak için 5 dijital pini vardır., 6 biraz hile ile bile. Bu nedenle daha fazla sensörden veri göndermek mümkündür. Projemde - stripboard ve profesyonel bir PCB (OSHPark) üzerindeki resimlerde görüldüğü gibi - DHT11'den, LDR'den ve PIR'den veri gönderiyorum/alıyorum, hepsini kullanarak iki attiny85's Bir attiny85'i alıcı olarak kullanmanın sınırlaması, verilerin gösterişli bir tarzda sunulmasıdır. Hafıza sınırlı olduğu için: 'Sıcaklık, Nem, ışık seviyesi, nesne yaklaşıyor' gibi metinler değerli hafıza alanını oldukça hızlı dolduracaktır. Bununla birlikte, sadece sıcaklık ve nem göndermek/almak için iki Arduino kullanmaya gerek yok. Ayrıca, mümkündür. vericinin uyku moduna geçmesini ve sadece her 10 dakikada bir veri göndermesi ve böylece bir düğme hücresinden beslemesi için uyanmasını sağlamak. Açıkçası, yalnızca sıcaklık veya nem verileri gönderilemez, aynı zamanda bir dizi küçük verici gönderilebilir. toprak nemi okumaları da yapın veya bir anemometre veya yağmur ölçer ekleyin
Adım 5: Mini Hava İstasyonu: Anten
Anten, herhangi bir 433Mhz kurulumunun önemli bir parçasıdır. Standart 17,2 cm 'çubuk' antenle denemeler yaptım ve bobin antenle kısa bir flört ettim. En iyi işe yarayan, yapılması kolay bobin yüklü bir anten. Tasarım Ben Schueler'den ve görünüşe göre 'Elektor' dergisinde yayınlandı. Bu 'Hava soğutmalı 433 MHz Anten'in açıklamasını içeren bir PDF'yi takip etmek kolaydır. (Link kayboldu, burayı kontrol edin)
Adım 6: Bir BMP180 Ekleme
BMP180 gibi barometrik basınç sensörü eklemek ister misiniz? Bununla ilgili diğer talimatımı kontrol et.
Önerilen:
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
Yazılım ile Komple DIY Raspberry Pi Hava İstasyonu: 7 Adım (Resimlerle)
Yazılımla Kendin Yap Raspberry Pi Hava İstasyonunu Tamamla: Şubat ayının sonlarında Raspberry Pi sitesinde bu yazıyı gördüm. http://www.raspberrypi.org/school-weather-station-…Okullar için Raspberry Pi Hava İstasyonları oluşturmuşlardı. Kesinlikle bir tane istedim! Ama o zaman (ve hala yazılı olarak inanıyorum
Veri Kaydı ile Hava İstasyonu: 7 Adım (Resimlerle)
Veri Kaydı ile Hava İstasyonu: Bu talimatta size meteoroloji istasyonu sistemini kendiniz nasıl yapacağınızı göstereceğim. Tek ihtiyacınız olan temel elektronik bilgisi, programlama ve biraz zaman. Bu proje hala yapım aşamasında. Bu sadece ilk kısım. Yükseltmeler yapılacak
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,