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

Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով. 15 քայլ (նկարներով)
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով. 15 քայլ (նկարներով)

Video: Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով. 15 քայլ (նկարներով)

Video: Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով. 15 քայլ (նկարներով)
Video: Building Bridges Friendship and Social Skills for Kids 2024, Հուլիսի
Anonim
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով
Կառուցեք ձեր ինտերնետով վերահսկվող վիդեո-հոսքային ռոբոտը Arduino- ով և Raspberry Pi- ով

Ես @RedPhantom- ն եմ (հայտնի է LiquidCrystalDisplay / Itay), 14 -ամյա ուսանող Իսրայելից, ով սովորում է Մաքս Շեյնի անվան բարձրագույն գիտության և մաթեմատիկայի ավագ դպրոցում: Ես պատրաստում եմ այս նախագիծը, որպեսզի բոլորը սովորեն և տարածեն:

Դուք երևի ինքներդ ձեզ մտածել եք. Հմմ … ես գիժ եմ … Եվ իմ երեխաները ցանկանում են, որ ես իրենց հետ նախագիծ անեմ … Նա ցանկանում էր ռոբոտ կառուցել: Նա ցանկանում էր այն հագցնել փոքրիկ լակոտի պես: Հանգստյան օրերի լավ նախագիծ է:

Raspberry Pi- ն կատարյալ է յուրաքանչյուր օգտագործման համար. Այսօր մենք կբացահայտենք այս միկրոհամակարգչի ՝ ռոբոտ պատրաստելու ունակությունները: Այս ռոբոտը կարող է.

  • Շարժվեք և վերահսկվեք LAN (WiFi) միջոցով ՝ օգտագործելով ցանկացած WiFi համակարգիչ, որը միացված է նույն WiFi ցանցին, ինչ Raspberry Pi- ն է:
  • Ուղիղ հեռարձակում կատարեք տեսանյութը ՝ օգտագործելով Raspberry Pi Camera մոդուլը
  • Ուղարկեք տվիչների տվյալները Arduino- ի միջոցով

Տեսնելու համար, թե ինչ է ձեզ հարկավոր այս գեղեցիկ լուսային նախագծի համար, պարզապես կարդացեք հաջորդ քայլը (նախազգուշացումներ) և դրանից հետո Wanted: Components քայլը:

Ահա GitHub ռեպո. GITHUB REPO BY ME

Ահա Siteրագրի կայքը. PROJECT SITE BY ME

Քայլ 1: Wգուշացում. Careգույշ եղեք սա փորձել տանը

ԶԳՈՒՇՈՒԹՅՈՒՆ:

Սույն ձեռնարկի ենթադրությունը, որ դուք ունեք բավարար գիտելիքներ էլեկտրաէներգիայի և էլեկտրական սարքավորումների հիմնական գործունեության մասին: ԵԹԵ ԴՈ CՔ ԳՈՇԱԿ ՉԵՔ ԵՎ ՉԵՔ ՀԵՏԵՎՈՄ ԱՅՍ ՍՊԱՍԱՐԿՈԹՅԱՆ ՈՍՈՄՆՈԹՅՈՆՆԵՐԻՆ, ԴՈ ԳՈՐ. Եթե դուք չունեք այս ձեռնարկի համար անհրաժեշտ գիտելիքներ (զոդում, էլեկտրոնիկայի հիմունքներ), խնդրում ենք հանդես գալ անհատի հետ, ով դա անում է: Շնորհակալություն.

ԱՅՍ Ո INՍՈՈԹՅԱՆ ՀԵUԻՆԱԿԸ ՀԱՆԴԻՍՈՄ Է YԱՆԿԱԱ ՊԱՏԱՍԽԱՆԱՏՎՈԹՅՈՆ ՎՐԱ ԱՊԱՀՈՎՈ ORԹՅԱՆ ԿԱՄ ԳՈPՅՔԻ ԿԱՄ ԿԱՐՈ ԵՎ ՖԻSԻԿԱԿԱՆ ՎՆԱՍԻ: ՕԳՏԱԳՈՐԵԼ ՀԱՆՐԱՊԵՏՈԹՅԱՆ ԱՄԱՆԱԿԸ:

Քայլ 2: Բաղադրիչներ

Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ

Beforeոդման երկաթը տաքացնելուց առաջ մենք պետք է անցնենք այն, ինչ պետք է ինչին միացնել: Ես կազմել եմ այս պարզ աղյուսակը (MS Paint- ը երբեք ինձ չի հիասթափեցնում), որը նկարագրում է, թե որտեղ են գտնվում որոշ մասեր ռոբոտի ներսում:

Պատկերը կառուցված է այնպես, որ կարողանաք մեծացնել և տեսնել ամբողջական լուծաչափով և կարդալ տեքստը:

Քայլ 6. Հասցե Pi- ի համար

Arduino- ն Pi- ի հետ խոսում է ըստ ծրագրի: Իսկ Pi- ն խոսում է համակարգչի հետ, ուստի ինչպե՞ս է աշխատում այս ամենը:

Եկեք նայենք մեր Միացման նախաձեռնման հաջորդականությանը.

  1. Սկսվում է Raspberry Pi- ն
  2. Սկսվում է Arduino- ն
  3. Raspberry Pi- ն սկսում է TCP Client- ը: Այն հեռացնում է իր IP հասցեն LED- ի միջոցով:
  4. Raspberry Pi- ն սկսում է Serial Communications ծառայությունը և միանում Arduino- ին

Հետևաբար, մենք ստեղծեցինք մի տեսակ հաղորդակցություն.

Համակարգիչ Raspberry Pi Arduino

Ես օգտագործել եմ Visual Basic. NET (Microsoft Visual Studio 2013 Community) ծրագիրը, որը գրում է Raspberry Pi- ի և Python- ի հետ խոսող Arduino/Raspberry Pi արձանագրությունը գրելու համար:

Ձեր Pi IP հասցեն իմանալու համար անհրաժեշտ է միայն այն միացնել HDMI էկրանին, մուտք գործել Shell և մուտքագրել հրամանը.

հյուրընկալողի անունը -I

Քայլ 7: րագիրը

Այժմ, երբ մենք ստացել ենք Pi- ի IP հասցեն, մենք դրանում կներկայացնենք SSH (SSH- ն Secure Shell է. Մենք հեռակա կարգով միանում ենք Linux պատյանին) և գրում ենք ֆայլ, որը ցուցադրում է Սերվերի IP հասցեն: Գործարկման ժամանակ Pi- ն նույնպես դա կանի և կգրի այն նավահանգիստը, որին լսում է: Այստեղ ես միայն մի քանի օրինակ կտամ ծածկագրից, բայց այն հասանելի է ներբեռնելու համար այս քայլից և իմ ստեղծած GitHub մասնաճյուղից: Մանրամասներն այդ մասին ավելի ուշ:

Այն աշխատում է այսպես.

  1. RPi- ն սկսվում է:
  2. RPi- ն սկսում է Tcp ծրագիրը տեղական IP- ով և նշանակված նավահանգստով:
  3. RPI- ն սկսում է տեսանյութերի հոսքը
  4. RPI- ն անջատվում է:

Քայլ 8: Գնացեք ֆիզիկական

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

Առաջարկվում է կարդալ ընթերցվող ցուցակում առկա ուսուցողական ուղեցույցները:

Ներբեռնեք կապի սխեման «Միացումներ» քայլից:

ՄՈՏՈՐՍ

Ձեր գնած շարժիչները, հավանաբար, այս տեսքն ունեն, և եթե դրանք չունեն, ապա դա նորմալ է. Եթե դրանք ունեն ընդամենը երկու լար (շատ դեպքերում սև և կարմիր), այն պետք է աշխատի: Փնտրեք նրանց տվյալների թերթիկը առցանց ՝ տեսնելու նրանց աշխատանքային լարումը և հոսանքը: Ազատ զգալ հարցեր տվեք մեկնաբանությունների բաժնում: Ես միշտ կարդում եմ դրանք:

H-BRIDGE

Ես նախկինում երբեք H-Bridge- ով չեմ աշխատել: Ես մի փոքր գուգլեցի և գտա մի լավ ուսանելի, որը բացատրում էր HB- ի սկզբունքները: Դուք նույնպես կարող եք այնտեղ նայել (տե՛ս Ընթերցանության ցուցակի քայլը) և ձերն էլ կապել: Ես շատ չեմ բացատրի: Դուք կարող եք կարդալ այնտեղ և իմանալ այն ամենը, ինչ պետք է այս շղթայի մասին:

LED

Այս փոքրիկ լուսամփոփը կարող է աշխատել տրամաբանական լարումից միայն այն պատճառով, որ այն գրեթե հոսանք չի պահանջում, և 3V-5V 4mA-18mA լարումը: Ըստ ցանկության:

ԱՐԴՈINԻՆՈ

Arduino- ն ազդանշաններ և հրամաններ կստանա Raspberry Pi- ի սերիական կապի միջոցով: Մենք օգտագործում ենք Arduino- ն `մեր շարժիչները վերահսկելու համար, քանի որ Raspberry Pi- ն չի կարող անալոգային արժեքներ թողնել GPIO- ի միջոցով:

Քայլ 9. Raspberry Pi- ի ինքնագործարկումը

Ամեն անգամ, երբ Raspberry Pi- ն միացնեք, ստիպված կլինեք մուտքագրել օգտվողի անունը և գաղտնաբառը: Մենք չենք ուզում դա անել, քանի որ երբեմն մենք պարզապես չենք կարող միացնել ստեղնաշարը Pi- ին, այնպես որ մենք կհետևենք այս ձեռնարկից այս քայլերին ՝ Pi- ն պատրաստող ծրագիրը ինքնաբերաբար գործարկելու համար: Եթե այն կպչվի մի օղակի մեջ, մենք միշտ կարող ենք Ctrl+C այն ընդհատել:

  • sudo crontab -e
  • Եվ հետո մենք մուտքագրելու ենք այն հրամանը, որն ավելացնում է այդ ֆայլը cron manager- ում auto-strartup- ին:

Մենք կկանչենք pibot.sh ֆայլը, որը կտա հրամաններ ՝ սկսել ռոբոտը գործարկելու համար բոլոր տեսակի պիթոնների սցենարները: Եկեք անցնենք դրան.

raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv հոսք: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

Այն ծածկագիրը, որն ամբողջ աշխատանքը կատարում է pi- ի կողքին, կոչվելու է upon_startup.sh:

Դա պարզ shell սցենար է, որը գործարկում է ամեն ինչ:

Քայլ 10. Հյուսթոն, մենք խնդիր ունեցանք… DC Motors- ը նույն մոդելը չեն:

Ես արդեն փորձարկել եմ H-Bridge- ը և այն լավ է աշխատում, բայց երբ միացնում եմ ռոբոտների հարթակից ստացած շարժիչները, ես առցանց պատվիրեցի, որ այդ երկու շարժիչները պտտվում են տարբեր արագություններով և տարբեր ձայներ են արձակում: Շարժիչների վրա գազը փոխեցի 100% -ի: Երկուսն էլ չկարողացան վազել իրենց առավելագույն հնարավորությունների սահմաններում:

Թվում է, թե դրանք երկու տարբեր շարժիչներ են: Մեկն ունի ավելի մեծ ոլորող մոմենտ, որը հիանալի է այս տեսակի ռոբոտների համար, իսկ մյուսը պարզապես չի շարժի ռոբոտին: Այսպիսով, այն շրջվում է շրջանակների մեջ:

Այս պահին, ինչ ես ստացել եմ, Arduino- ի սերիական ծրագիրն աշխատում է միանգամայն լավ, բայց համակարգչի Tcp սերվերը և Pi- ի Tcp Client- ը դեռ կոդավորված չեն: At Ես պետք է լրացնեմ այս գրառումը մրցույթի համար: Ինչ եմ ես անում?

  1. Նախ, ես եռապատկում եմ շարժիչների լարումը: Տվյալների թերթիկում ասվում էր, որ 3V, 6V դրանք չեն տեղափոխել: Այն ժամանակ 9 Վ է: Ես զուգահեռաբար միացրեցի teo մարտկոցները `կրկնապատկելով հոսանքը, և լարումը մնում է նույնը:
  2. Ունե՞մ այլ շարժիչներ, որոնք տեղավորվում են հարթակի վրա տեղադրվող լեռան վրա: Գուցե ես կարող եմ տեսնել, եթե դրանք նման մոդելներ են:
  3. Ես կարող եմ փոխարինել Servos- ին, եթե շոկոլադն իսկապես հարվածի երկրպագուին:

Դպրոցը սկսվեց: Ես պետք է տեսնեմ, թե ինչ անել:

Նշում. Ինչու՞ եմ երկրի վրա գրում այն խնդիրները, որոնց հանդիպում եմ այստեղ: Այսպիսով, եթե դուք ավելի քիչ փորձ ունեք և նույն խնդիրներն ունեք, ապա կիմանաք, թե ինչ անել:

Լուծում

Այսպիսով, ես հերթական փորձարկումն եմ կատարել: Ես հարմարեցրել եմ Arduino կոդի արագության տարբերությունը:

ՈEՇԱԴՐՈԹՅՈՆ. Շարժիչները կարող են պտտվել տարբեր արագություններով: Փոխեք արժեքները Arduino ուրվագծում:

Քայլ 11: [TCP]. Ինչու՞ Tcp և ոչ ապահով Shell: Ի՞նչ է TCP- ն:

Ես երկու բացատրություն ունեմ, թե ինչու է Tcp- ն և ոչ SSH- ն օգտագործում P. C.- ի համար: - Pi հաղորդակցություն:

  1. Նախ, SSH- ն (Secure Shell, տես Բացատրություններ) նախատեսված է հեռավոր համակարգչից հրամաններ գործարկելու համար: Ավելի դժվար է Pi- ին պատասխանել մեր ուզած տեղեկատվությամբ, քանի որ տվյալները վերլուծելու մեր միակ տարբերակը կոշտ և հոգնեցուցիչ լարերի մշակումն է:
  2. Երկրորդ, մենք արդեն գիտենք, թե ինչպես օգտագործել SSH- ը և ցանկանում ենք այս ձեռնարկում սովորել սարքերի միջև հաղորդակցության ավելի շատ եղանակներ:

TCP- ը կամ Փոխանցման վերահսկման արձանագրությունը ինտերնետային արձանագրությունների հավաքակազմի հիմնական արձանագրությունն է: Այն սկիզբ է առել ցանցի սկզբնական ներդրումից, որում լրացրել է ինտերնետային արձանագրությունը (IP): Հետևաբար, ամբողջ փաթեթը սովորաբար կոչվում է TCP/IP: TCP- ն ապահովում է օկտետների հոսքի հուսալի, պատվիրված և սխալ ստուգված առաքում ՝ IP ցանցի միջոցով հաղորդավարների վրա աշխատող ծրագրերի միջև:

(Վիքիպեդիայից)

Այսպիսով, TCP- ի առավելություններն են.

  • Ապահով
  • Արագ
  • Աշխատում է ցանցի ցանկացած վայրում
  • Տրամադրում է տվյալների ճիշտ փոխանցումը ստուգելու մեթոդներ
  • Հոսքի վերահսկում. Ունի պաշտպանություն այն դեպքում, երբ տվյալները ուղարկողը տվյալները շատ արագ է ուղարկում հաճախորդի համար գրանցվելու և մշակելու համար:

Իսկ բացասական կողմերն են.

  • TCP- ում դուք չեք կարող հեռարձակել (Ուղարկեք տվյալներ ցանցի բոլոր սարքերին) և բազմակի (միևնույն, բայց քիչ տարբեր. Յուրաքանչյուր սերվերի պես հեռարձակման հնարավորություն է տալիս սերվերի պես):
  • Սխալներ ձեր ծրագրի և օպերացիոն համակարգի գրադարաններում (որոնք կառավարում են իրենց TCP հաղորդակցությունը, ձեր երթուղիչը գրեթե ոչինչ չի անում, բացի երկու [կամ ավելի] սարքերը միացնելուց)

Ինչու՞ չօգտագործել UDP- ը, կարող եք հարցնել: Ի տարբերություն TCP- ի, UDP- ն համոզված չէ, որ ձեր հաճախորդը ստանում է տվյալները նախքան ավելին ուղարկելը: Ինչպես նամակ ուղարկել և չգիտեն, թե արդյոք հաճախորդը ստանում է այն: Բացի այդ, UDP- ն ավելի քիչ ապահով է: Լրացուցիչ տեղեկությունների համար կարդացեք այս գրառումը Stack Exchange Super User- ից

Այս հոդվածը լավ է և խորհուրդ է տրվում:

Քայլ 12: [TCP]. Թույլ տվեք հաճախորդ դառնալ:

Հաճախորդը (Raspberry Pi- ն մեր դեպքում), որը ստանում է տվյալները սերվերից (Մեր դեպքում մեր ԱՀ -ն) կստանա տվյալներ Pi- ին ուղարկելու համար (սերիական հրամաններ, որոնք կկատարվեն Arduino- ում) և հետ կստանա տվյալներ (սենսորային ընթերցումներ և հետադարձ կապ անմիջապես Arduino- ից: Կցված սխեման ցույց է տալիս երեքի միջև փոխհարաբերությունները:

Python Wiki TcpCommunication հոդվածը ցույց է տալիս, որ այդքան պարզ է նման հաղորդակցվել մի քանի տող կոդով ՝ ներկառուցված վարդակից մոդուլի միջոցով: Մենք կունենանք ծրագիր ԱՀ -ում և մեկ այլ ծրագիր Pi- ում:

Մենք կաշխատենք ընդհատումներով: Իմացեք ավելին դրանց մասին բացատրությունների քայլում: Կարդացեք այնտեղ նաև բուֆերների մասին: Այժմ մենք կարող ենք կարդալ մեր ունեցած տվյալները ՝ օգտագործելով data = s.recv (BUFFER_SIZE), բայց դա կլինի այն, թե քանի նիշ ենք սահմանել դատարկ խայթոցներով: Կարո՞ղ ենք ընդհատումներ օգտագործել: Մեկ այլ հարց. Բուֆերը դատարկ կլինի՞, թե՞ սպասի, մինչև սերվերը ավելի շատ տվյալներ ուղարկի, որի դեպքում սերվերը/հաճախորդը բաց կթողնի բացառություն:

Եկեք միանգամից զբաղվենք դրանով: Մինչև դա անելը, ես փնտրել եմ Վիքիպեդիայի այս հոդվածը, որը թվարկում է օգտագործված TCP և UDP նավահանգիստները: Արագ հայացքից հետո ես որոշեցի, որ այս նախագիծը կհաղորդվի 12298 նավահանգստում, քանի որ այն չի օգտագործվում Օպերացիոն համակարգի և տեղական ծառայությունների կողմից:

Քայլ 13: Փորձեք մեր Tcp Comms- ը

Որպեսզի տեսնենք, թե արդյոք մենք կարող ենք օգտագործել ընդհատումներ, եկեք պարզ հաճախորդ և սերվեր ստեղծենք ՝ օգտագործելով Python հրամանի տողը: Ես դա կանեմ հետևյալ քայլերով.

  1. Գործարկեք մի ծրագիր, որը տեքստ է ուղարկում Tcp- ի միջոցով ՝ օղակի մեջ վարագույրների նավահանգստի միջոցով
  2. Սկսեք մեկ այլ ծրագիր (զուգահեռաբար), որը կարդում է ամբողջ տեքստը մի հանգույցով և տպում այն էկրանին:

Onlyրագրի միայն հատվածները կցուցադրվեն: Բոլոր ծրագրերն աշխատում են Python 3 -ով: Այս բոլոր ծրագրերն են ՝ համակարգչի օգտագործողի ստեղնաշարից սերիական հրամանը Pi- ի միջոցով ուղարկելը Arduino- ին:

  • SBcontrolPC.py - Աշխատել համակարգչի վրա: Սկսում է TCP կապը տեղական հասցեում և նշված նավահանգստում (ես օգտագործում եմ նավահանգիստ 12298, տես նախորդ քայլը ինչու)
  • SBcontrolPi.py - Pi- ով աշխատելու համար: Կարդում է իր բուֆերը յուրաքանչյուր կես վայրկյանը մեկ (0.5 վայրկյան): Սկսում է shell հրահանգը, որը կառավարում է այնպիսի բաներ, ինչպիսիք են տեսանյութերի հոսքը և այլն:

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