Mundarija:

Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)
Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)

Video: Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)

Video: Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)
Video: Lesson 32: MCP9808 High Accuracy I2C Temperature | Arduino Step By Step Course 2024, Noyabr
Anonim
Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish
Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish

Men mashinani o'rganish uchun Arduino -dan foydalanishga qiziqardim. Birinchi qadam sifatida men Android qurilmasi bilan real vaqtda (yoki unga juda yaqin) ma'lumotlarni ko'rsatish va logger yaratmoqchiman. Men MPU-6050 dan akselerometr ma'lumotlarini olishni xohlayman, shuning uchun men HC-05-ni 115200 bodda ishlatadigan qilib qurdim. Ushbu konfiguratsiya yordamida sekundiga 250 ta namunada 4 ta ma'lumot uzatish mumkin.

Qurilish bir necha bosqichlardan iborat:

  • Qalqon yoki non taxtasini yarating
  • Arduino -ni dasturlash
  • Android ilovasini Google Play -dan yuklang yoki GitHub -ni tarmoqqa joylashtiring va uni o'zingiz tuzing
  • MPU-6050 ni tebranadigan qiziqarli narsaga ulang (men R/C mashinasidan foydalandim)
  • Arduino -ga ulanish uchun Android qurilmasidan foydalaning
  • Ma'lumotlarni joylashtiring, agar qiziqsangiz saqlang
  • Keyinchalik foydalanish uchun Pythonga (yoki boshqa platformaga) import qiling

Qani boshladik!

1 -qadam: Shield/breadboard -ni yarating

Shield/breadboard -ni yarating
Shield/breadboard -ni yarating
Shield/breadboard -ni yarating
Shield/breadboard -ni yarating

Bu Arduino, HC-05 va MPU-6050 uchun ulanish sxemasi. MPU-6050-dan tashqari menda ADC ishlayotganligini ko'rsatish uchun yorug'lik sensori bilan bog'langan analog analog A0 bor. Har qanday 0-5 voltli signal A0 ADC ga kiritilishi mumkin. Bu men qurish uchun ishlatgan komponentlar:

  • Arduino Uno
  • HC-05 (HC-06 ham ishlashi kerak, lekin mening qurilishim HC-05 bilan bo'lgan)
  • MPU-6050
  • Sparkfun fotorezistori
  • 10 kOhm qarshilik (jigarrang-qora-to'q sariq)

Ko'pgina HC-05 Bluetooth modullari 9600 baytga o'rnatiladi. Ma'lumotni muvaffaqiyatli uzatish uchun siz uni 115200 bod tezligi uchun qayta dasturlashingiz kerak bo'ladi. Yaxshi HC-05/HC-06 AT buyrug'i ko'rsatma mavjud, u buni qanday qilishni tushuntiradi.

2 -qadam: Arduino -ni dasturlash

Arduino -ni dasturlash
Arduino -ni dasturlash
Arduino -ni dasturlash
Arduino -ni dasturlash

Men Arduino dasturlash uchun Arduino IDE 1.6.7 versiyasidan foydalandim. Kodni ushbu bosqichdagi havolalardan yoki GitHub repo -dan yuklab olish mumkin. Men uchta versiyani qo'shdim: Firmware125.ino - 125 gertsli versiya, Firmware250.ino - 250 gertsli versiya va Firmware500.ino - 500 gertsli versiya. Arduino 500 gts tezlikda aylanishiga erishish uchun A0 ADC yig'ilmaydi.

Dasturiy ta'minotda vaqtni tekshirish uchun ishlatilgan 9 -pinli soat bor. Iz tsikl vaqtining 4 ms (1/250 gertsga teng) ekanligini ko'rsatadi. Men ketma -ket ulanish bilan bog'liq muammolar bo'lsa, vaqt bir xil bo'lmasligini aniqladim.

Arduino kodi har bir paketga kanal raqamini qo'shish uchun bit maskalashdan foydalanadi, chunki ba'zida namunalar Bluetooth orqali tushib ketadi. Men kanal raqamini saqlash uchun eng muhim uchta bitdan foydalanaman. Belgilangan tamsayılar uchun eng muhim bit (MSB) belgi uchun ajratilgan. Men MSB -ni butun sonning o'rniga emas, balki manzilim uchun ishlatmoqchi bo'lganim uchun, imzo qo'yilgan akselerometrning barcha qiymatlarini belgisiz tamsayılarga aylantirishim kerak. Men buni har bir qiymatga 32768 qo'shib (ADU akselerometrining ADC hisoblagichlari +32768 dan -32768 gacha) qo'shib, imzosiz tamsayılar sifatida tashlayman:

(imzosiz int) ((uzun) iAccelData+32767);

Har bir akselerometr va A0 porti uchun kanal raqami bir xil, shuning uchun kanal raqamlari tartibsiz bo'lsa, tushgan paketni aniqlash mumkin. Arduino-dagi Bluetooth-dan keladigan paketlar uchun ikkilik naqsh quyidagicha (belgilar biroz o'zgarib turadi):

(xacc 3 manzil biti = 0x00, 13 bitlik belgisiz) (yacc 3 manzil biti = 0x01, 13 bitlik belgisiz) (zacc 3 manzil biti = 0x02, 13 bitli imzosiz) (3 manzil biti = 0x03, iadc13bit belgisiz)

(xacc 3 manzil biti = 0x00, 13 bitlik belgisiz) (yacc 3 manzil biti = 0x01, 13 bitlik belgisiz) (zacc 3 manzil biti = 0x02, 13 bitli imzosiz) (3 manzil biti = 0x03, iadc13bit belgisiz) (xacc 3 manzil biti = 0x00, 13bit imzosiz) (yacc 3 manzil biti = 0x01, 13 bit imzosiz) (zacc 3 manzil biti = 0x02, 13 bitli imzosiz) (3 manzil biti = 0x03, iadc13bit belgisiz) …

Agar Bluetooth ma'lumotlarini o'qish uchun Accel Plot Android ilovasidan boshqasini ishlatayotgan bo'lsangiz, mana bu manzilni ajratish bo'yicha qadamlar (men GitHub repo -dan Accel Plot Bluetooth.java faylidan o'zgarmaydigan nomlarni ishlataman):

- 16 ta imzosiz intda o'qing

- Yuqori baytni chiqarib oling va btHigh -ga saqlang.

- Past baytni chiqarib oling va btLow -ga saqlang.

- btHigh -dan manzilni oling: (btHigh >> 5) & 0x07. Bu bayonot btHigh 5 bitni o'ngga siljitadi, uchta manzil bitini eng past uchta registrga o'tkazadi. & Belgisi mantiqiy VA 4 va undan yuqori bitlarni nolga, oxirgi uchta bitni esa manzil bitlariga mos kelishiga majbur qiladi. Bu bayonotning natijasi sizning manzilingiz.

Agar siz Accel Plot -dan foydalanayotgan bo'lsangiz, manzilni chiqarish haqida qayg'urishingiz shart emas.

3 -qadam: Android ilovasini Google Play -dan yuklab oling yoki GitHub -ni filialiga joylashtiring

Android ilovasini Google Play -dan yuklab oling yoki GitHub -ga ulang
Android ilovasini Google Play -dan yuklab oling yoki GitHub -ga ulang

Android ilovasini qurilmangizga yuklash uchun sizda ikkita variant bor. Agar siz kodlashdan qochmoqchi bo'lsangiz, "Accel Plot" ni qidirishingiz mumkin va dastur Google Play do'konida paydo bo'lishi kerak. O'rnatish uchun do'kon ko'rsatmalariga amal qiling.

Bu ko'rsatma bilan mening xohishim boshqalarni loyihalar qurishga undashdir, shuning uchun men kodni GitHub repo -da chop etdim. Siz buni tarmoqqa, qurishga va o'zingiz xohlagan tarzda o'zgartirishga qodir bo'lishingiz kerak. Men kodni MIT litsenziyasi ostida nashr qildim, shuning uchun xursand bo'ling!

4 -qadam: Arduino -ga qiziq bir narsaga ulaning (men R/C mashinasidan foydalanganman)

Arduino -ga qiziq bir narsaga ulaning (men R/C mashinasini ishlatganman)
Arduino -ga qiziq bir narsaga ulaning (men R/C mashinasini ishlatganman)

Men oxir -oqibat qurilmani yo'l sirtini aniqlash uchun ishlatmoqchiman, shuning uchun masofadan boshqariladigan (R/C) kichik mashina mos keladi deb o'yladim. O'ylaymanki, bu keyingi bosqichda aksellar harakatlanadigan yoki tebranadigan narsada bo'lishi mumkin.

5 -qadam: Arduino -ga ulanish uchun Android qurilmasidan foydalaning

Arduino -ga ulanish uchun Android qurilmasidan foydalaning
Arduino -ga ulanish uchun Android qurilmasidan foydalaning
Arduino -ga ulanish uchun Android qurilmasidan foydalaning
Arduino -ga ulanish uchun Android qurilmasidan foydalaning
Arduino -ga ulanish uchun Android qurilmasidan foydalaning
Arduino -ga ulanish uchun Android qurilmasidan foydalaning

Agar siz hali bunday qilmagan bo'lsangiz, avval HC-05 ni Android qurilmangizga ulashingiz kerak bo'ladi. Ishonamanki, aksariyat qurilmalarda buni sozlash orqali amalga oshirish mumkin. Ko'pgina HC-05 qurilmalari uchun standart pin 1234 yoki 1111 bo'ladi.

Android qurilmasida AccelPlot ilovasini oching. Ilova ochilganda va HC-05 ga ulanishdan oldin siz namuna olish tezligini (bu Arduino kodida o'rnatiladi), akselerometr shkalasini (Arduino kodida ham o'rnatiladi) va saqlanadigan namunalar sonini o'zgartirishingiz mumkin.

Ushbu sozlamalar o'rnatilgandan so'ng, "Ulanish" tugmasini bosing. U Bluetooth qurilmalarini olib kelishi va qurilmangiz ro'yxatda bo'lishi kerak. Uni tanlang va kod ulanishni o'rnatgandan so'ng siz "Ulangan" tostini ko'rasiz.

Accel Plot -ga qaytish uchun orqaga o'q tugmasidan foydalaning. HC-05 qurilmasidan ma'lumotlarni ko'rsatish uchun "Oqimni boshlash" tugmasini bosing. Ma'lumotni saqlash yoki chastotali modulyatsiyalangan kontentni audio raz'em orqali ijro etish uchun tugmalar ham bo'lishi kerak.

6 -qadam: Ma'lumotlarni olish va tuzish

Image
Image
Keyingi foydalanish uchun Pythonga (yoki boshqa platformaga) import qiling
Keyingi foydalanish uchun Pythonga (yoki boshqa platformaga) import qiling

"Oqimni boshlash" tugmasi yoqilgan bo'lishi kerak. Ma'lumotni ekranga uzatishni boshlash uchun uni bosing.

"Ma'lumotni saqlash" tugmasi ham yoqiladi, ma'lumotlarni saqlash uchun bosing.

Accel Plot shuningdek, audio kanallarda modulyatsiyalangan signalni chiqarish imkoniyatini ham o'z ichiga oladi. Accel Plot ilovasidagi 2 ta kanal Android qurilmasidagi audio chiqish uyasining chap va o'ng kanallarini bildiradi. Agar siz MPU-6050 ma'lumotlarini Milliy asboblar kabi alohida ma'lumotlarni qayd qilish tizimiga o'tkazmoqchi bo'lsangiz, bu foydali bo'ladi.

Videoda R/C avtomashinasida ma'lumotlarni yig'ish tizimining namunasi ko'rsatilgan.

7 -qadam: Keyingi foydalanish uchun Python (yoki boshqa platformaga) import qiling

Keyingi foydalanish uchun Pythonga (yoki boshqa platformaga) import qiling
Keyingi foydalanish uchun Pythonga (yoki boshqa platformaga) import qiling

Fayllar Android qurilmasiga saqlanadi. Fayllar Android API 18 va undan yuqori versiyalari uchun "AccelPlot" katalogida saqlanadi. Kod.dat fayllarini API / 19 (KitKat 4.4) va undan yuqori versiyalari uchun "\ Tablet / Documents / AccelPlot" jildiga joylashtiradi. Men USB orqali ulanganimda ba'zi Android qurilmalarida fayllarni ko'rsatishda muammolarga duch keldim. Ba'zi hollarda, men ularni ko'rsatish uchun Android qurilmasini qayta ishga tushirishga majbur bo'ldim. Bu nima uchun aniq emas, lekin har bir kanal uchun bitta fayl bo'lishi kerak. Ular qo'shimcha ish uchun mahalliy katalogga ko'chirilishi mumkin.

Men fayllarni ochish va ma'lumotlarni ko'rsatish uchun Anaconda/Python 2.7 dan foydalanardim. "ExploratoryAnalysis.ipynb" faylida barcha ma'lumotlar fayllarini ochadigan va namunaviy ma'lumotlarni tuzadigan IPython Notebook fayli mavjud. Namunaviy fayllar GitHub repo -ga kiritilgan. Ma'lumotlar katta baytli 4 baytli suzuvchi sifatida saqlanadi ('> f'), shuning uchun har qanday tahlil dasturi ularni ochishi kerak.

Menda "ReadDataFiles.ipynb" deb nomlangan oddiy fayl ham bor, u bitta faylda qanday nom bilan o'qilishini ko'rsatadi.

Tavsiya: