
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48


Դպրոցական նախագծի համար մենք պետք է 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- ի կարգավորումը

Առաջին հերթին, մենք պետք է համոզվենք, որ միացված ենք ինտերնետին:
Տերմինալում դա անելու համար կարող եք գնալ ձեր 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րագրակազմ / ծածկագիր



Մենք պետք է եղանակ ստեղծենք եղանակի պահպանման համար, որը ներառում է.
- Մարիադբ տվյալների բազա ՝ իմ սենսորների ընթերցումների և որոշ այլ աննշան բաների պահպանման համար: Կայքի գործարկման համար տափակ ծառայություն:- Մեկ այլ ծառայություն, որն աշխատում է 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 սենսորներ:
Այս տվիչները տեղադրված են առանձին տարայի ներսում, քանի որ դրանք պետք է լինեն բաց երկնքի տակ (առանց անձրևի), բայց ազնվամորու պի պետք չէ:
Ինչպես տեսնում եք, ես մի քանի սիլիկոն ավելացրեցի եզրերին, որպեսզի այն անջրանցիկ լինի: Ես նաև մի քանի անցք բացեցի վերին տարայի մեջ, որպեսզի այնտեղ թարմ օդը ներծծվի:
Հուսով եմ, որ ձեզ դուր եկավ իմ ուղեցույցը, թե ինչպես կառուցել եղանակային եղանակ, այն կարող է մի փոքր կոպիտ լինել ծայրերում, քանի որ առաջին անգամ եմ նման ուղեցույց գրում, բայց հույս ունեմ, որ այնուամենայնիվ ձեզ դուր եկավ:)
Խորհուրդ ենք տալիս:
Կայքով վերահսկվող տոնածառ (յուրաքանչյուրը կարող է վերահսկել այն). 19 քայլ (նկարներով)

Վեբ կայքով վերահսկվող տոնածառ (յուրաքանչյուրը կարող է վերահսկել այն). Ուզու՞մ եք իմանալ, թե ինչպիսին է կայքի կողմից կառավարվող տոնածառը: Ահա տեսանյութը, որը ցույց է տալիս իմ տոնածառի նախագիծը: Ուղիղ հեռարձակումն արդեն ավարտվել է, բայց ես տեսահոլովակ եմ նկարահանել ՝ ֆիքսելով, թե ինչ է կատարվում. Այս տարի ՝ դեկտեմբեր ամսվա կեսին
Պատահականորեն արձագանքող ճոճանակներ. 4 քայլ (նկարներով)

Պատահականորեն արձագանքող ճոճանակներ. Այս նախագծի նպատակն է առաջացնել 2 ճոճանակների շարունակական ճոճում: Ես գտա մի գեղեցիկ փոխազդեցություն ակտիվ և պասիվ ճոճանակի միջև: Նրանք շարժվում են մշտական-մագնիսական, էլեկտրամագնիսական և ձգողական ուժի դաշտերի ամպի մեջ: P- ի քաշը
Մուտքեր ՝ արձագանքող նյութ ՝ 12 քայլ (նկարներով)

Մուտքեր. Արձագանքող նյութ. Հզորությունը էլեկտրական լիցք պահելու օբյեկտի կարողությունն է: Այս ձեռնարկում մենք նախագծելու և հյուսելու ենք տեքստիլ սենսորներ, որոնք արձագանքում են մեր մարմնի տարողությանը և օգտագործում են այդ էլեկտրաէներգիան ՝ միացումն ավարտելու համար: Այս ձեռնարկում դուք կսովորեք բա
PixelOrgan: Ձայնին արձագանքող DotStar LED ժապավեն (MicroView- ով) ՝ 3 քայլ (նկարներով)

PixelOrgan: Ձայնին արձագանքող DotStar LED շերտ (MicroView- ով). Սա թեթև օրգան-առարկա է, որտեղ ներկառուցված խոսափողի մուտքը ցուցադրվում է DotStar 72 LED շերտի վրա, որպեսզի վերին LED- ը ներկայացնի ընթացիկ բարձր/միջին/ցածր հավասարվում է որպես R/G/B, իսկ մնացած LED- ները ներկայացնում են նախորդ արժեքները (որպեսզի ստանանք
LED հպման գրիչ և ուլտրամանուշակագույն ճառագայթներին արձագանքող գրելու մակերես պատրաստելը `5 քայլ

LED հպման գրիչ և ուլտրամանուշակագույն ճառագայթների արձագանքող գրելու մակերևույթի պատրաստում. Ստեղծեք հպումով անջատիչով զգայուն LED լուսամատիտ: Այս հրահանգը օգտագործում է այն մասերը, որոնք հավանաբար հոբբիստների մեծամասնությունը պառկած են տանը ՝ գրիչ պատրաստելու համար, որը լույս է արձակում LED- ից: Ես օգտագործել եմ ուլտրամանուշակագույն լուսադիոդ `« ուրվականներ »գրելու համար; կարող եք սպիտակ սուրֆա քսել