Агуулгын хүснэгт:

Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android дээр: 7 алхам (зурагтай)
Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android дээр: 7 алхам (зурагтай)

Видео: Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android дээр: 7 алхам (зурагтай)

Видео: Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android дээр: 7 алхам (зурагтай)
Видео: 아두이노 시뮬레이터 사용하기 2024, Арваннэгдүгээр
Anonim
Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android-тэй
Бодит цагийн MPU-6050/A0 өгөгдөл бүртгэх нь Arduino болон Android-тэй

Би Arduino -ийг машин сурахад ашиглах сонирхолтой байсан. Эхний алхам бол би Андройд төхөөрөмж ашиглан бодит цагийн (эсвэл ойролцоо) өгөгдлийн дэлгэц, бүртгэгч хийхийг хүсч байна. Би MPU-6050-аас хурдатгал хэмжигчийн өгөгдлийг авахыг хүсч байгаа тул HC-05-ийг 115200 bod-д ашиглахаар бүтээсэн. Энэхүү тохиргооны тусламжтайгаар 4 сувгийн өгөгдлийг секундэд 250 дээжээр дамжуулах боломжтой.

Бүтээл нь хэд хэдэн алхамтай:

  • Бамбай эсвэл талхны хавтанг бүтээ
  • Arduino програмчлах
  • Андройд програмыг Google Play -ээс ачаалж эсвэл GitHub -ийг салбарлуулаад өөрөө эмхэтгээрэй
  • MPU-6050-ийг чичирдэг сонирхолтой зүйлд холбоно уу (би R/C машин ашигласан)
  • Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
  • Өгөгдлийг төлөвлөж, сонирхож байвал хадгална уу
  • Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой

Эхэлцгээе!

Алхам 1: Shield/breadboard -ийг бүтээх

Shield/breadboard -ийг бүтээх
Shield/breadboard -ийг бүтээх
Shield/breadboard -ийг бүтээх
Shield/breadboard -ийг бүтээх

Энэ бол Arduino, HC-05, MPU-6050-ийн холболтын диаграм юм. MPU-6050-аас гадна би ADC ажиллаж байгааг харуулахын тулд гэрлийн мэдрэгч дээр A0 аналог оролттой байна. Аливаа 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: 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 -ийг цуглуулдаггүй.

Програм хангамж нь миний цагийг шалгаж байсан Pin 9 дээрх цагийг багтаасан болно. Мөр нь мөчлөгийн хугацаа 4 мс (1/250 герцтэй тэнцүү) байгааг харуулж байна. Цуваа холбоосын асуудал гарвал цаг хугацаа жигд биш болохыг би олж мэдсэн.

Arduino код нь бит маскыг ашиглан пакет бүрт сувгийн дугаар нэмдэг, учир нь дээж заримдаа Bluetooth -ээр дамждаг. Би сувгийн дугаарыг хадгалахын тулд хамгийн чухал гурван битийг ашигладаг. Гарын үсэг зурсан бүхэл тоонуудын хувьд хамгийн чухал ач холбогдолтой бит (MSB) тэмдэгтэд зориулагдсан болно. Би MSB -ийг бүхэл тооноос илүүтэйгээр өөрийн хаягаар ашиглахыг хүсч байгаа тул гарын үсэг зурсан хурдасгуурын бүх утгыг тэмдэггүй бүхэл тоо болгон хөрвүүлэх ёстой. Би үүнийг утга бүрт 32768 нэмж (MPU хурдатгал хэмжигч ADC тоо нь +32768 -аас -32768 хүртэл) нэмээд гарын үсэг зураагүй бүхэл тоо болгон оруулна.

(гарын үсэг зураагүй int) ((урт) iAccelData+32767);

Сувгийн дугаар нь хурдатгал хэмжигч ба A0 порт бүрийн хувьд адилхан бөгөөд ингэснээр сувгийн дугаарууд дараалалгүй байвал унасан пакетийг илрүүлэх боломжтой болно. Arduino дээрх Bluetooth-ээс ирж буй пакетуудын хувьд хоёртын хэв маяг нь (шинж тэмдгүүд нь бага зэрэг өөрчлөгддөг):

(xacc 3 хаягийн бит = 0x00, 13 битийн тэмдэггүй) (yacc 3 хаягийн бит = 0x01, 13 битийн тэмдэггүй) (zacc 3 хаягийн бит = 0x02, 13 битийн тэмдэггүй) (3 хаягийн бит = 0x03, iadc13bit гарын үсэггүй)

(xacc 3 хаягийн бит = 0x00, 13 битийн тэмдэггүй) (yacc 3 хаягийн бит = 0x01, 13 битийн тэмдэггүй) (zacc 3 хаягийн бит = 0x02, 13 битийн тэмдэггүй) (3 хаягийн бит = 0x03, iadc13bit гарын үсэггүй) (xacc 3 хаягийн бит = 0x00, 13 битийн тэмдэггүй) (yacc 3 хаягийн бит = 0x01, 13 битийн тэмдэггүй) (zacc 3 хаягийн бит = 0x02, 13 битийн тэмдэггүй) (3 хаягийн бит = 0x03, iadc13bit гарын үсэггүй) …

Хэрэв та Bluetooth өгөгдлийг уншихын тулд Accel Plot Android програмаас өөр зүйл ашиглаж байгаа бол хаягийг задлах алхмуудыг энд оруулав (би GitHub репо -аас Accel Plot Bluetooth.java файлын хувьсагчийн нэрийг ашиглаж байна):

- Гарын үсэг зураагүй 16 int -ийг уншина уу

- Өндөр байтыг задалж btHigh руу хадгална уу.

- Бага байтыг задалж btLow руу хадгална уу.

- (btHigh >> 5) & 0x07 ашиглан хаягийг btHigh дээрээс аваарай. Энэ мэдэгдэл нь btHigh 5 битийг баруун тийш шилжүүлж гурван хаягийн битийг хамгийн доод гурван регистр рүү шилжүүлнэ. & Тэмдэг нь логик AND ба 4 ба түүнээс дээш битүүдийг тэг болгож, сүүлийн гурван битийг хаягийн битүүдтэй тааруулахыг шаарддаг. Энэхүү мэдэгдлийн үр дүн бол таны хаяг юм.

Хэрэв та Accel Plot ашиглаж байгаа бол хаягийг задлах талаар санаа зовох хэрэггүй болно.

Алхам 3: Андройд програмыг Google Play эсвэл GitHub -ийн салбараас ачаална уу

Google Play эсвэл GitHub -ийн салбараас Андройд програмыг ачаална уу
Google Play эсвэл GitHub -ийн салбараас Андройд програмыг ачаална уу

Андройд програмыг төхөөрөмж дээрээ ачаалах хэд хэдэн сонголт танд байна. Хэрэв та кодлохоос зайлсхийхийг хүсч байвал "Accel Plot" гэж хайх боломжтой бөгөөд апп Google Play дэлгүүрт гарч ирэх ёстой. Дэлгүүрт суулгах зааврыг дагана уу.

Энэхүү зааварчилгааны талаархи миний хүсэл бол бусад хүмүүсийг төсөл зохиоход нь уриалах явдал юм, тиймээс би кодыг GitHub репо дээр нийтэлсэн. Та үүнийг салбарлаж, бүтээж, хүссэнээрээ өөрчлөх боломжтой байх ёстой. Би кодыг MIT лицензийн дагуу нийтэлсэн тул хөгжилтэй байгаарай!

Алхам 4: Arduino руу сонирхолтой зүйлд холбогдоорой (би R/C машин ашигласан)

Arduino руу сонирхолтой зүйлд холбогдоорой (би R/C машин ашигласан)
Arduino руу сонирхолтой зүйлд холбогдоорой (би R/C машин ашигласан)

Би уг төхөөрөмжийг замын гадаргууг илрүүлэх зорилгоор ашиглахыг хүсч байгаа тул алсын удирдлагатай (R/C) жижиг машин тохиромжтой гэж бодсон. Хурц хөдлөх эсвэл чичиргээ хийх зүйл дээр байвал энэ нь дараагийн алхамд тустай гэж би бодож байна.

Алхам 5: Android төхөөрөмжийг ашиглан Arduino руу холбогдоно уу

Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу
Android төхөөрөмжийг ашиглан Arduino -той холбогдоно уу

Хэрэв та үүнийг хийгээгүй бол эхлээд HC-05-ийг Андройд төхөөрөмжтэйгээ хослуулах шаардлагатай болно. Ихэнх төхөөрөмж дээр та үүнийг тохиргоо руу орж хийж чадна гэдэгт би итгэдэг. Ихэнх HC-05 төхөөрөмжүүдийн анхдагч зүү нь 1234 эсвэл 1111 байх болно.

Андройд төхөөрөмж дээр AccelPlot програмыг нээнэ үү. Аппликешн нээгдэж, HC-05-т холбогдохоосоо өмнө дээж авах хурд (үүнийг Arduino кодонд тохируулсан болно), акселерометрийн хэмжээс (мөн Arduino кодонд тохируулсан болно), хадгалах дээжийн тоог өөрчлөх боломжтой.

Эдгээр тохиргоог хийсний дараа "Холбох" товчийг дарна уу. Энэ нь Bluetooth төхөөрөмжүүдийг авчрах ёстой бөгөөд таны төхөөрөмжийг жагсаасан байх ёстой. Үүнийг сонгоод код холболтыг тогтоосны дараа "Холбогдсон" шарсан талх гарч ирнэ.

Буцах сумны товчлуурыг ашиглан Accel Plot руу буцна уу. HC-05 төхөөрөмжөөс өгөгдлийг харуулахын тулд "Урсгалыг эхлүүлэх" товчийг дарна уу. Та мөн өгөгдлийг хадгалах эсвэл давтамжийн модуляцлагдсан контентийг аудио үүрээр тоглуулах боломжтой товчлууруудтай байх ёстой.

Алхам 6: Өгөгдлийг олж авах, төлөвлөх

Image
Image
Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой
Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой

"Цацалтыг эхлүүлэх" товчийг идэвхжүүлсэн байх ёстой. Мэдээллийг дэлгэц рүү цацаж эхлэхийн тулд үүнийг товшино уу.

"Өгөгдлийг хадгалах" товчлуурыг мөн идэвхжүүлэх болно, өгөгдлийг хадгалахын тулд дарна уу.

Accel Plot нь аудио сувгууд дээр модуляцлагдсан дохио гаргах сонголтыг агуулдаг. Accel Plot програмын 2 суваг нь Андройд төхөөрөмж дээрх аудио гаралтын үүрний зүүн ба баруун сувгийг хэлнэ. Хэрэв та MPU-6050 өгөгдлийг Үндэсний багаж гэх мэт өгөгдөл бүртгэх тусдаа системд оруулахыг хүсч байвал энэ нь ашигтай болно.

Видео нь R/C машин дээрх өгөгдлийг цуглуулах системийн жишээг харуулав.

Алхам 7: Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой

Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой
Цаашид ашиглахын тулд Python (эсвэл бусад платформ) руу импортлоорой

Файлуудыг Андройд төхөөрөмж дээр хадгалдаг. Файлуудыг Android API 18 ба түүнээс дээш хувилбаруудад зориулсан "AccelPlot" лавлах дор хадгалах болно. Код нь.dat файлуудыг API / 19 (KitKat 4.4) ба түүнээс дээш хувилбарын "\ Tablet / Documents / AccelPlot" фолдерт байрлуулдаг. USB -ээр холбогдсон үед зарим Андройд төхөөрөмж дээр файл харуулах асуудал гарсан. Зарим тохиолдолд би тэдгээрийг харуулахын тулд Андройд төхөөрөмжийг дахин ачаалах шаардлагатай болсон. Яагаад гэдгийг нь мэдэхгүй ч суваг тус бүрт нэг файл байх ёстой. Нэмэлт ажил хийхийн тулд тэдгээрийг орон нутгийн лавлах руу хуулж болно.

Би Anaconda/Python 2.7 ашиглан файлуудыг нээж өгөгдлийг харуулсан. "ExploratoryAnalysis.ipynb" файл нь IPython Notebook файлтай бөгөөд бүх өгөгдлийн файлуудыг нээж, түүвэр өгөгдлийг төлөвлөх болно. Жишээ файлуудыг GitHub репо -д оруулсан болно. Өгөгдлийг 4 байт хөвөгч ('> f') хэлбэрээр хадгалдаг тул аливаа анализ хийх програм нээх боломжтой байх ёстой.

Надад "ReadDataFiles.ipynb" нэртэй энгийн файлыг оруулсан бөгөөд энэ нь нэг файлд нэрээр нь хэрхэн уншихыг харуулдаг.

Зөвлөмж болгож буй: