İçindekiler:
- 1. Adım: Alışverişe Git
- 2. Adım: Kurulum ve Arka Plan
- Adım 3: Arduino - ESP12 Bölümü
- Adım 4: ESP'yi Ağ Zaman Protokolü (NTP) İstemcisi Olarak Test Etme
- Adım 5: DHT22 Sensörünün Test Edilmesi
- Adım 6: Bir araya getirmek…
- Adım 7: Şeylerin Sunucu Tarafı
Video: Ev Ağı Sıcaklık Sensörü: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu projeyi yapmak için bilmeniz gerekenler:
Bilmeniz gerekenler: - Bazı elektronik becerileri (lehimleme)
- Linux
-Arduino IDE'si
(IDE'de ek panoları güncellemeniz gerekecek:
- Arduino IDE aracılığıyla bir ESP kartının güncellenmesi/programlanması.
(web'de bazı güzel dersler var)
Bu, bir Arduino Uno kullanılarak veya bir FTDI (usb - seri adaptör) kullanılarak yapılabilir.
Uno'mu kullandım çünkü bilgisayarımda herhangi bir seri bağlantı noktası yoktu ve bir FTDI'm yoktu
1. Adım: Alışverişe Git
Bunun gerçekleşmesi için neye ihtiyacınız olacak?
Dijital Sıcaklık ve Nem Sensörü için:
- İster breadboard ister prototip pcb, lehim, havya gibi bir alternatif…
- Biraz tel
- iki jumper
- 10k Ohm direnç
- bir ESP12F (diğer modeller de işe yarayabilir…)
- bir DHT22 (DHT11'den biraz daha pahalı ama daha doğru)
- 3 adet AA şarj edilebilir pil ve bir pil tutucu
- projenizi koymak için küçük bir plastik kutu
- Daha sonraki bir aşamada, pil takımı ile ESP arasına iki adet 10 uF kapasitörlü bir HT7333 eklemeyi planlıyorum
giriş voltajını (VCC) önerilen 3,3 V'a sabitlemek ve aynı zamanda ESP'yi aşırı voltajdan korumak için.
Ağ kısmı için:
- Ev WiFi Ağınız
Sunucu kısmı için:
- Herhangi bir Linux tabanlı sistem (her zaman açık!)
Ahududu Pi kullandım (Açık IP kameralarım için sunucu olarak da kullanıyorum.)
- sunucu kodunuzu derlemek için gcc derleyicisi
- verileri depolamak ve grafikler oluşturmak için rrdtool paketi
- apache (veya başka bir web sunucusu)
Üzerinde Arduino IDE bulunan favori PC veya dizüstü bilgisayarınız.
2. Adım: Kurulum ve Arka Plan
Bağlı bir WiFi'nin bu versiyonunda - IOT demiyorum - sıcaklık ve nem sensörü bir ESP12F, bir DHT22 ve şarj edilebilir pillerle birlikte 3 AA pil tutucu kullandım.
Her 20 dakikada bir ESP, DHT22'den bir ölçüm alır ve bunu evimdeki WiFi ağımdaki UDP üzerinden bir sunucuya (ahududu Pi) gönderir. Ölçümler gönderildikten sonra ESP derin uykuya geçer. Bu, modülün yalnızca Gerçek Zamanlı Saatine güç verildiği anlamına gelir ve bu da inanılmaz bir güç tasarrufu sağlar. Yaklaşık 5 saniye boyunca, modül yaklaşık 100mA'ya ihtiyaç duyar, daha sonra 20 dakikalık derin uyku sırasında sadece 150uA'ya ihtiyaç duyar.
Her zaman açık olan Raspberry Pi'm olduğu için internet tabanlı herhangi bir servis kullanmak istemedim ve bu şekilde sunucu kısmını da yazma zevkini yaşadım.
Sunucuda (Raspbian çalıştıran bir Raspberry Pi) değerleri basit bir RRD'de saklayan basit bir UDP dinleyicisi (sunucu) yazdım. (Tobias Oetiker'in RRDtool'unu kullanan Round Robin Veritabanı.)
RRDtool'un avantajı, veritabanınızı bir kez oluşturmanız ve boyutun aynı kalmasıdır. Ayrıca arka planda çalışan bir veritabanı sunucunuz (mySQLd gibi) olması gerekmez. RRDtool, Veritabanını oluşturmak ve grafikleri oluşturmak için size araçlar sağlar.
Sunucum, grafikleri periyodik olarak oluşturur ve her şeyi çok basit bir http sayfasında görüntüler. Raspberry Pi üzerinde Apache2 web sunucusuna bağlanarak basit bir tarayıcı ile okumalarıma bakabilirim!
Sonunda, bir FTDI'm (USB'den Seri'ye) yoktu, bu yüzden Arduino UNO'mu kullandım. TX'leri ve RX'leri ve ESP'nin GND'sini ve UNO'yu bağlamanız gerekiyor. (Biliyorum, içgüdüleriniz size RX'leri ve TX'leri geçmenizi söyleyebilir… onu da denedim, işe yaramadı.)
Seviye dönüşümü yapmadım (UNO: High=5V ama ESP temelde 3.3V'luk bir cihaz… Piyasada High levelinizi 5 veya 3.3V olarak seçebileceğiniz güzel FTDI'lar var.
Devrem 3 adet AA şarj edilebilir pil ile çalışıyor - yani aslında 3 X 1.2V. Daha sonraki bir aşamada güvenlik için pil takımı ile devre arasına bir HT7333 yerleştirmeyi planlıyorum; yeni şarj edilmiş piller 1,2V'den fazla olabilir ve ESP'ye min. 3V ve maks. 3.6V. Ayrıca - bir zayıflık anında - Alkalin pilleri (3 X 1.5V = 4.5V) takmaya karar verirsem, ESP'm yanmayacak!
Ben de 10cm x 10cm'lik bir Güneş paneli kullanmayı düşündüm ama uğraşmaya değmezdi. Saatte 3 ölçüm yaparak (temelde 3x 5 saniye @ 100mA max. ve geri kalan zaman @100uA), devremi aynı şarj edilebilir pillerle 1 yıl boyunca çalıştırmayı umuyorum.
Adım 3: Arduino - ESP12 Bölümü
Bu projeyi farklı adımlarla yaptım.
ESP12'yi (diğer adıyla ESP8266) Arduino IDE'ye aktarmanıza yardımcı olacak birkaç bağlantı vardır. (Bu arada çözülmüş olabilecek bir hata nedeniyle en son sürüm yerine 2.3.0 sürümünü kullanmak zorunda kaldım…)
ESP'yi Arduino UNO'm üzerinden (sadece PC'm arasında USB üzerinden Seri'ye köprü olarak kullanılır) ESP seri arayüzüne bağlayarak başladım. Bunu açıklayan ayrı Talimatlar var.
Biten projemde, sorun gidermem gerekirse diye Seriye bağlanmak için kabloları bıraktım. RX
Ardından ESP12'nizi aşağıdaki gibi bağlamanız gerekir:
ESP pinleri…
GND UNO GND
RX UNO RX
TX UNO TX
TR VCC
GPIO15 GND
Başlangıçta, ESP'mi UNO'daki 3.3V'dan çalıştırmayı denedim, ancak ESP'mi bir tezgah Güç Kaynağı ile çalıştırmaya hızla geçtim, ancak pil takımınızı da kullanabilirsiniz.
GPIO0 ESP'nin yanıp sönmesini (= programlamayı) etkinleştirmek için bunu bir jumper ile GND'ye bağladım.
İlk test: jumper'ı açık bırakın ve Arduino IDE'de bir seri monitör başlatın (115200 baud'da!).
ESP'yi kapatıp açın, bazı çöp karakterler ve ardından şöyle bir mesaj görmelisiniz:
Ai-Thinker Technology Co. Ltd. hazır
Bu modda, ESP biraz eski moda bir modem gibi davranır. AT komutlarını kullanmanız gerekir.
Aşağıdaki komutları deneyin:
AT+RST
ve aşağıdaki iki komut
AT+CWMODE=3
Tamam
AT+CWLAP
Bu size bölgedeki tüm WiFi ağlarının bir listesini vermelidir.
Bu işe yarıyorsa, bir sonraki adıma hazırsınız.
Adım 4: ESP'yi Ağ Zaman Protokolü (NTP) İstemcisi Olarak Test Etme
Arduino IDE'de Dosya, Örnekler, ESP8266WiFi altında NTPClient'i yükleyin.
Çalışması için küçük ince ayarlar gerekiyor; WiFi ağınızın SSID'sini ve şifresini girmeniz gerekir.
Şimdi jumper'ı yerleştirin, GPIO0'ı GND'ye kısa devre yapın.
ESP'yi kapatıp açın ve çizimi ESP'ye yükleyin.
Derlemeden sonra ESP'ye yükleme başlamalıdır. Kod indirilirken ESP üzerindeki mavi LED hızla yanıp sönecektir.
Yükleme işe yaramadan önce IDE'yi yeniden başlatarak, ESP'yi yeniden başlatarak biraz oynamam gerektiğini fark ettim.
Çizimi derlemeye/yüklemeye başlamadan önce, seri konsolu (=seri monitör) kapattığınızdan emin olun çünkü bu, yükleme yapmanızı engelleyecektir.
Yükleme başarılı olduktan sonra, ESP'nin İnternet'ten etkin bir şekilde zaman aldığını görmek için seri monitörü yeniden açabilirsiniz.
Harika, ESP'nizi programladınız, WiFi'nize bağlandınız ve İnternet'ten zaman aldınız.
Sonraki adımda DHT22'yi test edeceğiz.
Adım 5: DHT22 Sensörünün Test Edilmesi
Şimdi bazı ekstra kablolama gerekiyor.
DHT pinleri… Sensörün pin 1'ini (solda) VCC'ye (3,3V) bağlayın
Pin 2 ESP GPIO5'i bağlayın (çizimdeki DHTPIN)
Sensörün 4 numaralı pimini (sağda) GROUND'a bağlayın
Sensörün pin 2'sinden (veri) 1 pinine (gücü) 10K'lık bir direnç bağlayın.
NTP testine benzer şekilde, DHTtester taslağını bulun ve aşağıdaki şekilde değiştirin:
#define DHTPIN 5 // sensöre bağlanmak için GPIO5'i seçtik#define DHTTYPE DHT22 // çünkü DHT22 kullanıyoruz ama bu kod/kütüphane DHT11 için de uygun
Yine, seri monitörü kapatın, ESP'yi kapatıp açın ve ESP'yi derleyin ve flaşlayın.
Her şey yolunda giderse, ölçümlerin seri monitörde göründüğünü görmelisiniz.
Sensörle biraz oynayabilirsiniz. Üzerinde nefes alırsanız, nemin arttığını göreceksiniz.
(LED olmayan) bir masa lambanız varsa, biraz ısıtmak için sensörün üzerine parlayabilirsiniz.
Harika! Sensörün iki büyük parçası şu anda çalışıyor.
Bir sonraki adımda, son kod hakkında yorum yapacağım.
Adım 6: Bir araya getirmek…
Yine bazı ekstra kablolar… bu DeepSleep'i mümkün kılmak içindir.
DeepSleep'in IoT cihazları için inanılmaz bir işlev olduğunu unutmayın.
Ancak sensörünüz DeepSleep için kabloluysa, ESP'yi yeniden programlamak zor olabilir, bu nedenle arasında başka bir jumper bağlantısı yapacağız.
GPIO16-RST.
Evet, GPIO16 OLMALIDIR, çünkü DeepSleep'ten sonra Gerçek Zamanlı Saat çaldığında cihazı uyandırmak için kablolu olarak bağlanan GPIO budur!
Test ederken 15 saniyelik bir DeepSleep yapmaya karar verebilirsiniz.
Hata ayıklarken, programımı flash edebilmek için jumper'ı GPIO0'a taşırdım.
İndirme tamamlandığında, DeepSleep'in çalışması için jumper'ı GPIO16'ya taşırdım.
ESP kodunun adı TnHclient.c
SSID'nizi, Parolanızı ve sunucunuzun IP adresini değiştirmeniz gerekir.
Kurulumunuzu gidermek veya test etmek için kullanabileceğiniz fazladan kod satırları vardır.
Adım 7: Şeylerin Sunucu Tarafı
UDP'nin güvenilmez olduğu ve TCP'nin güvenilir olmadığı yaygın bir yanlış anlamadır.
Bu, bir çekicin bir tornavidadan daha faydalı olduğunu söylemek kadar aptalcadır. Onlar sadece farklı çok kullanışlı araçlardır ve her ikisinin de kullanımları vardır.
Bu arada, UDP olmadan İnternet çalışmaz… DNS, UDP'ye dayanır.
Bu yüzden çok hafif, kolay ve hızlı olduğu için UDP'yi seçtim.
WiFi'min çok güvenilir olduğunu düşünüyorum, bu nedenle müşteri, "Tamam!" onayını alırsa en fazla 3 UDP paketi gönderecektir. alınmaz.
TnHserver'ın C kodu, TnHServer.c dosyasındadır.
Bunu açıklayan kodda birkaç yorum var.
Sunucuda bazı ekstra araçlara ihtiyacımız olacak: rrdtool, apache ve belki tcpdump.
Raspbian'a rrdtool kurmak için paketi şu şekilde kurabilirsiniz: apt-get install rrdtool
Ağ trafiğinde hata ayıklamanız gerekiyorsa, tcpdump kullanışlıdır apt-get install tcpdump
Grafiklere bakmak için tarayıcı kullanabilmek için bir web sunucusuna ihtiyacım vardı: apt-get install apache2
Round Robin Veritabanını oluşturma komutunu almak için şu aracı kullandım: https://rrdwizard.appspot.com/index.php. Bunu yalnızca bir kez çalıştırmanız gerekir (ilk seferde doğru yaparsanız).
rrdtool TnHdatabase.rrd oluştur --şimdi başlayın-10s
--adım '1200'
'DS:Sıcaklık: GÖSTERGE:1200:-20.5:45.5'
'DS:Nem:GÖSTERGE:1200:0:100.0'
'RRA:ORTALAMA:0.5:1:720'
'RRA:ORTALAMA:0.5:3:960'
'RRA:ORTALAMA:0.5:18:1600'
Son olarak, her gün gece yarısı TnHserver'ımı yeniden başlatmak için bir crontab girişi kullanıyorum. Güvenlik önlemi olarak TnHserver'ı normal bir kullanıcı (yani root DEĞİL) olarak çalıştırıyorum.
0 0 * * * /usr/bin/pkill TnHserver; /home/user/bin/TnHserver >/dev/null 2>&1
Yaparak TnHserver'ın çalıştığını kontrol edebilirsiniz.
$ ps -elf | grep TnHsunucusu
ve yaparak 7777 numaralı bağlantı noktasındaki paketleri dinlediğini doğrulayabilirsiniz.
$ netstat -anu
Aktif İnternet bağlantıları (sunucular ve kurulu)
Proto Recv-Q Gönderme-Q Yerel Adres Yabancı Adres Durumu
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Son olarak CreateTnH_Graphs.sh.txt, grafikleri oluşturmak için örnek bir komut dosyasıdır. (Komut dosyalarını root olarak oluşturuyorum, bunu yapmak istemeyebilirsiniz.)
Çok basit bir web sayfası kullanarak ev ağınızdaki herhangi bir tarayıcıdan grafikleri izleyebilirsiniz.
Önerilen:
Python, Electron ve Keras Kullanan Sinir Ağı Destekli Planetaryum: 8 Adım
Python, Electron ve Keras Kullanan Sinir Ağı Destekli Planetaryum: Bu talimatta size Python ve Electron kullanarak otomatik bir 3D planetaryum üretecini nasıl yazdığımı göstereceğim. Yukarıdaki video, programın oluşturduğu rastgele planetaryumlardan birini gösteriyor.**Not: Bu program hiçbir şekilde mükemmel değil ve bir yerde
Arduino Uno ile LM35 Sıcaklık Sensörü Kullanarak Sıcaklık Okuma: 4 Adım
Arduino Uno ile LM35 Sıcaklık Sensörü Kullanarak Sıcaklık Okuma: Merhaba arkadaşlar bu derste LM35'i Arduino ile nasıl kullanacağımızı öğreneceğiz. Lm35, -55 °C ile 150 °C arasındaki sıcaklık değerlerini okuyabilen bir sıcaklık sensörüdür. Sıcaklıkla orantılı analog voltaj sağlayan 3 terminalli bir cihazdır. Yüksek
Sıcaklık Sensörleri Ağı: 6 Adım
Sıcaklık Sensörleri Ağı: Sıcaklık ve nem, laboratuvarınız, mutfağınız, üretim hattınız, ofisiniz, öldürücü robotlarınız ve hatta evinizdeki hayati verilerdir. Birden fazla konumu veya odayı veya alanı izlemeniz gerekiyorsa, güvenilir, kompakt, doğru ve ekonomik bir şeye ihtiyacınız var
ESP32 NTP Sıcaklık Problu Steinhart-Hart Düzeltmeli ve Sıcaklık Alarmlı Pişirme Termometresi: 7 Adım (Resimli)
ESP32 NTP Sıcaklık Probu Steinhart-Hart Düzeltme ve Sıcaklık Alarmı ile Pişirme Termometresi.: "Yaklaşan bir projeyi" tamamlama yolculuğunda, "Steinhart-Hart Düzeltme ve Sıcaklık Alarmlı ESP32 NTP Sıcaklık Probu Pişirme Termometresi"; bir NTP sıcaklık probunu nasıl eklediğimi gösteren bir Eğitilebilirliktir, piezo b
Arduino WiFi Ağı (Sensörler ve Aktüatörler) - Renk Sensörü: 4 Adım
Bir Arduino WiFi Ağı (Sensörler ve Aktüatörler) - Renk Sensörü: Uygulamalarınızda kaç kez sizden uzakta bir sensör veya bir aktüatör var? Bir wi-fi ağı üzerinden bağlı farklı bağımlı cihazları yönetmek için bilgisayarınızın yakınında tek bir ana cihazı kullanmak ne kadar rahat olabilir? Bu projede