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


Ողջույն!
Մի քանի ամիս առաջ ես իմ սենյակում էի և մտածում էի, թե ինչ նախագիծ եմ ուզում անել դպրոցական առաջադրանքի համար: Ես ուզում էի պատրաստել մի բան, որն ինձ հարմար էր և հետագայում օգուտ կբերի ինձ: Հանկարծ մայրս մտավ սենյակ և սկսեց բողոքել բավարար ջուր չխմելու մասին: Ես միանգամից մի աստվածահայտնություն ունեցա: Գաղափարն ինձ մոտ եկավ պատրաստել ավտոմատ ջրամատակարարիչ (ինչպես կինոթատրոնում), որն ամեն օր հետևում է ձեր ջրի սպառմանը:
Raspberry Pi- ի, մի քանի տվիչների, պոմպի և փոքր գիտելիքների շնորհիվ ես փորձեցի դա հնարավորինս լավը դարձնել:
Բոլոր քայլերի վերջում դուք կունենաք աշխատող ջրամատակարարիչ, որը լցնում է ձեր ջրի շիշը և որը կապում և փոխազդում է ձեր Raspberry Pi- ի հետ: Դուք ոչ միայն կկարողանաք հետևել ձեր ջրի սպառմանը տոկոսների հիման վրա, այլև հնարավորություն կունենաք դիտելու ձեր ջրի տարայի ջերմաստիճանը և ջրի մակարդակը: Ի վերջո, դուք կկարողանաք ստուգել ձեր վիճակագրությունը: Եթե սա ձեզ հետաքրքիր է թվում, անպայման ստուգեք և ինքներդ փորձեք:
GitHub պահոցը ՝
Պարագաներ
Միկրոկոնտրոլերներ
Ազնվամորի Պի 4
Սենսորներ և մոդուլներ
Ես օգտագործել եմ 4 սենսոր.
2xHC-SR04 Ուլտրաձայնային տվիչ
Ուլտրաձայնային տվիչները չափում են հեռավորությունը `օգտագործելով ուլտրաձայնային ալիքներ: Սենսորի գլուխը արձակում է ուլտրաձայնային ալիք և ստանում թիրախից հետադարձ ալիքը: Ուլտրաձայնային տվիչները չափում են թիրախի հեռավորությունը `չափելով արտանետման և ընդունման միջև ընկած ժամանակը: Նրանցից երկուսով ես ստուգեցի, թե արդյոք մոտակայքում շիշ կա, և չափելու տանկի ջրի հեռավորությունը:
Տվյալների թերթիկ
1x DS18B20 ջերմաստիճանի տվիչ
DS18B20- ը 1 լարով ծրագրավորվող peratերմաստիճանի տվիչ է `առավելագույնից ինտեգրված: Այն լայնորեն օգտագործվում է ծանր միջավայրում ջերմաստիճանը չափելու համար, ինչպես քիմիական լուծույթներում, հանքերում կամ հողում և այլն: Ես այն օգտագործել եմ ջրի բաքի ջրի ջերմաստիճանը չափելու համար:
Տվյալների թերթիկ
1x RC522 RFID մոդուլ
RC522- ը 13.56MHz RFID մոդուլ է, որը հիմնված է NXP կիսահաղորդիչների MFRC522 վերահսկիչի վրա: Մոդուլը կարող է ապահովել I2C, SPI և UART և սովորաբար առաքվում է RFID քարտով և բանալիներով: Այն սովորաբար օգտագործվում է հաճախումների համակարգերում և այլ անձանց/օբյեկտների նույնականացման ծրագրերում: Այս նախագծում այն օգտագործվում է նույնականացման/մուտքի համակարգի համար:
Տվյալների թերթիկ
Եվ 2 շարժիչ.
1x Պերիստալտիկ պոմպ 12-24V
Ես օգտագործել եմ պերիստալտիկ պոմպ ՝ տանկից ջուրը ջրի շշի հասցնելու համար: Պոմպերի մեծ մասը չափազանց դանդաղ էր, այնպես որ ես գնացի 24 Վ տարբերակի, որը ես սնուցում եմ 24 Վ հոսանքի ադապտերով:
1x LCD էկրան
LCD- ն օգտագործվում է IP հասցեն և կարևոր հաղորդագրությունները ցուցադրելու համար: Հեղուկ-բյուրեղային էկրանը (LCD) հարթ վահանակ է կամ էլեկտրոնային մոդուլացված այլ օպտիկական սարք, որն օգտագործում է հեղուկ բյուրեղների թեթև մոդուլացնող հատկությունները ՝ բևեռացողների հետ համատեղ:
Տվյալների թերթիկ
Պատյան
Խոսելով պատյանների մասին, ես DIY սարքավորումներ արեցի ՝ տան պահեստի պարագաներով (իմ դեպքում ՝ Բելգիայում գտնվող Brico- ն): Ես օգտագործեցի նրբատախտակ, որը կտրեցի ճիշտ չափի: Ես կխոսեմ այն մասին, թե ինչպես ես ներկայացրեցի իմ գործը հետագա քայլում, բայց ահա այն բաները, որոնք ձեզ անհրաժեշտ կլինեն.
- 3x Նրբատախտակի տախտակներ
- 1x Փոքր ձագար
- 1x ջրի բաք (կարող եք ընտրել, թե ինչ քանակությամբ եք ուզում, ես գնեցի 10 լ)
- 1x Կաթիլային սկուտեղ
Բոլոր նյութերն ու գները կարող եք գտնել կից BOM- ում:
Քայլ 1: Բոլոր էլեկտրոնիկայի միացում


Այժմ, երբ մենք ամփոփել ենք բոլոր էլեկտրոնիկան, ժամանակն է դրանք միացնել: Ես պատրաստել եմ Fritzing- ի երկու սխեմաներ `մեկ տախտակ և մեկ սխեմատիկ, որպեսզի ցույց տամ, թե ինչպես և որտեղ պետք է միացված լինեն բոլոր էլեկտրոնիկները: Fritzing- ի ներբեռնման հղումը կարող եք գտնել այստեղ ՝ https://fritzing.org/download/: Ինչպես արդեն նշվեց, ես օգտագործեցի Raspberry Pi և միացրեցի RFID սկաներ, երկու ուլտրաձայնային տվիչ, մեկ ջերմաստիճանի տվիչ, LCD և պերիստալտիկ պոմպ ջրի համար:
Ես կցեցի երկու սխեմաները PDF- ում, եթե ցանկանում եք ավելի սերտ նայել դրան:
Քայլ 2: Ազնվամորու Pi- ի կարգավորում
Մենք կօգտագործենք մեր Raspberry Pi- ն ՝ ամեն ինչ գործարկելու և վերահսկելու համար ՝ backend, frontend և տվյալների բազան:
Raspberry Pi- ն ինքնաբերաբար չի աշխատում: Այն օգտագործելու համար մենք ստիպված կլինենք անցնել որոշ քայլերի:
Քայլ 1: Raspbian
Եթե դուք օգտագործում եք բոլորովին նոր Raspberry Pi, ապա ձեզ հարկավոր կլինի raspbian: Ներբեռնման հղումը և ձեռնարկը կարող եք գտնել այստեղ:
Քայլ 2: Պատկերը գրել SD- ին
Այժմ, երբ դուք ունեք ձեր Raspbian պատկերը, ձեզ հարկավոր է պատկեր գրելու ծրագրակազմ (խորհուրդ եմ տալիս win32diskimager) ՝ պատկերի ֆայլը SD քարտին գրելու համար: Ամբողջական ձեռնարկը կարելի է գտնել այստեղ:
Քայլ 3: Մուտք գործեք Raspberry Pi
Բացեք «Powershell» և մուտքագրեք «ssh [email protected]»: Եթե ամեն ինչ ճիշտ ընթանա, նրանք ձեզանից գաղտնաբառ կխնդրեն (կանխադրված գաղտնաբառը միշտ ազնվամորին է): Սովորաբար, սա ձեզ պետք է մուտքագրի Raspberry Pi: Այժմ մենք պետք է որոշ փոփոխություններ կատարենք մեր պարամետրերում: Տերմինալում մուտքագրեք sudo raspi-config և սեղմեք enter: Գնացեք տեղայնացման ընտրանքներ> փոխեք ժամային գոտին և դրեք այն ձեր ժամային գոտու վրա: Դուք նաև պետք է փոխեք ձեր wi-fi երկիրը ձեր սեփական վայրին: Վերջապես, անցեք միջերեսային տարբերակներ և միացրեք SPI, I2C և 1-wire: Սենսորները ճիշտ օգտագործելու համար դա կարևոր կլինի:
Քայլ 4: Ինտերնետ կապի կարգավորում
Մենք կօգտագործենք WiFi ցանց: Դուք կարող եք ավելացնել ձեր տնային ցանցը ՝
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Կապ հաստատելու համար դուք պետք է վերագործարկեք ձեր Pi- ն: Ստուգելու համար, թե արդյոք այն աշխատել է, կարող եք օգտագործել ifconfig- ը `ստուգելու, թե արդյոք կա IP հասցե:
Քայլ 5: Վեբ սերվերի և տվյալների բազայի կարգավորում
Նախ, ամենալավն այն է, որ համակարգը թարմացվի և արդիականացվի հրամանների հետևյալ հաջորդականությամբ.
- sudo apt dist-upgrade --auto-remove -y
- sudo apt բարելավում
- sudo apt թարմացում
- sudo apt autoremove
Երբ դա արվի, մեզ անհրաժեշտ կլինեն հետևյալ փաթեթները մեր վեբ սերվերի և տվյալների բազայի համար.
Ապաչի
sudo apt տեղադրել apache2 -y
PHP
sudo apt տեղադրել php
sudo apt տեղադրել phpMyAdmin -y
Մի մոռացեք տեղադրել MySQL- ի անվտանգ գաղտնաբառ, երբ այն խնդրում է գաղտնաբառ սահմանել:
ՄարիաԴԲ
sudo apt տեղադրել mariadb-server mariadb-client -y
sudo apt տեղադրել php -mysql -y
sudo systemctl վերագործարկեք apache2.service
Քայլ 6: Տեղադրեք Python գրադարաններ
Հետևի համար մեզ անհրաժեշտ կլինեն որոշ գրադարաններ Python- ի համար: Մենք դրանք տեղադրելու ենք pip3- ի միջոցով, քանի որ մենք օգտագործում ենք python3:
pip3 տեղադրել mysql-connector-python
pip3 տեղադրել flask-socketio
pip3 տեղադրել flask-cors
pip3 տեղադրել gevent
pip3 տեղադրել gevent-websocket
sudo apt տեղադրել python3 -mysql.connector -y
pip3 տեղադրել mfrc522! (սա մեզ պետք կգա RFID սկաների օգտագործման համար)
Քայլ 7: Visual Studio կոդի պատրաստում
Կոդը գործարկելու համար խորհուրդ եմ տալիս օգտագործել Visual Studio Code- ը ՝ ձեր Raspberry Pi- ին միացնելու համար: VSC- ի տեղադրման ներբեռնման հղումը կարող եք գտնել այստեղ:
Եթե դեռ չունեք SSH- ի միջոցով տեղադրված Remote Development ծրագիրը, կարող եք դա անել այստեղ:
Քայլ 3: Տվյալների բազայի ստեղծում

Մենք կպահենք մեր բոլոր տվիչների տվյալները և օգտագործողի տվյալները տվյալների բազայում:
Իմ տվյալների բազան բաղկացած է 5 աղյուսակից.
Սարքը
Աղյուսակ սարքն ունի DeviceID, որը հղում է կատարում հենց սարքին: DeviceName- ը տալիս է սարքի անունը, այս դեպքում `ուլտրաձայնային տվիչ, ջերմաստիճանի տվիչ,… DeviceType- ը տալիս է սարքի տեսակը (տվիչ կամ գործարկիչ):
Պատմություն
Աղյուսակի պատմությունը պարունակում է սենսորների ամբողջ պատմությունը, ամսաթվի (HistoryDate) հետ միասին, ավելացվել է պատմությունը և պատմության մեջ պահի արժեքը: Այն ունի նաև երկու արտաքին բանալիներ.
- DeviceID ՝ որոշակի տեղեկամատյան սարքին կապելու համար
- UserID ՝ որոշակի օգտվողին տեղեկամատյանին կապելու համար (սա այն պատճառով է, որ մենք օգտագործում ենք RFID, և մենք ցանկանում ենք պատմության գրանցամատյանը ավելացնել մեկ կոնկրետ օգտվողի)
Օգտվող
Table User- ն օգտագործվում է RFID սկաների միջոցով User Login System ստեղծելու համար: Այն բաղկացած է Մականունից, Անունից, Ազգանունից, Գաղտնաբառից և RFID- ից (սա պիտակի RFID համարն է): Յուրաքանչյուր օգտվող կապված է Կոնտեյների հետ (ջրային բաք), ինչպես նաև կրում է ContainerID- ը որպես օտարերկրյա բանալին:
Տարա
Սեղանի բեռնարկղը բաղկացած է բոլոր տարբեր տարաներից: Այն ունի ID, ContainerLocation (սա կարող է լինել ձեռնարկություն, տուն կամ այլ բան): Վերջապես, այն ունի MaxLevel, որը նշանակում է տարայի առավելագույն ծավալը:
Կարգավորումներ
Աղյուսակի կարգավորումները ունեն SettingsID և հետևում են յուրաքանչյուր օգտվողի DailyGoal- ին + օգտվողի կողմից DailyGoal- ի ավելացման ամսաթիվը: Սա բացատրում է Օտարերկրյա բանալին UserID- ը:
Տվյալների բազայի աղբանոց կարելի է գտնել իմ GitHub շտեմարանում ՝ տվյալների շտեմարանում:
Քայլ 4: Հետևի կարգավորում
Չկա նախագիծ ՝ առանց աշխատող հետնապահի:
Հետևը բաղկացած է 4 տարբեր բաներից.
օգնականներ
Օգնականները բոլոր դասերն են, որոնք օգտագործվում են տարբեր տվիչների և շարժիչների համար: There'sերմաստիճանի տվիչի (DS18B20), ուլտրաձայնային տվիչների (HCSR05) օգնական կա, որը կարող է չափել հեռավորությունը, իսկ LCD- ը ՝ էկրանին հաղորդագրություններ գրելու հնարավորություն:
շտեմարաններ
Պահեստների պանակում կգտնեք 2 Python ֆայլ.
- Database.py, որն օգնական է ձեր տվյալների շտեմարանից տողեր հանելու համար: Այն հեշտացնում է տվյալների շտեմարանի գործարկումը և կարդալը:
- DataRepository.py, որը պարունակում է SQL- ի բոլոր հարցումները, որոնք օգտագործվում են հիմնական ծածկագրում (app.py): Դրանք օգտագործվում են տվյալների բազայից տվյալների ստացման, թարմացման կամ ջնջման համար:
app.py
Սա նախագծի հիմնական հետևի կոդն է: Այն կարգավորում է `սահմանելով բոլոր կապումներն ու ռեժիմները և պարունակում է պոմպը աշխատեցնելու, ջերմաստիճանը ստանալու, օգտագործողին հասցնելու և այլնի ծածկագիրը: Այն պարունակում է նաև երթուղիներ, որոնք օգտագործվում են տվյալների շտեմարանից և բոլոր socketio.on- ից տվյալների ստացման համար: Յուրաքանչյուր HTML էջի համար տարբեր socketio.on է `համոզվելու համար, որ յուրաքանչյուր գործառույթ աշխատում է ճիշտ ժամանակին:
config.py
Մեզ մնում է մեկ ֆայլ ՝ config.py: Սա ֆայլ է ՝ կազմաձևման ընտրանքներով ՝ ձեր Տվյալների բազայի հետ կապվելու համար: Մի մոռացեք սահմանել ձեր տվյալների շտեմարանի հավատարմագրերը:
Հետնապահը կարելի է գտնել իմ պահեստում ՝ Backend- ի ներքո:
Քայլ 5: Տեղադրեք Frontend- ը


Frontend- ի համար ես սկսեցի ձևավորել այն, թե ինչպիսին պետք է լինի իմ վեբ սերվերը AdobeXD- ում: Ես օգտագործեցի իմ պատկերանշանի գույները, որոնք նարնջագույնն են և կապույտի 2 տարբեր երանգները: Ես փորձեցի դիզայնը պահել հնարավորինս պարզ և ստեղծեցի ջրային կաթիլ, որը ցույց է տալիս այն տոկոսը, թե որքանով եք հասել ձեր օրվա նպատակին:
Իմ GitHub շտեմարանում դուք կգտնեք իմ Frontend- ը Code> Frontend- ի ներքո: Կարևոր է, որ այն տեղադրեք Raspberry Pi- ի ձեր /var /html թղթապանակում, որպեսզի այն հասանելի լինի վեբ սերվերից:
Այն բաղկացած է մի քանի HTML ֆայլից, որոնք տանում են դեպի տարբեր էջեր: Դուք կգտնեք նաև իմ screen.css- ը ՝ բոլոր այն CSS- ով, որոնք ձեզ հարկավոր են, որպեսզի այն նմանվի իմ նախագծին: Վերջապես, սցենարների ներքո կունենաք տարբեր JavaScript ֆայլեր: Այս սցենարները հաղորդակցվում են իմ հետնապահի հետ ՝ իմ Տվյալների բազայից կամ հետին պլանից տվյալները ցույց տալու համար:
Հետնամասը կարելի է գտնել Frontend- ի ներքո գտնվող իմ շտեմարանում:
Քայլ 6: Պատյան ստեղծելը



Եթե մենք խոսում ենք իմ գործի մասին, ապա կա երկու հիմնական մաս.
Արտաքին պատյան
Ես գործը կառուցեցի զրոյից: Ես օգտագործել եմ նրբատախտակի տախտակներ և դրանք սղոցել ճիշտ չափերի: Ես պտուտակեցի բոլոր տախտակները և անցքեր բացեցի LCD- ի համար, կոճակը, ուլտրաձայնային տվիչը `պարզելու համար, թե արդյոք առկա է ջրի շիշ, և ձագարը` ջուրը բաշխելու համար: Caseուրը և էլեկտրոնիկան անջատված պահելու համար ես պատյանս բաժանեցի տարբեր բաժինների, և ես օգտագործեցի մալուխային սկուտեղ `մալուխները ջրի արտահոսքից պաշտպանելու համար: Կից տեսանյութում դուք կարող եք տեսնել իմ պատյանների մեծ մասը և ինչպես եմ այն պատրաստել: Ես նաև 3D տպեցի մի կոճակ, որը սոսնձված է սովորական կոճակին: Ի վերջո, ես օգտագործեցի կաթիլային սկուտեղ ՝ բռնելու ամբողջ թափված ջուրը: Ես նաև ծխնիներ օգտագործեցի, որպեսզի կարողանայի բացել և փակել կողային վահանակը ՝ իմ էլեկտրոնիկայի վրա նայելու համար: Դուք միշտ կարող եք օգտագործել օգտագործված դիսպենսեր կամ կարող եք օգտագործել նաև այլ նյութեր:
Իմ կառուցվածի ճշգրիտ չափումների համար ես կցեցի PDF ՝ պատյանում օգտագործված թիթեղների բոլոր չափսերով:
Րի բաք
Tankրի բաքը հեշտ գործ չէր: Ստացա ջրատար, որի հատակը փոս էր, ուստի ստիպված էի կպցնել այն, որպեսզի արտահոսքը դադարեցվի: Ձեզ հարկավոր է չորս անցք `մեկը ջերմաստիճանի տվիչի համար, մեկը` պոմպի խողովակի համար: մեկը `տանկը լիցքավորելու համար խողովակի համար, մեկը` ուլտրաձայնային տվիչի համար: Այս վերջինի համար ես 3D տպեցի դրա համար պատյան, որը կարելի է գտնել այստեղ: Սա տվիչին ավելի շատ պաշտպանություն է տալիս ջրի դեմ: Այնուհետև ես տանկի վերևում ուղղանկյուն հորատեցի ՝ սենսորը միացնելու համար:
Խորհուրդ ենք տալիս:
Ավտոմատ ձեռքի ախտահանիչ `8 քայլ

Ձեռքերի ավտոմատ ախտահանող միջոց. COVID-19 համաճարակը դարձել է այն, ինչը հասարակությունը շատ հաճախ է լսել 2020 թվականի ընթացքում: Յուրաքանչյուր քաղաքացի, ով լսում է «COVID-19» բառը, անմիջապես կմտածի «վտանգավոր», «մահացու», «մաքուր մնա» բառի մասին: », Եվ այլ բառեր: Այս COVID-19- ն ունի նաև
DIY Ավտոմատ ձեռքի ախտահանիչ դիսպենսեր `6 քայլ

DIY Ավտոմատ ձեռքի ախտահանիչ դիսպենսեր. Այս նախագծում մենք կկառուցենք ձեռքի ախտահանիչ դիսպենսեր: Այս նախագիծը կօգտագործի Arduino, ուլտրաձայնային տվիչ, ջրի պոմպ և ձեռքի ախտահանող միջոց: Ուլտրաձայնային սենսորն օգտագործվում է ախտահանիչ մեքենայի վարդակից ներքևում գտնվող ձեռքերի առկայությունը ստուգելու համար:
Բջջային լրիվ լիցքավորման ավտոմատ անջատում `20 քայլ

Բջջային լրիվ լիցքավորման ավտոմատ անջատում. Բջջային հեռախոսի լիցքավորման ավտոմատ անջատում ամբողջությամբ լիցքավորվելուց հետո: Անհրաժեշտ չէ անհանգստանալ մարտկոցի կյանքից, նույնիսկ եթե այն թողել եք ամբողջ գիշեր: Բջջային հեռախոսները աշխատում են մարտկոցներով: Չնայած մարտկոցները հարմար են օգտագործման համար, դրանց օգտագործումը նույնպես որոշակի նախազգուշական միջոցների կարիք ունի: Մի մա
Ավտոմատ շների սնուցող !!: 4 քայլ

Ավտոմատ շների սնուցող !!: Հեշտ, օգտակար և առողջ
Պարոն Ուոլփլեյթի գլուխը շրջվում է ձեզ հետևելու համար. 9 քայլ (նկարներով)

Պարոն Wallplate- ի գլուխը շրջվում է ձեզ հետևելու համար. Սա պարոն Wallplate- ի Eye Illusion Robot- ի ավելի առաջադեմ տարբերակն է https://www.instructables.com/id/Mr-Wallplates-Eye-Illusion. Ուլտրաձայնային տվիչը թույլ է տալիս պարոն Ուոլփլեյթի գլխին հետևել ձեզ, երբ քայլում եք նրա դիմաց: Գործընթացը կարող է ամփոփվել