İçindekiler:

IoT Çift Sıcaklık Veri Sunucusu: 12 Adım (Resimlerle)
IoT Çift Sıcaklık Veri Sunucusu: 12 Adım (Resimlerle)

Video: IoT Çift Sıcaklık Veri Sunucusu: 12 Adım (Resimlerle)

Video: IoT Çift Sıcaklık Veri Sunucusu: 12 Adım (Resimlerle)
Video: Geri dönülemeyecek o noktaya sadece 12 yıl kaldı! 2024, Haziran
Anonim
IoT Çift Sıcaklık Veri Sunucusu
IoT Çift Sıcaklık Veri Sunucusu

Bu, bir Eğitilebilir Yazı yazma konusundaki ilk girişimim ve bu yüzden lütfen bana kolay gelsin! Bunun çok da kötü olmadığını düşünüyorsanız, lütfen İlk Kez Yazar Yarışmasında bana oy verin.

Bu, bir serada biri zemin seviyesinde ve diğeri çatının hemen altında olmak üzere 2 sıcaklığı uzaktan izlemek için benim Kilitleme projem. Raspberry Pi'yi (RPi) daha önce kullanmış olmama rağmen, bu proje kullanmadığım birkaç unsuru içeriyordu ve bu arada, güncel olmayan veya tamamen yanlış olan birkaç öğretici buldum. Bu, yol boyunca edindiğim bir Pi Zero ve 2 DS18B20+ Tek Telli Dijital Sıcaklık Sensöründen çalışan bir çift uzaktan sıcaklık monitörü yapmak için edindiğim bilgi birikimim.

Hakkında öğrendiğim şeyler:

  • Nesnelerin İnterneti'nin (IoT) bir parçası olarak bir cihazdan veri kullanılabilir hale getirme
  • 2 cihazlı 1 telli arayüz
  • Veri açıklığı
  • JSON verileri
  • UFW güvenlik duvarını kurma
  • Verileri görüntülemek için Freeboard.io'yu kullanma
  • Programı otomatik olarak çalıştırmak için RPi'yi yapılandırma

Tüm bu konularda basit bir arama ile bulunabilecek çok büyük miktarda veri var, ancak o kadar net olmayan şey, tüm bu ayrı öğelerin nasıl birleştirileceğidir.

Gereçler

  • Bir Raspberry Pi'ye ihtiyacınız olacak (bitmiş projeyi çalıştırırken değil, kurulum için bir monitör, fare ve klavye ile)
  • Çalışan bir internet bağlantısı.
  • Mikro USB konektörlü bir PSU
  • 2 adet DS18B20+ Tek Telli Dijital Sıcaklık Sensörü. Amazon'un en ucuzu buldum
  • 4K7 ohm direnç veya 2 adet 10K ohm direnç kullandım.
  • Tezgahta test etmek için küçük devre tahtası ve birkaç erkek/dişi kablo
  • Son montaj için küçük şerit levha parçası
  • Lehimleme ve tel soyma için basit araçlar.
  • Bitmiş tasarımı barındırmak için küçük plastik kutu

Adım 1: Donanım

Donanım
Donanım
Donanım
Donanım

Zaten bir Raspberry Pi Zero W'm vardı (kablosuz) ama bu basit projenin herhangi bir RPI'da iyi çalışacağından eminim. Atölyemdeki tuhaf elektronik bitlerin kutusunda diğer her şey (breadboard, tel, PSU vb.) vardı ve bu yüzden satın almam gereken tek şey Amazon'dan iki adet 2 x DS18B20 sensördü. Bunlar, su geçirmez bir muhafazaya ve 3m kabloya kolayca monte edilmiş normal DS18B20 yongalarıdır. Kablodan 3 tel var:

  • Kırmızı – güç – 3.3v pin 1'e bağlayın
  • Siyah – dönüş – topraklama pimine 6 bağlayın
  • Sarı – veri – GPIO4 pin 7'ye bağlanın

Sensörler 1-Wire arayüzünü kullanır ve bağlanması ve veri alması çok kolaydı. Web'de 1 cihazın bağlantısına ilişkin ayrıntıların yer aldığı ancak 2 (veya daha fazlasının) bağlanmasıyla ilgili çok az ayrıntı içeren birkaç sayfa vardır.

Tezgahta test etmek için devre bir breadboard kullanılarak monte edildi. Bulduğum öğreticiler, veri hattını yönlendirmek için bir 4K7 direnç kullandığını belirtti, ancak bir tane bulamadım ve paralel olarak 2 * 10K kullandım ve gayet iyi çalıştı. Web'de RPi devrelerini birleştirmek için bir devre tahtası kullanmak için birçok kaynak var ve bu yüzden onları burada tekrar etmeyeceğim.

Devre Şeması kullanılarak oluşturulan diyagram

2. Adım: Raspberry Pi OS Yazılım Kurulumu

Raspberry Pi OS Yazılım Kurulumu
Raspberry Pi OS Yazılım Kurulumu
Raspberry Pi OS Yazılım Kurulumu
Raspberry Pi OS Yazılım Kurulumu
Raspberry Pi OS Yazılım Kurulumu
Raspberry Pi OS Yazılım Kurulumu

Bu RPi'yi daha önce kullandığım için, işletim sisteminin temiz kurulumuyla başlamaya karar verdim, SD kartı yeniden biçimlendirdim ve temiz bir NOOBS sürümü yükledim. Daha sonra Raspian'ın tam masaüstü sürümünü (en iyi seçenek) kurdum çünkü bu, lite sürümünde olmayan PIP & GIT'i de kuracaktır. Proje için Grafik Kullanıcı Arayüzüne (GUI) ihtiyacım olmamasına rağmen, tüm seçenekleri kurmanın kolay bir yolu ve 16GB SD kart ile yer sıkıntısı yoktu.

WI-FI erişimini kurdum, ardından tam kurulumu çalıştırdım ve ardından güncellemeler ve yükseltmeler vb. içeren sihirbazı çalıştırdım. GUI'yi kullanarak RPI'yi gerektiği gibi kurarım çünkü GUI'yi kullanmak Komut Satırı Arabiriminden (CLI) daha basittir. Menüden yapılandırma penceresine gittim ve ardından:

  • Sistem sekmesinde parolayı değiştirdim, CLI'ye önyükleme yapacak şekilde ayarladım ve Otomatik Oturum Açma'nın işaretini kaldırdım
  • Arayüzler sekmesinde 1 kablolu etkinleştirdim
  • Tamam tıklandı ve yeniden başlatıldı

Herhangi bir zamanda GUI'ye geri dönmeniz gerekirse, CLI'ye startx yazmanız yeterlidir.

startx

3. Adım: Uzaktan Erişime İzin Vermek için Dataplicity'yi Ayarlayın

Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu
Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu
Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu
Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu
Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu
Uzaktan Erişime İzin Vermek için Dataplicity Kurulumu

blog.dataplicity.com/how-to-build-a-raspb… adresindeki Dataplicity sitesinde gerçekten yararlı bir blog girişi buldum ve bunun birkaç bölümünü kullandım. Blogun 3. Bölümü, RPi'ye uzaktan erişim için Dataplicity'nin ayarlanmasını açıklar. Dataplicity'yi daha önce hiç kullanmadım, ancak şunu söylemeliyim ki, çok basit bir uzaktan erişim aracı olarak kesinlikle tavsiye ediyorum. Ekran görüntüleri (yukarıdaki blogda) biraz güncel olmasa da, prensip gayet iyi.

PC'nizde Dataplicity.com'a gidin ve bir hesap oluşturun (tarayıcıyı GUI'de kullanabilirsiniz, ancak RPi Zero'da oldukça yavaş). Ardından “yeni cihaz ekle” düğmesine tıklayın ve açılır pencerede bir kod satırı görüntülenir. Ardından RPi'deki CLI'ye gidin ve metin satırını yazın. Her şey yolundaysa, Dataplicity logosu görüntülenecek ve yükleme programı çalışacaktır.

Bilgisayarınıza döndüğünüzde, yeni cihaz şimdi Dataplicity web sitesinde görünmelidir. Cihaza tıklayın ve RPi'niz için bir terminal ekranı görmelisiniz.

Burada dikkat edilmesi gereken birkaç nokta var:

  • Oturum açmak için "su pi" yazın (süper kullanıcı erişimi için) ve sizden parola istenir (daha önce ayarlandığı gibi)
  • Wormhole'u etkinleştirmeniz gerekiyor (daha sonra kullanılmak üzere)
  • Verileri daha sonra görüntülemek için Solucan deliği adresine ihtiyacınız olacak (gerektiğinde kopyalamak için sağ tıklayın)

Bu uzaktan erişimi aşağıdaki tüm adımlar için kullanabilirsiniz ve verileri, programları vb. kopyalamak için doğrudan RPi'ye göre çok daha kolaydır.

Adım 4: Sensörleri Kontrol Edin

Artık sonraki tüm bölümler için Dataplicity'nin RPI'ye uzaktan erişimini kullanabilirsiniz.

Şimdi her şey tamamsa, DS18B20'lerden döndürülen sıcaklıkları görebilmeniz gerekir. Pi Hut öğreticisi üzerinde çalıştım ama bunun çoğu gerekli değildi. Tüm detayları isterseniz burada bulabilirsiniz:

Önemli bitler, cihazlar dizinine gitmek ve 2 farklı sensörün gösterildiğinden emin olmaktır.

cd /sys/bus/w1/cihazlar/

Bu, 28- ile başlayan 2 cihazı ve bus master'ı göstermelidir. Benimkiler:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Bu 2 kimlik numarası önemlidir ve daha sonra gerekli olacaktır! Ardından sensör dizinlerinden birine geçin:

cd 28-011453ebfdaa

(örneğin) ve ardından değeri sensörden okumak için

kedi w1_slave

Gösterilen 2 satır metin olmalıdır:

53 01 4b 46 7f ff 0c 10 2d: crc=2d EVET

53 01 4b 46 7f ff 0c 10 2d t=21187

EVET, sensörün doğru okuduğunu gösterir ve 21187, 21.187 Santigrat cinsinden sıcaklığı gösterir (1000'e bölün) İkinci sensörü kontrol etmek için bunu tekrarlayın. Her ikisi de tamamsa, verileri Python3 ile okumaya devam edebiliriz.

Web'de bulduğum aşağıdaki kodu kopyalayıp uyarladım ama nereden olduğunu hatırlayamıyorum. Bu sizin kodunuz gibi görünüyorsa, hiçbir intihal amaçlanmadığı için özür dilerim; lütfen bana bildirin ve çalışmanızı onaylayacağım.

Projeler adında bir dizin oluşturun ve bu dizine geçin.

mkdir ~/projeler

cd ~/projeler

Bu dizinde, termo-test.py adlı bir dosya oluşturmak ve düzenlemek için metin düzenleyiciyi (nano) kullanın.

sudo nano termo-test.py

Bunun düzenleyiciyi açması gerekirdi ve Dataplicity'yi kullanırken aşağıdaki kodu (thermo-test.py) kopyalayıp düzenleyiciye yapıştırabilirsiniz. 2 cihaz adını (28-… ile başlayan) yukarıda belirtilenlerle değiştirmeniz gerekecektir. Her şey doğru göründüğünde, bitirmek için ctrl+X'e, kaydetmek için Y'ye basın ve mevcut adı kullanmak için geri dönün. GUI kullanmayı tercih ederseniz, Thonny de aynısını yapacaktır.

Test programını çalıştırmak için:

sudo python3 termo-test.py

Her şey yolundayken, bu dosyayı python 3 kullanarak çalıştırmalı ve her 10 saniyede bir ekrana 2 sıcaklığı yazdırmalıdır. 1 sensörü buzlu suya yerleştirerek veya saç kurutma makinesiyle hafifçe ısıtarak her şeyin yolunda olduğunu test edebilirsiniz. Her şey yolunda görünüyorsa, devam edebiliriz!

Adım 5: UFW Güvenlik Duvarı

UFW Güvenlik Duvarı
UFW Güvenlik Duvarı

Bu RPi internete kalıcı olarak bağlı olacağından, bir Güvenlik Duvarının iyi bir fikir olacağına karar verdim ve kullanımı basit olanın Karmaşık Olmayan Güvenlik Duvarı (ufw) olduğuna karar verdim. Burada çok basit bir eğitim var

Bu Eğitilebilir Yazının amacı bu olmadığı için çok derine inmeyeceğim, ancak kısaca:

Güvenlik duvarını şununla yükleyin:

sudo apt-get kurulum ufw

Varsayılan kuralları ayarlayın:

sudo ufw varsayılanı gidene izin veriyor

sudo ufw varsayılan gelenleri reddet

Dataplicity için 80 numaralı bağlantı noktasını açın

sudo ufw 80'e izin veriyor

Güvenlik duvarını etkinleştir

sudo ufw etkinleştir

Durumu kontrol edin ve her şeyin çalıştığından emin olun

sudo ufw durumu

Adım 6: Sıcaklık Verilerini JSON Olarak Gönderme

Sıcaklık Verilerini JSON Olarak Gönderme
Sıcaklık Verilerini JSON Olarak Gönderme

Tim Fernando'nun bloguna ve 5. bölüme geri dönün.

Belirtilen adımları izleyin (biz zaten proje dizinini oluşturduk hariç) ve her şey yolunda gitmelidir. GIT'i kullanarak Tim'in uygulama dosyalarını indireceksiniz ve PIP, gerekli tüm programların RPi'nize yüklendiğinden emin olacaktır. Daha sonra paketlerin doğru şekilde kurulduğundan emin olmak için yeniden başlatmam gerektiğini öğrendim.

Ardından Tim'in programını çalıştırın ve RPi'niz ilk sensör için JSON verilerini sağlıyor olmalıdır.

cd ana sayfa/pi/projeler/ sıcaklık-serve-pi

sudo gunicorn sıcaklığı:app -b 0.0.0.0:80

Sensörlerden 1'i için verilerin sağlandığını göreceğiniz bölüm 6'ya blog üzerinden devam edebilirsiniz.

Verileri görmek için JSON Viewer'ı da kullanabilirsiniz https://codebeautify.org/jsonviewer "URL yükle" düğmesini tıklayın ve daha önce belirtilen Solucan Deliği adresini yapıştırın. Sol bölmede, biri Celsius ve diğeri Fahrenheit için olmak üzere iki giriş görmelisiniz.

7. Adım: Her İki Sensörden Veri Gönderin

Her İki Sensörden Veri Gönderin
Her İki Sensörden Veri Gönderin

Sıcaklıklar.py ve termo-test.py içindeki koda dayanarak, /projects/temperature-serve-pi dizininde daha önce olduğu gibi 2temps.py Düzenlendi, kodu yapıştırdım ve kaydettim. sonra koştum

sudo gunicorn 2temps:app -b 0.0.0.0:80

Şimdi JSON Viewer'ı yeniden çalıştırdığımda temp1 & temp2 için değerler aldım

Başarı:)

Adım 8: Otomatik Başlatma

Otomatik başlatma
Otomatik başlatma

Seranın gücü ara sıra kesildiğinden, RPi'nin programı otomatik olarak yüklemesini ve verileri kanıtlamaya başlamasını istedim. En basit yol, rc.local dosyasını düzenlemek ve gerekli kodu çıkış 0 satırının hemen üstüne eklemek gibi görünüyor.

cd vb.

sudo nan rc.yerel

sonra eklenti

uyku 10

cd ana sayfa/pi/projeler/sıcaklık-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &

  • Sondaki &, bilgisayara komut dosyasını bir alt kabukta çalıştırmasını söyler, böylece bilgisayarınızın işlevin bitmesini beklemez ve önyüklemeye devam eder.
  • Uyku 10 [saniye], hizmete başlamadan önce önceki tüm işlemlerin tamamlandığından emin olur.

Çıkın ve daha önce olduğu gibi kaydedin. Ardından, her şeyin yolunda olup olmadığını kontrol etmek için JSON Viewer'ı yeniden başlatın ve yeniden çalıştırın.

Otomatik çalışan programlar hakkında daha fazla bilgi istiyorsanız, burada harika bir öğretici var

9. Adım: Verileri Freeboard.io'da Görüntüleyin (1)

Verileri Freeboard.io'da Görüntüle (1)
Verileri Freeboard.io'da Görüntüle (1)

Özetle, Tim'in blogundaki adımlar iyi çalışıyor; www.freeboard.io adresinde bir hesap oluşturun ve ardından yeni bir Freeboard oluşturun, benim SHEDTEMPERATURES adını verdim.

İlk olarak, bir veri kaynağı ekleyin, sağ üstteki EKLE'ye tıklayın ve açılır pencereden tür olarak JSON'u seçin, veri kaynağına bir İSİM verin, daha önceki solucan deliği adresini URL olarak ekleyin ve THINGPROXY DENEYİN için HAYIR'a tıklayın. Sıcaklıklar yalnızca çok yavaş değişir ve bu nedenle HER 15 SANİYEDE YENİLEYİN. KAYDET'i tıklayın.

Adım 10: Verileri Freeboard.io'da Görüntüleyin (2)

Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)
Verileri Freeboard.io'da Görüntüleyin (2)

BÖLÜM EKLE'yi ve ardından ilk widget'ı eklemek için +'yı tıklayın. Çeşitli TÜRLERİ seçip oynayabilirsiniz ama Gauge'un gayet iyi olduğunu gördüm. Uygulamanıza uygun bir BAŞLIK, BİRİMLER (C), MİNİMUM ve MAKSİMUM verin. DATASOURCE için + işaretini tıklayın, yukarıda oluşturulan kaynak görünecektir.

Açılır menü şimdi daha önce oluşturulmuş 2 JSON veri kaynağını (temp2 ve temp2) göstermelidir. Uygun kaynağı seçin ve kaydet'i tıklayın.

Bunu ikinci gösterge için tekrarlayın ve hepimiz hazırız.

Veriler şimdi 2 göstergede görüntülenmelidir ve hala bir monitöre bağlı PRi varsa, geldikçe Freeboard.io'dan gelen istekleri görmelisiniz.

Adım 11: Projeyi Bir Kutuya İnşa Edin

Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin
Projeyi Bir Kutuya İnşa Edin

Bu noktaya kadar, RPI ve diğer bileşenlerin tümü bir devre tahtası kullanılarak tezgah üzerine monte edilmişti. Daha sonra breadboard'u değiştirmek için küçük bir stripboard parçası kullanıldı ve kabloların tümü yerine lehimlendi.

Bol miktarda alana sahip ve RPI'nin fazla ısınmayacağı parlak pembe küçük bir Lego saklama kutusu bulundu. kutunun kenarlarına delikler açılmış ve RPi ve stripboard'u yerinde tutmak için 3 mm naylon montaj direkleri kullanılmıştır.

GPIO, 3.3v, GND ve verilerden yalnızca 3 bağlantı gereklidir.

  • 3.3vdc pin 1
  • GND pimi 6
  • Veri (GPIO4) pim 7

USB gücü ve sıcaklık sensörlerine giden kablolar için kutuya delikler de eklendi. Her şey yerine monte edildikten sonra, örümceklerin kışı geçirmek için güzel ve sıcak bir yer olduğunu düşünmemelerini sağlamak için az miktarda silikon dolgu macunu eklendi!

Adım 12: Tamamlandı

bitmiş
bitmiş
bitmiş
bitmiş

Kutu seraya yerleştirildi ve bir USB şarj cihazından güç aldı. Fidelerin gece ne kadar soğuduğunu kontrol etmek için iki sensör biri seranın tepesine, diğeri bir saksıya yerleştirildi.

Bu benim ilk Eğitilebilirliğim ve umarım bunun iyi olduğunu düşünürsünüz. Herhangi bir hata bulursanız lütfen bana bildirin ve gerektiğinde düzelteceğim. Bir sonraki adım, her (diyelim) 60 saniyede bir verileri günlüğe kaydetmek olabilir, ancak bu daha sonra gelecektir.

Önerilen: