Mündəricat:

IoT Dual Temperatur Data Server: 12 Addım (Şəkillərlə birlikdə)
IoT Dual Temperatur Data Server: 12 Addım (Şəkillərlə birlikdə)

Video: IoT Dual Temperatur Data Server: 12 Addım (Şəkillərlə birlikdə)

Video: IoT Dual Temperatur Data Server: 12 Addım (Şəkillərlə birlikdə)
Video: Subnet Mask - Explained 2024, Noyabr
Anonim
IoT Dual Temperatur Məlumat Serveri
IoT Dual Temperatur Məlumat Serveri

Bu, Təlimatlandırıcı yazmaq üçün ilk cəhdimdir və lütfən mənimlə rahat olun! Bunun çox da pis olmadığını düşünürsənsə, zəhmət olmasa İlk dəfə Müəllif Müsabiqəsində mənə səs ver.

Bu, istixanada biri mərtəbə səviyyəsində, biri də damın altındakı 2 temperaturu uzaqdan izləmək üçün Lock-Down layihəmdir. Daha əvvəl Raspberry Pi -dən (RPi) istifadə etsəm də, bu layihədə istifadə etmədiyim bir neçə element var idi və yol boyu köhnəlmiş və ya səhv olan bir neçə dərslik tapdım. Yol boyu əldə edilmiş bir Pi Zero & 2 DS18B20+ Bir Telli Rəqəmsal Temperatur Sensorlarından işləyən ikili uzaqdan temperatur monitoru etmək üçün biliklər toplusumdur.

Öyrəndiyim şeylər:

  • Əşyaların İnterneti (IoT) çərçivəsində bir cihazdan məlumat əldə etmək
  • 2 cihazlı 1 telli interfeys
  • Məlumat
  • JSON məlumatları
  • UFW təhlükəsizlik divarının qurulması
  • Məlumatları göstərmək üçün Freeboard.io istifadə edin
  • Proqramı avtomatik işə salmaq üçün RPi -nin konfiqurasiyası

Bütün bu mövzularda sadə bir axtarışla tapıla bilən çox miqdarda məlumat var, amma bu qədər aydın olmayan şey bütün bu ayrı elementləri necə birləşdirməkdir.

Təchizat

  • Raspberry Pi -yə ehtiyacınız olacaq (qurmaq üçün monitor, siçan və klaviatura ilə, lakin bitmiş layihəni işləyərkən deyil)
  • İşləyən internet bağlantısı.
  • Mikro USB konnektoru olan PSU
  • DS18B20+ Bir Telli Rəqəmsal Temperatur Sensorlarından 2 -si. Amazonun ən ucuz olduğunu tapdım
  • 4K7 ohm müqavimət və ya 2 10K ohm rezistor istifadə etdim.
  • Kiçik çörək taxtası və dəzgahda sınaq üçün bir neçə kişi/qadın tel
  • Son montaj üçün kiçik bir zolaq parçası
  • Lehimləmə və telin soyulması üçün sadə alətlər.
  • Bitmiş dizaynı yerləşdirmək üçün kiçik plastik qutu

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Artıq bir Raspberry Pi Zero W (simsiz) var idi, amma əminəm ki, bu sadə layihə hər hansı bir RPI -də yaxşı işləyəcək. Seminarımdakı qəribə elektron bit qutusunda başqa hər şey var idi (çörək taxtası, tel, PSU və s.) Və buna görə Amazon -dan 2 ədəd 2 x DS18B20 sensoru almalı oldum. Bunlar suya davamlı bir korpusa və 3 metrlik bir kabelə asanlıqla quraşdırılmış normal DS18B20 çipləridir. Kabeldən 3 tel var:

  • Qırmızı - güc - 3.3v pin 1 -ə qoşulun
  • Qara - qayıt - 6 -cı torpaq pininə qoşulun
  • Sarı - məlumatlar - GPIO4 pin 7 -ə qoşulun

Sensorlar 1-Wire interfeysindən istifadə edir və qoşulmaq və məlumat əldə etmək çox asandır. İnternetdə 1 cihazın əlaqəsi ilə bağlı təfərrüatları olan bir neçə səhifə var, ancaq 2 -ni (və ya daha çoxunu) bağlamaqda çox azdır.

Dəzgahda test etmək üçün dövrə bir çörək taxtası istifadə edərək yığılmışdır. Tapdığım dərslərdə, məlumat xəttini təhrif etmək üçün 4K7 rezistorundan istifadə edildiyi ifadə edildi, amma birini tapa bilmədim və buna görə paralel olaraq 2* 10K istifadə etdim və çox yaxşı işləyirdi. İnternetdə RPi sxemlərini yığmaq üçün bir çörək taxtasından istifadə etmək üçün çoxlu mənbələr var və buna görə də onları burada təkrarlamayacağam.

Dövrə Şeması istifadə edərək yaradılan diaqram

Addım 2: Raspberry Pi OS Proqram Quraşdırması

Raspberry Pi OS Proqram Quraşdırması
Raspberry Pi OS Proqram Quraşdırması
Raspberry Pi OS Proqram Quraşdırması
Raspberry Pi OS Proqram Quraşdırması
Raspberry Pi OS Proqram Quraşdırması
Raspberry Pi OS Proqram Quraşdırması

Daha əvvəl bu RPi -dən istifadə etdiyim üçün OS -nin təmiz bir quruluşu ilə başlamağa qərar verdim, SD kartı yenidən formatladım və NOOBS -un təmiz bir versiyasını quraşdırdım. Daha sonra Raspianın tam masa üstü versiyasını (ən yaxşı seçim) quraşdırdım, çünki bu da Lite versiyasında olmayan PIP & GIT quracaq. Layihə üçün Qrafik İstifadəçi İnterfeysinə (GUI) ehtiyacım olmasa da, bütün variantları qurmağın asan bir yoludur və 16 gb SD kartı ilə yer çatışmazlığı yox idi.

WI-FI girişini qurdum, sonra tam quraşdırma və sonra sihirbazı yeniləmələr və təkmilləşdirmələr və s. GUI istifadə edərək, GUI-ni istifadə etmək Komanda Satırı İnterfeysindən (CLI) daha sadə olduğu üçün lazım olduğu kimi RPI qururam. Menyudan konfiqurasiya pəncərəsinə getdim və sonra:

  • Sistem sekmesinde, parolumu dəyişdirdim, CLI -ə yükləməyi təyin etdim və Avtomatik Giriş yoxlanılmadı
  • İnterfeyslər sekmesinde 1 telli aktiv etdim
  • Tamam düyməsini basın və yenidən yükləyin

İstənilən vaxt GUI -yə qayıtmaq lazımdırsa, CLI -də startx yazın

startx

Addım 3: Uzaqdan Girməyə İzin Veriləcək Məlumatlılığı Qurun

Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun
Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun
Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun
Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun
Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun
Uzaqdan girişə icazə vermək üçün məlumat ötürmə qabiliyyətini qurun

Https://blog.dataplicity.com/how-to-build-a-raspb… ünvanındakı Dataplicity saytında həqiqətən faydalı bir blog girişi tapdım və bunun bir neçə hissəsini istifadə etdim. Bloqun 3 -cü bölməsi, RPi -yə uzaqdan giriş üçün Dataplicity qurmağı təsvir edir. Daha əvvəl heç vaxt Dataplicity istifadə etməmişəm, amma demək lazımdır ki, çox sadə bir uzaqdan giriş vasitəsi olaraq tövsiyə edirəm. Ekran görüntüləri (yuxarıdakı bloqda) bir qədər köhnə olsa da, prinsip qaydasındadır.

Kompüterinizdə Dataplicity.com saytına daxil olun və bir hesab yaradın (brauzeri GUI -də istifadə edə bilərsiniz, ancaq RPi Sıfırda daha yavaş). Sonra "yeni cihaz əlavə et" düyməsini basın və açılan pəncərədə bir kod xətti görünür. Sonra RPi -də CLI -ə gedin və mətn sətrinə yazın. Hər şey qaydasındadırsa, Dataplicity loqotipi görünəcək və quraşdırma proqramı işləyəcək.

Kompüterinizə qayıdın, yeni cihaz artıq Dataplicity veb saytında görünməlidir. Cihazı vurun və RPi üçün bir terminal ekranı görməlisiniz.

Burada bir neçə məqama diqqət yetirmək lazımdır:

  • Daxil olmaq üçün "su pi" yazın (super istifadəçi girişi üçün) və sizdən parol istənəcək (əvvəllər təyin olunduğu kimi)
  • Wormhole'u aktiv etməlisiniz (daha sonra istifadə ediləcək)
  • Veriləri daha sonra göstərmək üçün Wormhole ünvanına ehtiyacınız olacaq (lazım olduqda kopyalamaq üçün sağ klikləyin)

Bu uzaqdan girişi aşağıdakı bütün addımlar üçün istifadə edə bilərsiniz və məlumatları, proqramları və s. Kopyalamaq birbaşa RPi üzərində olduğundan daha asandır.

Addım 4: Sensorları yoxlayın

İndi bütün sonrakı hissələr üçün Dataplicity -dən RPI -ə uzaqdan girişdən istifadə edə bilərsiniz.

İndi hər şey qaydasındadırsa, temperaturun DS18B20 -dən qaytarıldığını görə bilməlisiniz. Pi Hut dərsliyində işlədim, amma bunun çoxu lazım deyildi. Tam məlumat almaq istəyirsinizsə, burada tapa bilərsiniz:

Cihazlar qovluğuna keçmək və 2 fərqli sensorun göstərilməsini təmin etmək vacibdir.

cd/sys/bus/w1/cihazlar/

Bu, 28 ilə başlayan 2 cihazı və avtobus ustasını göstərməlidir. Mənim şoularım:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Bu 2 şəxsiyyət nömrəsi vacibdir və daha sonra lazım olacaq! Sonra sensor qovluqlarından birinə keçin:

cd 28-011453ebfdaa

(məsələn) və sonra sensordan dəyəri oxumaq üçün

pişik w1_slave

Göstərilən 2 sətir mətn olmalıdır:

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

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

Bəli, sensorun düzgün oxuduğunu göstərir və 21187 21.187 -də Selsi temperaturunu göstərir (1000 -ə bölün) İkinci sensoru yoxlamaq üçün bunu təkrarlayın. Hər ikisi də yaxşı oxuyursa, Python3 ilə məlumatları oxumağa davam edə bilərik.

İnternetdə tapdığım, amma haradan olduğunu xatırlaya bilmədiyim aşağıdakı kodu kopyaladım və uyğunlaşdırdım. Bu kodunuza bənzəyirsə, heç bir plagiat nəzərdə tutulmadığı üçün üzr istəyirəm; zəhmət olmasa mənə bildirin və işinizi qəbul edəcəyəm.

Layihələr adlı bir kataloq yaradın və bu qovluğa keçin.

mkdir ~/layihələr

cd ~/layihələr

Bu qovluqda, thermo-test.py adlı bir fayl yaratmaq və redaktə etmək üçün mətn redaktorundan (nano) istifadə edin

sudo nano thermo-test.py

Bu redaktoru açmalı idi və Dataplicity-dən istifadə edərkən aşağıdakı kodu (thermo-test.py) kopyalayıb redaktora yapışdıra bilərsiniz. 2 cihaz adını (28- dən başlayaraq) yuxarıda qeyd olunanlara dəyişdirməlisiniz. Hər şey düzgün göründükdə, başa çatdırmaq üçün ctrl+X düymələrinə, saxlamaq və mövcud addan istifadə etmək üçün Y düymələrinə basın. GUI istifadə etmək istəsəniz, Thonny də eyni şeyi edəcək.

Test proqramını işə salmaq üçün:

sudo python3 thermo-test.py

Hər şey yaxşıdır, bu, python 3 istifadə edərək faylı icra etməli və hər 10 saniyədə 2 temperaturu ekrana çap etməlidir. Buzlu suya 1 sensor qoyaraq və ya saç qurutma maşını ilə yumşaq bir şəkildə istiləşdirərək hər şeyin yaxşı olduğunu sınaya bilərsiniz. Hər şey qaydasındadırsa, davam edə bilərik!

Addım 5: UFW Firewall

UFW Firewall
UFW Firewall

Bu RPi daimi olaraq internetə qoşulmaq niyyətində olduğu üçün bir Firewall -ın yaxşı bir fikir olacağına qərar verdim və istifadə etmək üçün sadə bir Kompleks Firewall (ufw). Burada çox sadə bir dərs var

Dərinliyə getməyəcəyəm, çünki bu Təlimatın məqsədi deyil, qısacası:

Təhlükəsizlik divarını aşağıdakılarla quraşdırın:

sudo apt-get ufw yükləyin

Varsayılan qaydaları təyin edin:

sudo ufw default gedənlərə icazə verir

sudo ufw default daxil olanı inkar edir

Məlumat üçün 80 portunu açın

sudo ufw icazə 80

Təhlükəsizlik divarını aktiv edin

sudo ufw imkan verir

Vəziyyəti yoxlayın və hər şeyin işlədiyinə əmin olun

sudo ufw statusu

Addım 6: İstilik Məlumatlarını JSON olaraq bitirin

S temperatur məlumatlarını JSON olaraq bitirir
S temperatur məlumatlarını JSON olaraq bitirir

Tim Fernandonun bloguna və 5 -ci hissəsinə qayıdın.

Bildirildiyi kimi addımları izləyin (layihələr kataloqunu yaratmağımız istisna olmaqla) və hamısı yaxşı işləməlidir. GIT -dən istifadə edərək Tim -in tətbiq fayllarını yükləyəcəksiniz və PIP bütün lazımi proqramların RPi -yə quraşdırıldığından əmin olacaq. Sonra paketlərin düzgün qurulduğundan əmin olmaq üçün yenidən yükləməli olduğumu gördüm.

Sonra Tim proqramını işə salın və RPi sonra ilk sensor üçün JSON məlumatlarını təqdim etməlidir.

cd ev/pi/layihələr/temperatur-xidmət-pi

sudo gunicorn temperaturu: tətbiq -b 0.0.0.0:80

Blogdan keçərək 6 hissəyə keçə bilərsiniz, burada sensorlardan 1 -i üçün məlumat verilir.

Verilənləri görmək üçün JSON Viewer -dən də istifadə edə bilərsiniz https://codebeautify.org/jsonviewer "URL yüklə" düyməsini basın və əvvəl qeyd etdiyimiz Wormhole ünvanına yapışdırın. Sol bölmədə, biri Selsi üçün, biri də Fahrenheit üçün iki giriş görməlisiniz.

Addım 7: Hər iki Sensordan Məlumat Göndərin

Hər iki Sensordan Məlumat Göndərin
Hər iki Sensordan Məlumat Göndərin

Temperatur.py və thermo-test.py kodlarına əsaslanaraq, 2temps.py kodunu əvvəlki kimi /projects /temperatur-xidmət-pi qovluğunda düzəltdim, kodu yapışdırıb saxladım. Sonra qaçdım

sudo gunicorn 2temps: app -b 0.0.0.0:80

İndi JSON Viewer-ı yenidən işlədərkən temp1 və temp2 üçün dəyərlər aldım

Uğurlar:)

Addım 8: Avtomatik Başlat

Avtomatik başlama
Avtomatik başlama

İstixana enerjisi zaman -zaman söndüyü üçün, RPi -nin proqramı avtomatik olaraq yükləməsini və məlumatları sübut etməyə başlamasını istədim. Ən sadə yol, rc.local faylını redaktə etmək və 0 nömrəli çıxışın üstündən aşağıya lazım olan kodu əlavə etməkdir.

cd və s

sudo nan rc.local

sonra əlavə edin

yatmaq 10

cd ev/pi/layihələr/temperatur-xidmət-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • & Sonunda kompüterə skriptin alt qabıqda işləməsini bildirir ki, kompüteriniz funksiyanın bitməsini gözləməsin və açılışa davam etsin.
  • Yuxu 10 [saniyə], xidmətə başlamazdan əvvəl əvvəlki bütün əməliyyatların tamamlandığından əmin olur.

Çıx və əvvəlki kimi saxla. Sonra hər şeyi yoxlamaq üçün JSON Viewer-ı yenidən başladın və yenidən başladın.

Avtomatik işləyən proqramlar haqqında daha çox məlumat əldə etmək istəyirsinizsə, burada əla bir dərs var

Addım 9: Məlumatları Freeboard.io -da göstərin (1)

Məlumatları Freeboard.io -da göstərin (1)
Məlumatları Freeboard.io -da göstərin (1)

Timin blogundakı addımlar, ümumilikdə, yaxşı işləyir; www.freeboard.io saytında bir hesab yaradın və sonra yeni bir Freeboard yaradın, mənim üçün ŞƏDDƏTLƏRİ çağırdım.

Birincisi, bir məlumat mənbəyi əlavə edin, sağ üstdəki ADD düyməsini basın və pop-updan JSON-u növ olaraq seçin, məlumat mənbəyinə NAME verin, URL kimi əvvəlki qurd deliği ünvanını əlavə edin və TRING THINGPROXY üçün NO düyməsini basın. Temperatur çox yavaş dəyişir və buna görə də hər 15 saniyədə bir yeniləyin. QAYDET düyməsini basın.

Addım 10: Məlumatları Freeboard.io -da göstərin (2)

Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)
Məlumatları Freeboard.io -da göstərin (2)

İlk vidceti əlavə etmək üçün ADD PANE və sonra + düyməsini basın. Müxtəlif növləri seçə və oynaya bilərsiniz, amma Gauge -nin yaxşı olduğunu gördüm. Müraciətinizə uyğun uyğun TITLE, UNITS (C), MINIMUM və MAXIMUM verin. DATASOURCE üçün + düyməsini basın və yuxarıda yaradılan mənbə görünəcək.

Açılan açılışda əvvəllər qurulmuş 2 JSON məlumat mənbəyi (temp2 & temp2) göstərilməlidir. Müvafiq mənbəni seçin və Saxla düyməsini basın.

İkinci göstərici üçün bunu təkrarlayın və hamımız hazırıq.

Məlumatlar indi 2 ölçü cihazında göstərilməlidir və hələ də bir monitora PRI bağlıdırsa, Freeboard.io -dan gələn istəkləri gəldikcə görməlisiniz.

Addım 11: Layihəni bir qutuya yığın

Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın
Layihəni bir qutuya yığın

Bu vaxta qədər, RPi və digər komponentlər hamısı çörək taxtası istifadə edərək skamyada yığılmışdı. Çörək taxtasının yerini dəyişdirmək üçün kiçik bir şerit taxtası istifadə olundu və tellər hamısı yerinə lehimləndi.

Çox yer tutan və RPI -nin çox qızmayacağı parlaq çəhrayı kiçik Lego saxlama qutusu tapıldı. qutunun kənarlarına deliklər qazılmış və RPi və şeridi taxmaq üçün 3 mm neylon montaj dirəklərindən istifadə edilmişdir.

GPIO, 3.3v, GND və məlumatlardan yalnız 3 əlaqə tələb olunur.

  • 3.3vdc pin 1
  • GND pin 6
  • Məlumat (GPIO4) pin 7

İstilik sensörlərinə USB gücü və kabellər üçün qutuya deliklər əlavə edildi. Hər şey yerinə qoyulduqdan sonra, hörümçəklərin qışı keçirmək üçün yaxşı bir isti yer olduğunu düşünməmələri üçün az miqdarda silikon mastik əlavə edildi!

Addım 12: Bitdi

Bitdi
Bitdi
Bitdi
Bitdi

Qutu istixana qoyuldu və USB şarj cihazından güc aldı. Fidanların gecə nə qədər soyuduğunu yoxlamaq üçün iki sensoru biri istixananın üstünə, digəri isə bitki qabına qoyuldu.

Bu mənim ilk Təlimatçımdır və ümid edirəm ki, hər şey qaydasındadır. Hər hansı bir səhv taparsanız, mənə bildirin və lazım olduqda düzəliş edəcəyəm. Növbəti addım hər 60 saniyədə bir məlumatı qeyd etmək ola bilər, ancaq bu daha sonra gələcək.

Tövsiyə: