Мазмұны:

MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу: 7 қадам (суреттермен)
MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу: 7 қадам (суреттермен)

Бейне: MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу: 7 қадам (суреттермен)

Бейне: MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу: 7 қадам (суреттермен)
Бейне: Robojax Arduino Step By Step Course, Lesson 14: Using Vibration Sensor Module 2024, Шілде
Anonim
MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу
MPU-6050/A0 нақты уақытында Arduino және Android көмегімен деректерді тіркеу

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

Құрылым бірнеше қадамдардан тұрады:

  • Қалқанды немесе тақтаны жасаңыз
  • Arduino бағдарламасын жасаңыз
  • Android қолданбасын Google Play -ден жүктеңіз немесе GitHub тармағын құрыңыз және оны өзіңіз құрастырыңыз
  • MPU-6050 дірілдейтін қызықты нәрсеге қосыңыз (мен R/C машинасын қолдандым)
  • Arduino -ға қосылу үшін Android құрылғысын пайдаланыңыз
  • Деректерді салыңыз, егер қызықтырса сақтаңыз
  • Әрі қарай пайдалану үшін Python -ға (немесе басқа платформаға) импорттаңыз

Бастайық!

1 -қадам: Қалқанды/тақтаны жасаңыз

Қалқанды/тақтаны жасаңыз
Қалқанды/тақтаны жасаңыз
Қалқанды/тақтаны жасаңыз
Қалқанды/тақтаны жасаңыз

Бұл Arduino, HC-05 және MPU-6050 сымдарының схемасы. MPU-6050-ден басқа менде ADC жұмыс істейтінін көрсету үшін жарық сенсорына қосылған A0 аналогтық кірісі бар. Кез келген 0-5 вольтты сигнал A0 ADC-ге енгізілуі мүмкін. Бұл мен құрастыру үшін қолданған компоненттер:

  • Ардуино Уно
  • HC-05 (HC-06 да жұмыс істеуі керек, бірақ менің құрылымым HC-05 болды)
  • MPU-6050
  • Sparkfun фоторезисторы
  • 10 кОм резистор (қоңыр-қара-қызғылт сары)

HC-05 Bluetooth модульдерінің көпшілігі әдепкі бойынша 9600 байды құрайды. Деректерді сәтті жіберу үшін оны 115200 бай жылдамдығына қайта бағдарламалау қажет. HC-05/HC-06 AT командалық нұсқаулығы бар, ол мұны қалай жасау керектігін түсіндіреді.

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 деректерін оқу үшін Android Accel Plot қосымшасынан басқа нәрсені қолдансаңыз, адресті шығаруға арналған қадамдар (мен GitHub реподан Accel Plot Bluetooth.java файлындағы айнымалы атауларды қолданамын):

- Қол қойылмаған 16 int ішінен оқыңыз

- Жоғары байтты шығарып алып, btHigh сақтаңыз.

- Төмен байтты шығарып, btLow -қа сақтаңыз.

- (btHigh >> 5) & 0x07 көмегімен btHigh мекенжайын алыңыз. Бұл мәлімдеме 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 автокөлігін қолдандым)

Arduino -ға қызықты нәрсеге қосылыңыз (мен R/C көлігін қолдандым)
Arduino -ға қызықты нәрсеге қосылыңыз (мен 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 файлдарын API 19 (KitKat 4.4) және одан жоғары «\ Tablet / Documents / AccelPlot» қалтасына орналастырады. Мен USB арқылы қосылған кезде кейбір Android құрылғыларында файлдарды көрсете алмадым. Кейбір жағдайларда оларды көрсету үшін Android құрылғысын қайта жүктеуге тура келді. Неліктен екенін білмеймін, бірақ әр канал үшін бір файлдан тұратын төрт файл болуы керек. Оларды қосымша жұмыс үшін жергілікті каталогқа көшіруге болады.

Мен файлдарды ашу және деректерді көрсету үшін Anaconda/Python 2.7 қолдандым. «ExploratoryAnalysis.ipynb» файлында барлық деректер файлдарын ашатын және үлгі деректерді құратын IPython Notebook файлы бар. Үлгі файлдар GitHub репоға кіреді. Деректер үлкен 4 байтты флот ретінде сақталады ('> f'), сондықтан кез келген талдау бағдарламасы оларды аша алуы керек.

Менде «ReadDataFiles.ipynb» деп аталатын қарапайым файл бар, ол аты бойынша бір файлда қалай оқу керектігін көрсетеді.

Ұсынылған: