Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
Maktab loyihasi uchun biz yig'ilgan ma'lumotni yaxshi tasavvur qilish uchun veb -saytga ega bo'lgan IoT qurilmasini yasashimiz kerak edi. Men o'z ma'lumotlar bazam uchun MySQL (MariaDB) javob beradigan veb -sayt uchun Raspberry Pi 3 ishlaydigan Flask bilan ishlaydigan ob -havo stantsiyasini yaratishni tanladim. va barcha sensorlarim bilan ma'lumot to'plash uchun python skripti Menga boshidan oxirigacha 2 hafta vaqt ketdi.
Bizni yutuqlarimizni DIY jamoasining qolgan a'zolari bilan bo'lishish uchun ko'rsatma berishga undadik, mana mana!
1 -qadam: qismlarni tanlash, asboblar va materiallar
Avval men ob -havo stantsiyasi uchun qanday sensorlar muhimligini aniqlashim kerak edi va men quyidagi ma'lumotlarni o'lchashga qaror qildim.
- Harorat
- Havo bosimi
- Namlik
- Shamol tezligi
- UV indeksi
Mana men ishlatgan barcha asboblar, materiallar va ehtiyot qismlar
Qismlar:
- Harorat va namlik ko'rsatkichlari uchun DHT22/AM2302. (15 evro)
- Adafruit BMP280 Barometrik bosim va harorat uchun. (12 evro)
- UV indeksini o'lchash uchun Adafruit SI1145. (10 evro)
- Shamol tezligini o'lchash uchun Adafruit analog anemometri (50 evro)
- Analog signallarni raqamli formatga o'tkazish uchun MCP3008.
- AM2302 uchun tortish moslamasi sifatida 10kOm qarshilik.
- Anemometrni quvvatlantirish uchun 9V adapter
- Raspberry Pi uchun 5V adapter
- Raspberry Pi 3 (har qanday Pi etarli bo'lishi kerak)
Materiallar:
Hamma narsani saqlash va yomg'ir o'tkazmaydigan plastik idish
Asboblar:
- Lehimlash temir va qalay
- Multimetr
- Silikon
- Bir oz lenta
Umuman olganda, barcha datchiklar menga taxminan 85 evro turadi, bu juda tik, lekin men to'g'ri shamol tezligini o'lchash moslamasini qo'shishni juda xohlardim, shuning uchun bunga arziydi deb o'ylayman.
Siz quyida pdf -da hamma narsani sotib olishingiz mumkin bo'lgan do'konlar bilan batafsil ro'yxatni topishingiz mumkin:)
2 -qadam: Uskunani ulash
Albatta, biz sensorlarimizni Raspberry Pi -ga ulashimiz kerak bo'ladi. Yuqorida siz hamma narsani to'g'ri ulash uchun amal qiladigan sxemani ko'rishingiz mumkin.
Sxemada siz bizning anemometrimiz uchun quvvat manbai sifatida 9V akkumulyator ishlatilganini ko'rishingiz mumkin, bu faqat sinov uchun eng yaxshi ishlatiladi, chunki u uzoq davom etmaydi, siz 9V batareyani har qanday 7-12V quvvat manbaiga almashtirishingiz mumkin. tanlash.
Bizning SI1145 va BMP280 datchiklarimiz ikkalasi ham I2C protokoli yordamida boshqariladi, chunki bu bilan ishlash eng oson va simlar kam bo'lishi kerak.
Sxemadagi anemometr bu erda LDR sifatida ko'rsatiladi, chunki u anemometr bilan bir xil simga ega va men chizish sxemasini qo'yish uchun haqiqiy anemometr topa olmadim:)
3 -qadam: Hamma narsani ulash: Pi -ni sozlash
Birinchidan, biz Internetga ulanganligimizga ishonch hosil qilishimiz kerak.
Buni terminalda bajarish uchun wpa_supplicant faylingizga quyidagi buyruqni bajarib kirishingiz mumkin: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Faylga quyidagilarni qo'shishingiz mumkin:
network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK
}
Bundan tashqari, kelajakda osonroq kirish uchun IP-manzilingizni statik qilib belgilashingiz mumkin, buning uchun dhcpcd.conf faylini quyidagi buyruq yordamida bajarishingiz kerak: sudo nano /etc/dhcpcd.conf
Buni faylga qo'shing:
wlan0static ip_address interfeysi = 192.168.0.100/24
Keyin biz Pi -da o'rnatilgan paketlar to'liq yangilanganligiga ishonch hosil qilamiz.
sudo apt-get update && sudo apt-get upgrade
Bu biroz vaqt olishi mumkin, shuning uchun xavotir olmang
Siz raspi config ichida I2C va SPI protokolini yoqishingiz kerak bo'ladi, buni quyidagi buyruq yordamida bajarish mumkin:
sudo raspi-config
Keyin interfeys variantlariga o'ting va I2C va SPI -ni yoqing
Avval siz loyihangizni joylashtirmoqchi bo'lgan katalogni yaratishingiz kerak (biz uni "ob -havo stantsiyasi" deb nomlaymiz):
cd ~ mkdir ob -havo stantsiyasi cd ob -havo stantsiyasi
Keyin biz python3 virtual muhitini o'rnatdik:
python3 -m pip o'rnatish-pip setuptools g'ildiragini yangilash virtualenvpython3 -m venv-tizim-sayt-paketlar envsource env/bin/activatepython -m pip mysql-ulagichi-python shishasi-mysql mysql-ulagichi-python passlib mysql -piton-rf
Keyin biz hamma narsani to'g'ri ishlashi uchun zarur bo'lgan boshqa paketlarni o'rnatishimiz kerak bo'ladi:
sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3
Endi biz ma'lumotlar bazasini yaratmoqchimiz:
Ma'lumotlar bazasini o'rnatishimiz kerak, buni "sql" papkasida joylashgan kod/sql faylini ishga tushirish orqali qilishingiz mumkin:
sudo mariadb <sql/db_init.sql
Sql so'rovi bizga kerakli jadvallarni yaratadi va bir nechta foydalanuvchilarni ma'lumotlar bazamizni biroz xavfsizroq qiladi.
Bu, shuningdek, haqiqiy ma'lumotlar to'planmagan bo'lsa, bizning veb -saytimiz hamma narsani to'g'ri ko'rsatishiga ishonch hosil qilish uchun ba'zi ma'lumotlar bazasi ma'lumotlarini ma'lumotlar bazasiga kiritadi.
Adafruit_GPIO va MyPyDHT -ni o'rnatish uchun siz yana bir qancha ishlarni bajarishingiz kerak bo'ladi. Birinchidan, foydalanish papkasiga qayting va keyin:
git klon https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py o'rnatish
cd..git clone -takroriy https://github.com/freedom27/MyPyDHTsudo python3 setup.py o'rnatish
4 -qadam: dasturiy ta'minot / kod
Biz ob-havo stantsiyasining orqa qismini sozlashimiz kerak, unga quyidagilar kiradi.
- Sensor o'qilishini va boshqa kichik narsalarni saqlash uchun mariadb ma'lumotlar bazasi- Veb-saytni ishga tushirish uchun kolbali xizmat- Python fayli bilan ishlaydigan boshqa sensorlar. Yuqorida siz mening ma'lumotlar bazasi sozlamalarini ko'rishingiz mumkin. Foydalanuvchilar jadvali keraksiz, lekin men kirish tizimini xohlaganim uchun, chunki men (barcha ma'lumotlar hamma foydalanuvchilar uchun bir xil bo'lsa ham) o'z ma'lumotlar bazamga kiritishga qaror qildim.
Siz o'z loyihangiz kodini Github -dan loyiha papkangizga ko'chirishingiz mumkin, foydalanuvchi papkasiga o'ting va ishga tushiring: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/
Keyin ob -havo stantsiyasidagi conf papkasiga va papkadagi barcha fayllarga o'ting.
"USERNAME" ning barcha holatlarini foydalanuvchi nomingizga o'zgartiring
Bundan tashqari,.service fayllarining ikkalasini ham systemd -ga nusxalash va ularni shunday tekshirish kerak bo'ladi:
sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service
sudo systemctl holati ob-havo stantsiyasi-*
Keyin nginx konfiguratsiyasini o'zgartirishimiz kerak.
sudo cp conf/nginx/etc/nginx/sites-available/weatherstationsudo rm/etc/nginx/sites-enabled/defaultsudo ln -s/etc/nginx/sites-available/weatherstation/etc/nginx/sites-yoqilgan/weatherstationsudo systemctl nginx.servicesudo systemctl status nginx.service -ni qayta ishga tushiring
Agar biror narsa yaxshi bo'lsa, siz uni ishga tushirishingiz va terminalda html -ni chop etishingiz kerak:
wget -qO - localhost
Siz hozirda hamma narsa yaxshi bo'lishi kerak, siz malina Pi ning IP-manziliga kira olasiz va kirish ekrani bilan kutib olasiz.
5 -qadam: korpus
Endi hamma narsa ishlayotganda, biz hamma narsani biror narsaga kiritishimiz kerak.
Men shaffof qopqoqli oddiy plastik qutini tanladim, uning ustiga anemometr o'rnatilgan, shuningdek DHT22 va BMP280 datchiklari bo'lgan ikkinchi darajali kichik idish.
Bu sensorlar alohida idishning ichiga o'rnatilgan, chunki ular ochiq havoda bo'lishi kerak (yomg'irsiz), lekin malina pi bo'lishi shart emas.
Ko'rib turganingizdek, suv o'tkazmaydigan qilib chekkalariga silikon qo'shdim, toza havo olish uchun yuqori idishda teshiklar qildim.
Umid qilamanki, sizga ob -havo stantsiyasini qanday qurish bo'yicha ko'rsatma yoqdi, bu biroz chekkada bo'lishi mumkin, chunki men birinchi marta bunday ko'rsatma yozyapman, lekin shunga qaramay sizga yoqdi:)
Tavsiya:
Tasodifiy javob beradigan mayatniklar: 4 qadam (rasmlar bilan)
Tasodifiy ta'sir etuvchi mayatniklar: Ushbu loyihaning maqsadi 2 mayatnikning uzluksiz aylanishiga olib keladi. Men faol va passiv mayatnikning yaxshi o'zaro ta'sirini topdim. Ular doimiy magnitli, elektromagnitli va tortishish kuchi maydonlari bulutida harakat qiladilar. P og'irligi
Miyovare mushak sensori uchun javob beradigan neopikselli chiziqli chiziq: 6 qadam
Neopixel Led Strip Myoware mushaklar sezgichiga javob beradi: Maqsad - mushak sensori Arduino yordamida o'rnatish va kiruvchi ma'lumotlarni Adafruit IO yordamida qayta ishlash va yorug'lik bir daqiqaga oqdan qizilga aylanishi uchun tetik bilan olish. Bu mushak sensori, mushak sensori
"Birlik" o'yiniga javob beradigan chiroqlar bilan Arduino o'yin boshqaruvchisi :: 24 qadam
Arduino o'yin boshqaruvchisi sizning birligingizga javob beradigan chiroqlar bilan :: Birinchidan, men bu so'zni so'z bilan yozdim. Men birinchi marta ko'rsatmalarni ishlataman, shuning uchun aytganda: kodni yozing, bilingki, men bu qadamning yuqori qismidagi tasvirni nazarda tutyapman. Ushbu loyihada men ikkita alohida bitni ishlatish uchun 2 ta arduino -dan foydalanaman
Arduino Led Strip javob beradigan yurak urish tezligi sensori: 5 qadam
Arduino Led Strip -ga javob beradigan yurak urish tezligi sensori: Men qilgan birinchi narsa - bu Grove yurak urish tezligi sensori bilan Arduino -ga YouTube -dagi juda oddiy qo'llanma orqali ulanish. https://www.youtube.com/watch?v=Dzq4tnJ0LjAhttps://www.kiwi-electronics.nl/grove-finger-clip
Musiqaga javob beradigan yorug'lik shousi: 7 qadam (rasmlar bilan)
Musiqaga javob beradigan yorug'lik shousi ko'ylagi: Bu darslik York universitetining musiqa texnologiyasi va amaliy elektronika yo'nalishi bo'yicha bitirgan yilim loyihasi doirasida tayyorlangan. Bu elektronikaga qiziqadigan musiqachilarga mo'ljallangan. Tayyor mahsulot LED matri bo'ladi