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

Անկոնտակտ շատրվան. 9 քայլ (նկարներով)
Անկոնտակտ շատրվան. 9 քայլ (նկարներով)

Video: Անկոնտակտ շատրվան. 9 քայլ (նկարներով)

Video: Անկոնտակտ շատրվան. 9 քայլ (նկարներով)
Video: iPhone ԳԱՂՏՆԻ ՖՈւՆԿՑԻԱՆԵՐ,ՈՐՈՆՑ ՄԱՍԻՆ ԴՈւՔ ՉԳԻՏԵՔ: 2024, Հուլիսի
Anonim
Ոչ կոնտակտային շատրվան
Ոչ կոնտակտային շատրվան

MCT- ի իմ առաջին կուրսի ավարտին ինձ հանձնարարվեց կազմել նախագիծ, որը կներառեր ամբողջ հմտությունները, որոնք ես ձեռք էի բերել ամբողջ տարվա ընթացքում:

Ես փնտրում էի մի նախագիծ, որը կստուգեր իմ ուսուցիչների կողմից սահմանված բոլոր պահանջները և միևնույն ժամանակ ինձ համար հաճելի կլիներ կատարել: Առարկա փնտրելիս ես չէի կարող չզգալ Covid-19- ով ոգեշնչվածություն (Սա ճիշտ էր մինչ համաճարակի բռնկումը): Ես ընտրեցի ավելի քիչ կոնտակտային աղբյուր կամ դիսպենսեր, քանի որ այն կառաջարկեր միջոց խմել ջուրը ՝ առանց կոճակներին դիպչելու, մինչև ջուրը դուրս գա:

Այս նախագիծը օգտագործում է հեռավորության սենսոր `հայտնաբերելու համար, թե արդյոք ջրի ելքի տակ մի բաժակ կամ բաժակ է դրված, ապա աղբյուրը կշարունակի ջուրը թողնել 60 վայրկյան (100 մլ / րոպե): Սա ավելի հետևողական դարձնելու համար է, քանի որ ապակու հեռացման հայտնաբերումը պարզվեց, որ դա շատ դժվար/դանդաղ առաջադրանք էր, որի պատճառով էլ ժամանակաչափ դրվեց: Ձեր բաժակը 100 մլ ջրով լցվելուց հետո կարող եք սպասել 5 վայրկյան, և եթե ապակին դեռ գտնվում է հեռավորության սենսորի առջև, այն կշարունակի լցվել մեկ այլ անգամ (սա նշանակում է, որ երկու տարբեր լրացման միջև կա նաև 5 վայրկյան ընդմիջում: իրեր):

Պարագաներ

Բաղադրիչներ

- 1x RaspberryPi (ես օգտագործել եմ 4-րդ տարբերակը, բայց հին տարբերակները նույնպես կարող են աշխատել)- 1x S8050 տրանզիստորը կամ 1x PN2222 տրանզիստորը կարող են աշխատել նաև 1x Photoresistor- 1x HC-SR04 (Ուլտրաձայնային հեռավորության տվիչ)- 1x RFID-RC522- 3x Տարբեր գույներ LED (կապույտ, դեղին, կարմիր)- 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x ջրի պոմպ (օգտագործվել է 12 վ պերիստալտիկ պոմպ, այս նյութի հղում)

- 1x DC սնուցման աղբյուր (12v, 600mAh)- 1x էլեկտրական աղյուս 3 կետով- 3x breadboard (հավանաբար կարող եք ավելի քիչ օգտագործել)- T-cobbler RaspberryPi GPIO կապում- T-cobbler մալուխ (pi- ի և cobbler- ի միջև միացման համար)

Օգտագործված նյութեր և գործիքներ

- Հորատանցք հետևյալ փորվածքներով.

- 4 մմ (պտուտակների համար անցքեր նախապես փորելու համար) - 15 մմ (հեռավորության սենսորի համար անցքեր հորատելու համար)

- screwանկացած պտուտակահան- 45 մմ երկարությամբ 30 պտուտակ- 20 մմ 6 պտուտակ- 2 ծխնիներ դռան համար- MDF- ի ափսե ՝ 130 սմ 80 սմ- մի երկու ֆայլ

Քայլ 1. Շրջանի հավաքում

Շրջանի հավաքում
Շրջանի հավաքում
Շրջանի հավաքում
Շրջանի հավաքում
Շրջանի հավաքում
Շրջանի հավաքում

Շղթայի համար մենք ունենք 2 տվիչ, հեռավորության սենսոր և ֆոտոռեզիստոր: Հեռավորության սենսորն օգտագործվում է ՝ պարզելու համար, թե արդյոք մի բաժակ դրվել է ջրի աղբյուրի միջակայքում, և ըստ ցանկության ես ավելացրել եմ ֆոտոընդդիմադրիչ, սա օգտագործվում է հայտնաբերելու համար, եթե պատյանը բացվել է այն մեկի կողմից, ով ենթադրաբար չի բացել այն: Բացի այդ, մենք ունենք RFID ընթերցող, այն կարող է օգտագործվել մեխանիկի նույնականացման համար, որը պետք է պատյան բացի ջրի ջրամբարը լիցքավորելու կամ մեխանիկական այլ խնդրի համար:

Ակտիվ տարրերի համար մենք ունենք LCD1602, ակտիվ ազդանշանային ազդանշան և պերիստալտիկ պոմպ, LCD- ն օգտագործվում է կարգավիճակը ցուցադրելու համար, ինչպիսին է, եթե գործը բաց է կամ պոմպը աշխատում է, ինչպես նաև ցուցադրվելու է սարքի IP հասցեն: օգտագործվում էր տագնապալի ձայն հնչեցնելու համար, երբ գործը բացվել էր ՝ առանց որևէ մեկի թույլտվության:

Ստորև ես ավելացրել եմ սխեմանի տախտակը և սխեմատիկ տեսքը:

Քայլ 2. Կարգավորեք մեր RaspberryPi- ն

Մեր RaspberryPi- ն կարգավորելու համար մենք ներբեռնելու ենք Raspberry կայքի պատկերման ծրագիրը, դրանով կարող եք ներբեռնել ձեր ուզած Raspbian տարբերակը և պատկերել ձեր SDCARD- ը ձեզ համար: Այս գործիքի աշխատանքը կատարելուց հետո դուք կարող եք բացել SDCARD- ը Windows Explorer- ում, կկարողանաք տեսնել ձեր RaspberryPi- ի բեռնախցիկը: Այստեղ մենք կգտնենք cmdline.txt անունով ֆայլ (մի բացեք այս ֆայլը նոթատետրում, բացեք այն Notepad ++ - ում կամ որևէ այլ IDE- ում): Այս ֆայլի վերջում մենք կավելացնենք ip = 169.254.10.1 ՝ համոզվելու համար, որ կարող ենք միանալ մեր սարքին ethernet- ով (համոզվեք, որ ձեր ֆայլի վերջում ENTERS չեք ավելացնում, այլապես խնդիրներ կունենաք):

Այժմ դուք կարող եք տեղադրել ձեր SDCARD- ը ձեր RaspberryPi- ում և ներբեռնել այն, միացնել Pi- ը ձեր համակարգչին և օգտագործել Putty- ը ՝ ձեր Pi- ին SSH- ով միանալու համար: Useեփամածիկ օգտագործելու փոխարեն իմ Pi- ին միանալու համար ես օգտագործում եմ հետևյալ հրամանը: «ssh [email protected]» սա կարող է ժամանակի ավարտ լինել, այնպես որ համբերատար եղեք և սպասեք, մինչև Pi- ն կբեռնվի: Երբ գաղտնաբառ պահանջվի, մենք կլրացնենք «ազնվամորի» լռելյայն գաղտնաբառը: Մուտք գործելուց հետո համոզվեք, որ փոխեք այս գաղտնաբառը, որպեսզի վատ մտադրությամբ որևէ մեկին թույլ չտա մուտք գործել ձեր Raspberry Pi:

Այժմ մենք կկարգավորենք մեր Pi- ն ՝ մեր կոդի համար անհրաժեշտ ֆունկցիոնալությունը ապահովելու համար: Օգտագործեք «sudo raspi-config» ՝ կազմաձևման ընտրացանկը բացելու համար, և այստեղ մենք կգնանք Interfacing Options:

Այստեղ մենք միացնում ենք հետևյալ ընտրանքները ՝- SPI-I2C

Հետևեք այս ուղեցույցին ՝ ձեր Pi- ում անլար ինտերնետ կապ ստեղծելու համար, երբ դա հաջողությամբ կատարեք, մենք կարող ենք հասնել մեր պահանջվող փաթեթների տեղադրմանը:

Փաթեթներ. (Գործարկեք հրամանները ըստ հերթականության, ինչպես նշված են այստեղ)

Հետևյալը ՝ մեր Pi- sudo apt update && apt upgrade -y- ի վերջին թարմացումները ստանալու համար

Տեղադրեք մեր MySQL սերվերը և webserver- sudo apt install mariadb-server apache2

Ես կօգտագործեմ MySQL Workbench ՝ տվյալների շտեմարանն այս ուղեցույցում հետագայում տեղադրելու համար, եթե չօգտագործեք սա և նախընտրեք phpmyadmin- ը, կարող եք տեղադրել այն հետևյալ հրամանով, ազատ եք օգտագործել ցանկացած այլ MySQL Հաճախորդ, քանի դեռ դուք ի վիճակի եմ ճիշտ ներմուծել տվյալների բազան:- sudo apt տեղադրել phpmyadmin

Վերոնշյալ բոլոր բաներն անելուց հետո մենք պետք է օգտվող ստեղծենք մեր տվյալների շտեմարանի համար: Օգտագործեք «sudo mysql -u root» ՝ ձեր MySQL սերվերին մուտք գործելու համար, այստեղ մենք կստեղծենք db_admin անունով օգտվող ՝ իր համապատասխան գաղտնաբառով: այս գաղտնաբառը նշվում է ինչ -որ տեղ հրահանգների համար: ՏՐԱՄԱԴՐԵԼ ԲՈԼՈՐ ՊՐԻՎԻԼԻԳՆԵՐԸ *. * «db_admin»@«%» «ՀԱՅՏՆԻ ԱՆԿՎՈՄ Է« yourPasswordHere » - ով ՝ ՏՐԱՄԱԴՐՈԹՅԱՆ ԸՆՏՐՈԹՅՈՆՈՎ;

Օգտագործեք «\ q» հրամանը ՝ MySQL տերմինալից դուրս գալու համար:

Python փաթեթներ. Շարունակելուց առաջ մենք դեռ պետք է տեղադրենք python փաթեթներ, գործարկեք ստորև բերված հրամանը ՝ համոզվելու համար, որ ամեն ինչ անթերի փորձի համար է:

sudo pip3 տեղադրել Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Ինչպես նաև հետևյալ MySQL- ը միացրեք python փաթեթներ

Եթե ամեն ինչ ճիշտ էր, այժմ կարող եք այցելել ձեր Pi- ն ձեր վեբ դիտարկիչում ՝ հետևյալ հասցեով ՝

Քայլ 3: Հետևի կարգավորում

Նախագծի ստեղծում
Նախագծի ստեղծում

Այստեղ ես կբացատրեմ, թե ինչպես կարող եք ինքներդ կարգավորել հետին պլանը, նախ ներբեռնել rar ֆայլը ներքևից, այն չբացահայտել որոշ ժամանակավոր գրացուցակում: Միացեք ձեր RaspberryPi- ին FileZilla- ի կամ WinSCP- ի միջոցով ՝ հետևյալ հավատարմագրերով.

IP: 169.254.10.1 Օգտվող ՝ piPassword: ազնվամորի (եթե փոխել եք գաղտնաբառը, դա արեք նաև այստեղ)

Այնուհետև կարող եք շարունակել ձեր չճշտված ֆայլերը փոխանցել pi օգտվողի տնային գրացուցակում: Պարզության համար մենք այս կարգավորումներում ենթադրելու ենք, որ մենք բեռնել ենք մեր բոլոր ֆայլերը փաստաթղթերի գրացուցակում:

Հաջորդ քայլին բաց պահեք ձեր FTP ծրագիրը:

Այժմ կրկին բացեք ձեր հրամանի տողը ձեր SSH կապով, քանի որ մենք պետք է որոշ փոփոխություններ կատարենք վեբ սերվերում, որպեսզի առջևը կարողանա հաղորդակցվել հետնապահի հետ: Մենք կբացենք լռելյայն Apache2 կազմաձևման ֆայլը և այն փոքր -ինչ փոփոխելու: sudo nano /etc/apache2/sites-available/000-default.conf

Մեր նոր բացած կազմաձևման ֆայլում ավելացրեք հետևյալ տողերը DocumentRoot- ի ներքո.

Որպես օրինակ կարող եք դիտել կցված պատկերը:

Քայլ 4: Տեղադրեք Frontend- ը

Նախքան մեր ֆայլերը փոխանցելը, մենք պետք է ինչ -որ բան անենք, նախքան մեր առջևի ֆայլերի փոխանցումը սկսելը: Բացեք ձեր հրամանի տողը նախկինում կատարված SSH կապով և օգտագործեք ստորև բերված հրամանը ՝ մեր RaspberryPi- ի արմատային օգտագործողին անցնելու համար. "Sudo su -"

Դրանից հետո մենք կարող ենք փոխել մեր արմատային օգտվողի գաղտնաբառը հետևյալ հրամանով.

IP: 169.254.10.1 Օգտագործող: rootPassword:

Ներբեռնեք rar ֆայլը ներքևից և անջատեք այն ժամանակավոր թղթապանակում: Դուք կարող եք այս ֆայլերը տեղափոխել ձեր RaspberryPi հետևյալ գրացուցակում/var/www/html/, երբ դա անելուց հետո կարող եք այցելել http: /169.254.10.1, դեռ չեք կարող փոխազդել, քանի որ հետնապահը դեռ չի աշխատում, հետագայում այս ուղեցույցում ձեզ ցույց կտամ, թե ինչպես դա անել:

Քայլ 5. Ներդրում մեր ծրագրի տվյալների շտեմարանը

Մեր նախագծի տվյալների շտեմարանի ներմուծում
Մեր նախագծի տվյալների շտեմարանի ներմուծում
Մեր նախագծի տվյալների շտեմարանի ներմուծում
Մեր նախագծի տվյալների շտեմարանի ներմուծում

Բացեք ձեր նախընտրած MySQL սերվերի կառավարման ծրագիրը և միացեք ձեր Raspberry Pi- ին ՝ 2 -րդ քայլում ստեղծած հավատարմագրերով:

Ներբեռնեք տվյալների բազայի աղբարկղը ներքևից և ներմուծեք այն, ինչպես սովորաբար կանեիք, MySQL workbench կգնայիք Ֆայլ> Բացեք SQL Script և ընտրե՛ք ձեր ներբեռնած տվյալների շտեմարանը: Այնուհետև կտտացրեք CTRL + SHIFT + ENTER և SQL սցենարը պետք է գործարկվի և կառուցվածքը տվյալների բազայի համար պետք է ստեղծվի:

Ես ավելացրեցի իմ RaspberryPi- ի համար օգտագործված հավատարմագրերը ՝ որպես ստորև բերված օրինակ, ինչպես նաև Տվյալների բազայի կառուցվածքի մի քանի նկարներ, կարող եք նայել դրան և փորձել ընդհանուր պատկերացում կազմել, թե ինչպես է ամեն ինչ աշխատում:

Քայլ 6: Մեր ծրագրի մեկնարկը

Սկսենք մեր նախագիծը
Սկսենք մեր նախագիծը
Սկսենք մեր նախագիծը
Սկսենք մեր նախագիծը

Նախքան մեր նախագիծը գործարկելը, մենք պետք է փոխենք տվյալների բազայի հավատարմագրերը config.py ֆայլում, եթե դուք հետևել եք հրահանգներին ճիշտ այնպես, ինչպես նշված է այս ուղեցույցում, ապա դրանք կարող եք գտնել /home/pi/Documents/Backend/src/config.py բաժնում: այստեղ դուք պետք է փոխեք db_config փոփոխականի հավատարմագրերը `համապատասխանելու մեր տվյալների բազայի համար ավելի վաղ ստեղծվածներին: Ես ավելացրել եմ մի օրինակ, թե ինչ կտեսնեք այս ֆայլում ստորև:

Դրանից հետո մենք կավելացնենք: Useառայության ֆայլը ստեղծելու համար օգտագործեք հետևյալ հրամանը.

[Միավոր] Նկարագրություն = Disրի դիսպանսեր Հետո = mysql.service

[Serviceառայություն] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Տեղադրեք] WantedBy = multi-user.target

Փոփոխեք այն տողը, որտեղ գրված է /home/pi/Documents/Backend/index.py որտեղ եք տեղադրել ձեր հետնապահ ֆայլերը, եթե դա ճիշտ չանեք, նախագիծը ճիշտ չի սկսվի: Ստորև կավելացնեմ օրինակելի ֆայլ:

Դա անելուց և տեքստային խմբագրից դուրս գալուց հետո մենք կարող ենք ծառայությունը միացնել հետևյալ հրամաններով.

Եվ որպես լրացուցիչ, մենք կարող ենք գործարկել ՝ sudo systemctl կարգավիճակի դիսպանսեր: Սա ցույց կտա որոշ տեղեկություններ մեր ծառայության շուրջ, եթե այն ակտիվ է, թե ոչ,…

Քայլ 7: Գործը

Այն դեպքն է
Այն դեպքն է
Այն դեպքն է
Այն դեպքն է
Այն դեպքն է
Այն դեպքն է
Այն դեպքն է
Այն դեպքն է

Շնորհավորում ենք, մենք գրեթե այնտեղ ենք, ես կավելացնեմ մի քանի նկար, որոնք ճշգրիտ ցույց կտան իմ նախագծի համար օգտագործված չափերը, ես օգտագործել եմ 18 մմ հաստությամբ MDF թիթեղներ, ըստ ցանկության կարող եք օգտագործել այլ հաստություն: Իմ պատյանը կարող է օգտագործվել որպես ձեր ուղեցույցը կամ կարող եք վերստեղծել այն, ինչ ես պատրաստել եմ: (Եթե դուք օգտագործում եք MDF- ի այլ հաստություն, իմ գծանկարներն այլևս թույլ չեն տա կատարել իմ դիզայնը, համոզվեք, որ այն հարմարեցնեք): Իմ պատրաստած վահանակները. 32 սմ (ներքևի ափսե)- 16 սմ 24 սմ 2 վահանակ (առջևի ափսե, որտեղ LCD- ն է մնում և հարևան ափսե)- 1 վահանակ 28 սմ x 24 սմ (միջին ափսեը երևում է առջևից)- 1 վահանակ 30 սմ 24 սմ (վերին ափսե)

Քայլ 8: Հիացեք վերջնական արտադրանքով

Հիացեք վերջնական արտադրանքով
Հիացեք վերջնական արտադրանքով
Հիացեք վերջնական արտադրանքով
Հիացեք վերջնական արտադրանքով

Դուք հասել եք ավարտին և, հուսով եմ, այժմ կարողացել եք ամբողջը իրականություն դարձնել: Եթե դու պարզապես ընթերցող անցորդ ես, նույնպես ողջունում եմ, շնորհակալ եմ, որ կարդում ես մինչև վերջին քայլը:

Ես շատ արյուն, քրտինք և արցունքներ ծախսեցի այս նախագծի վրա, այնպես որ ես կգնահատեի դա, եթե մեկնաբանություն թողնեիք, այն բարելավելու վերաբերյալ ցանկացած քննադատություն ողջունելի է:

Քայլ 9: Խնդիրներ

Ես նախագիծը կդնեի ներկայիս վիճակում որպես աշխատանքային նախատիպ, որը կարող է շատ ավելի բարելավումներ տեսնել:

Հետևի ծածկագրի ծածկույթը կառուցված է այնպես, որ գլխավոր ստրուկների հարաբերությունները կարող են կատարյալ ձևավորվել, որտեղ մեկ աղբյուրը հանդես կգա որպես հիմնական ճակատ, իսկ մյուս շատրվանները կտարածեն տվյալները և փոփոխություններ վարպետի REST api- ի վրա: Կոդում կան նաև API խորհրդանշական համակարգի մնացորդներ, քանի որ այն նախատեսվում էր իրականացնել, բայց հետագայում ժամանակի սղության պատճառով կրճատվել:

Ես վերբեռնել եմ իմ կոդը իմ Gitlab սերվերի վրա, և այնտեղ կարող եք ամբողջությամբ նայել ծածկագրին ՝

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