Բովանդակություն:

Ավտոմատ ջրամատակարարիչ `հետևելու սպառմանը` 6 քայլ
Ավտոմատ ջրամատակարարիչ `հետևելու սպառմանը` 6 քայլ

Video: Ավտոմատ ջրամատակարարիչ `հետևելու սպառմանը` 6 քայլ

Video: Ավտոմատ ջրամատակարարիչ `հետևելու սպառմանը` 6 քայլ
Video: Ավտոմատ կալաշնիկով 2024, Հուլիսի
Anonim
Ավտոմատ ջրամատակարարիչ ՝ հետևելու սպառմանը
Ավտոմատ ջրամատակարարիչ ՝ հետևելու սպառմանը
Ավտոմատ ջրամատակարարիչ ՝ հետևելու սպառմանը
Ավտոմատ ջրամատակարարիչ ՝ հետևելու սպառմանը

Ողջույն!

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

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: Վեբ սերվերի և տվյալների բազայի կարգավորում

Նախ, ամենալավն այն է, որ համակարգը թարմացվի և արդիականացվի հրամանների հետևյալ հաջորդականությամբ.

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt բարելավում
  3. sudo apt թարմացում
  4. 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- ը
Նախադրեք Frontend- ը
Նախադրեք Frontend- ը
Նախադրեք 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 տպեցի դրա համար պատյան, որը կարելի է գտնել այստեղ: Սա տվիչին ավելի շատ պաշտպանություն է տալիս ջրի դեմ: Այնուհետև ես տանկի վերևում ուղղանկյուն հորատեցի ՝ սենսորը միացնելու համար:

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