Mundarija:
- 1 -qadam: Shield/breadboard -ni yarating
- 2 -qadam: Arduino -ni dasturlash
- 3 -qadam: Android ilovasini Google Play -dan yuklab oling yoki GitHub -ni filialiga joylashtiring
- 4 -qadam: Arduino -ga qiziq bir narsaga ulaning (men R/C mashinasidan foydalanganman)
- 5 -qadam: Arduino -ga ulanish uchun Android qurilmasidan foydalaning
- 6 -qadam: Ma'lumotlarni olish va tuzish
- 7 -qadam: Keyingi foydalanish uchun Python (yoki boshqa platformaga) import qiling
Video: Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
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
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
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 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)
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
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
"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
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:
Smart Watchz Corona simptomlarini aniqlash va ma'lumotlarni qayd qilish bilan: 10 qadam
Smart Watchz - korona alomatlarini aniqlash va ma'lumotlarni qayd qilish bilan: bu LM35 va akselerometr yordamida serverda ma'lumotlarni yozib olish bilan Corona simptomlarini aniqlaydigan aqlli soat. Rtc vaqtni ko'rsatish va telefon bilan sinxronlashtirish va undan ma'lumotlarni yozish uchun ishlatiladi. Esp32 ko'k bilan korteks boshqaruvchisi bo'lgan miya sifatida ishlatiladi
Haqiqiy vaqtda suv sathining o'lchagichi: 6 qadam (rasmlar bilan)
Haqiqiy vaqtda quduqdagi suv sathini o'lchash moslamasi: Bu yo'riqnomada qazilgan quduqlarda foydalanish uchun arzon, real vaqtda suv sathini o'lchash moslamasi qanday qurilishi tasvirlangan. Suv sathi o'lchagichi qazilgan quduq ichida osib qo'yish, kuniga bir marta suv sathini o'lchash va ma'lumotlarni WiFi yoki uyali aloqa orqali yuborish uchun mo'ljallangan
PfodApp, Android va Arduino yordamida mobil ma'lumotlarni oddiy qayd qilish: 5 qadam
PfodApp, Android va Arduino yordamida mobil ma'lumotlarni oddiy qayd qilish: Moblie ma'lumotlar jurnali pfodApp, Andriod mobil va Arduino yordamida oddiy qilib qo'yilgan. Android dasturlash talab qilinmaydi. Android -dagi ma'lumotlarni rejalashtirish uchun Android / Arduino / pfodApp -dan foydalanib masofadan boshqariladigan oddiy ma'lumotlarni tuzishga qarang
Ma'lumotlarni qayd qilish bilan ob -havo stantsiyasi: 7 qadam (rasmlar bilan)
Ma'lumotlarni yozib olish bilan ob -havo stantsiyasi: Bu ko'rsatmada men sizga ob -havo stantsiyalari tizimini o'zingiz qanday qilishni ko'rsataman. Sizga kerak bo'lgan yagona narsa - elektronika, dasturlash va ozgina vaqt. Bu loyiha hali boshlanmoqda. Bu faqat birinchi qism. Yangilanishlar
Harorat, PH va erigan kislorod uchun ma'lumotlarni qayd qilish vositasini qanday qilish kerak: 11 qadam (rasmlar bilan)
Harorat, PH va erigan kislorod uchun ma'lumotlarni qayd qilish vositasini qanday qilish kerak: Maqsadlar: ≤ 500 dollarga ma'lumot yozuvchi yasang. U harorat, pH va DO ma'lumotlarini vaqt tamg'asi va I2C aloqasi yordamida saqlaydi. Nima uchun I2C (Inter-Integrated Circuit)? Bir nechta sensorlarni bir qatorga yig'ish mumkin, chunki ularning har birida