RPi Weatherstation արձագանքող կայքով `5 քայլ
RPi Weatherstation արձագանքող կայքով `5 քայլ
Anonim
RPi Weatherstation արձագանքող կայքով
RPi Weatherstation արձագանքող կայքով
RPi Weatherstation արձագանքող կայքով
RPi Weatherstation արձագանքող կայքով

Դպրոցական նախագծի համար մենք պետք է IoT սարք պատրաստեինք վեբ կայքով ՝ հավաքված տեղեկատվությունը գեղեցիկ տեսքով տեսնելու համար: Ես ընտրեցի եղանակի ստեղծում, որն ապահովում էր Raspberry Pi 3 վազող Flask- ը արձագանքող կայքի համար ՝ MySQL (MariaDB) ՝ իմ տվյալների բազայի համար և պիտոնի սցենար ՝ իմ բոլոր տվիչների հետ տեղեկություններ հավաքելու համար: Սկզբից մինչև վերջ ավարտելը տևեց մոտ 2 շաբաթ:

Մենք խրախուսվեցինք ուսանելի դարձնել մեր առաջընթացը կիսելու DIY համայնքի հետ, ուստի ահա այն:

Քայլ 1. Մասերի ընտրություն, գործիքներ և նյութեր

Նախ անհրաժեշտ էր պարզել, թե ինչպիսի սենսորներ են անհրաժեշտ եղանակային կայանի համար: Ես որոշեցի, որ ուզում եմ չափել հետևյալ բոլոր տվյալները.

  • Ջերմաստիճանը
  • Օդի ճնշում
  • Խոնավություն
  • Քամու արագություն
  • Ուլտրամանուշակագույն ինդեքս

Ահա իմ օգտագործած բոլոր գործիքները, նյութերը և մասերը:

Մասեր:

  • DHT22/AM2302 ջերմաստիճանի և խոնավության ցուցանիշների համար: (15 եվրո)
  • Adafruit BMP280 բարոմետրիկ ճնշման և ջերմաստիճանի համար: (12 եվրո)
  • Adafruit SI1145 ուլտրամանուշակագույն ճառագայթման ինդեքսի չափման համար: (10 եվրո)
  • Adafruit անալոգային անեմոմետր քամու արագությունը չափելու համար (50 EUR)
  • MCP3008 անալոգային ազդանշանները թվային փոխակերպելու համար:
  • 10kOhm Resistor որպես pull-up իմ AM2302- ի համար:
  • 9 Վ ադապտեր ՝ անեմոմետրը «սնուցելու» համար
  • 5V ադապտեր Raspberry Pi- ի համար
  • Ազնվամորի Pi 3 (Piանկացած Pi պետք է բավարարի)

Նյութեր:

Պլաստիկ տարա ՝ ամեն ինչ պահելու և անձրևազերծ դարձնելու համար:

Գործիքներ:

  • Sոդման երկաթ և անագ
  • Բազմաչափ
  • Սիլիկոն
  • Որոշ ժապավեն

Այսպիսով, ընդհանուր առմամբ, բոլոր սենսորներն ինձ արժեն մոտ 85 եվրո, ինչը բավականին կտրուկ է, բայց ես իսկապես ուզում էի ներառել համապատասխան հողմաչափ, այնպես որ, կարծում եմ, արժե այն:

Դուք կարող եք գտնել ավելի մանրամասն ցուցակ այն խանութների հետ, որտեղից կարող եք գնել ամեն ինչ ՝ ստորև բերված pdf- ում:)

Քայլ 2: Միացրեք մեր սարքավորումները

Միացնելով մեր սարքավորումները
Միացնելով մեր սարքավորումները
Միացնելով մեր սարքավորումները
Միացնելով մեր սարքավորումները

Իհարկե, մենք պետք է միացնենք մեր տվիչները մեր Raspberry Pi- ին: Վերևում կարող եք տեսնել ցնցող սխեման, որին կարող եք հետևել ՝ ամեն ինչ ճիշտ միացնելու համար:

Սխեմատիկորեն կարող եք տեսնել, որ 9V մարտկոցը օգտագործվում է որպես մեր անեմոմետրի էներգիայի աղբյուր, այն լավագույնս օգտագործվում է փորձարկման համար միայն այն պատճառով, որ այն երկար չի տևի, կարող եք փոխարինել 9V մարտկոցը ձեր ցանկացած 7-12V էներգիայի աղբյուրի համար: ընտրել.

Մեր SI1145 և BMP280 տվիչները երկուսն էլ վերահսկվելու են I2C արձանագրության միջոցով, քանի որ սա ամենահեշտն է աշխատելու համար և ավելի քիչ լարերի կարիք ունի:

Սխեմատիկ անեմոմետրը այստեղ ցուցադրվում է որպես LDR, քանի որ այն ունի բավականին նույնական էլեկտրագծեր, ինչպես անեմոմետրը, և ես չկարողացա գտնել իրական անեմոմետր `իմ ցնցող սխեմայի վրա դնելու համար:)

Քայլ 3: Ամեն ինչ միացնելը. Pi- ի կարգավորումը

Ամեն ինչ կապելը. Pi- ի կարգավորում
Ամեն ինչ կապելը. Pi- ի կարգավորում

Առաջին հերթին, մենք պետք է համոզվենք, որ միացված ենք ինտերնետին:

Տերմինալում դա անելու համար կարող եք գնալ ձեր wpa_supplicant ֆայլ ՝ գործարկելով հետևյալ հրամանը. Sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Ֆայլում կարող եք ավելացնել սա.

ցանց = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

Կարող եք նաև ընտրել, որ ձեր IP հասցեն ստատիկ լինի ապագայում ՝ ավելի հեշտ մուտք գործելու համար: Դա անելու համար հարկավոր է գնալ dhcpcd.conf ֆայլին ՝ գործարկելով այս հրամանը. Sudo nano /etc/dhcpcd.conf

Ավելացրեք սա ֆայլում.

ինտերֆեյս wlan0static ip_address = 192.168.0.100/24

Այնուհետև մենք համոզվելու ենք, որ այն փաթեթները, որոնք արդեն տեղադրված են մեր Pi- ի վրա, լիովին թարմացված են.

sudo apt-get update && sudo apt-get upgrade

Սա կարող է որոշ ժամանակ տևել, այնպես որ մի անհանգստացեք

Դուք պետք է միացնեք I2C և SPI արձանագրությունը raspi config- ի ներսում: Դուք կարող եք դա անել ՝ գործարկելով այս հրամանը.

sudo raspi-config

Այնուհետև անցեք միացման տարբերակներ և միացրեք երկուսն էլ ՝ I2C և SPI

Նախ անհրաժեշտ է կազմել տեղեկատու, որի մեջ ցանկանում եք տեղադրել ձեր նախագիծը (մենք այն կդնենք «weatherstation»).

cd ~ mkdir weatherstationcd weatherstation

Այնուհետև մենք ստեղծում ենք մեր python3 վիրտուալ միջավայրը.

python3 -m pip install-upgrade pip setuptools wheel virtualenvpython3 -m venv-system-site-packages envsource env/bin/activpython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -պիթոն-ռֆ

Այնուհետև մենք պետք է տեղադրենք որոշ այլ փաթեթներ, որոնք անհրաժեշտ են ամեն ինչ ճիշտ կատարելու համար.

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Այժմ մենք պատրաստվում ենք կազմել մեր տվյալների բազան.

Մենք դեռ պետք է ստեղծենք մեր տվյալների բազան: Դուք կարող եք դա անել `գործարկելով« sql »թղթապանակում տեղակայված կոդը/sql ֆայլը այսպես.

sudo mariadb <sql/db_init.sql

Sql հարցումը կդարձնի մեզ անհրաժեշտ աղյուսակները, ինչպես նաև մի քանի օգտվող կդարձնի մեր տվյալների բազան մի փոքր ավելի ապահով:

Սա նաև պատմության տվյալների որոշ նմուշներ կդնի մեր տվյալների բազայում `համոզվելու համար, որ մեր կայքը ամեն ինչ ճիշտ է ցուցադրում, երբ դեռևս հավաքված իրական տվյալներ չկան:

Adafruit_GPIO և MyPyDHT տեղադրելու համար ձեզ հարկավոր է ևս մի քանի բան անել: Նախ վերադառնաք ձեր օգտագործման թղթապանակին, այնուհետև ՝

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install

cd..git clone -հետադարձ https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Քայլ 4: Softwareրագրակազմ / ծածկագիր

Softwareրագրային ապահովում / ծածկագիր
Softwareրագրային ապահովում / ծածկագիր
Softwareրագրային ապահովում / ծածկագիր
Softwareրագրային ապահովում / ծածկագիր
Softwareրագրային ապահովում / ծածկագիր
Softwareրագրային ապահովում / ծածկագիր

Մենք պետք է եղանակ ստեղծենք եղանակի պահպանման համար, որը ներառում է.

- Մարիադբ տվյալների բազա ՝ իմ սենսորների ընթերցումների և որոշ այլ աննշան բաների պահպանման համար: Կայքի գործարկման համար տափակ ծառայություն:- Մեկ այլ ծառայություն, որն աշխատում է Python ֆայլով, որը կարդում է բոլոր տվիչները: Վերևում կարող եք տեսնել տվյալների բազայի իմ շատ պարզ կարգավորումը: Օգտվողների աղյուսակը ավելորդ է, բայց քանի որ ես ուզում էի մուտքի համակարգ, քանի որ ես (չնայած բոլոր տվյալները նույնն են բոլոր օգտագործողների համար) որոշեցի ներառել իմ տվյալների բազայում:

Կարող եք առաջ գնալ և իմ նախագծի ծածկագիրը Github- ից կլոնավորել ձեր ծրագրի թղթապանակի մեջ: Գնացեք ձեր օգտվողի պանակ և գործարկեք ՝ git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Այնուհետև գնացեք weatherstation- ի conf պանակ և պանակի բոլոր ֆայլերը:

Փոխեք «USERNAME» - ի բոլոր դեպքերը ձեր օգտանվան

Դուք նաև պետք է պատճենեք.service ֆայլերը համակարգելու համար և փորձարկեք դրանք այսպես.

sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl սկսել weatherstation-flask.servicesudo systemctl սկսել weatherstation-sensor.service

sudo systemctl կարգավիճակ weatherstation-*

Այնուհետև մենք պետք է խմբագրենք nginx կազմաձևը:

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-enabled/weatherstationsudo systemctl վերագործարկեք nginx.servicesudo systemctl կարգավիճակը nginx.service

Եթե ամեն ինչ լավ է ընթանում, դուք պետք է կարողանաք գործարկել սա և տերմինալում տպել մի քանի HTML.

wget -qO - localhost

Ամեն ինչ հիմա պետք է լավ աշխատի: Դուք կարող եք ճամփորդել ձեր ազնվամորու Pi- ի IP հասցեին, որը մենք սկզբում սահմանել էինք և ողջունվել մուտքի էկրանով:

Քայլ 5: Շրջանակը

Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը

Հիմա, երբ ամեն ինչ աշխատում է, մենք պետք է ամբողջը դնենք ինչ -որ բանի մեջ:

Ես ընտրեցի պարզ պլաստմասե տուփ `թափանցիկ կափարիչով: Անեմոմետրը տեղադրված է դրա վերևում, ինչպես նաև երկրորդային փոքր տարան, որը պարունակում է DHT22 և BMP280 սենսորներ:

Այս տվիչները տեղադրված են առանձին տարայի ներսում, քանի որ դրանք պետք է լինեն բաց երկնքի տակ (առանց անձրևի), բայց ազնվամորու պի պետք չէ:

Ինչպես տեսնում եք, ես մի քանի սիլիկոն ավելացրեցի եզրերին, որպեսզի այն անջրանցիկ լինի: Ես նաև մի քանի անցք բացեցի վերին տարայի մեջ, որպեսզի այնտեղ թարմ օդը ներծծվի:

Հուսով եմ, որ ձեզ դուր եկավ իմ ուղեցույցը, թե ինչպես կառուցել եղանակային եղանակ, այն կարող է մի փոքր կոպիտ լինել ծայրերում, քանի որ առաջին անգամ եմ նման ուղեցույց գրում, բայց հույս ունեմ, որ այնուամենայնիվ ձեզ դուր եկավ:)

Խորհուրդ ենք տալիս: