Mundarija:

Ikkilamchi haroratli IoT serveri: 12 qadam (rasmlar bilan)
Ikkilamchi haroratli IoT serveri: 12 qadam (rasmlar bilan)

Video: Ikkilamchi haroratli IoT serveri: 12 qadam (rasmlar bilan)

Video: Ikkilamchi haroratli IoT serveri: 12 qadam (rasmlar bilan)
Video: Titanik jumboq: qanday qilib ular aysbergni e'tiborsiz qoldirishlari mumkin?! Eng batafsil hikoya! 2024, Iyun
Anonim
IoT ikki tomonlama haroratli server
IoT ikki tomonlama haroratli server

Bu mening ko'rsatmalarni yozishga birinchi urinishim, shuning uchun menga osonlikcha yordam bering! Agar siz buni yomon deb o'ylamasangiz, iltimos, birinchi marta mualliflar tanlovida menga ovoz bering.

Bu mening Lock-Down loyiham, issiqxonadagi 2 haroratni masofadan turib kuzatish uchun, biri pol sathida, ikkinchisi tomning tagida. Garchi men ilgari Raspberry Pi -ni (RPi) ishlatgan bo'lsam -da, bu loyiha men ishlatmagan bir nechta elementlarni o'z ichiga olgan edi va men yo'lda eskirgan yoki noto'g'ri ko'rsatmalarni topdim. Bu yo'lda olingan Pi Zero & 2 DS18B20+ One Wire raqamli harorat sensorlaridan ishlaydigan masofadan boshqariladigan haroratni o'lchash moslamasini yaratish bo'yicha mening bilimlar to'plamim.

Men o'rgangan narsalar:

  • Ma'lumotlar Internetdan (IoT) bir qismi sifatida qurilmadan ma'lumotlarni olish.
  • 2-qurilmali 1-simli interfeys
  • Ma'lumot uzatish
  • JSON ma'lumotlari
  • UFW xavfsizlik devorini sozlash
  • Ma'lumotlarni ko'rsatish uchun Freeboard.io -dan foydalanish
  • Dasturni avtomatik ishga tushirish uchun RPi -ni sozlash

Bularning barchasini oddiy qidirish orqali topish mumkin bo'lgan juda ko'p ma'lumotlar bor, lekin bu alohida elementlarni qanday birlashtirish kerakligi aniq emas.

Ta'minotlar

  • Sizga Raspberry Pi kerak bo'ladi (sozlash uchun monitor, sichqoncha va klaviatura bilan, lekin tugallangan loyihani ishga tushirishda emas)
  • Ishlaydigan Internet aloqasi.
  • Micro USB ulagichi bo'lgan PSU
  • DS18B20+ bitta simli raqamli harorat sensori 2. Men Amazonni eng arzon deb topdim
  • 4K7 ohmli qarshilik yoki men 2 ta 10K ohmli rezistordan foydalanardim.
  • Kichkina non paneli va skameykada sinov uchun bir nechta erkak/ayol simlari
  • Yakuniy yig'ilish uchun lentaning kichik qismi
  • Lehimlash va simlarni tozalash uchun oddiy asboblar.
  • Tayyor dizaynni joylashtirish uchun kichik plastik quti

1 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna

Menda Raspberry Pi Zero W (simsiz) bor edi, lekin aminmanki, bu oddiy loyiha har qanday RPIda yaxshi ishlaydi. Mening ustaxonamdagi g'alati elektron bitlar qolgan hamma narsaga ega edi (non paneli, sim, PSU va boshqalar), shuning uchun men Amazondan ikkita 2 x DS18B20 datchiklarini sotib olishim kerak edi. Bu oddiy DS18B20 chiplari, suv o'tkazmaydigan korpusga va 3 m kabelga qulay tarzda o'rnatilgan. Kabeldan 3 ta sim bor:

  • Qizil - quvvat - 3.3v pin 1 ga ulaning
  • Qora - qaytish - 6 -gachasi pin bilan ulang
  • Sariq - ma'lumotlar - GPIO4 pin 7 ga ulaning

Sensorlar 1-simli interfeysdan foydalanadilar va ularni ulash va ma'lumotlarni olish juda oson edi. Internetda bir nechta sahifalar mavjud, ular orasida 1 ta qurilmani ulash tafsilotlari bor, lekin 2 ta (yoki undan ko'p) ulanishda juda kam.

Skameykada sinov o'tkazish uchun sxemani non paneli yordamida yig'ishdi. Men topgan darsliklar ma'lumot chizig'ini buzish uchun 4K7 rezistoridan foydalanishni bildirgan, lekin men topa olmadim, shuning uchun parallel ravishda 2* 10K ishlatilgan va u yaxshi ishlagan. Internetda RPi sxemalarini yig'ish uchun taxtadan foydalanish uchun ko'plab manbalar mavjud, shuning uchun men ularni bu erda takrorlamayman.

Diagramma elektron sxemasi yordamida yaratilgan

2 -qadam: Raspberry Pi OS dasturiy ta'minotini sozlash

Raspberry Pi OS dasturiy ta'minotini sozlash
Raspberry Pi OS dasturiy ta'minotini sozlash
Raspberry Pi OS dasturiy ta'minotini sozlash
Raspberry Pi OS dasturiy ta'minotini sozlash
Raspberry Pi OS dasturiy ta'minotini sozlash
Raspberry Pi OS dasturiy ta'minotini sozlash

Men ilgari ushbu RPi -ni ishlatganim uchun, men OSni toza o'rnatishni boshlashga qaror qildim, SD -kartani qayta formatladim va NOOBS -ning toza versiyasini o'rnatdim. Keyin men Raspian -ning to'liq ish stoli versiyasini (eng yaxshi variant) o'rnatdim, chunki bu oddiy versiyada bo'lmagan PIP & GIT -ni o'rnatadi. Loyiha uchun menga Grafik foydalanuvchi interfeysi (GUI) kerak bo'lmasa ham, bu barcha variantlarni o'rnatishning oson usuli va 16 gigabaytlik SD -kartada bo'sh joy yo'q edi.

Men Wi-Fi-ga kirishni o'rnatdim, keyin to'liq o'rnatishni, so'ngra sehrgarni yangilanishlar va yangilanishlar bilan boshqarardim. GUI-dan foydalanib, men GUI-ni ishlatish buyruq qatori interfeysidan (CLI) ko'ra sodda bo'lgani uchun kerak bo'lganda RPI-ni o'rnatdim. Men menyudan konfiguratsiya oynasiga o'tdim va keyin:

  • Tizim yorlig'ida men parolni o'zgartirdim, CLI -ga yuklashni o'rnatdim va avtomatik kirishni belgilamadim
  • Interfeyslar yorlig'ida men 1-simni yoqdim
  • OK tugmasini bosing va qayta yuklang

Agar istalgan vaqtda GUI -ga qaytish kerak bo'lsa, CLI -ga startx yozing

startx

3 -qadam: Masofaviy kirishga ruxsat berish uchun ma'lumotlar uzatish tezligini sozlash

Ma'lumot uzatish masofadan kirishga ruxsat berish
Ma'lumot uzatish masofadan kirishga ruxsat berish
Ma'lumot uzatish masofadan kirishga ruxsat berish
Ma'lumot uzatish masofadan kirishga ruxsat berish
Ma'lumot uzatish masofadan kirishga ruxsat berish
Ma'lumot uzatish masofadan kirishga ruxsat berish

Men "Dataplicity" saytida https://blog.dataplicity.com/how-to-build-a-raspb… saytida juda foydali blog yozuvini topdim va buning bir qismini ishlatdim. Blogning 3 -bo'limida RPi -ga masofadan kirish uchun ma'lumotlar uzatish tezligi sozlangan. Men ilgari hech qachon Dataplicity -dan foydalanmaganman, lekin aytishim kerakki, men uni juda oddiy masofaviy kirish vositasi sifatida tavsiya qilaman. Skrinshotlar (yuqoridagi blogda) biroz eskirgan bo'lsa -da, printsip yaxshi.

Kompyuteringizda Dataplicity.com saytiga o'ting va hisob yarating (siz brauzerni GUI -da ishlatishingiz mumkin, lekin RPi Zero -da sekinroq). Keyin "yangi qurilma qo'shish" tugmachasini bosing va ochilgan oynada kod satri ko'rsatiladi. Keyin RPi -da CLI -ga o'ting va matn qatoriga kiriting. Agar hammasi joyida bo'lsa, Dataplicity logotipi paydo bo'ladi va o'rnatish dasturi ishga tushadi.

Kompyuteringizga qaytsangiz, yangi qurilma Dataplicity veb -saytida paydo bo'lishi kerak. Qurilmani bosing va siz RPi uchun terminal ekranini ko'rasiz.

Bu erda e'tiborga olish kerak bo'lgan bir nechta narsa bor:

  • Kirish uchun "su pi" so'zini kiriting (super foydalanuvchiga kirish uchun) va sizdan parol so'raladi (avval o'rnatilganidek)
  • Siz Wormhole -ni yoqishingiz kerak (keyinroq ishlatiladi)
  • Ma'lumotni keyinroq ko'rsatish uchun sizga Wormhole manzili kerak bo'ladi (kerak bo'lganda nusxalash uchun o'ng tugmasini bosing)

Siz ushbu masofaviy kirishni quyidagi barcha amallar uchun ishlatishingiz mumkin va ma'lumotlarni, dasturlarni va boshqalarni to'g'ridan -to'g'ri RPi -dan nusxalash ancha oson.

4 -qadam: Sensorlarni tekshiring

Endi siz keyingi barcha bo'limlar uchun Dataplicity -dan RPI -ga masofadan kirishni ishlatishingiz mumkin.

Agar hamma narsa yaxshi ulangan bo'lsa, siz haroratni DS18B20 -dan qaytarilishini ko'rishingiz kerak. Men Pi Hut qo'llanmasi orqali ishladim, lekin buning ko'p qismi talab qilinmadi. Agar siz to'liq ma'lumotni xohlasangiz, ularni bu erda topishingiz mumkin:

Muhim bitlar - bu qurilmalar katalogiga o'tish va 2 xil sensorlar ko'rsatilganligiga ishonch hosil qilish.

cd/sys/bus/w1/devices/

Bu 28- va avtobus ustasi bilan boshlanadigan 2 ta qurilmani ko'rsatishi kerak. Mening ko'rsatuvlarim:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Bu 2 ta identifikator raqami muhim va keyinchalik kerak bo'ladi! Keyin sensor kataloglaridan biriga o'ting:

CD 28-011453ebfdaa

(masalan) va keyin sensordan qiymatni o'qish uchun

mushuk w1_slave

Ko'rsatilgan matnning 2 qatori bo'lishi kerak:

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

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

"Ha" sensori to'g'ri o'qilishini ko'rsatadi va 21187 21,187 darajadagi haroratni ko'rsatadi (1000 ga bo'linadi) Ikkinchi sensorni tekshirish uchun buni takrorlang. Agar ikkalasi ham yaxshi o'qisa, Python3 yordamida ma'lumotlarni o'qishga o'tishimiz mumkin.

Men Internetdan topgan quyidagi kodni nusxalashtirdim va moslashtirdim, lekin qaerdan kelganini eslay olmayman. Agar bu sizning kodingizga o'xshasa, men kechirim so'rayman, chunki plagiat mo'ljallanmagan; Iltimos, menga xabar bering va men sizning ishingizni tan olaman.

Loyihalar deb nomlangan katalog yarating va shu katalogga o'zgartiring.

mkdir ~/loyihalar

cd ~/loyihalar

Bu katalogda thermo-test.py nomli faylni yaratish va tahrir qilish uchun matn muharriridan (nano) foydalaning

sudo nano thermo-test.py

Bu muharrirni ochishi kerak edi va siz Dataplicity-dan foydalanayotganingizda, quyidagi kodni (thermo-test.py) nusxa ko'chirishingiz va muharrirga joylashtirishingiz mumkin. Siz 2 ta qurilma nomini (28- … dan boshlab) yuqorida ko'rsatilganlarga o'zgartirishingiz kerak bo'ladi. Hammasi to'g'ri ko'rinsa, tugatish uchun ctrl+X tugmalarini bosing, saqlash uchun Y tugmachasini bosing va mavjud nomdan foydalaning. Agar siz GUIdan foydalanishni xohlasangiz, Thonny ham shunday qiladi.

Sinov dasturini ishga tushirish uchun:

sudo python3 thermo-test.py

Hammasi yaxshi, bu faylni python 3 yordamida bajarishi va har 10 soniyada 2 haroratni ekranga chiqarishi kerak. Siz 1 sensorni muzli suvga qo'yib yoki sochlarini fen bilan yaxshilab isitib, hammasi joyida ekanligini tekshirishingiz mumkin. Agar hammasi yaxshi bo'lib tuyulsa, biz davom etishimiz mumkin!

5 -qadam: UFW xavfsizlik devori

UFW xavfsizlik devori
UFW xavfsizlik devori

Ushbu RPi Internetga doimiy ravishda ulanishi kerak edi, men xavfsizlik devori yaxshi bo'lardi, deb qaror qildim va bu oddiy xavfsizlik devori (ufw). Bu erda juda oddiy darslik bor

Men chuqur o'rganmayman, chunki bu ko'rsatmaning maqsadi emas, lekin qisqasi:

Xavfsizlik devorini quyidagilar bilan o'rnating:

sudo apt-get ufw-ni o'rnating

Standart qoidalarni o'rnating:

sudo ufw default chiqishga ruxsat beradi

sudo ufw default kirishni rad etadi

Ma'lumot uzatish uchun 80 -portni oching

sudo ufw 80 ga ruxsat bering

Xavfsizlik devorini yoqing

sudo ufw yoqish

Vaziyatni tekshiring va hamma ishlayotganiga ishonch hosil qiling

sudo ufw holati

6 -qadam: Harorat ma'lumotlarini JSON sifatida tugatish

S harorat ma'lumotlarini JSON sifatida tugatadi
S harorat ma'lumotlarini JSON sifatida tugatadi

Tim Fernandoning blogiga va 5 -bo'limga qaytish.

Belgilangan bosqichlarni bajaring (biz loyihalar katalogini yaratganimizdan tashqari) va hamma yaxshi ishlashi kerak. GIT -dan foydalanib, siz Tim dastur fayllarini yuklab olasiz va PIP barcha kerakli dasturlar sizning RPi -ga o'rnatilganligiga ishonch hosil qiladi. Keyin men paketlarning to'g'ri sozlanganligiga ishonch hosil qilish uchun qayta yuklashim kerakligini topdim.

Keyin Tim dasturini ishga tushiring va sizning RPi birinchi sensor uchun JSON ma'lumotlarini taqdim etishi kerak.

CD uy/pi/loyihalar/harorat-xizmat-pi

sudo gunicorn harorati: ilova -b 0.0.0.0:80

Siz blog orqali 6 -bo'limga o'tishingiz mumkin, u erda siz sensorlardan 1 tasi uchun ma'lumot taqdim etilishini topasiz.

Shuningdek, ma'lumotlarni ko'rish uchun JSON Viewer -dan foydalanishingiz mumkin https://codebeautify.org/jsonviewer "URLni yuklash" tugmachasini bosing va ilgari ko'rsatilgan Wormhole manziliga joylashtiring. Chap panelda siz ikkita yozuvni ko'rishingiz kerak, biri Selsiy va biri Farengeyt uchun.

7 -qadam: Ma'lumotlarni ikkala sensordan yuboring

Ikkala sensordan ma'lumotlarni yuboring
Ikkala sensordan ma'lumotlarni yuboring

Temperat.py va thermo-test.py kodlariga asoslanib, men 2temps.py-ni avvalgidek /loyihalar /temperatura-xizmat-pi katalogida tuzdim, kodga yopishtirilgan va saqlangan. Keyin yugurdim

sudo gunicorn 2temps: ilova -b 0.0.0.0:80

Endi men JSON Viewer-ni qayta ishga tushirganimda temp1 va temp2 qiymatlarini oldim

Muvaffaqiyat:)

8 -qadam: Avtomatik ishga tushirish

Avtomatik ishga tushirish
Avtomatik ishga tushirish

Issiqxonaning kuchi vaqti -vaqti bilan o'chib qolganda, men RPi dasturni avtomatik ravishda yuklashini va ma'lumotlarni isbotlashni boshlashini xohlardim. Eng oddiy usul, rc.local faylini tahrir qilish va kerakli kodni pastdan chiqish 0 chizig'ining yuqorisiga qo'shish kabi ko'rinadi.

cd va boshqalar

sudo nan rc.local

keyin qo'shimchalar

uxlash 10

CD uy/pi/loyihalar/harorat-xizmat-pi sudo gunicorn temp04: ilova -b 0.0.0.0:80 va

  • & Oxirida kompyuterga skriptni pastki qobiqda ishlashini aytadi, shunda sizning kompyuteringiz funksiya tugashini kutmaydi va yuklashda davom etadi.
  • Kutish 10 [soniya] xizmatni ishga tushirishdan oldin oldingi barcha operatsiyalar bajarilganligiga ishonch hosil qiladi.

Chiqing va avvalgidek saqlang. Keyin hamma narsani tekshirish uchun JSON Viewer-ni qayta ishga tushiring va qayta ishga tushiring.

Agar siz avtomatik ishga tushadigan dasturlar haqida ko'proq ma'lumotga ega bo'lishni istasangiz, bu erda ajoyib qo'llanma bor

9 -qadam: Freeboard.io -da ma'lumotlarni ko'rsatish (1)

Freeboard.io -da ma'lumotlarni ko'rsatish (1)
Freeboard.io -da ma'lumotlarni ko'rsatish (1)

Tim blogidagi qadamlar yaxshi ishlaydi, qisqasi; www.freeboard.io saytida hisob yarating va keyin yangi Freeboard yarating, men SHEDTEMPERATURES deb nomladim.

Birinchidan, ma'lumotlar manbasini qo'shing, o'ng tomonning yuqori qismidagi QO'ShISH-ni bosing va qalqib chiquvchi oynadan JSON-ni tanlang, ma'lumotlar manbasiga NOMini bering, avvalgi URL manzilini kirgiz teshigi manzilini qo'shing va THINGPROXY-ni sinash uchun YO'Q-ni bosing. Harorat juda sekin o'zgaradi, shuning uchun har 15 soniyani yangilang. SAQLASH tugmasini bosing.

10 -qadam: Freeboard.io -da ma'lumotlarni ko'rsatish (2)

Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)
Freeboard.io -da ma'lumotlarni ko'rsatish (2)

Birinchi vidjetni qo'shish uchun ADD PANE va keyin + ni bosing. Siz har xil turdagi turlarni tanlashingiz va o'ynashingiz mumkin, lekin men Gauge yaxshi ekanligini topdim. Arizangizga mos keladigan TITLE, UNITS (C), MINIMUM va MAXIMUM bering. DATASOURCE uchun + belgisini bosing va yuqorida yaratilgan manba paydo bo'ladi.

Ochiladigan ro'yxatda hozir oldin tuzilgan 2 ta JSON ma'lumotlar manbalari (temp2 & temp2) ko'rsatilishi kerak. Tegishli manbani tanlang va saqlashni bosing.

Buni ikkinchi o'lchagich uchun takrorlang va biz tayyormiz.

Ma'lumotlar endi 2 o'lchagichda ko'rsatilishi kerak va agar sizda PRi hali ham monitorga ulangan bo'lsa, Freeboard.io -dan kelgan so'rovlarni ular kelishi bilan ko'rishingiz kerak.

11 -qadam: Loyihani qutiga soling

Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling
Loyihani qutiga soling

Shu paytgacha, RPi va boshqa komponentlar skameykada skameykada yig'ilgan edi. Plitkaning kichik qismi bo'lak taxtani almashtirish uchun ishlatilgan va simlar joyiga lehimlangan.

Yorqin pushti kichkina Lego saqlash qutisi topildi, u juda ko'p joylarga ega va RPI juda qizib ketmaydi. qutining yon tomonlarida teshiklar ochilgan va 3 mm neylon o'rnatish ustunlari RPi va tasma taxtasini joyida ushlab turish uchun ishlatilgan.

GPIO, 3.3v, GND va ma'lumotlardan faqat 3 ta ulanish kerak.

  • 3.3vdc pin 1
  • GND pin 6
  • Ma'lumot (GPIO4) pin 7

Harorat sensorlaridagi USB quvvat va kabellar uchun qutiga teshiklar ham qo'shilgan. Hamma narsa joyiga qo'yilgach, o'rgimchaklar qishni yaxshi issiq joy deb o'ylamasliklari uchun oz miqdorda silikon plomba qo'shildi!

12 -qadam: tugadi

Bajarildi
Bajarildi
Bajarildi
Bajarildi

Quti issiqxonaga joylashtirildi va USB zaryadlovchidan quvvat oldi. Ko'chatlar kechasi qanchalik sovuq bo'lganini tekshirish uchun ikkita datchikni biri issiqxonaning tepasiga yaqin, ikkinchisini o'simlik qozonga joylashtirdi.

Bu mening birinchi ko'rsatmam va umid qilamanki, siz buni yaxshi deb o'ylaysiz. Agar biron bir xato topsangiz, iltimos, menga xabar bering va men kerakli joyni o'zgartiraman. Keyingi qadam, har 60 soniyada ma'lumotlarni yozish bo'lishi mumkin, lekin bu keyinroq keladi.

Tavsiya: