İçindekiler:

Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: 6 Adım (Resimli)
Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: 6 Adım (Resimli)

Video: Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: 6 Adım (Resimli)

Video: Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: 6 Adım (Resimli)
Video: Kendi Sıcaklık Göstergemizi Yaptık! Kendin Yap #5 2024, Temmuz
Anonim
Raspberry Pi Kullanarak Sıcaklık ve Nem İzleme
Raspberry Pi Kullanarak Sıcaklık ve Nem İzleme
Raspberry Pi Kullanarak Sıcaklık ve Nem İzleme
Raspberry Pi Kullanarak Sıcaklık ve Nem İzleme

Yaz geliyor ve kliması olmayanlar, içerideki atmosferi manuel olarak kontrol etmeye hazırlanmalıdır. Bu yazıda, insan konforu için en önemli parametreleri ölçmenin modern yolunu anlatıyorum: sıcaklık ve nem. Toplanan bu veriler buluta gönderilir ve orada işlenir.

Raspberry Pi 1 kartı ve DHT22 sensörü kullanıyorum. Aynı şeyi İnternet, GPIO ve Python bulunan herhangi bir bilgisayarda da yapabilirsiniz. Daha ucuz olan DHT11 sensörü de gayet iyi çalışıyor.

Adım 1: Donanımı Hazırlama

Donanım Hazırlama
Donanım Hazırlama
Donanım Hazırlama
Donanım Hazırlama

Raspberry Pi'mi uzun süredir kullanmadığım için en baştan başlayalım.

İhtiyacımız olacak:

  • Raspberry Pi kartı (veya diğer IoT odaklı platform).
  • SD veya microSD kart (platforma bağlı olarak).
  • Mikro USB üzerinden 5V/1A.
  • İnternet bağlantısını sağlayan LAN kablosu.
  • HDMI ekranı, RCA ekranı veya UART bağlantı noktası (SSH'yi etkinleştirmek için).

İlk adım Raspbian'ı indirmek. Ekran yerine SSH kullanacağım için Lite sürümünü seçtim. Son yaptığımdan bu yana her şey değişti: şimdi Etcher adında mükemmel çalışan ve çarpıcı bir tasarıma sahip harika bir yazma yazılımı var..

Görüntü yazma işlemi tamamlandıktan sonra SD kartımı Pi'me yerleştirdim, LAN ve güç kablolarını taktım ve bir süre sonra yönlendiricim yeni cihazı kaydetti.

2. Adım: SSH'yi Etkinleştirme

SSH'yi etkinleştirme
SSH'yi etkinleştirme
SSH'yi etkinleştirme
SSH'yi etkinleştirme
SSH'yi etkinleştirme
SSH'yi etkinleştirme

SSH varsayılan olarak devre dışıdır. Kabuğa erişmek ve SSH'yi etkinleştirmek için UART-USB dönüştürücü kullanabilir veya sadece bir ekran bağlayabilirim.

Yeniden başlattıktan sonra nihayet girdim. İlk önce, güncelleyelim:

sudo apt güncelleme && sudo apt yükseltme -y

Şimdi bu yeni cihazı Bulut'a bağlayalım.

3. Adım: Cloud4RPi'yi Yükleme

Cloud4RPi'yi Yükleme
Cloud4RPi'yi Yükleme

IoT için tasarlanmış Cloud4RPi adlı bulut platformunu denemeye karar verdim.

Dokümanlara göre, onu çalıştırmak için aşağıdaki paketlere ihtiyacımız var:

sudo apt kurulumu git python python-pip -y

İstemci kitaplığı tek bir komutla kurulabilir:

sudo pip cloud4rpi yükleyin

Şimdi çalıştığından emin olmak için bazı örnek kodlara ihtiyacımız var.

git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git klon https://Gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e/minimal.py minimal.py && rmdir -re

Minimal.py'yi çalıştırmaya karar verdim, ancak sahte verileri sevmiyorum. Neyse ki, bu örnekte tanılama verilerini gerçeğe dönüştürmenin kolay bir yolunu fark ettim. İçe aktarma bölümüne bir içe aktarma daha ekleyin:

rpi'den içe aktarma *

Ardından, sahte veri sağlayan bu işlevleri silin (rpi.py şimdi bunları tanımlar):

tanımlı işlemci_temp():

return 70 def ip_address(): '8.8.8.8' def host_name(): 'hostname' def os_name(): 'osx' döndür

Şimdi Cloud4RPi'nin cihazları hesaplara bağlamasını sağlayan bir jetona ihtiyacımız var. Bir tane almak için cloud4rpi.io'da bir hesap oluşturun ve bu sayfadaki Yeni Cihaz düğmesine basın. Minimal.py dosyasındaki _YOUR_DEVICE_TOKEN_ dizesini cihazınızın belirteci ile değiştirin ve dosyayı kaydedin. Şimdi ilk lansman için hazırız.

piton minimal.py

Cihaz sayfasını açın ve verilerin orada olup olmadığını kontrol edin.

Şimdi gerçek dünya verilerine geçelim.

Adım 4: Sensörü Bağlama

Sensörü Bağlama
Sensörü Bağlama

İhtiyacımız olacak:

  • DHT22 veya DHT11 nem sensörü
  • Pull-up direnci (5-10 KΩ)
  • teller

DHT22 sensörü, aynı anda sıcaklık ve nemi ölçer. İletişim protokolü standartlaştırılmamıştır, bu nedenle onu raspi-config'de etkinleştirmemize gerek yoktur - basit bir GPIO pini fazlasıyla yeterlidir.

Verileri elde etmek için Adafruit'in DHT sensörleri için harika kitaplığını kullanacağım, ancak olduğu gibi çalışmayabilir. Bir keresinde kodda, donanımım için çalışmayan garip bir sabit gecikme buldum ve iki yıl sonra çekme isteğim hala beklemede. BCM2835'li Raspberry Pi 1'im şaşırtıcı bir şekilde Raspberry Pi 3 olarak algılandığı için kart algılama sabitlerini de değiştirdim. Keşke gerçek olsaydı… Bu yüzden çatalımı kullanmanızı tavsiye ederim. Bununla ilgili herhangi bir sorun yaşarsanız, lütfen orijinal depoyu deneyin, belki birilerinin işine yarar ama ben onlardan biri değilim.

git klon https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Kitaplık C ile yazıldığı için derleme gerektirir, bu nedenle build-essential ve python-dev paketlerine ihtiyacınız vardır.

sudo apt kurulum inşa-temel python-dev -ysudo python setup.py kurulumu

Paketler kurulurken DHT22'yi resimdeki gibi bağlayınız.

Ve test edin:

cd ~python -c "Adafruit_DHT'yi d olarak içe aktar; d.read_retry (d. DHT22, 4) yazdır"

(39.20000076293945, 22.600000381469727) gibi bir şey görürseniz, bunun yüzde cinsinden nem ve Santigrat cinsinden sıcaklık olduğunu bilmelisiniz.

Şimdi her şeyi bir araya getirelim!

Adım 5: Sensör Okumalarını Buluta Gönderme

Sensör Okumalarını Buluta Gönderme
Sensör Okumalarını Buluta Gönderme

Minimal.py'yi temel olarak kullanacağım ve içine DHT22 etkileşimini ekleyeceğim.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~/cloud_dht22.py cp rpi.py ~/rpi.py cd vi cloud_dht22.py

DHT22 tek bir çağrıda hem sıcaklığı hem de nemi döndürdüğü için, bunları global olarak saklıyorum ve aralarındaki gecikmenin 10 saniyeden fazla olduğunu varsayarak yalnızca bir istekte güncelliyorum. DHT22 verilerini alan aşağıdaki kodu göz önünde bulundurun:

Adafruit_DHT'yi içe aktar

temp, uğultu = Yok, Yok last_update = time.time() - 20 tanımlı update_data(): global last_update, uğultu, temp if time.time() - last_update > 10: uğultu, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time() def get_t(): update_data() dönüş turu(temp, eğer temp değilse 2) Başka Yok def get_h(): update_data() uğultu değilse dönüş turu(uğultu, 2) Başka Yok

Bu kodu mevcut içe aktarmalardan sonra ekleyin ve değişkenler bölümünü yeni işlevleri kullanacak şekilde düzenleyin:

değişkenler = {

'DHT22 Temp': { 'type': 'numeric', 'bind': get_t }, 'DHT22 Nem': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type ': 'sayısal', 'bağlama': cpu_temp } }

Veri aktarımını başlatmak için kırmızı düğmeye basın:

python cloud_dht22.py

Ardından cihaz sayfasını kontrol edebilirsiniz.

Olduğu gibi bırakabilirsiniz ama ben her şey için bir hizmet almayı tercih ederim. Bu, betiğin her zaman çalışmasını sağlar. Tam otomatik komut dosyasıyla bir hizmet oluşturma:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Hizmetin başlatılması:

sudo hizmeti cloud4rpi başlangıcı

Ve kontrol etmek:

pi@raspberrypi:~ $ sudo hizmeti cloud4rpi durumu -l

● cloud4rpi.service - Cloud4RPi arka plan programı Yüklendi: yüklendi (/lib/systemd/system/cloud4rpi.service; etkin) Etkin: 2017-05-17 Çarşamba 20:22:48 UTC'den beri aktif (çalışıyor); 1 dakika önce Ana PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py17 Mayıs 20:22:51 raspberrypi python[560]: Publishing iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]}17 Mayıs 20:22:53 raspberrypi python[560]: iot-hub/mesaj yayınlama: {'type': 'data', 'ts': '2017-05-17T20:2…40'}}17 Mayıs 20:22:53 raspberrypi python[560]: iot-hub/messages yayınlama: {'type': 'sistem', 'ts': '2017-05-17T20….4'}}

Her şey beklendiği gibi çalışıyorsa, Cloud4RPi platformunun verileri işlemek için yeteneklerini kullanabiliriz.

Adım 6: Grafikler ve Alarmlar

Grafikler ve Alarmlar
Grafikler ve Alarmlar
Grafikler ve Alarmlar
Grafikler ve Alarmlar
Grafikler ve Alarmlar
Grafikler ve Alarmlar

Her şeyden önce, nasıl değiştiklerini görmek için değişkenleri çizelim. Bu, yeni bir Kontrol Paneli ekleyerek ve gerekli çizelgeleri buna yerleştirerek yapılabilir.

Burada yapabileceğimiz başka bir şey de bir Uyarı ayarlamaktır. Bu özellik, bir değişken için güvenli aralığı yapılandırmanızı sağlar. Menzil aşılır aşılmaz bir e-posta bildirimi gönderir. Kontrol Paneli düzenleme sayfasında, Uyarılar'a geçebilir ve bir tane ayarlayabilirsiniz.

Hemen ardından odamdaki nem, fark edilir bir sebep olmaksızın hızla azalmaya başladı ve hemen ardından alarm geldi.

Cloud4RPi'yi Python çalıştırabilen herhangi bir donanımla ücretsiz olarak kullanabilirsiniz. Bana gelince, artık hava nemlendiriciyi ne zaman açacağımı her zaman biliyorum ve hatta Cloud4RPi aracılığıyla uzaktan kontrol için bir röleye bile bağlayabilirim. Sıcaklara hazırım! Hoşgeldin yaz!

Önerilen: