Სარჩევი:

რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android: 7 ნაბიჯი (სურათებით)
რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android: 7 ნაბიჯი (სურათებით)

ვიდეო: რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android: 7 ნაბიჯი (სურათებით)

ვიდეო: რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android: 7 ნაბიჯი (სურათებით)
ვიდეო: STM32-ით და გიროსკოპით 3D კოშკურის მართვა (C/C++/GDScript) 2024, ივლისი
Anonim
რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android– ით
რეალურ დროში MPU-6050/A0 მონაცემთა ჩანაწერი Arduino და Android– ით

მე დაინტერესებული ვარ Arduino– ს მანქანური სწავლების გამოყენებით. როგორც პირველი ნაბიჯი, მინდა ავაშენო რეალურ დროში (ან საკმაოდ ახლოს) მონაცემების ჩვენება და ჟურნალი Android მოწყობილობით. მსურს მივიღო აქსელერომეტრის მონაცემები MPU-6050– დან, ასე რომ, მე შევქმენი კონსტრუქცია, რომ გამოვიყენო HC-05 115200 baud– ზე. ამ კონფიგურაციით მონაცემთა 4 არხი შეიძლება გადაეცეს წამში 250 ნიმუშს.

მშენებლობას რამდენიმე ნაბიჯი აქვს:

  • ააშენეთ ფარი ან დაფა
  • პროგრამირება Arduino
  • ჩამოტვირთეთ Android აპლიკაცია Google Play– დან ან გაშალეთ GitHub და თავად შეადგინეთ იგი
  • დაუკავშირეთ MPU-6050 რაიმე საინტერესო ვიბრაციას (მე ვიყენებ რ/კ მანქანას)
  • გამოიყენეთ Android მოწყობილობა Arduino– ს დასაკავშირებლად
  • ჩაწერეთ მონაცემები, შეინახეთ დაინტერესების შემთხვევაში
  • იმპორტი პითონში (ან სხვა პლატფორმაზე) შემდგომი გამოყენებისთვის

Დავიწყოთ!

ნაბიჯი 1: ააშენეთ ფარი/პურის დაფა

ააშენეთ ფარი/პურის დაფა
ააშენეთ ფარი/პურის დაფა
ააშენეთ ფარი/პურის დაფა
ააშენეთ ფარი/პურის დაფა

ეს არის Arduino, HC-05 და MPU-6050 გაყვანილობის დიაგრამა. გარდა MPU-6050 მაქვს ანალოგური შეყვანა A0, რომელიც დაკავშირებულია სინათლის სენსორთან, რათა დაანახოს, რომ ADC მუშაობს. ნებისმიერი 0-5 ვოლტიანი სიგნალი შეიძლება შემოვიდეს A0 ADC– ში. ეს არის კომპონენტები, რომლებიც მე გამოვიყენე მშენებლობისთვის:

  • არდუინო უნო
  • HC-05 (HC-06 ასევე უნდა მუშაობდეს, მაგრამ ჩემი აშენება იყო HC-05– ით)
  • MPU-6050
  • სპარკფუნის ფოტორეზისტორი
  • 10kOhm რეზისტორი (ყავისფერი-შავი-ნარინჯისფერი)

HC-05 Bluetooth მოდულების უმეტესობა ნაგულისხმევია 9600 baud. იმისათვის, რომ მონაცემები წარმატებით გადაეცეს, დაგჭირდებათ მისი გადაპროგრამება 115200 ბადის სიჩქარით. არსებობს კარგი HC-05/HC-06 AT Command Instructable, რომელიც განმარტავს როგორ გავაკეთოთ ეს.

ნაბიჯი 2: პროგრამირება Arduino

პროგრამირება Arduino
პროგრამირება Arduino
პროგრამირება Arduino
პროგრამირება Arduino

Arduino– ს დასაპროგრამებლად გამოვიყენე Arduino IDE გამოშვება 1.6.7. კოდის გადმოწერა შესაძლებელია ამ ნაბიჯის ბმულებიდან ან GitHub საცავიდან. მე შევიტანე სამი ვერსია: Firmware125.ino არის 125 ჰერცი ვერსია, Firmware250.ino არის 250 ჰერცი ვერსია და Firmware500.ino არის 500 ჰერცი ვერსია. Arduino– ს 500 ჰერცზე ველოსიპედით ასვლის მიზნით, A0 ADC არ არის შეგროვებული.

პროგრამული უზრუნველყოფა მოიცავს საათის ამოღებას პინ 9 -ზე, რომელსაც ვიყენებდი დროის შესამოწმებლად. კვალი აჩვენებს ციკლის დროს 4 ms (ექვივალენტი 1/250 ჰერცი). მე აღმოვაჩინე, რომ თუ არსებობს სერიული ბმულის პრობლემები, დრო არ იქნება ერთგვაროვანი.

Arduino კოდი იყენებს bit ნიღბს თითოეულ პაკეტში არხის ნომრის დასამატებლად, რადგან ნიმუშები ზოგჯერ ვარდება Bluetooth– ზე. მე ვიყენებ სამ ყველაზე მნიშვნელოვან ბიტს არხის ნომრის შესანახად. ხელმოწერილი რიცხვებისთვის ყველაზე მნიშვნელოვანი ბიტი (MSB) დაცულია ნიშნისთვის. ვინაიდან მსურს გამოვიყენო MSB ჩემი მისამართისთვის და არა მთელი რიცხვის ნიშანი, მე უნდა მოვახდინო ყველა ხელმოწერილი აქსელერომეტრის მნიშვნელობა გადავიყვანო ხელმოუწერელ მთელ რიცხვზე. ამას ვაკეთებ 32768 თითოეულ მნიშვნელობას (MPU ამაჩქარებელი ADC რაოდენობაა +32768 -32768) და გამოვწერ როგორც ხელმოუწერელი მთელი რიცხვები:

(ხელმოუწერელი int) ((გრძელი) iAccelData+32767);

არხის ნომერი ერთი და იგივეა თითოეული ამაჩქარებლისა და A0 პორტისათვის, რათა ჩამოშვებული პაკეტის გამოვლენა შესაძლებელია თუ არხის ნომრები მწყობრიდან გამოდის. პაკეტებისთვის, რომლებიც მოდიან Bluetooth– ზე Arduino– ზე, ორობითი შაბლონია (ნიშნები ოდნავ იცვლება):

(xacc 3 მისამართის ბიტი = 0x00, 13 ბიტი ხელმოუწერელი) (yacc 3 მისამართის ბიტი = 0x01, 13 ბიტი ხელმოუწერელი) (ზაკ 3 მისამართის ბიტი = 0x02, 13 ბიტი ხელმოუწერელი) (3 მისამართის ბიტი = 0x03, iadc13 ბიტი ხელმოუწერელი)

(xacc 3 მისამართის ბიტი = 0x00, 13 ბიტი ხელმოუწერელი) (yacc 3 მისამართის ბიტი = 0x01, 13 ბიტი ხელმოუწერელი) (ზაკ 3 მისამართის ბიტი = 0x02, 13 ბიტი ხელმოუწერელი) (3 მისამართის ბიტი = 0x03, iadc13 ბიტი ხელმოუწერელი) (xacc 3 მისამართის ბიტი = 0x00, 13 ბიტიანი ხელმოუწერელი) (yacc 3 მისამართის ბიტი = 0x01, 13 ბიტიანი ხელმოუწერელი) (ზაკ 3 მისამართის ბიტი = 0x02, 13 ბიტი ხელმოუწერელი) (3 მისამართის ბიტი = 0x03, iadc13 ბიტი ხელმოუწერელი)…

თუ Bluetooth– ის მონაცემების წასაკითხად სხვა რამეს იყენებთ Accel Plot Android პროგრამის წასაკითხად, აქ არის ნაბიჯები მისამართის ამოსაღებად (მე ვიყენებ ცვლადის სახელებს Accel Plot Bluetooth.java ფაილიდან GitHub repo– დან):

- წაიკითხეთ 16 ხელმოუწერელ ინტერში

- ამოიღეთ მაღალი ბაიტი და შეინახეთ btHigh.

- ამოიღეთ დაბალი ბაიტი და შეინახეთ btLow.

- მიიღეთ მისამართი btHigh გამოყენებით: (btHigh >> 5) & 0x07. ეს განცხადება ცვლის btHigh 5 ბიტს მარჯვნივ, გადააქვს სამი მისამართის ბიტი ყველაზე დაბალ სამ რეგისტრში. & ნიშანი არის ლოგიკური და რომელიც აიძულებს 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– ს რაღაც საინტერესოზე (მე ვიყენებ რ/კ მანქანას)

დაუკავშირდით Arduino– ს რაღაც საინტერესოზე (მე ვიყენებ რ/კ მანქანას)
დაუკავშირდით 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- ს დაუკავშირდებით, შეგიძლიათ შეცვალოთ შერჩევის მაჩვენებელი (ეს მითითებულია არდუინოს კოდში), ამაჩქარებლების სასწორი (ასევე მითითებულია არდუინოს კოდში) და შესანახი ნიმუშების რაოდენობა.

ამ პარამეტრების გაკეთების შემდეგ დააჭირეთ ღილაკს "დაკავშირება". მან უნდა აჩვენოს Bluetooth მოწყობილობები და თქვენი მოწყობილობა უნდა იყოს ჩამოთვლილი. შეარჩიეთ იგი და როდესაც კოდი დაამყარებს კავშირს, ნახავთ "დაკავშირებულ" სადღეგრძელოს.

გამოიყენეთ უკან ისრის ღილაკი Accel Plot– ში დასაბრუნებლად. შეეხეთ ღილაკს "დაიწყეთ ნაკადი", რათა ნახოთ მონაცემები HC-05 მოწყობილობიდან. თქვენ ასევე უნდა გქონდეთ ღილაკები მონაცემების შესანახად ან სიხშირის მოდულირებული შინაარსის დასაკრავად აუდიო ბუდის საშუალებით.

ნაბიჯი 6: შეიძინეთ და დახაზეთ მონაცემები

Image
Image
იმპორტი პითონში (ან სხვა პლატფორმაში) შემდგომი გამოყენებისთვის
იმპორტი პითონში (ან სხვა პლატფორმაში) შემდგომი გამოყენებისთვის

ღილაკი "ნაკადის დაწყება" უნდა იყოს ჩართული. შეეხეთ მას ეკრანზე მონაცემების სტრიმინგის დასაწყებად.

ღილაკი "მონაცემების შენახვა" ასევე ჩართული იქნება, შეეხეთ მას მონაცემების შესანახად.

Accel Plot ასევე მოიცავს მოდულირებული სიგნალის გამოსვლის შესაძლებლობას აუდიო არხებზე. Accel Plot აპლიკაციის 2 არხი ეხება Android მოწყობილობის აუდიო გამომავალი ბადის მარცხენა და მარჯვენა არხებს. ეს სასარგებლოა იმ შემთხვევაში, თუ გსურთ MPU-6050 მონაცემები შეიტანოთ მონაცემთა ცალკეულ სისტემაში, როგორიცაა National Instruments.

ვიდეო გვიჩვენებს სისტემის მაგალითს, რომელიც აგროვებს მონაცემებს R/C მანქანაზე.

ნაბიჯი 7: იმპორტი პითონში (ან სხვა პლატფორმაში) შემდგომი გამოყენებისთვის

იმპორტი პითონში (ან სხვა პლატფორმაში) შემდგომი გამოყენებისთვის
იმპორტი პითონში (ან სხვა პლატფორმაში) შემდგომი გამოყენებისთვის

ფაილები ინახება 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 საცავში. მონაცემები ინახება როგორც დიდი ენდიანი 4 ბაიტიანი მცურავი ('> f'), ასე რომ ნებისმიერ ანალიზის პროგრამას უნდა შეეძლოს მათი გახსნა.

მე ასევე შევიტანე უფრო მარტივი ფაილი სახელწოდებით "ReadDataFiles.ipynb", რომელიც აჩვენებს თუ როგორ უნდა წაიკითხოთ ერთ ფაილში სახელით.

გირჩევთ: