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

Pet Feeder մեքենա RasPi- ով և Telegram Bot- ով ՝ 4 քայլ (նկարներով)
Pet Feeder մեքենա RasPi- ով և Telegram Bot- ով ՝ 4 քայլ (նկարներով)

Video: Pet Feeder մեքենա RasPi- ով և Telegram Bot- ով ՝ 4 քայլ (նկարներով)

Video: Pet Feeder մեքենա RasPi- ով և Telegram Bot- ով ՝ 4 քայլ (նկարներով)
Video: Raspberry Pi - Pet Feeder with stepper motor in action 2024, Հուլիսի
Anonim
Կենդանիների սնուցող մեքենա RasPi- ով և Telegram բոտով
Կենդանիների սնուցող մեքենա RasPi- ով և Telegram բոտով
Կենդանիների սնուցող մեքենա RasPi- ով և Telegram բոտով
Կենդանիների սնուցող մեքենա RasPi- ով և Telegram բոտով

Նախևառաջ պետք է հստակեցնեմ, որ սա օրիգինալ Idea Mine չէ, պարզապես թարմացրեք և հարմարեցրեք ծրագրավորման սցենարները հեռագրի հետ աշխատելու համար, ես այն գտա նախորդ Instructable- ում, որպեսզի դրա հեղինակներն իսկապես լինեն:

Դուք կարող եք տեսնել դրա իսպաներեն տարբերակը իմ անձնական բլոգում.

Դուք պետք է կառուցեք մի փոքր միացում, որն ակտիվացնում է մեծ ոլորող մոմենտ ստեղծող շարժիչը, և քանի որ իմ գիտելիքները էլեկտրոնիկայի մասին շատ -շատ սակավ են, ես ստիպված էի մի քանի օր անցկացնել ՝ սովորելով հիմնականը ՝ դիտելով տեսանյութեր YouTube- ում:

Բնօրինակի ավտոմատացման սցենարը գրված է Python- ում և օգտագործում է GMail միացում ՝ հրամաններին ծանոթանալու համար, ես երբեք չեմ օգտագործել այս ծրագրավորման լեզուն, բայց ճշմարտությունը այնքան էլ տարբեր չէ մյուսներից, ես այն մի փոքր փոփոխել եմ, որպեսզի այն ավելի լավ հարմարվի նորին: Python գրադարանները և ավտոմատացման գործընթացը ՝ օպերացիոն համակարգի կազմաձևերի հետ միասին, թույլ են տալիս պարամետրավորել հետևյալը.

  • Փոխազդեցություն ChatBots- ի միջոցով վերահսկվող Chat- ին ուղարկված հրամանների միջոցով:
  • Այն թույլ է տալիս հետևել տրամադրվող սննդի կարգավիճակին:
  • Վերահսկում է, թե որքան սնունդ է տրամադրվելու:
  • Այն ունի կոճակներ, որոնք թույլ են տալիս ձեռքով կերակրել:
  • Այն թույլ չի տալիս չափից ավելի սնուցում ՝ անջատելով կերակրումը 8 ժամ ընդմիջումներով:
  • Այն ունի կարգավիճակի LCD, որը ցույց է տալիս տվյալները որպես հաջորդ էներգիայի մատակարարման հաջորդ անգամ ամսաթիվ և ժամ, SSID- ին, որին միացված է WiFi- ին և սարքի IP հասցեին:
  • Լրացուցիչ. Shույց է տալիս որոշ Chuck Norris- ի պատահական կատակներ և / կամ թվերի մանրուքներ ՝ օգտագործելով զույգ հանրային APIS (հնարամիտ բնօրինակի հեղինակի կողմից):
  • Համակարգն անձեռնմխելի է վերագործարկումից ՝ հոսանքի անջատման պատճառով, քանի որ պահպանում է կարգավիճակի ֆայլը:
  • Համակարգը հայտնաբերում է, երբ առկա է կապի կորուստ և փորձում է նորից միանալ մինչև այն հաջողվի:

Քայլ 1: Օգտագործված նյութեր

  • 1 Raperry Pi, գերադասելի է 3 -րդ տարբերակը, որն արդեն ինտեգրված է Wireless քարտին, կարող եք նաև օգտագործել Pi 3 Zero տարբերակը, մի քիչ ավելի շատ աշխատանք է պահանջվում, քանի որ պետք է կպցնել կապերը, բայց ես շատ ուշ պարզեցի, որ դա կարող է օգտագործեք դրանցից ավելի տնտեսողներից մեկը:
  • 1 բարձր ոլորող մոմենտ էլեկտրաշարժիչ ՝ 37 մմ, 3.5 պտույտ / րոպե և 12 Վ:
  • 1 բրեկետ 37 մմ շարժիչի համար:
  • 1 նիշանոց LCD էկրան 20x4 տողից ՝ HD44780 հսկիչով:
  • 1 հացահատիկային դիսպենսեր Zevro մոդել WM1001 լիսեռ-5 դյույմ երկարությամբ, 0.63 սմ տրամագծով (դիսպանսերին ամրացնելու համար անհրաժեշտ է D կտրվածք)
  • Շարժիչին միանալու համար 1 լիսեռ կցորդիչ ՝ 1/4 դյույմից մինչև 6 մմ:

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

  • 1 փայտե տուփ, ես օգտագործում եմ 20,3 սմ լայնություն × 26,7 սմ բարձրություն x 13 սմ խորություն: տուփը ունի դուռ, որը բացվում է աջից ՝ 10 սմ x 4 սմ անցքով ՝ LCD էկրանը տեղադրելու համար (տեղական ատաղձագործություն)
  • 3 Սեղմեք կոճակները
  • 1 փոքր նախատախտակ
  • 1 LED 3.3 վոլտ (Կարևոր չէ գույնը, բայց լարման դեպքում դրանք սովորաբար կարմիր են)
  • 1 NPN PN2222 տրանզիստոր
  • 1 Դիմադրություն 270 Ω
  • 1 Դիմադրություն 10 KΩ
  • 1 պոտենցիոմետր 10 KΩ
  • 1 IN4003 դիոդ (կարող է գործել IN4001 կամ IN4004)
  • 1 12V 3A ադապտեր
  • 1 5V 2A ադապտեր
  • 4 պտուտակ թևի ընկույզով ՝ 1,5 դյույմից մինչև 2 դյույմ (կախված օգտագործվող փայտի հաստությունից, դրանք պետք է ամրացնեն շարժիչի բրաը փայտե տուփին)
  • Մալուխներ Jumper strands տարբեր գույների
  • 1 ծալովի խողովակ կամ 4 դյույմ տրամագծով PVC հավաքածու, դա կախված է այն բարձրությունից, որի վրա կտեղադրվի փայտե տուփը:
  • 1 PVC արմունկ, որը ամրացվում է նախորդ ձուլվածքին:
  • 3 սեղմիչ մեքենայի խողովակների համար (Աշխարհ)
  • 4 ոտք UTP մալուխի (մեզ անհրաժեշտ են ոլորված զույգերը կապեր հաստատելու համար)
  • 1 USB վեբ -տեսախցիկ, պարտադիր չէ, որ լինի բարձր լուծաչափ:

Որոշ այլ նյութեր, որոնք կարելի է ձեռք բերել շինարարական խանութներում կամ, հնարավոր է, մենք արդեն ունենք: Արդյունաբերական ժապավեն

  • Անագի եռակցող
  • Անագ
  • Գայլիկոն
  • Գայլիկոն 5/16
  • S8 պտուտակներ `ընդլայնիչներով

Քայլ 2: Կառուցվածքի տեղադրում

Կառուցվածքի տեղադրում
Կառուցվածքի տեղադրում
Կառուցվածքի տեղադրում
Կառուցվածքի տեղադրում
Կառուցվածքի տեղադրում
Կառուցվածքի տեղադրում

Հիմնական գաղափարն այն է, որ ZEVRO- ի մեջ մտնող բաշխիչ բռնակը փոխարինվի D ձողով, որն այնուհետև կցորդիչի միջոցով միացված կլինի Շարժիչին: Դիսպենսերը կցված կլինի փայտե տուփին, իսկ փայտե տուփը `պատին: Քանի որ ես շատ էլեկտրոնիկա չգիտեմ, ես Bakelite- ի ափսե չեմ օգտագործել միացման համար, այնպես որ ես օգտագործել եմ հացահատիկը `բոլոր բաղադրիչները տեղադրելու համար, այնպես որ տուփի ներքևում ամրացվում է պտուտակներով Rapberry Pi- ն և հացահատիկը, որն արդեն ուներ սոսինձ: հետևի մասում, այնպես որ ես պարզապես գնացի այն կպցնելու համար: Տուփը պետք է ունենա երեք կոճակ, որոնք կունենան «Restամաչափը վերագործարկելու» գործառույթ, ակտիվացրեք սնուցողը, իսկ վերջինը `շարժիչն առանց շրջանագծի անցնելու ուղղակի քայլ: Շարժիչը փակագծի միջոցով կպահվի տուփի ներսում, այնպես որ միայն դիսպանսերին միացվող ձողը դուրս կգա տուփից, տուփի ներքևում ամրացրեք և կարգավորեք վեբ -տեսախցիկը, որպեսզի յուրաքանչյուր փոստի խորհրդատվության և հաստատման մեջ I ուղարկեց լուսանկար, թե ինչպես է ափսեը, որպեսզի այն չկորցնի, եթե նրանք չավարտեն սննդի վերջին փուլը:

Դիսպենսերային հատակից խողովակը, որն իջնում է ափսեի մեջ, տեղադրվում էր, իսկ PVC- ի արմունկը դրվում էր հիմքի վրա, ես մի փոքր Արդյունաբերական ժապավեն դրեցի վարդակից ՝ սննդի հոսքի արագությունը նվազագույնի հասցնելու համար և պատրաստեցի բաշխիչ հիմք: թույլ չտալ, որ սնունդն ամենուր ցողվի: Խողովակը պատին ամրացնելու համար օգտագործեք մետաղական փակագծեր, որոնք պատին ամրացնում եք S8 գամասեղային պտուտակներով:

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

Շարժիչը միացված է ուղղակիորեն 12 վոլտ տրանսֆորմատորի դրական բևեռին, սակայն հոսանքի հոսքի համար այն պետք է անցնի շարժիչի չեզոք բևեռի միացումով, այս տրանզիստորի համար օգտագործվում է N2222: Սովորաբար տրանզիստորներն ունեն 3 ոտք, որոնք համապատասխանում են կոլեկտորին, հիմքին և ճառագայթիչին, կախված տրանզիստորի մոդելից, այդ ոտքերի տեղակայումը կարող է տարբեր լինել. Այս տրանզիստորը կատարում է անջատիչի գործառույթը: Սա այն է, որտեղ մենք շարժիչի չեզոք բևեռը միացնում ենք տրանզիստորի կոլեկտորին, ազնվամորու թիվ 19 քորոցը 270Ω դիմադրության միջոցով միացված է բազային, իսկ ճառագայթիչը `տրանզիստորի չեզոք տերմինալին: 12 Վ տրանսֆորմատոր ազնվամորու երկրային բևեռներից մեկի հետ միասին; տրանզիստորը թույլ կտա հոսանքը կոլեկտորի և արտանետողի միջև, քանի դեռ հիմքը խթանված է բավարար լարման միջոցով. հետագայում մենք ծրագրավորելու ենք ազնվամորին այնպես, որ ըստ որոշ պատվերների 19 -րդ նավահանգիստը կթողնի 3,3 վոլտ, ինչը բավական է, որպեսզի շրջանը շարունակի և ակտիվացնի շարժիչը:

LCD էկրանի համար պրոտոբարդի մեկ այլ հատված օգտագործվում է այլ շղթայում, որտեղ միացնում եք 10KΩ պոտենցիոմետրը, որը մերժում է LCD- ում հայտնված տեքստի հակադրությունը, այնպես որ, եթե էկրանին ոչինչ չի երևում, հավանաբար այն պատճառով է, որ պոտենցիոմետրն ամբողջությամբ փակված; իմ դեպքում ես այն բաց եմ թողնում, որպեսզի տեքստը ավելի լավ պատկերավոր լինի: Ի վերջո, տախտակի վրա կապերը կլինեն հետևյալը.

Քայլ 3: Raspberry Pi կազմաձևում

Նախևառաջ կարևոր է ստեղծել Telegram- ի բոտը, որը կառավարելու է համակարգը: Ձեզ անհրաժեշտ կլինի բանալին `կցված պիթոնի սցենարը փոփոխելու համար: Խնդրում ենք կարդալ հեռագրի Փաստաթղթի քայլերը.

core.telegram.org/bots#3-how-do-i-create-a-bot

Ազնվամորու կազմաձևման համար օգտագործեք Rapbian- ի Lite տարբերակը (մեզ պետք չէ գրաֆիկական ինտերֆեյսը) և կիրառեք հիմնական կոնֆիգուրացիան, որը ցույց է տալիս raspbian- ը տեղադրվելուց կամ raspi-config հրամանի միջոցով. Ընդլայնել տարածությունը 100% -ով և միացնել SSH- ն, բայց հատկապես ամենակարևորը `լռելյայն եկող pi- ի գաղտնաբառն ու օգտանունը փոխելն է (հակառակ դեպքում, ինչպես ինձ հետ պատահեց, նրանք կարող են հարձակում գործել 22 -րդ նավահանգստի կողմից, եթե ունենան ազնվամորիին հասցեագրված հանրային IP). Բացի այդ, WiFi ցանցին ինքնաբերաբար միանալու կոնֆիգուրացիան (ենթադրելով, որ իմ ցանցը կոչվում է «BlogSoriano», իսկ գաղտնաբառս ՝ «$ ecure123!») Մենք ստեղծում և պահում ենք բանալին Անլար կապերի ֆայլում հետևյալ հրամանով.

sudo wpa_passphrase "BlogSoriano" "$ ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf>/dev/null

հաջորդ բանը `թարմացնել և տեղադրել python- ի տեղադրման համակարգը« pip », այնպես որ մենք մուտք կգործենք որպես արմատ, կթարմացնենք և կտեղադրենք անհրաժեշտ փաթեթները.

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Դրանով մենք արդեն ունենք մուտք դեպի python դասարանի գրադարան, այն սցենարի համար, որը մենք պատրաստվում ենք օգտագործել, մենք պետք է տեղադրենք հետևյալը.

pip տեղադրել RPi. GPIO Adafruit-CharLCD httplib2 html2text ցանցեր անլար telepot cv2

Կախվածությունների տեղադրումն ավարտվելուց հետո մենք կօգտագործենք այս քայլին կցված սցենարը, ես այն պահում եմ /opt/petfeeder.py ուղու վրա և ֆայլը կարող է ստեղծվել ՝ օգտագործելով nano /opt/petfeeder.py հրամանը և այս ֆայլի ներսում մենք տեղադրում ենք ծածկագիրը կամ, եթե ունեք ավելի շատ Linux փորձ, կարող եք ուղղակիորեն ներբեռնել wget- ով: Սցենարում կարևոր է փոփոխել BOTKEY (տող 36) և SYSPASSWORD (տող 23) փոփոխականները:

Ես պարզաբանում եմ, որ այս կոդը իմ կողմից չէ գրված, քանի որ ես երբեք ծրագրավորում չէի կատարել Python- ում, ես այն փոփոխեցի միայն նոր գրադարանների և 20x4 LCD էկրանով աշխատելու և telegram Bot- ի օգտագործման համար:

Երբ մենք ունենք Script, մենք պետք է փոխենք փոփոխականների արժեքները բոտի բանալինով. դրա համար անհրաժեշտ է ստեղծել Telegram- ի նոր բոտ, որի միջոցով այն միայն կպահի ֆայլը և դուրս կգա (Ctrl + - ով կամ պահպանեք և ctrl + x թողնում է խմբագրիչը նանո), մենք պարզապես պետք է ապացույց լինենք վերագործարկումների. սցենարը ինքնին պահպանում է էներգետիկ համակարգի վերջին անգամ ակտիվացումը, ուստի մենք պետք է սցենարը գործարկենք ամեն անգամ, երբ օպերացիոն համակարգը գործարկվի, դրա համար ես գտա մի շատ հատուկ լուծում ծրագրի ղեկավարով, որը տեղադրված է Debian պահոցներից:

apt-get տեղադրել վերահսկիչ

և տեղադրվելուց հետո մենք միայն պետք է կազմաձևման ֆայլ ստեղծենք /etc/supervisor/conf.d/petfeeder.conf- ում, քանի որ նախորդ դեպքում մենք կարող ենք ստեղծել և պահպանել այն nano- ով, այս ֆայլը կունենա հետևյալը.

[ծրագիր: petfeederd] գրացուցակ =/opt command = python petfeeder.py autostart = true autorestart = true

Երբ ֆայլը պահվում է, մենք կարող ենք օգտագործել supervisorctl հրամանը [սկսել | կանգառ | վերագործարկել] petfeederd, քանի որ այս դեպքում ծառայությունը չի սկսվել, մենք այն կատարում ենք սկզբից.

supervisorctl սկսել petfeederd

Քայլ 4: Պատրաստ է փորձարկման

Image
Image
Պատրաստ է փորձարկել
Պատրաստ է փորձարկել
Պատրաստ է փորձարկել
Պատրաստ է փորձարկել
Պատրաստ է փորձարկել
Պատրաստ է փորձարկել

Եվ դրա հետ համակարգը պետք է աշխատի, LCD էկրանը պետք է ցույց տա տեղեկատվություն այն մասին, թե երբ այն պետք է լինի հաջորդ հոսքը կամ պատրաստ է կերակրման, եթե ես դա ասեմ: Դուք նաև պետք է ցույց տաք անլար ցանցի անունը, որին միացված եք և այն IP հասցեն, որն օգտագործվում է այն դեպքում, երբ մենք պետք է միանանք SSH- ի միջոցով, ես կիսում եմ իմ պատրաստած փոքրիկ տեսանյութը, ներողություն եմ խնդրում դրա որակի համար, ես ես այնքան էլ լավը չեմ վլոգերի այս թեման:

Դուք պետք է կարողանաք որոնել ձեր բոտը Telegram- ում և ուղարկել հաջորդ հրամաններից մեկը ձեզանից հետո /թույլատրել ձեր զրույցը.

/սնուցում. Սկսում է կերակրման գործընթացը այնքան ժամանակ, քանի դեռ անցել է պարամետրավորված ժամանակաշրջանը:

/երբ. այն վերադարձնում է տեղեկատվություն այն մասին, թե երբ է եղել վերջին կերակրումը և սննդի ափսեի նկարը:

/լուսանկար. Վերադարձեք սննդի ափսեի նկարը:

/վերագործարկել. Վերագործարկեք համակարգը, վերջին թարմացման փոփոխականը սահմանեք 0, որպեսզի կարողանաք անմիջապես կերակրել:

/կարգավիճակ Այն տեղեկացնում է ինտերնետ կապի կարգավիճակի մասին. միացված անլար ցանցի SSID և IP հասցե, որն ունի համակարգը ցանցի ներսում:

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