Мазмуну:

Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо: 7 кадам (сүрөттөр менен)
Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо: 7 кадам (сүрөттөр менен)

Video: Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо: 7 кадам (сүрөттөр менен)

Video: Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо: 7 кадам (сүрөттөр менен)
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Ноябрь
Anonim
Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо
Чыныгы убакыт MPU-6050/A0 Arduino жана Android менен маалыматтарды каттоо

Мен машинаны үйрөнүү үчүн Arduino колдонууга кызыкчумун. Биринчи кадам катары, мен Android түзмөгү менен реалдуу убакытта (же ага абдан жакын) маалымат дисплейин жана журналын түзгүм келет. Мен MPU-6050дөн акселерометрдин маалыматын алгым келет, ошондуктан мен HC-05ти 115200 bodда колдонууга ылайыкташтырдым. Бул конфигурация менен маалыматтын 4 каналы секундуна 250 үлгүдө өткөрүлүшү мүмкүн.

Курулуш бир нече кадамдардан турат:

  • Калканды же нан тактасын куруңуз
  • Arduino программасы
  • Android колдонмосун Google Playден жүктөңүз же GitHubды филиалга бөлүп, өзүңүз түзүңүз
  • MPU-6050ди дирилдей турган кызыктуу нерсеге туташтырыңыз (мен R/C машинасын колдондум)
  • Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
  • Маалыматты пландаңыз, эгер кызыксаңыз сактап коюңуз
  • Андан ары колдонуу үчүн 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ге киргизилиши мүмкүн. Бул мен куруу үчүн колдонгон компоненттер:

  • Arduino Uno
  • HC-05 (HC-06 да иштеши керек, бирок менин курулушум HC-05 менен болгон)
  • MPU-6050
  • Sparkfun фоторезистору
  • 10kOhm каршылыгы (күрөң-кара-кызгылт сары)

Көпчүлүк HC-05 Bluetooth модулдары демейки боюнча 9600 bod. Маалымат ийгиликтүү өткөрүлүшү үчүн аны 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ге чейин) жана белгисиз бүтүн сандар катары чыгарам:

(unsigned int) ((long) 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 кол коюлбаган интдитада окуңуз

- Жогорку байтты чыгарып, 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 дүкөнүндө пайда болушу керек. Орнотуу үчүн дүкөндүн нускамаларын аткарыңыз.

Бул Нускамага менин каалоом чындыгында башкаларды долбоорлорду курууга үндөө, ошондуктан мен кодду GitHub репоунда жарыяладым. Сиз муну бутактап, куруп жана өзүңүз каалагандай өзгөртүшүңүз керек. Мен кодду MIT лицензиясынын астында жарыяладым, андыктан көңүл ачыңыз!

4 -кадам: Кызыктуу нерсеге Arduino менен туташуу (Мен R/C машинасын колдондум)

Ардуиного кызыктуу нерсеге туташыңыз (мен R/C машинасын колдондум)
Ардуиного кызыктуу нерсеге туташыңыз (мен R/C машинасын колдондум)

Мен акыры аппаратты жолдун үстүнкү бетин аныктоо үчүн колдонгум келет, ошондуктан кичинекей алыстан башкарылуучу (R/C) машина ылайыктуу деп ойлодум. Менин оюмча, бул кийинки кадамга жардам берет, эгерде акселдер кыймылдаган же дирилдеген нерселерде болушу мүмкүн.

5 -кадам: Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз

Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз
Arduino менен туташуу үчүн Android түзмөгүн колдонуңуз

Эгер сиз буга чейин андай кыла элек болсоңуз, алгач HC-05ти Android түзмөгүңүзгө жупташтырышыңыз керек болот. Мен ишенем, көпчүлүк түзмөктөрдө муну жөндөөлөргө өтүү менен жасаса болот. Көпчүлүк HC-05 түзмөктөрү үчүн демейки пин 1234 же 1111 болот.

Android түзмөгүндө AccelPlot колдонмосун ачыңыз. Колдонмо ачылганда жана HC-05ке туташуудан мурун, тандоо ылдамдыгын (бул Arduino кодунда белгиленген), акселерометрдин таразаларын (Arduino кодунда дагы коюлган) жана сактала турган үлгүлөрдүн санын өзгөртө аласыз.

Бул параметрлер орнотулгандан кийин "Туташуу" баскычын чыкылдатыңыз. Бул Bluetooth түзмөктөрүн алып келиши керек жана сиздин түзмөк тизмеде болушу керек. Аны тандап, код байланышты орноткондон кийин, сиз "Туташкан" тост калкып чыгат.

Accel Plotко кайтуу үчүн артка жебе баскычын колдонуңуз. HC-05 түзмөгүнөн маалыматтарды көрсөтүү үчүн "Агымды баштоо" баскычын таптаңыз. Сиз ошондой эле маалыматты сактоо же аудио уячасы аркылуу жыштыгы модуляцияланган мазмунду ойнотуу үчүн жеткиликтүү баскычтарга ээ болушуңуз керек.

6 -кадам: Маалыматты алуу жана плоттоо

Image
Image
Кийинки колдонуу үчүн Pythonго (же башка платформага) импорттоңуз
Кийинки колдонуу үчүн Pythonго (же башка платформага) импорттоңуз

"Агымды баштоо" баскычы иштетилиши керек. Маалыматты экранга өткөрүүнү баштоо үчүн аны басыңыз.

"Маалыматты сактоо" баскычы да иштетилет, маалыматтарды сактоо үчүн аны таптап коюңуз.

Accel Plot аудио каналдарда модуляцияланган сигналды чыгаруу мүмкүнчүлүгүн да камтыйт. Accel Plot тиркемесиндеги 2 канал Android түзмөгүндөгү аудио чыгуучу уячанын сол жана оң каналдарын билдирет. Бул MPU-6050 маалыматтарын Улуттук инструменттер сыяктуу өзүнчө маалыматтарды каттоо тутумуна киргизүүнү кааласаңыз пайдалуу.

Видеодо R/C машинасында маалыматтарды чогултуу системасынын мисалы көрсөтүлгөн.

7 -кадам: Кийинки колдонуу үчүн Pythonго (же башка платформага) импорттоңуз

Кийинки колдонуу үчүн Pythonго (же башка платформага) импорттоңуз
Кийинки колдонуу үчүн Pythonго (же башка платформага) импорттоңуз

Файлдар Android түзмөгүнө сакталат. Файлдар Android API 18 жана андан улуу версиялары үчүн "AccelPlot" каталогунда сакталат. Код.dat файлдарын "\ Tablet / Documents / AccelPlot" папкасына API 19 (KitKat 4.4) жана андан жогору жайгаштырат. Мен USB аркылуу туташканда кээ бир Android түзмөктөрүндө файлдарды көрсөтүүдө кыйынчылыктар болду. Кээ бир учурларда, аларды көрсөтүү үчүн Android түзмөгүн өчүрүп -күйгүзүүгө туура келди. Бул эмне үчүн экенин билбейм, бирок ар бир канал үчүн төрт файл болушу керек. Алар кошумча жумуш үчүн жергиликтүү каталогго көчүрүлүшү мүмкүн.

Мен файлдарды ачуу жана маалыматтарды көрсөтүү үчүн Anaconda/Python 2.7 колдондум. "ExploratoryAnalysis.ipynb" файлында IPython Notebook файлы бар, ал бардык маалымат файлдарын ачат жана үлгүлүү маалыматтарды пландаштырат. Үлгү файлдар GitHub репоуна кирет. Берилиштер чоң байндуу 4 байт калкыма ('> f') катары сакталат, андыктан ар кандай анализ программасы аларды ача алышы керек.

Менде "ReadDataFiles.ipynb" деп аталган жөнөкөй файл бар, ал бир файлда кантип аталышын окууну көрсөтөт.

Сунушталууда: