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

Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի միջոցով. 7 քայլ (նկարներով)
Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի միջոցով. 7 քայլ (նկարներով)

Video: Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի միջոցով. 7 քայլ (նկարներով)

Video: Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի միջոցով. 7 քայլ (նկարներով)
Video: իրական ժամանակում ձեր բաժանորդների 2024, Նոյեմբեր
Anonim
Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի հետ
Իրական ժամանակում MPU-6050/A0 տվյալների մուտքագրում Arduino- ի և Android- ի հետ

Ինձ հետաքրքրում էր Arduino- ն մեքենայական ուսուցման համար օգտագործելը: Որպես առաջին քայլ, ես ուզում եմ իրական ժամանակում (կամ դրան շատ մոտ) տվյալների ցուցադրում և անտառահատ սարքել Android սարքով: Ես ուզում եմ արագացուցիչի տվյալները վերցնել MPU-6050- ից, այնպես որ ես նախագծեցի կառուցվածքը `HC-05- ը 115200 բաուդ օգտագործելու համար: Այս կազմաձևով տվյալների 4 ալիք կարող է փոխանցվել վայրկյանում 250 օրինակով:

Կառուցվածքը մի քանի քայլ ունի.

  • Կառուցեք վահանը կամ տախտակը
  • Programրագրեք Arduino- ն
  • Ներբեռնեք Android ծրագիրը Google Play- ից կամ ճյուղավորեք GitHub- ը և կազմեք այն ինքներդ
  • Միացրեք MPU-6050- ը թրթռացող ինչ-որ հետաքրքիր բանի (ես օգտագործել եմ R/C մեքենա)
  • Օգտագործեք Android սարքը Arduino- ին միանալու համար
  • Պատկերացրեք տվյալները, եթե հետաքրքրված եք, պահեք
  • Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար

Եկեք սկսենք!

Քայլ 1. Կառուցեք վահան/տախտակ

Կառուցեք վահան/տախտակ
Կառուցեք վահան/տախտակ
Կառուցեք վահան/տախտակ
Կառուցեք վահան/տախտակ

Սա Arduino- ի, HC-05- ի և MPU-6050- ի միացման սխեման է: Ի լրումն MPU-6050- ի, ես ունեմ անալոգային մուտք A0, որը միացված է լույսի սենսորին `ցույց տալու համար, որ ADC- ն աշխատում է: 0անկացած 0-5 վոլտ ազդանշան կարող է մտցվել A0 ADC: Սրանք այն բաղադրիչներն են, որոնք ես օգտագործել եմ կառուցման համար.

  • Արդուինո Ունո
  • HC-05 (HC-06- ը նույնպես պետք է աշխատի, բայց իմ կառուցվածքը HC-05- ի հետ էր)
  • MPU-6050
  • Sparkfun ֆոտոընդդիմադիր
  • 10kOhm դիմադրություն (շագանակագույն-սև-նարնջագույն)

HC-05 Bluetooth մոդուլների մեծ մասը կանխադրված է 9600 baud: Որպեսզի տվյալները հաջողությամբ փոխանցվեն, ձեզ հարկավոր է դրանք նորից ծրագրավորել 115200 բաուդ արագությամբ: Կա մի լավ HC-05/HC-06 AT Command Instructable, որը բացատրում է, թե ինչպես դա անել:

Քայլ 2. Programրագրեք Arduino- ն

Programրագրեք Arduino- ն
Programրագրեք Arduino- ն
Programրագրեք Arduino- ն
Programրագրեք Arduino- ն

Ես օգտագործեցի Arduino IDE թողարկումը 1.6.7 ՝ Arduino- ն ծրագրավորելու համար: Կոդը կարելի է ներբեռնել այս քայլի հղումներից կամ GitHub ռեպոից: Ես ներառել եմ երեք տարբերակ. Firmware125.ino- ն 125 հերց տարբերակն է, Firmware250.ino- ն ՝ 250 հերց տարբերակը, և Firmware500.ino- ն ՝ 500 հերց տարբերակը: Arduino- ն 500 հերց արագությամբ պտտվելու համար A0 ADC- ը չի հավաքվում:

Theրագրաշարը ներառում է Pin 9 -ի մի ժամացույց, որը ես օգտագործել եմ ժամանակը ստուգելու համար: Հետքը ցույց է տալիս, որ ցիկլի ժամանակը 4 ms է (համարժեք 1/250 հերց): Ես գտել եմ, որ եթե սերիական կապի խնդիրներ կան, ապա ժամանակը միատեսակ չի լինի:

Arduino- ի կոդը օգտագործում է բիթերի քողարկում `յուրաքանչյուր փաթեթին ալիքի համար ավելացնելու համար, քանի որ երբեմն նմուշները ընկնում են Bluetooth- ի վրայով: Ես օգտագործում եմ երեք ամենակարևոր բիթերը ՝ ալիքի համարը պահելու համար: Ստորագրված ամբողջ թվերի համար առավել նշանակալի բիթը (MSB) վերապահված է նշանին: Քանի որ ես ցանկանում եմ MSB- ն օգտագործել իմ հասցեի համար, այլ ոչ թե ամբողջ թվանշանի, ես պետք է փոխարկված արագացուցաչափի բոլոր արժեքները փոխարկեմ անստորագիր ամբողջ թվերի: Ես դա անում եմ ՝ յուրաքանչյուր արժեքին ավելացնելով 32768 (MPU արագացուցիչի ADC հաշվարկը +32768 -ից -32768 է) և որպես անստորագիր ամբողջ թվեր.

(անստորագիր int) ((երկար) iAccelData+32767);

Ալիքի համարը նույնն է յուրաքանչյուր արագացուցիչի և A0 նավահանգստի համար, որպեսզի ընկած փաթեթը կարող է հայտնաբերվել, եթե ալիքի համարները շարքից դուրս են գալիս: Arduino- ի Bluetooth- ից եկող փաթեթների համար երկուական օրինակը հետևյալն է (նշանները փոքր-ինչ փոխվում են).

(xacc 3 հասցեի բիթ = 0x00, 13bit անստորագիր) (yacc 3 հասցե բիթ = 0x01, 13bit անստորագիր) (zacc 3 հասցե բիթ = 0x02, 13bit անստորագիր) (3 հասցեի բիթ = 0x03, iadc13bit անստորագիր)

(xacc 3 հասցեի բիթ = 0x00, 13bit անստորագիր) (yacc 3 հասցեի բիթ = 0x01, 13bit անստորագիր) (zacc 3 հասցեի բիթ = 0x02, 13bit անստորագիր) (3 հասցեի բիթ = 0x03, iadc13bit անստորագիր) (xacc 3 հասցեի բիթ = 0x00, 13bit անստորագիր) (yacc 3 հասցեի բիթ = 0x01, 13bit անստորագիր) (zacc 3 հասցեի բիթ = 0x02, 13bit անստորագիր) (3 հասցեի բիթ = 0x03, iadc13bit անստորագիր)…

Եթե Bluetooth- ի տվյալները կարդալու համար օգտագործում եք Accel Plot Android հավելվածից այլ բան, ահա հասցեն հանելու քայլերը (ես օգտագործում եմ փոփոխական անունները Accel Plot Bluetooth.java ֆայլից GitHub ռեպոից).

- Կարդացեք 16 անստորագիր ինտ

- Արդյունահանեք բարձր բայթը և պահեք այն btHigh- ում:

- Հանել ցածր բայթը և պահել այն btLow- ում:

- Առբերեք հասցեն btHigh- ից ՝ օգտագործելով (btHigh >> 5) և 0x07: Այս հայտարարությունը btHigh 5 բիթ է տեղափոխում աջ ՝ երեք հասցեի բիթերը տեղափոխելով ամենացածր երեք գրանցամատյաններին: & Նշանը տրամաբանական է AND, որը 4 և ավելի բարձր բիթերին ստիպում է զրոյի, իսկ վերջին երեք բիթերը ՝ հասցեի բիթերին: Այս հայտարարության արդյունքը ձեր հասցեն է:

Դուք կարիք չունեք անհանգստանալու հասցեի արդյունահանման վերաբերյալ, եթե օգտագործում եք Accel Plot- ը:

Քայլ 3: Ներբեռնեք Android ծրագիրը Google Play- ից կամ ճյուղավորեք GitHub- ը

Ներբեռնեք Android ծրագիրը Google Play- ից կամ ճյուղավորեք GitHub- ը
Ներբեռնեք Android ծրագիրը Google Play- ից կամ ճյուղավորեք GitHub- ը

Դուք ունեք մի քանի տարբերակ ՝ ձեր սարքում Android ծրագիրը բեռնելու համար: Եթե ցանկանում եք խուսափել կոդավորումից, կարող եք որոնել «Accel Plot», և ծրագիրը պետք է հայտնվի Google Play խանութում: Տեղադրման համար հետևեք խանութի հրահանգներին:

Այս Instructable- ի հետ իմ ցանկությունն է, իրոք, խրախուսել ուրիշներին նախագծեր կառուցել, այնպես որ ես նաև կոդը հրապարակել եմ GitHub ռեպոում: Դուք պետք է կարողանաք սա ճյուղավորել, կառուցել և փոփոխել այն, ինչպես հարմար եք համարում: Ես հրապարակեցի ծածկագիրը MIT լիցենզիայի ներքո, այնպես որ զվարճացեք:

Քայլ 4. Միացեք Arduino- ին ինչ -որ հետաքրքիր բանի (ես օգտագործել եմ R/C մեքենա)

Միացեք Arduino- ին ինչ -որ հետաքրքիր բանի (ես օգտագործել եմ R/C մեքենա)
Միացեք Arduino- ին ինչ -որ հետաքրքիր բանի (ես օգտագործել եմ R/C մեքենա)

Ես ուզում եմ, ի վերջո, օգտագործել սարքը ճանապարհի մակերևույթի հայտնաբերման համար, այնպես որ ես կարծում էի, որ փոքր հեռակառավարվող (Հ/Հ) մեքենան տեղին կլինի: Կարծում եմ, որ դա օգնում է հաջորդ քայլին, եթե արագացումները կարող են լինել շարժվող կամ թրթռացող մի բանի վրա:

Քայլ 5. Օգտագործեք Android սարքը Arduino- ին միանալու համար:

Օգտագործեք Android սարքը Arduino- ին միանալու համար
Օգտագործեք Android սարքը Arduino- ին միանալու համար
Օգտագործեք Android սարքը Arduino- ին միանալու համար
Օգտագործեք Android սարքը Arduino- ին միանալու համար
Օգտագործեք Android սարքը Arduino- ին միանալու համար
Օգտագործեք Android սարքը Arduino- ին միանալու համար

Եթե դա դեռ չեք արել, ապա ձեզ հարկավոր է նախ զույգը համատեղել HC-05- ի հետ ձեր Android սարքի հետ: Կարծում եմ, որ սարքերի մեծ մասում դա կարող եք անել ՝ անցնելով կարգավորումներ: HC-05 սարքերի մեծ մասի կանխադրված քորոցը կլինի 1234 կամ 1111:

Բացեք AccelPlot ծրագիրը Android սարքում: Երբ ծրագիրը բացվում է, և HC-05- ին միանալուց առաջ կարող եք փոխել նմուշառման արագությունը (սա սահմանված է Arduino ծածկագրում), արագացուցիչի սանդղակները (նաև Arduino ծածկագրում) և պահպանման ենթակա նմուշների քանակը:

Այս կարգավորումները կատարելուց հետո կտտացրեք «Միացում» կոճակին: Այն պետք է բարձրացնի Bluetooth սարքերը, և ձեր սարքը պետք է նշված լինի: Ընտրեք այն և երբ ծածկագիրը կապ հաստատի, կտեսնեք «Միացված» կենացը:

Accel Plot- ին վերադառնալու համար օգտագործեք հետևի սլաքի կոճակը: Հպեք «Սկսել հոսք» կոճակին ՝ HC-05 սարքի տվյալները ցուցադրելու համար: Դուք նաև պետք է ունենաք կոճակներ ՝ տվյալները պահելու կամ հաճախականության մոդուլացված բովանդակությունը աուդիո խցիկի միջոցով նվագարկելու համար:

Քայլ 6: Ձեռք բերեք և գծագրեք տվյալները

Image
Image
Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար
Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար

«Սկսել հոսք» կոճակը պետք է միացված լինի: Հպեք դրան ՝ տվյալները էկրանին հոսելու համար:

«Պահել տվյալները» կոճակը նույնպես միացված կլինի, կտտացրեք այն ՝ տվյալները պահելու համար:

Accel Plot- ը ներառում է նաև աուդիո ալիքների վրա մոդուլացված ազդանշան թողնելու տարբերակ: Accel Plot հավելվածի 2 ալիքները վերաբերում են Android սարքի աուդիո ելքի միացման ձախ և աջ ալիքներին: Սա օգտակար է, եթե ցանկանում եք MPU-6050- ի տվյալները բերել տվյալների մուտքագրման առանձին համակարգ, ինչպիսին է National Instruments- ը:

Տեսանյութը ցույց է տալիս համակարգ, որը հավաքում է տվյալներ R/C մեքենայի վերաբերյալ:

Քայլ 7. Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար

Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար
Ներմուծեք Python (կամ այլ հարթակ) հետագա օգտագործման համար

Ֆայլերը պահվում են Android սարքում: Ֆայլերը կպահվեն «AccelPlot» գրացուցակում ՝ Android API 18 և ավելի հին համար: Կոդը տեղադրում է.dat ֆայլերը «\ Tablet / Documents / AccelPlot» թղթապանակում API 19 (KitKat 4.4) և ավելի բարձր մակարդակի համար: Ես խնդիրներ եմ ունեցել որոշ Android սարքերի հետ, երբ ֆայլերը միացված են USB- ի միջոցով: Որոշ դեպքերում ես ստիպված եմ եղել վերագործարկել Android սարքը, որպեսզի նրանք հայտնվեն: Վստահ չեմ, թե ինչու է դա տեղի ունենում, բայց պետք է լինի չորս ֆայլ ՝ մեկը յուրաքանչյուր ալիքի համար: Լրացուցիչ աշխատանքի համար դրանք կարող են պատճենվել տեղական գրացուցակում:

Ես օգտագործեցի Anaconda/Python 2.7 ֆայլերը բացելու և տվյալները ցուցադրելու համար: «ExploratoryAnalysis.ipynb» ֆայլն ունի IPython Notebook ֆայլ, որը կբացի բոլոր տվյալների ֆայլերը և գծագրում է ընտրանքային տվյալները: Նմուշ ֆայլերը ներառված են GitHub ռեպոյում: Տվյալները պահվում են որպես մեծ endian 4 բայթ լողացող ('> f'), այնպես որ ցանկացած վերլուծական ծրագիր պետք է կարողանա բացել դրանք:

Ես ներառել եմ նաև «ReadDataFiles.ipynb» անունով ավելի պարզ ֆայլ, որը ցույց է տալիս, թե ինչպես կարդալ մեկ ֆայլում անունով:

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