Mündəricat:

Arduino və Android ilə Real vaxt MPU-6050/A0 Məlumat Girişi: 7 Addım (Şəkillərlə)
Arduino və Android ilə Real vaxt MPU-6050/A0 Məlumat Girişi: 7 Addım (Şəkillərlə)

Video: Arduino və Android ilə Real vaxt MPU-6050/A0 Məlumat Girişi: 7 Addım (Şəkillərlə)

Video: Arduino və Android ilə Real vaxt MPU-6050/A0 Məlumat Girişi: 7 Addım (Şəkillərlə)
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Iyul
Anonim
Arduino və Android ilə real vaxt rejimində MPU-6050/A0 Məlumat Girişləri
Arduino və Android ilə real vaxt rejimində MPU-6050/A0 Məlumat Girişləri

Arduino -nu maşın öyrənmək üçün istifadə etməklə maraqlandım. İlk addım olaraq, bir Android cihazı ilə real vaxt (və ya ona çox yaxın) məlumat ekranı və qeyd cihazı qurmaq istəyirəm. MPU-6050-dən akselerometr məlumatlarını çəkmək istəyirəm, buna görə də HC-05-ni 115200 baudda istifadə etmək üçün dizayn etdim. Bu konfiqurasiya ilə saniyədə 250 nümunədə 4 məlumat kanalı ötürülə bilər.

Quruluşun bir neçə mərhələsi var:

  • Qalxan və ya çörək taxtası düzəldin
  • Arduino proqramlaşdırın
  • Android tətbiqini Google Play -dən yükləyin və ya GitHub -ı filial edin və özünüz tərtib edin
  • MPU-6050-ni titrəyən maraqlı bir şeyə bağlayın (R/C avtomobili istifadə etdim)
  • Arduino -ya qoşulmaq üçün Android cihazından istifadə edin
  • Verilənləri qeyd edin, maraqlanırsınızsa qeyd edin
  • Əlavə istifadə üçün Python'a (və ya digər platformaya) idxal edin

Gəlin başlayaq!

Addım 1: Shield/çörək taxtası qurun

Shield/breadboard qurun
Shield/breadboard qurun
Shield/breadboard qurun
Shield/breadboard qurun

Bu, Arduino, HC-05 və MPU-6050 üçün əlaqə sxemidir. MPU-6050-yə əlavə olaraq, ADC-nin işlədiyini göstərmək üçün işıq sensoru ilə əlaqəli A0 analog girişi var. İstənilən 0-5 voltluq siqnal A0 ADC-ə daxil edilə bilər. Qurmaq üçün istifadə etdiyim komponentlər bunlardır:

  • Arduino Uno
  • HC-05 (HC-06 da işləməlidir, amma mənim quruluşum HC-05 idi)
  • MPU-6050
  • Sparkfun fotorezistoru
  • 10kOhm müqavimət (qəhvəyi-qara-narıncı)

Əksər HC-05 Bluetooth modulları 9600 baud olaraq təyin olunur. Məlumatların uğurla ötürülməsi üçün onu 115200 baud dərəcəsi ilə yenidən proqramlaşdırmalısınız. Bunu necə edəcəyinizi izah edən yaxşı bir HC-05/HC-06 AT Command Instructable var.

Addım 2: Arduino proqramlaşdırın

Arduino proqramlaşdırın
Arduino proqramlaşdırın
Arduino proqramlaşdırın
Arduino proqramlaşdırın

Arduino proqramlaşdırmaq üçün Arduino IDE 1.6.7 buraxılışından istifadə etdim. Kodu bu addımdakı bağlantılardan və ya GitHub depodan yükləyə bilərsiniz. Üç versiyanı daxil etdim: Firmware125.ino 125 hertz, Firmware250.ino 250 hertz və Firmware500.ino 500 hertz versiyasıdır. Arduino -nun 500 hertz -də dövr etməsini təmin etmək üçün A0 ADC toplanmır.

Firmware, vaxtını yoxlamaq üçün istifadə etdiyim Pin 9 -da bir saatdan ibarətdir. İz, dövrənin 4 ms olduğunu göstərir (1/250 hertzə bərabərdir). Araşdırdım ki, serial bağlantısı ilə bağlı problemlər yaranarsa, vaxt birmənalı olmayacaq.

Arduino kodu, hər paketə bir kanal nömrəsi əlavə etmək üçün bit maskalamadan istifadə edir, çünki nümunələr bəzən Bluetooth üzərindən düşür. Kanal nömrəsini saxlamaq üçün ən əhəmiyyətli üç bitdən istifadə edirəm. İmzalı tam ədədlər üçün ən əhəmiyyətli bit (MSB) işarə üçün ayrılmışdır. MSB -ni tam ədədin işarəsi deyil, ünvanım üçün istifadə etmək istədiyim üçün, imzalanmış sürətləndirici dəyərlərin hamısını işarəsiz tam ədədlərə çevirmək məcburiyyətindəyəm. Bunu hər bir dəyərə 32768 əlavə edərək (MPU akselerometrinin ADC sayıları +32768 -dən -32768 -ə qədərdir) və imzasız tam ədədlər olaraq tökürəm:

(imzasız int) ((uzun) iAccelData+32767);

Kanal nömrələri hər bir akselerometr və A0 portu üçün eynidir, belə ki, kanal nömrələri sıradan çıxdıqda düşmüş bir paket aşkar edilə bilər. Arduino üzərindəki Bluetooth-dan gələn paketlər üçün ikili nümunə belədir (işarələr bir qədər dəyişkəndir):

(xacc 3 ünvan biti = 0x00, 13 bit imzasız) (yacc 3 ünvan biti = 0x01, 13 bit işarəsiz) (zacc 3 ünvan biti = 0x02, 13 bit imzasız) (3 ünvan biti = 0x03, iadc13bit işarəsiz)

(xacc 3 ünvan biti = 0x00, 13 bit işarəsiz) (yacc 3 ünvan biti = 0x01, 13 bit işarəsiz) (zacc 3 ünvan biti = 0x02, 13 bit işarəsiz) (3 ünvan biti = 0x03, iadc13bit işarəsiz) (xacc 3 ünvan biti = 0x00, 13 bit imzasız) (yacc 3 ünvan biti = 0x01, 13 bit imzasız) (zacc 3 ünvan biti = 0x02, 13 bit imzasız) (3 ünvan biti = 0x03, iadc13bit işarəsiz) …

Bluetooth məlumatlarını oxumaq üçün Accel Plot Android tətbiqindən başqa bir şey istifadə edirsinizsə, ünvanı çıxarmaq üçün addımlar bunlardır (GitHub repodan Accel Plot Bluetooth.java faylından dəyişən adlardan istifadə edirəm):

- 16 imzasız intdə oxuyun

- Yüksək baytı çıxarın və btHigh -a qeyd edin.

- Aşağı baytı çıxarın və btLow -a qeyd edin.

- (btHigh >> 5) & 0x07 istifadə edərək ünvanı btHigh -dan əldə edin. Bu ifadə btHigh 5 biti üç ünvanın bitini ən aşağı üç reyestrə keçirərək sağa keçir. & İşarəsi məntiqi VƏ 4 və daha yüksək bitləri sıfıra, son üç biti də ünvan bitlərinə uyğunlaşdırmağa məcbur edir. Bu ifadənin nəticəsi ünvanınızdır.

Accel Plot istifadə edirsinizsə, ünvan çıxarılması barədə narahat olmağınıza ehtiyac yoxdur.

Addım 3: Android Tətbiqini Google Play -dən yükləyin və ya GitHub -ı filial edin

Android Tətbiqini Google Play -dən yükləyin və ya GitHub -dan Şöbəni açın
Android Tətbiqini Google Play -dən yükləyin və ya GitHub -dan Şöbəni açın

Android tətbiqini cihazınıza yükləmək üçün bir neçə seçiminiz var. Kodlaşdırmadan qaçmaq istəyirsinizsə, "Accel Plot" üçün axtarış edə bilərsiniz və tətbiq Google Play mağazasında görünməlidir. Mağaza quraşdırma təlimatlarına əməl edin.

Bu Təlimatla istəyim həqiqətən başqalarını layihələr qurmağa həvəsləndirməkdir, buna görə də kodu GitHub depolarında nəşr etdim. Bunu filial edə, qura və uyğun gördüyünüz kimi dəyişdirə bilməlisiniz. Kodu MIT Lisenziyası altında yayımladım, buna görə əylənin!

Addım 4: Arduino -ya Maraqlı bir şeyə qoşulun (R/C avtomobili istifadə etdim)

Arduino -ya Maraqlı bir şeyə qoşulun (R/C avtomobili istifadə etdim)
Arduino -ya Maraqlı bir şeyə qoşulun (R/C avtomobili istifadə etdim)

Nəhayət cihazı yol səthinin aşkarlanması üçün istifadə etmək istəyirəm, buna görə də uzaqdan idarə olunan (R/C) kiçik bir avtomobilin uyğun olacağını düşündüm. Düşünürəm ki, aksellərin hərəkət edən və ya titrəyən bir şey üzərində ola biləcəyi növbəti addımda kömək edir.

Addım 5: Arduinoya qoşulmaq üçün Android Cihazından istifadə edin

Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin
Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin
Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin
Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin
Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin
Arduino -ya qoşulmaq üçün Android Cihazından istifadə edin

Hələ bunu etməmisinizsə, əvvəlcə HC-05-i Android cihazınıza qoşmalısınız. İnanıram ki, əksər cihazlarda bunu ayarlara gedərək edə bilərsiniz. Əksər HC-05 cihazları üçün standart pin 1234 və ya 1111 olacaq.

Android cihazında AccelPlot tətbiqini açın. Tətbiq açıldıqda və HC-05-ə qoşulmadan əvvəl nümunə götürmə nisbətini (bu Arduino kodunda təyin olunur), akselerometr tərəzilərini (Arduino kodunda da təyin olunur) və saxlanılacaq nümunələrin sayını dəyişə bilərsiniz.

Bu parametrlər edildikdən sonra "Bağlan" düyməsini basın. Bluetooth cihazlarını açmalı və cihazınız siyahıya alınmalıdır. Seçin və kod əlaqəni qurduqdan sonra "Bağlı" bir tost açılır.

Accel Plot -a qayıtmaq üçün geri ox düyməsini istifadə edin. HC-05 cihazından məlumatları göstərmək üçün "Yayımı Başlat" düyməsinə vurun. Məlumatı saxlamaq və ya səs jakı vasitəsilə tezlik modulyasiya edilmiş məzmunu oynamaq üçün mövcud düymələr də olmalıdır.

Addım 6: Məlumat Alın və Planlaşdırın

Image
Image
Əlavə İstifadə üçün Pythona (və ya Digər Platformaya) İdxal Edin
Əlavə İstifadə üçün Pythona (və ya Digər Platformaya) İdxal Edin

"Yayımı Başlat" düyməsi aktiv olmalıdır. Ekrana məlumat axınına başlamaq üçün vurun.

"Məlumatları Saxla" düyməsi də aktiv olacaq, məlumatları saxlamaq üçün vurun.

Accel Plot, səs kanallarında modulyasiya edilmiş bir siqnal çıxarmaq üçün bir seçim də ehtiva edir. Accel Plot tətbiqetməsindəki 2 kanal, Android cihazındakı səs çıxışı yuvasının sol və sağ kanallarına aiddir. MPU-6050 məlumatlarını Milli Alətlər kimi ayrı bir məlumat qeyd sisteminə gətirmək istəyirsinizsə bu faydalıdır.

Videoda R/C avtomobili haqqında məlumat toplayan sistemin nümunəsi göstərilir.

Addım 7: Əlavə İstifadə üçün Python (və ya Digər Platforma) daxil edin

Əlavə İstifadə üçün Pythona (və ya Digər Platformaya) İdxal Edin
Əlavə İstifadə üçün Pythona (və ya Digər Platformaya) İdxal Edin

Fayllar Android cihazında saxlanılır. Fayllar Android API 18 və daha yuxarı üçün "AccelPlot" qovluğunda saxlanılacaq. Kod,.dat fayllarını API 19 (KitKat 4.4) və daha yüksək "\ Tablet / Documents / AccelPlot" qovluğuna yerləşdirir. USB vasitəsilə qoşulduqda bəzi Android cihazlarında faylları göstərməkdə çətinlik çəkdim. Bəzi hallarda, onları göstərmək üçün Android cihazını yenidən başlatmalı oldum. Bunun nədən qaynaqlandığından əmin deyiləm, amma hər kanal üçün bir fayl olmaqla dörd fayl olmalıdır. Əlavə iş üçün yerli bir kataloqa kopyalana bilər.

Faylları açmaq və məlumatları göstərmək üçün Anaconda/Python 2.7 istifadə etdim. "ExploratoryAnalysis.ipynb" faylında bütün məlumat fayllarını açacaq və nümunə məlumatları quracaq IPython Notebook faylı var. Nümunə faylları GitHub depolarına daxildir. Məlumatlar böyük 4 bitlik üzgüçü olaraq saxlanılır ('> f'), buna görə hər hansı bir analiz proqramı onları aça bilməlidir.

Tək bir faylda adla necə oxunacağını göstərən "ReadDataFiles.ipynb" adlı daha sadə bir fayl da əlavə etdim.

Tövsiyə: