Mundarija:
- Ta'minotlar
- 1 -qadam: Uskuna
- 2 -qadam: Raspberry Pi OS dasturiy ta'minotini sozlash
- 3 -qadam: Masofaviy kirishga ruxsat berish uchun ma'lumotlar uzatish tezligini sozlash
- 4 -qadam: Sensorlarni tekshiring
- 5 -qadam: UFW xavfsizlik devori
- 6 -qadam: Harorat ma'lumotlarini JSON sifatida tugatish
- 7 -qadam: Ma'lumotlarni ikkala sensordan yuboring
- 8 -qadam: Avtomatik ishga tushirish
- 9 -qadam: Freeboard.io -da ma'lumotlarni ko'rsatish (1)
- 10 -qadam: Freeboard.io -da ma'lumotlarni ko'rsatish (2)
- 11 -qadam: Loyihani qutiga soling
- 12 -qadam: tugadi
Video: Ikkilamchi haroratli IoT serveri: 12 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
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
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
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
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
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
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
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
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)
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)
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
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
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:
RGB LEDli LCD haroratli displey: 5 qadam
RGB LEDli LCD haroratli displey: Ushbu loyiha LCD displey bilan o'ynay boshlaganlar uchun juda mos keladi. Ushbu loyiha haroratni Selsiy va Farengeytda aks ettiradi va haroratga qarab RGB LED bilan mos keladi
Raqamli soat va haroratli musiqiy spektr: 9 qadam (rasmlar bilan)
Raqamli soat va haroratli musiqiy spektr: Biz sizga yana yoqadigan loyiha bilan keldik. Agar siz musiqa tinglashni yoqtirsangiz va vizualizmdan zavqlansangiz, bu loyiha siz uchun. DIGITAL CLOCK MUSIC SPECTRUM ELECTRONIC SITEMERATURE DISPLAY. Bu elektron to'plam. Pr -ni tugatganingizda
Wibos D1 Mini bilan Ribba so'z soati (Internet -vaqt serveri): 8 qadam (rasmlar bilan)
Ribba Wemos D1 Mini bilan so'z soati (Internet -vaqt serveri): O'ylaymanki, hamma barmoqlari qichqiradigan joyga keladi va u so'z soati qurmoqchi. Bu mening urinishim va uni iloji boricha samaraliroq qilish bo'yicha umumiy xulosam. Birinchidan, men o'zim 3D -printerga egaman va unga kirishim mumkin
Haroratli smsni o'z vaqtida yuboradi: 5 qadam (rasmlar bilan)
O'z vaqtida temperatura bilan SMS yuboradi: asosiy maqsad - otalarim uyidan harorat smsini olish. Qisqacha qilib aytganda, qismlarni birlashtirish oson emas. Qismlar: Geekcreit ® ATmega328P Nano V3 boshqaruv paneli ArduinoDIY NANO IO Shield V1.O ArduinoDS130 uchun kengaytirish kartasi bilan mos keladi
10 dollarlik DIY o'zgaruvchan haroratli lehimli temirni boshqaruvchi: 3 qadam (rasmlar bilan)
10 dollarlik DIY o'zgaruvchan haroratli lehimli temirni boshqarish moslamasi: Bu ko'rsatma sizga Radioshack "o't o'chiruvchi" lehimlanadigan temirni 10 dollarlik qismlardan foydalangan holda o'zgaruvchan haroratli versiyaga aylantirishni ko'rsatib beradi. Bu fikr elektron platada izlarni ko'tarishni boshlaganimdan keyin paydo bo'ldi, chunki men 30 vattdan foydalanardim