Mundarija:

Veb -sayt bilan javob beradigan RPi ob -havo ma'lumoti: 5 qadam
Veb -sayt bilan javob beradigan RPi ob -havo ma'lumoti: 5 qadam

Video: Veb -sayt bilan javob beradigan RPi ob -havo ma'lumoti: 5 qadam

Video: Veb -sayt bilan javob beradigan RPi ob -havo ma'lumoti: 5 qadam
Video: Java tech talk: Spring Boot and GraphQl integration. Как сделать это просто? 2024, Iyul
Anonim
RPi Weatherstation javob beradigan veb -sayti bilan
RPi Weatherstation javob beradigan veb -sayti bilan
RPi Weatherstation javob beradigan veb -sayti bilan
RPi Weatherstation javob beradigan veb -sayti bilan

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

Uskunamizni ulash
Uskunamizni ulash
Uskunamizni ulash
Uskunamizni 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

Hamma narsani ulash: Pi -ni sozlash
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

Dastur / kod
Dastur / kod
Dastur / kod
Dastur / kod
Dastur / kod
Dastur / 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

Qoplama
Qoplama
Qoplama
Qoplama
Qoplama
Qoplama

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: