Makefun-merki

Makefun MPU6050 Arduino bendingahreyfingarrakningu

Makefun-MPU6050-Arduino-Gesture-Motion-Tracking-vara

Upplýsingar um vöru

Tæknilýsing

  • Vöruheiti: Gesture-MotionTracking
  • Útgáfa: V.1.2
  • Github geymsla: Github hlekkur

Tækjalisti Inngangur

Nauðsynleg sett til að nota Gesture-MotionTracking eru:

  • MPU6050 eining
  • JDY-16 Bluetooth eining
  • NRF24L01+ mát
  • Arduino NANO aðalstjórnborð
  • Mini brauðbretti
  • Hanskar
  • Karl til kvenkyns DuPont lína
  • Rafhlaða

Notkunarleiðbeiningar fyrir vöru

NANO örgjörva kynning

Aflgjafi

  • Hægt er að knýja Arduino Nano með mini-B USB tengi, ytri 7 ~ 12V DC aflgjafa í gegnum vin tengingu.

Minni

  • ATmega168/ATmega328 á Nano er með 16KB/32KB Flash minni, 1KB/2KB SRAM og 0.5KB/1KB EEPROM.

Inntak og úttak

  • Nano er með 14 stafræn I/O tengi, 6 hliðræn inntak og sérstaka pinna fyrir ýmsar aðgerðir eins og raðsamskipti, truflanir, PWM úttak, SPI, osfrv.

Samskiptaviðmót

  • Nano styður raðsamskipti í gegnum UART og hefur SPI og I2C strætó samhæft tengi.

Niðurhalari

  • Nano er hægt að forrita með Arduino hugbúnaðinum og ræsiforritinu. Einnig er hægt að hlaða niður forritum í gegnum ICSP hausinn.

Athygli

  • Nano er með sjálfvirka endurstillingarhönnun til að auðvelda endurstillingu hugbúnaðar án handvirkrar íhlutunar.

Algengar spurningar

Algengar spurningar

  • Q: Hvar get ég fundið nýjustu uppfærslur eða viðbótarúrræði fyrir Gesture-MotionTracking?
    • A: Þú getur skoðað opinberu Github geymsluna á meðfylgjandi hlekk fyrir uppfærslur og úrræði.
  • Q: Hvernig kveiki ég á Arduino Nano?
    • A: Þú getur knúið Nano með því að nota mini-B USB tengi eða ytri 7 ~ 12V DC aflgjafa sem er tengdur með vin pinnanum.

“`

Gerðu þig fullkomna skemmtun

1. Kynning á tækjalista
Nauðsynleg pökk eru sýnd í töflunni hér að neðan. MPU6050 eining
JDY-16 Bluetooth Module NRF24L01+ Module
Arduino NANO Main Control Board mini brauðbrettihanskar
Karl til kvenkyns DuPont línu rafhlaða

1 1 2 1 2 1 Nokkrir 1

Mynd 1: Tækjalisti
4

Gerðu þig fullkomna skemmtun
2. NANO örgjörva kynning
Arduino Nano örgjörvi er ATmega328 (Nano3.0) með USB-mini tengi, sem hefur 14 stafræna inn-/úttakspinna (þar af 6 sem hægt er að nota sem PWM úttak), 8 hliðræn inntak og 16 MHz keramik resonator, 1 lítill -B USB tenging, ICSP haus og endurstillingarhnappur. Örgjörvinn ATmega328 Vinnandi binditage 5v Inntak binditage (mælt með) 7-12v Input voltage (svið) 6-20v Digital IO pinna 14 (þar af 6 sem hægt er að nota sem PWM úttak) Analog input pin 6 IO pin DC 40 mA Flash Memory 16 eða 32 KB (þar sem 2 KB fyrir ræsiforrit) SRAM 1KB eða 2KB EEPROM 0.5 KB eða 1KB ATmega328 CH340 USB til raðtengi flís Klukka 16 MHz
2.1 aflgjafi
Arduino Nano aflgjafastilling: mini-B USB tengi aflgjafi og ytri vin tenging 7 ~ 12V ytri DC aflgjafi
2.2 Minni
ATmega168/ATmega328 inniheldur 16KB/32KB Flash á flís, þar af 2KB notað fyrir Bootloader. Það eru líka 1KB/2KB SRAM og 0.5KB/1KB EEPROM.
2.3 Inntak og úttak
14 stafrænar inn- og úttakstengi: Vinnandi binditage er 5V, og hver rás getur gefið út og fengið aðgang að hámarksstraumi 40mA. Hver rás er búin 20-50K ohm innri uppdráttarviðnám (ekki sjálfgefið tengd). Að auki hafa sumir pinnar sérstakar aðgerðir.
Raðmerki RX (0), TX (1): Það veitir raðtengi móttökumerki með TTL voltage stig, tengt við samsvarandi pinna á FT232Rl.
Ytri truflun (nr. 2 og nr. 3): Trigger interrupt pin, sem hægt er að stilla á hækkandi brún, fallbrún eða samtímis kveikju.
Púlsbreiddarmótun PWM (3, 5, 6, 9, 10, 11): Veitir 6 rása, 8 bita PWM úttak.
5

Gerðu þig fullkomna skemmtun
SPI10(SS)11(MOSI)12(MISO)13(SCK):SPI samskiptaviðmót. LED (nr. 13): Arduino er sérstaklega notað til að prófa frátekið viðmót LED. Þegar úttakið er
hátt, ljósdíóðan logar. Þegar úttakið er lágt er slökkt á LED. 6 hliðræn inntak A0 til A5: Hver rás hefur 10 bita upplausn (það er að inntakið hefur 1024 mismunandi
gildi), sjálfgefið inntaksmerkisvið er 0 til 5V, og efri mörk inntaksins er hægt að breyta með AREF. Að auki hafa sumir pinnar sérstakar aðgerðir. TWI tengi (SDA A4 og SCL A5): Styður samskiptaviðmót (samhæft við I2C strætó). AREF: Tilvísun binditage af hliðrænu inntaksmerkinu. Endurstilla Örstýringarkubburinn er endurstilltur þegar merki er lítið.
2.4 Samskiptaviðmót
Raðtengi: Innbyggða UART ATmega328 getur átt samskipti við ytri raðtengi í gegnum stafræna tengi 0 (RX) og 1 (TX).
2.5 Niðurhal
MCU á Arduino Nano er með ræsiforriti, svo þú getur hlaðið niður forritinu beint úr Arduino hugbúnaðinum. Þú getur líka beint hlaðið niður forritinu í MCU í gegnum ICSP hausinn á Nano.
2.6 Athygli
Arduino Nano býður upp á sjálfvirka endurstillingarhönnun sem gestgjafinn getur endurstillt. Þannig er hægt að endurstilla hugbúnaðinn sjálfkrafa af Arduino hugbúnaðinum í forritinu á Nano, án þess að ýta á endurstillingarhnappinn.

Blumodule kynning

Blumodule kynningJDY-16

3.1 Eiginleikar
BLE háhraða gagnsæ sending styður 8K bæta samskipti. Sendu og taktu á móti gögnum án bætitakmarka, styður 115200 baud hraða stöðugt að senda og taka á móti gögnum. Styðja 3 vinnumáta (sjá lýsingu á AT+STARTEN kennsluaðgerðinni). Stuðningur (raðtengi, IO, APP) svefnvakning Stuðningur við WeChat Airsync, WeChat smáforrit og APP samskipti. Styðja 4 rása IO tengistýringu og RTC klukku með mikilli nákvæmni. Stuðningur við PWM virkni (hægt að stjórna með UART, IIC, APP osfrv.). Styðja UART og IIC samskiptaham, sjálfgefið fyrir UART samskipti. iBeacon háttur (styður WeChat hrista samskiptareglur og Apple iBeacon samskiptareglur).
6

Gerðu þig fullkomna skemmtun
Gagnsær sendingarhamur hýsingar (sending gagna á milli forritareininga, hýsils og þrælsamskipta).
Stilling þráðlausrar samskiptaeininga

Makefun-MPU6050-Arduino-Gesture-Motion-Tracking-mynd-1

Mynd 2: JDY-16 mát líkamlegt kort (1) Nano og JDY-16 kapallinn

JDY-16 eining

Arduino NANO

VCC

5V

GND

GND

RXD

D2

TXD

D3

STAT

NC

PWRC

NC

Sæktu forritið MotionTrackJDY-16AT_CMD AT_CMD.ino

(2) Stillingarkröfur:

Framkvæmdu master-slave-bindingu tveggja JDY-16 Bluetooth-eininga.

3.2 Notkunarskref

1. Tengdu Nano og JDY-16 einingarnar við DuPont línuna. 2. Farðu í AT-skipunarhaminn Tengdu niðurhalarann ​​við tölvuna og opnaðu raðtengihjálparann. Stilltu flutningshraðann á 9600, gagnabitann á 8 bita, stöðvunarbitann á 1 bita og engan jöfnunarbita.

7

Gerðu þig fullkomna skemmtun
Próf samskipti: Senda: Á bak: Í lagi
Mynd 3: Senda AT skipanamynd 3. Senda: AT+HOSTEN1rn ————– Stilltu Bluetooth sem aðalham Til baka: Í lagi Til baka: Í lagi
8

Gerðu þig fullkomna skemmtun
Mynd 4: Stilling hýsingarhams 4. Skannaðu JDY-16 Bluetooth í kring: 1. Þrælasending: AT+SCANrn ————— Spurt um heimilisfang þrælsins Til baka: OK +DEV:1=3CA5090A160F, -62, JDY-16 +STOP:SKANNA
Mynd 5: Spurning um Bluetooth-jaðartæki 5. Tengdu Bluetooth
Gestgjafi sendir: AT+CONN3CA5090A160Frn ————— Host binding slave address Til baka: OK Tengt við aflgjafa, hægt er að tengja tvö Bluetooth við hvert annað, senda gögn í gegnum gestgjafa Bluetooth, þræll Bluetooth getur tekið við sömu gögnum. Eða þú getur beint forritað undirbúna meistara-þræl stillingarferlið til að stilla master-slave Bluetooth, síðan forritar gestgjafinn tengingarferlið og tengist sjálfkrafa. (Athugið að aðeins er hægt að tengja Bluetooth-einingu JDY-16 sjálfkrafa sem stendur)
9

Gerðu þig fullkomna skemmtun
3.3 Tengingaraðferð Nano og JDY-16
Mynd 6: Nano og JDY-16 tengimynd

Makefun-MPU6050-Arduino-Gesture-Motion-Tracking-mynd-2
10

Gerðu þig fullkomna skemmtun

NRF24L01 þráðlaus eining kynning

NRF24L01 þráðlaus eining kynning

nRF24L01+ einingin er 2.4G þráðlaus samskiptaeining þróuð af Nordic byggt á nRF24L01 flögunni. Samþykkja FSK mótun og samþætta eigin Enhanced Short Burst samskiptareglur Nordic. Hægt er að ná þráðlausum samskiptum punkta til punkts eða 1 til 6. Þráðlaus samskiptahraði getur náð allt að 2M (bps). NRF24L01 hefur fjórar aðgerðastillingar: senditæki, stillingarstillingu, aðgerðalausa stillingu og lokunarstillingu. Líkamlega kortið sem notað er í þessari tilraun er vinstra megin á mynd 7. Fyrir stöðuga móttöku Nrf24L01 kvittunar er mælt með því að tengja 10uf þéttann á milli VCC og GUD eins og sýnt er til hægri.
Mynd 7: Nrf24l01+ líkamlegt kort og lóðmálsmynd
4.1 Eiginleikar einingar
2.4GHz, lítil stærð 15x29mm ásamt loftneti Stuðningur við sex rása gagnamóttöku Lágt vinnumagntage: 1.93.6V Gagnaflutningshraði styður: 1Mbps2Mbps Lág orkunotkun hönnun vinnustraumur við móttöku er 12.3mA, 11.3mA við 0dBm afl
losun, 900nA við slökkt á stillingu Sjálfvirk endursendingaraðgerð, sjálfvirk uppgötvun og endursending tapaðra gagnapakka,
endursendingartíma og endursendingartíma er hægt að stjórna með hugbúnaði Sjálfvirk svörunaraðgerð, eftir að hafa fengið gild gögn sendir einingin sjálfkrafa svar
merki Innbyggður CRC villugreining í vélbúnaði og staðsetningarstýring á stað-til-margpunkta samskiptum NRF24L01 flís upplýsingar vinsamlegast sjá tonRF24L01 Datasheet.pdf
11

Gerðu þig fullkomna skemmtun
Pin upplýsingar

Mynd 8: Nrf24L01 pinnaupplýsingar skýringarmynd

Pin tákn

Virka

Stefna

1 Gnd

GND

2

+5V

Aflgjafi

3

CE

Stjórnlína í vinnuham

IN

4

CSN Chip Select Signal, Low Level Working

IN

5

SCK

SPI klukka

IN

6 MOSI

SPI inntak

IN

7 MISO

SPI úttak

ÚT

8

IPQ

Trufla útgang

ÚT+

4.2 Tilraunatilgangur
1. Lærðu um nRF24L01+ mát og hvernig á að tengjast Arduino. 2. Hvernig á að nota arduino og nRF24L01+ mát til að klára að taka á móti og senda gögn.

4.3 Þættirnir sem þarf fyrir þessa tilraun
Arduino UNO R3 móðurborð Arduino NANO móðurborð nRF24L01 eining*2 Nokkrir vírar
12

Gerðu þig fullkomna skemmtun
4.4 Skýringarmynd tilrauna

Mynd 9: Nano og Nrf24L01 tengimynd

Arduino og NRF24L01 tengimáti

arduino Nano

nRF24L01

+3.3V

VCC

GND

GND

7 pinna

4pinna CSN

4 pinna

3 pinna CE

11 pinna

6pinna MOSI

12 pinna

7pinna MISO

13 pinna

5pinna SCK

arduino Uno +3.3V GND 7 4 11pin 12pin

nRF24L01
VCC GND 4pinna CSN 3pinna CE 6pinna MOSI 7pinna MISO

13

Gerðu þig fullkomna skemmtun

13 pinna

5pinna SCK

4.4 Dagskrárregla
Ræstu ferli 1Í fyrsta lagi skaltu stilla nRF24L01 til að senda ham. 2Skrifaðu síðan heimilisfangið TX_ADDR á móttökuendanum og gögnin TX_PLD sem á að senda inn á nRF24L01 biðminni svæði með SPI tengi í tímaröð. 3Arduino stillir CE til að vera hátt í að minnsta kosti 10 s og sendir gögn eftir 130 s seinkun. Ef kveikt er á sjálfvirku svari fer nRF24L01 í móttökustillingu strax eftir að gögnin hafa verið send og tekur við svarmerkinu. Ef svar berst teljast samskiptin hafa tekist. 4NRF24L01 mun sjálfkrafa stilla TX_DS hátt og TX_PLD verður hreinsað úr sendingarstaflanum. Ef ekkert svar berst verða gögnin sjálfkrafa send aftur. Ef fjöldi endursendinga (ARC_CNT) nær efri mörkum er MAX_RT stillt hátt og TX_PLD verður ekki hreinsað; MAX_RT Þegar TX_DS er stillt hátt, fer IRQ lágt til að kalla á MCU truflun. Þegar síðasta sending heppnast, ef CE er lágt, fer nRF24L01 í biðham. 5Ef það eru gögn í sendingarstaflanum og CE er hátt er næsta sending hafin; ef engin gögn eru í sendingarstaflanum og CE er hátt mun nRF24L01 fara í biðham 2. Móttaka gagnaferli 1Þegar nRF24L01 tekur á móti gögnum, vinsamlegast stilltu nRF24L01 til að móttaka ham fyrst. 2Síðaðu síðan um 130 sekúndur í móttökustöðu til að bíða eftir komu gagna. Þegar móttakandinn finnur gilt heimilisfang og CRC geymir hann gagnapakkann í móttökustaflanum. Á sama tíma er truflunarmerkið RX_DR stillt hátt og IRQ lækkar til að láta MCU vita um að sækja gögnin. 3Ef kveikt er á sjálfvirkri svörun á þessum tíma mun móttakandinn slá inn flutningsstöðu bergmálssvarsmerkið á sama tíma. Þegar síðasta móttaka heppnast, ef CE fer lágt, fer nRF24L01 í aðgerðalaus stilling 1.
nRF24L01 senditæki prófunarforrit vinsamlegast sjáðu „MotionTracknRF24l01+forrit“

14

Gerðu þig fullkomna skemmtun

Mpu6050 Inngangur

MPU6050 er fyrsti 6-ása hreyfivinnsluhluti heimsins með innbyggðum 3-ása gyroscope og 3-ása hraðal. Það getur tengst öðrum segulskynjara eða stafrænni hreyfivinnslu annarra skynjara (DMP) í gegnum annað I2C tengi. Vélbúnaðarhröðunarvélin gefur aðallega út fullkomna 9-ása samrunaútreikningstækni til hýsil MCU í formi eins gagnastraums um I2C tengið.
MPU6050 flís kemur með gagnavinnslu undireiningu DMP, hefur innbyggt vélbúnaðarsíu reiknirit, með því að nota DMP úttaksgögn hefur tekist að uppfylla kröfurnar vel í mörgum forritum. Við þurfum ekki hugbúnaðinn okkar til að gera síunina. Þetta námskeið mun byggja fullkomna íþróttahanska sem byggjast á því að lesa DMP sem úttaksgögn í gegnum Arduino.
Mynd 10: mpu6050 mát líkamlegt kort
Eiginleikar Samþætt útreikningsgögn stafræns úttaks af 6 ása eða 9 ása snúningsfylki, quaternion og Euler
horn sniði. 3-ása hornhraðaskynjari (gyroscope) með 131 LSBs/°/sek næmi og skynjunarsviði á fullu
af ±250, ±500, ±1000 og ±2000°/sek. Forritanleg stýring, 3-ása hraðall með forritastýringarsviði ±2g, ±4g, ±8g og ±16g. Digital Motion Processing (DMP) vélin dregur úr álagi flókinna samrunareikningsgagna,
samstillingu skynjara og látbragðsskynjun.
15

Gerðu þig fullkomna skemmtun
Hreyfivinnslugagnagrunnurinn styður Android, Linux og Windows. Innbyggð kvörðunartækni fyrir frávik rekstrartíma og segulskynjari útilokar notkunina
viðbótarþörf fyrir kvörðun. Stafrænn úttakshitaskynjari. Framboðið binditage af VDD er 2.5V±5%3.0V±5%3.3V±5% og VDDIO er 1.8V±5%. Rekstrarstraumur gyroscope: 5mA, gyroscope biðstraumur: 8A; rekstrarstraumur hraða: 8A,
orkusparnaðarstillingarstraumur: 8A@10Hz. Allt að 400kHz hraðstilling I2C, eða allt að 20MHz SPI serial host tengi. Minnsti og þynnsti sérsniðinn pakki fyrir færanlega vöruna (4x4x0.9mm QFN).
5.2 Einingaáætlun

Mynd 11: Skýringarmynd af mpu6050 einingunni
5.3 Samskipti milli Nano og mpu6050

5.3.1 Hringrásartenging
Gagnaviðmót samþættu MPU6050 einingarinnar notar I2C rútusamskiptareglur, þannig að við þurfum hjálp Wire bókasafnsins til að hafa samskipti á milli NANO og MPU6050. Samsvarandi tenging NANO borðsins er sem hér segir:

MPU6050 Module VCC

Arduino NANO 5V

16

Gerðu þig fullkomna skemmtun

GND SCL SDA XDA XCL ADD INT

GND A5 A4 NC NC NC NC/GND

Mynd 12: Tengimynd af Nano og mpu6050
MPU6050 skrifa og lesa gögn eru að veruleika af innri skrám flísarinnar, skrásetföngin eru öll 1 bæti, nefnilega 8 bitar af vistfangarýminu. Vinsamlegast skoðaðu „RMMPU-6000A.pdf“ 1.1. Áður en þú skrifar gögn í tækið í hvert skipti skaltu fyrst kveikja á vírflutningsstillingunni og tilgreina strætófang tækisins. Rútuvistfang MPU6050 er 0x68 (vistfangið er 0x69 þegar AD0 pinninn er hár). Skrifaðu síðan bæti af upphafsvistfangi skrárinnar og skrifaðu síðan gögn af hvaða lengd sem er. Þessi gögn verða stöðugt skrifuð á tilgreint upphafsfang og núverandi skráarlengd verður skrifuð á skrána á eftirfarandi heimilisfangi. Slökktu á millifærsluhamnum eftir að skrifun er lokið. Eftirfarandi sample kóða skrifar bæti 0 í 0x6B skrána á MPU6050.
Wire.beginTransmission(0x68); // Strat sending MPU6050
17

Gerðu þig fullkomna skemmtun
Wire.write(0x6B); // Tilgreindu skrá heimilisfang Wire.write(0); // Skrifaðu eitt bæti af gögnum Wire.endTransmission(true); // End transfer, true þýðir losunarrúta
Að lesa gögn frá MPU-6050
Lestur og ritun eru eins, fyrst opnaðu vírflutningshaminn og skrifar síðan bæti af upphafsvistfangi skrárinnar. Næst skaltu lesa gögn tilgreinds heimilisfangs í skyndiminni á Wire bókasafninu og slökkva á flutningshamnum. Að lokum skaltu lesa gögnin úr skyndiminni. Eftirfarandi frvampkóðinn byrjar á 0x3B skránni á MPU6050 og les 2 bæti af gögnum:
Wire.beginTransmission(0x68); // Strat sendingu MPU6050 Wire.write(0x3B); // Tilgreindu skrá heimilisfang Wire.requestFrom(0x68, 2, satt); // Lesið gögnin í skyndiminni Wire.endTransmission(true); // Lokaðu sendingarham int val = Wire.read() << 8 | Wire.read(); // Tvö bæti mynda 16 bita heiltölu
Sérstök framkvæmd
Wire bókasafnið ætti venjulega að vera frumstillt í uppsetningaraðgerðinni: Wire.begin();
Þú verður að ræsa tækið áður en þú framkvæmir einhverjar aðgerðir á MPU6050 og það er nóg að skrifa bæti í 0x6B þess. Það er venjulega gert í uppsetningaraðgerðinni, eins og sýnt er í kafla 1.1.
MPU6050 Gagnasnið
Gögnin sem við höfum áhuga á eru í 14 bæta skránni 0x3B til 0x48. Þessi gögn verða virk uppfærð með uppfærslutíðni allt að 1000HZ. Heimilisfang undirliggjandi skráar og heiti gagna eru skráð hér að neðan. Athugaðu að hvert gögn eru 2 bæti.
0x3B, X-áshluti hröðunarmælisins er ACC_X 0x3D, Y-áshluti hröðunarmælisins er ACC_Y 0x3F, Z-áshluti hröðunarmælisins er ACC_Z 0x41, núverandi hiti er TEMP 0x43, hornhraði G0X_45 , hornhraði um Y-ásinn GYR_Y
18

Gerðu þig fullkomna skemmtun
0x47, hornhraði um Z-ásinn GYR_Z Hnitaskilgreining MPU6050 flísarinnar er: snúið flísinni að sjálfum sér og snúið yfirborðstextanum í rétt horn. Á þessum tíma er miðja flísarinnar tekin sem uppruna, láréttur til hægri er X-ás og lóðréttur er Y-ás, og bendir á þinn eigin er Z-ás, eins og sýnt er hér að neðan:
Mynd 13: mpu6050 snúningur og hornhraða skýringarmynd Okkur er aðeins annt um merkingu hröðunarmælis og hornhraðamælisgagna. Nú erum við kunnugir notkun mpu6050 í gegnum tvær tilraunir. 5.3.2 Tilraun 1 Leshröðunarmælir
Þrír ása íhlutir hröðunarmælis, ACC_X, ACC_Y og ACC_Z eru allir 16 bita heiltölur með formerkjum, sem gefa til kynna hröðun tækisins í þrjár ásar áttir. Þegar neikvæða gildið er tekið er hröðunin neikvæð meðfram hnitaásnum og jákvæða gildið er jákvætt.
Hröðunarhlutarnir þrír eru allir í margfeldi af þyngdarhröðuninni g, og hröðunarsviðið sem hægt er að gefa upp, það er að segja stækkunina er hægt að stilla jafnt og það eru fjórar valfrjálsar stækkunar: 2g, 4g, 8g og 16g. Að taka ACC_X sem fyrrverandiample, ef stækkunin er stillt á 2g (sjálfgefið), þýðir það að þegar ACC_X tekur lágmarksgildið -32768, þá er núverandi hröðun 2 sinnum þyngdarhröðun eftir jákvæðu stefnu X-ássins, og svo framvegis. Vitanlega,
19

Gerðu þig fullkomna skemmtun

því minni sem stækkunin er, því betri er nákvæmnin og því meiri sem stækkunin er, því stærra bilið, sem er stillt í samræmi við sérstaka notkun.

AFS_SEL 0 1 2 3

Heildarskalasvið ±2g ±4g ±8g ±16g

LSB næmi 16384LSB/g 8192LSB/g 4096LSB/g 2048LSB/g

Sambandið milli snúningsstefnu þriggja ása hröðunarmælisins og einingarinnar er sem hér segir:

Mynd 14: Mpu6050 mát snúningur og hröðunarmynstur Gögnin sem les MPU6050 eru sveiflukennd, svo það þarf að sannreyna þau. Það er að segja að þegar flísinn er í kyrrstöðu ætti þessi lestur fræðilega að vera núll. En það hefur tilhneigingu til að hafa mótvægi. Til dæmisample, við lesum 200 gildi með 10ms millibili og síðan meðaltal þeirra. Þetta gildi er kallað núlljöfnun. Kvörðuð aflestur fæst með því að draga núllfrávik frá hverri aflestri. Þar sem fræðilegt gildi ACC_X og ACC_Y ætti að vera núll, er hægt að kvarða aflestrarfrávikin tvö með tölfræðilegu meðaltali. ACC_Z þarf að vinna í einu skrefi. Í tölfræðilegri offsetferli er þyngdarhröðun g Z-ássins dregin frá fyrir hvern lestur. Ef hröðunarstækkunin er 2g, þá er 16384 dregin frá og síðan er tölfræðileg meðaltalskvörðun framkvæmd. Almenna kvörðun er hægt að gera í hvert sinn sem kerfið er ræst, þá ættirðu að skipta á milli nákvæmni og ræsingartíma.
20

Gerðu þig fullkomna skemmtun
5.3.2.1 Tilraunatilgangur
Með því að snúa mpu6050 til að fylgjast með úttaksgagnasambandi milli þriggja ása hröðunarmælisins.
5.3.2.2 Tilraunakóði Kóði StaðsetningMotionTrackLessonmpu6050_accel mpu6050_accel.ino
21

Gerðu þig fullkomna skemmtun

#include “Wire.h” // I2Cdev og MPU6050 verða að vera sett upp sem bókasöfn, annars verður .cpp/.h files // fyrir báða flokka verða að vera í include slóð verkefnisins þíns #include “I2Cdev.h” #include “MPU6050.h” #define LED_PIN 13 MPU6050 accelgyro; struct RAW_type {
uint8_t x; uint8_t y; uint8_t z; }; int16_t öxi, ay, az; int16_t gx, gy, gz; struct RAW_type accel_zero_offsent; bleikju str[512]; bool blinkState = false; fljóta AcceRatio = 16384.0; fljóta accx,accy,accz;

ógild uppsetning() {

int i;

int32_t ax_zero = 0,ay_zero = 0,az_zero = 0 ;

// taktu þátt í I2C strætó (I2Cdev bókasafn gerir þetta ekki sjálfkrafa)

Wire.begin();

Serial.begin(115200);

// frumstilla tæki

Serial.println(“Frumstillir I2C tæki…”);

accelgyro.initialize();

delay(500);

accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);

Serial.println(“Prófar tengingar tækja…”);

Serial.println(accelgyro.testConnection() ? “MPU6050 tenging

2 2

heppnuð" : "MPU6050 tenging mistókst");

Gerðu þig fullkomna skemmtun
fyrir(i = 0; i < 200; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); ax_núll += öx ; ay_zero += ay ; az_núll += az ; } accel_zero_offsent.x = ax_zero/200 ; accel_zero_offsent.y = ay_zero/200 ; accel_zero_offsent.z = az_zero/200 ; Serial.print(accel_zero_offsent.x); Serial.print(“t”); Serial.print(accel_zero_offsent.y); Serial.print(“t”); Serial.print(accel_zero_offsent.z); Serial.print(“n”); pinMode (LED_PIN, OUTPUT); }
void loop() { // lestu hráar hraðaupptöku/gírómælingar úr seinkun tækis(1000); accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); sprintf(str,”%d,%d,%dn”,ax-accel_zero_offsent.x, ayaccel_zero_offsent.y ,az-accel_zero_offsent.z); Serial.print(str); accx = (flota)( ax-accel_zero_offsent.x )/AcceRatio; accy = (float)( ay-accel_zero_offsent.y )/AcceRatio ; accz = (flota)( az-accel_zero_offsent.z )/AcceRatio ; Serial.print(accx);Serial.print(“gt”); Serial.print(accy);Serial.print(“gt”); Serial.print(accz);Serial.print(“gn”);
blinkState = !blinkState; digitalWrite(LED_PIN, blinkState); }
23

Gerðu þig fullkomna skemmtun
1. Snúa 90 gráður um X-ásinn Þegar X-ásnum er snúið 90 gráður er Y-ásinn hægt upp á við og Z-ásinn er
hægt niður. Þegar ásinn nær nákvæmlega 90 gráðum, þar sem Y-ásinn er í gagnstæða átt við þyngdarafl, er úttak Y-ássins 1g (1g==9.8m/s^2), en gildi Z-ássins minnkar frá kl. 1 til 0. 2. Til baka í upphafsstöðu og snúningur 90 gráður til baka
Þegar þú kemur aftur í upphafsstöðu minnkar Y-ásinn hægt og rólega niður í 0 en Z-ásinn stækkar hægt og rólega í 1. Snúðu síðan 90 gráður í öfuga átt og Y-ásinn minnkar smám saman þar til -1 ásinn er í samræmi við þyngdaraflstefnuna og hröðunargildið ætti að vera neikvætt. Z-ásinn minnkar hægt niður í 0. 3. Aftur í upphafsstöðu
Útskýrðu sem hér segir: Farðu síðan aftur í upphafsstöðu frá bakhlið 90 gráður. Á þessum tíma eru gögn Y-ássins og Z-ássins hægt að koma aftur í upphafsgildi, Y-ásinn er 0 og Z-ásinn er 1.
Eftir að hafa greint snúning X-ássins er snúningur Y-ás svipaður, svo við tölum ekki um það í smáatriðum. Nú skulum við tala um Z-ásinn, því þegar snúið er um Z-ásinn jafngildir það því að sveiflast 90 gráður til vinstri og hægri. Á þessum tíma er úttak Z-ássins alltaf 1, og X-ás og Y-ás eru hornrétt á þyngdarás, þannig að úttaksgildin eru öll. Það er 0, auðvitað, þetta er gildið við tiltölulega kyrrstæðar aðstæður . Ef tækið er sett upp á ökutæki er ekki víst að X og Y ásarnir séu 0 þegar bíllinn er að beygja til vinstri og hægri.
24

Gerðu þig fullkomna skemmtun
Tilraunaniðurstaða

5.3.3 Tilraun 2 Að lesa gögn úr Gyro

Hornhraðaþættirnir GYR_X, GYR_Y og GYR_Z, sem snúast um þrjá hnitaása X, Y og Z, eru allir 1-bita heiltölur með formerkjum. Frá uppruna til snúningsáss er gildið jákvætt fyrir snúning réttsælis og neikvætt fyrir snúning rangsælis. Hornhraðahlutarnir þrír eru allir í gráðum/sekúndu. Hornhraðasviðið sem hægt er að gefa upp, það er að segja stækkunina er hægt að stilla jafnt. Það eru 4 valfrjálsar stækkunir: 250 gráður/sekúndu, 500 gráður/sekúndu, 1000 gráður/sekúndu, 2000. Gráða/sekúndu. Að taka GYR_X sem fyrrverandiample, ef stækkunin er stillt á 250 gráður/sekúndu þýðir það að þegar GYR tekur jákvætt hámarksgildi 32768, þá er núverandi hornhraði 250 gráður/sekúndu réttsælis; ef það er stillt á 500 gráður/sekúndu, gefur núverandi gildi 32768 til kynna strauminn sem hornhraðinn er 500 gráður/sekúndu réttsælis. Augljóslega, því minni sem stækkunin er, því meiri nákvæmni, og því meiri sem stækkunin er, því stærra svið.

AFS_SEL 0 1 2 3

Heildarskalasvið ±250°/s ±500°/s ±1000°/s ±2000°/s

LSB næmi
131LSB/°/s 65.5LSB/°/s 32.8LSB/°/s 16.4LSB/°/s

25

Gerðu þig fullkomna skemmtun
Staðsetning dagskrár „MotionTrackLessonmpu6050_gryo mpu6050_gryo.ino“ Tilraunakóði
#include „Wire.h“
// I2Cdev og MPU6050 verður að setja upp sem bókasöfn, annars verður .cpp/.h files // fyrir báða flokka verða að vera í include slóð verkefnisins þíns #include “I2Cdev.h” #include “MPU6050.h” #define LED_PIN 13
MPU6050 accelgyro;
struct RAW_type {
uint8_t x; uint8_t y; uint8_t z; };
int16_t öxi, ay, az; int16_t gx, gy, gz; struct RAW_type accel_zero_offsent ,gyro_zero_offsent;
bool blinkState = false; bleikju str[512];
26

Gerðu þig fullkomna skemmtun
flot pí = 3.1415926; fljóta AcceRatio = 16384.0; float GyroRatio = 131.0; fljóta Rad = 57.3; //180.0/pí; float gyrox,gyroy,gyroz;
ógild uppsetning() { int i ; int32_t ax_zero = 0,ay_zero = 0,az_zero = 0,gx_zero =0 ,gy_zero =
0,gz_núll = 0; // join I2C bus (I2Cdev bókasafn gerir þetta ekki sjálfkrafa) Wire.begin();
Serial.begin(115200);
// frumstilla tæki // Serial.println(“Frumstillir I2C tæki…”);
accelgyro.initialize(); delay(500); accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_250);
Serial.println(“Prófar tengingar tækja…”); Serial.println(accelgyro.testConnection() ? „MPU6050 tenging tókst“ : „MPU6050 tenging mistókst“); fyrir(i = 0; i < 200; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); gx_núll += gx ; gy_zero += gy ; gz_núll += gz ; } gyro_zero_offsent.x = gx_zero/200 ; gyro_zero_offsent.y = gy_zero/200 ;
27

Gerðu þig fullkomna skemmtun
gyro_zero_offsent.z = gz_zero/200; pinMode (LED_PIN, OUTPUT); }
void loop() { // lestu hráar accel/gyro mælingar úr tækinu accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
//sprintf(str,”%d,%d,%dn”, gx-gyro_zero_offsent.x ,gygyro_zero_offsent.y, gz-gyro_zero_offsent.z);
//Serial.print(str); gyrox = (flota)(gx-gyro_zero_offsent.x)/AcceRatio; gyroy = (flota)(gy-gyro_zero_offsent.y)/AcceRatio ; gyroz = (flota)(gz-gyro_zero_offsent.z)/AcceRatio ; Serial.print(gyrox);Serial.print(“gt”); Serial.print(gyroy);Serial.print(“gt”); Serial.print(gyroz);Serial.print(“gn”);
seinka(100); // blikka LED til að gefa til kynna virkni blinkState = !blinkState; digitalWrite(LED_PIN, blinkState); }
Þegar við snúum í jákvæða átt x-ássins sjáum við að prentuðu gíroxgögnin eru jákvæð, annars eru þau neikvæð.
28

Gerðu þig fullkomna skemmtun
5.4 Hreyfigagnagreining
Eftir að lestrargögnum hröðunarmælisins og hornhraðamælisins hefur verið breytt í líkamleg gildi eru gögnin túlkuð á mismunandi hátt eftir mismunandi forritum. Í þessum kafla er hreyfilíkan flugvéla tekið sem dæmiample til að reikna út núverandi flugstöðu byggt á hröðun og hornhraða.
5.4.1 Gerð hröðunarmælis
Við getum hugsað um hröðunarmælirinn sem kúlu í jákvæðu teningakassa sem er haldið í miðju teningsins með gorm. Þegar kassinn er á hreyfingu er hægt að reikna gildi núverandi hröðunar út frá stöðu ímyndaða boltans eins og sýnt er hér að neðan:
29

Gerðu þig fullkomna skemmtun
Mynd 15: Hröðunargildi þyngdartaps
Ef við leggjum láréttan vinstri kraft á kassann, þá mun kassinn augljóslega hafa vinstri hröðun, þá mun ímyndaði kúlan í kassanum festast við hægri hlið kassans vegna tregðu. Eins og sést á eftirfarandi mynd:
Mynd 16: Hröðun hlutar sem færist til hægri
Til að tryggja líkamlega merkingu gagnanna, merkir MPU6050 hröðunarmælirinn andstæð gildi í þremur ásum ímyndaðrar bolta sem raunverulega hröðun. Þegar ímynduð boltastaða er beygð fram á ás er hröðun áss neikvæð og þegar ímynduð boltastaða er beygð í átt að neikvæðum ás er hröðun ássins
30

Gerðu þig fullkomna skemmtun
lestur er jákvæður. Samkvæmt ofangreindri greiningu, þegar við setjum MPU6050 flísina á staðbundið stigi, er flísyfirborðið í átt að himni, á þessum tíma vegna þyngdaraflsins er staða boltans í átt að neikvæðri átt Z-ássins, þar með Z-ásinn. hröðunarlestur áss ætti að vera jákvæður og helst ætti að vera „g“. Athugaðu að þetta er ekki þyngdarhröðun heldur hröðun líkamlegrar hreyfingar, þetta má skilja: þyngdarhröðunin er jöfn eigin hreyfihröðunargildi, en í gagnstæða átt, þess vegna getur flísin verið kyrrstæð.
5.4.2 Roll-pitch-yaw líkan og viðhorfsútreikningur
Almennt líkan til að sýna núverandi flugstöðu loftfars er að koma á hnitakerfinu eins og sýnt er hér að neðan og tákna snúning X-ássins með „Roll“, snúning Y-ássins með „Pitch“, snúningi Z. ás með „Yaw“.
Mynd 17: Roll-pitch-yaw líkan
Þar sem MPU6050 getur náð upp hröðun þriggja ása og þyngdaraflið er alltaf lóðrétt niður, getum við reiknað út núverandi afstöðu í samræmi við þyngdarhröðunina
31

Gerðu þig fullkomna skemmtun
miðað við flöguna. Til hægðarauka höfum við flísinn sem snýr niður á flugvélinni sem sýnd er hér að ofan og hnitin eru í fullkominni samsetningu við hnitakerfi flugvélarinnar. Hröðunin í ásunum þremur myndar hröðunarvigur „a (x, y, z)“. Ef gert er ráð fyrir að flísinn sé í samræmdri línulegri hreyfingu, þá ætti „a“ að vera hornrétt á jörðu, þ.e. neikvæða stefnu Z-ássins, og lengdin er |a|=g=sqrt{x^2+ y^2+z^2} (jöfn þyngdarhröðun en í gagnstæða átt, sjá í kafla 3.1). Ef flísinn (hnitakerfið) snýst mun neikvæða stefna Z-ássins ekki lengur falla saman við „a“ vegna þess að hröðunarvigurinn a er enn uppi lóðrétt. Sjá hér að neðan.

Mynd 18: Reiknilíkan viðhorfshorns
Til hægðarauka er jákvæða stefna Z-ás hnitakerfisins fyrir ofan (kviður og framhlið flísarinnar) niður og X-ásinn er til hægri (stefna flugvélarinnar sem flýgur). Á þessum tímapunkti er rúlluhornið "" (gult) flísarinnar myndað af hröðunarvigurnum og vörpun hans (x, 0, z) á XZ planinu, hallahornið "" (grænt) myndast af hröðunarvigurnum og vörpun þess á YZ flugvélinni. Punkturinn

vöruformúla getur reiknað hornið á milli tveggja vigra: einföld frádráttur:

. Eftir

og

.

32

Gerðu þig fullkomna skemmtun
Athugaðu að þar sem arccos fallið getur aðeins skilað jákvæðum gildum þarftu að taka jákvæð og neikvæð gildi hornsins í samræmi við mismunandi aðstæður. Þegar y-ásinn er jákvæður tekur rúlluhornið neikvætt gildi og þegar X-ásinn er neikvæður er hallahornið neikvætt.
5.4.3 Vandamál með hornhorni
Þar sem það er engin tilvísun er ekki hægt að reikna út algildan straumhorn Yaw, við getum aðeins fengið breytileika Yaw, nefnilega hornhraða GYR_Z. Auðvitað getum við notað aðferð GYR_Z heildarinnar til að reikna út núverandi Yaw horn (samkvæmt upphafsgildi), í krafti mælingarnákvæmni er reiknað gildi á reki, það er algjörlega tilgangslaust eftir nokkurn tíma. Hins vegar, í flestum forritum, eins og UAV, er aðeins GRY_Z krafist.
Ef þú þarft að fá algert horn Yaw, veldu þá MPU9250, 9-ása hreyfirakningarflís, það getur veitt 3-ása áttavita viðbótargögn, svo við getum reiknað út Yaw-hornið í samræmi við stefnu segulsviðs jarðar, ekki er minnst á sérstaka aðferðina hér.
5.5 Gagnavinnsla og innleiðing
MPU6050 flís veitir gögnum alvarlegan hávaða, þegar flísinn er að vinna í kyrrstöðu geta gögnin sveiflast meira en 2%. Til viðbótar við hávaðann eru enn til aðrar frávik, það er að segja, gögnin sveiflast ekki í kringum kyrrstöðuvinnupunktinn, þannig að gagnajöfnunin ætti að kvarða fyrst og útrýma hávaðanum með síunaralgrími. Áhrif Kalman síunnar eru án efa best fyrir gögn með miklum hávaða. Hér lítum við ekki á reiknirit upplýsingar, þú getur vísað til http://www.starlino.com/imu_guide.html.
5.5.1 Tilraun 3 imu_kalman fær Roll and Pitch Markmiðið er að sýna 3D hreyfistöðu mpu6050 í rauntíma með því að lesa mpu6050 og senda rauntíma hröðunina ACCEL_X, ACCEL_Y, ACCEL_Z gögn og gírógögn GYRO_YX, GYRO_X, GYRO , og GYRO_Z í vinnsluforritið.
5.5.2 Tilraunakóði Arduino tilraunakóði „MotionTrackLessonmpu6050mpu6050.ino“ getur fengið rúllu og tónhæð. Niðurstaða hlaupsins er sem hér segir:
33

Gerðu þig fullkomna skemmtun
Eftir að hafa hlaðið upp forritinu á Arduino NANO aðalstjórnborðið, opnaðu vinnsluforritið „MotionTrackProcessing_demompu6050mpu6050.pde“
með vinnsluhugbúnaði (niðurhals heimilisfang https://www.processing.org). Athugaðu að númerið í „[]“ er ekki gáttarnúmer Arduino NANO, heldur raðnúmer samskiptagáttarinnar. Þú þarft að opna tækjastjórnun tölvunnar til að view raðnúmerið. Til dæmisample, skjárinn minn er COM1 og raðtengi sem er notað fyrir vinnslu okkar. Það byrjar með undirskriftinni 0. Svo ég breytti gildinu í „[ ]“ í Processing aðalforritinu í 0. Þegar breytingunum er lokið smellirðu á Run Sketch til að keyra Processing..
34

Gerðu þig fullkomna skemmtun
35

Gerðu þig fullkomna skemmtun
import processing.serial.*;
Serial myPort; // serila port numble
flot [] RwEst = ný flot[3]; bæti[] inBuffer = nýtt bæti[100];
PFont leturgerð; endanleg int VIEW_SIZE_X = 1080,VIEW_SIZE_Y = 720;
ógild uppsetning() {
stærð (1080, 720, P3D); myPort = new Serial(þetta, Serial.list()[0], 9600); // myPort = new Serial(þetta, “/dev/ttyUSB0”, 9600); // hlaða leturgerð CourierNew type /date font = loadFont(“CourierNewPSMT-32.vlw”); }
void readSensors() { if (myPort.available() > 0) { if (myPort.readBytesUntil('n', inBuffer) > 0) { String inputString = new String(inBuffer); String [] inputStringArr = split(inputString,','); RwEst[0] = flot(inntakStringArr[0]); RwEst[1] = flot(inntakStringArr[1]); RwEst[2] = flot(inntakStringArr[2]); } }
}
36

Gerðu þig fullkomna skemmtun
void buildBoxShape() { //box(60, 10, 40); noStroke(); byrjaShape(QUADS);
//Z+ fylla(#00ff00); vertex(-30, -5, 20); vertex(30, -5, 20); vertex(30, 5, 20); hornpunkt(-30, 5, 20);
//Zfill(#0000ff); vertex(-30, -5, -20); vertex(30, -5, -20); vertex(30, 5, -20); vertex(-30, 5, -20);
//Xfill(#ff0000); vertex(-30, -5, -20); vertex(-30, -5, 20); hornpunkt(-30, 5, 20); vertex(-30, 5, -20);
//X+ fylla(#ffff00); vertex(30, -5, -20); vertex(30, -5, 20); vertex(30, 5, 20); vertex(30, 5, -20);
//Yfill(#ff00ff); vertex(-30, -5, -20); vertex(30, -5, -20); vertex(30, -5, 20); vertex(-30, -5, 20);
37

Gerðu þig fullkomna skemmtun
//Y+ fill(#00ffff); vertex(-30, 5, -20); vertex(30, 5, -20); vertex(30, 5, 20); hornpunkt(-30, 5, 20);
endShape(); }
ógilt drawCube() { pushMatrix(); // staðla3DVec(RwEst); translate(300, 450, 0); mælikvarði(4, 4, 4); rotateX(HALF_PI * -RwEst[1]); //rotateY(HALF_PI * -0.5); snúaZ(HALF_PI * -RwEst[0]); buildBoxShape(); popMatrix();
}
void draw() { // getInclination(); lesaSensor(); bakgrunnur(#214565); fill(#ffffff); textFont(font, 20); text(“RwEst :n” + RwEst[0] + “n” + RwEst[1] + “n” + RwEst[2], 220, 180); // sýna ása pushMatrix(); þýða(450, 250, 0); högg(#ffffff); // mælikvarði(100, 100, 100); line(0, 0, 0, 100, 0, 0); line(0, 0, 0, 0, -100, 0); lína(0, 0, 0, 0, 0, 100); line(0, 0, 0, -RwEst[0], RwEst[1], RwEst[2]); popMatrix(); drawCube();
} 38

Gerðu þig fullkomna skemmtun
Við getum séð að hlaupaárangur okkar er sem hér segir:
Mynd 19: Vinnsla kynningar

Meginregla hreyfirakningarstýringar

Með fyrri gagnaöflun mpu6050 til að fá Roll horn og Pitch, komum við á eftirfarandi bréfaskipti. Stjórna neðri vélinni sem hreyfist: Við getum stjórnað hvaða lægri vél sem er með því að fá hraða og stefnu í gegnum mpu6050.
Með því að lesa mpu6050 sanntímastaðfesta hröðun ACCEL_X, ACCEL_Y, ACCEL_Z gögn og gyroscope gögn GYRO_X, GYRO_Y, GYRO_Z gögn eru send til quaternion vinnsluaðgerðarinnar, forritið sýnir Roller og Pitch horn stöðu mpu6050 í rauntíma.
6.1 Kappakstursstefnu hnithornslíkan
Til að auðvelda stjórn á bílnum, komum við nú upp eftirfarandi líkan af stefnu mótorsins með hnitahorninu
39

Gerðu þig fullkomna skemmtun
Mynd 20: Hnit kappakstursstefnuhorns Eins og sýnt er hér að ofan skilgreinum við framhlið bílsins sem 90 gráður, 270 gráður að aftan, 180 gráður til hægri og 0/360 gráður til vinstri. 0~90 stendur fyrir hægri framstefnu. 90~180 stendur fyrir vinstri framhlið 180~270 fyrir vinstri aftan og 270~360 fyrir hægri aftan. Á sama hátt settum við mpu6050 upp á íþróttahanskana. Við smíðuðum eftirfarandi hreyfimódel.
40

Gerðu þig fullkomna skemmtun
Mynd 21: Stefnahnit íþróttahanskana Í gegnum 5.5.2 Roll-pitch-yaw gagnalíkanið snúast íþróttahanskarnir um mynd Y (snúa handarbakinu til vinstri og hægri) og við fáum Pitch hornið. Þegar við snúum í kringum X (flettum fram og til baka) fáum við Roll hornið. Nú þegar við höfum skilning á hnitum afstöðuhornsins og hyrndum hnitum bílsins, munum við nú lýsa því fyrir vettvangi. Þegar íþróttahanskarnir eru hallaðir í hægri framstefnu, eins og sýnt er á myndinni hér að neðan, ef þeir eru í hnitakerfinu, hallast þeir að 0 til 90 gráðu svæði.
41

Gerðu þig fullkomna skemmtun
Mynd 22: Skýringarmynd af íþróttahönskunum halla í hægri framstefnu Hornið sem samsvarar bílnum fyrir neðan er sem hér segir
42

Gerðu þig fullkomna skemmtun
Mynd 23: Skýringarmynd af hægri hreyfingu að framan á bílnum Í gegnum viðhorf íþróttahanskana þurfum við að reikna út horngráðu hreyfingar neðri vélarinnar. Þannig að við smíðuðum eftirfarandi þrívíddarlíkan
Mynd 24: Stereo líkan skýringarmynd byggð á íþróttahönskum Til þæginda fyrir framsetningu er jákvæða stefnu Z-ás efra hnitakerfisins (framhlið hanskans sem hreyfist) upp og jákvæða X-ás stefnan (hægra megin á íþróttahanski) er til hægri. Í upphafsástandi eru íþróttahanskarnir áfram eins lyftistöng og XY. Á þessum tíma er áttin sem íþróttahanskarnir halla í táknuð með OB og Roll horn (svart) er hornið á milli hröðunarvigurs OB og vörpun hans (x, 0, z) á XZ planinu, og Pitch horn (fjólublátt) er vörpun þess á YZ planinu ( Hornið á milli 0, y og z). Blái liturinn er stig sem íþróttahanskarnir varpa vörpuninni (x, o, y) á XY planið. Við notum þetta horn til að stjórna stýrishorni neðri bílsins. Við höfum þegar fengið Roll and Pitch í gegnum fyrri 5.6.1 tilraunina. Nú reiknum við gráðuna með eftirfarandi formúlu. Á myndinni BA OA AB OB sin(Pitch) BD OD BD OBsin(Roll)
43

Gerðu þig fullkomna skemmtun
tandegree FE BD sin(Roll) Roll
OE AB sin(Pitch) Pitch deg ree arctan( Roll)
Pitch Að ofan höfum við fengið stýriskósínushornið, við þurfum að margfalda stuðulinn í hnitagráðu. 180 57.3 Ofangreind greining er aðeins horngreining þegar hún er hallað eins og efra hægra megin. Á sama hátt, þegar íþróttahanskarnir eru hallaðir til vinstri að framan
Mynd 25: Skýringarmynd af íþróttahanskunum sem hallast til vinstri að framan deg ree arctan( Pitch)*57.3 900
Rúlla á sama hátt, þegar íþróttahanskarnir eru hallaðir til vinstri
44

Gerðu þig fullkomna skemmtun
Mynd 26: Skýringarmynd af vinstri afturstefnu íþróttahanskana deg ree arctan( Roll )*57.3 1800
Pitch Á sama hátt, þegar íþróttahanskarnir eru hallaðir neðst til hægri
Mynd 27: Skýringarmynd af hægri afturstefnu íþróttahanskanna
45

Gerðu þig fullkomna skemmtun
deg ree arctan( Pitch)*57.3 2700 Roll
Nú skulum við tala um hvernig á að stjórna hraða bílsins. Af myndinni hér að ofan getum við séð að fyrir íþróttahanskana í mpu6050 og XY flugvél hallahornsins, notum við eftirfarandi plan til að tákna

B'OB er hallahornið miðað við upphafsstöðuna með því að nota þessa hallagráðu til að stjórna hraðanum á

bílnum.

B'OB=OBF arcsin( OF ) arcsin( OE2 EF 2 )

OB

OB

EF=BD OE=AB

OBF arcsin( sin2 (Roll) sin2 (Pitch)) arcsin( Roll2 Pitch2 )

Ofangreint er bogahornið. Við þurfum líka að margfalda stuðulinn. Svið þessa horns er (0~90). Við notum þetta horn beint sem stýrihraða bílsins.

46

Gerðu þig fullkomna skemmtun

float CalculateSpeed(float roll, float pitch) {
float inclination = asin(sqrt(rúlla*rúlla +pitch*pitch))*Rad; afturhalli; }

ógilt Handhalli (ógilt)

{

static int count = 0;

static int SendSpeed ​​= 0, SendDegree = 0;

telja++;

hraði = CalculateSpeed(rúlla, kasta);

if ((-0.2 <= hæð) && (halla <= 0.2) && (-0.2 <= rúlla) && (velta <= 0.2)) {

gráðu = 90;

SendHraði = 0;

SendDegree += 90;

} annað ef (pitch < 0 && rúlla < 0) {

gráða = atan(rúlla/pitch)*Rad;

SendDegree += ((unsigned int)(degree/10))*10;

} annað ef (pitch > 0 && rúlla < 0) {

gráðu = atan(-pitch/roll)*Rad + 90;

SendDegree += ((unsigned int)(degree/10))*10;

} annað ef (pitch > 0 && rúlla > 0) {

gráðu = atan(rúlla/pitch)*Rad + 180;

} annað ef (pitch < 0 && rúlla > 0) {

gráðu = atan(-pitch/roll)*Rad + 270;

SendDegree += ((unsigned int)(degree/10))*10;

} annað {

gráðu = 90;

SendHraði = 0;

SendDegree = 90;

}

SendDegree = (int)(hraði/10)*10;

if (gráða < 30 || gráðu > 330) {

SendDegree = 0;

}

if (telja >= 3) {

telja = 0;

Send_Direction(SendDegree/3);

Send_Speed(SendSpeed);

SendDegree = 0;

SendHraði = 0;

4 7

}

Gerðu þig fullkomna skemmtun

Bókun

Notaðu Bluetooth til að stjórna bílnum, er í raun að nota Android appið til að senda leiðbeiningar til Arduino

raðtengi í gegnum Bluetooth til að stjórna bílnum. Þar sem það felur í sér þráðlaus samskipti, eitt af nauðsynlegu

vandamál eru samskipti milli tækjanna tveggja. En það er ekkert sameiginlegt „tungumál“ á milli þeirra,

svo það er nauðsynlegt að hanna samskiptareglur til að tryggja fullkomið samspil milli Android og

Arduino. Aðalferlið er: Android þekkir stjórnskipunina og pakkar henni inn í

samsvarandi pakki, síðan sendur í Bluetooth-eininguna (JDY-16), JDY-16 móttekin gögn og send til

Arduino, síðan greinir Arduino gögnin og framkvæmir síðan samsvarandi aðgerð. Dagsetningarsniðið sem

Android send eins og hér að neðan, inniheldur aðallega 8 reiti.

Samskiptagagnalengd Tegund tækis Aðgerð tækis Control Athuga siðareglur

Haus

Heimilisfangskóði Gögn Summa Lokakóði

Í 8 reitunum hér að ofan notum við byggingarhluta til að tákna.

typedef struct {
óundirritaður upphafskóði bleikju; unsigned char len; óundirrituð bleikjutegund; unsigned char adr; unsigned short int virka; óundirrituð bleikja *gögn; unsigned short int summa; óundirritaður char end_code; }ST_samskiptareglur;

// 8bit 0xAA
// 16 bita // n bita // athuga summa // 8bit 0x55

„Heimur bókunar“ þýðir upphaf pakkans, svo sem samræmda heitið 0xAA. „Gagnalengd“ þýðir nema gild gagnalengd upphafs- og lokakóða gagnanna. „Tækjagerð“ þýðir tegund búnaðarbúnaðar „Tækivistfang“ þýðir heimilisfangið sem er stillt fyrir stjórn „Funkunarkóði“ þýðir tegund aðgerða búnaðar sem þarf að stjórna, aðgerðagerðirnar sem við styðjum eins og hér segir.

48

Gerðu þig fullkomna skemmtun
typedef enum {
E_BATTERY = 1, E_LED = 2, E_BUZZER = 3, E_INFO = 4, E_ROBOT_CONTROL = 5, E_ROBOT_CONTROL_SPEED = 6, E_TEMPERATURE = 7, E_IR_TRACKING = 8, E_ULTRASONIC = 9, E_VERSION = 10, E_11CTOR ;
„Gögn“ merkir sérstakt stjórngildi bíls, svo sem hraða, halla. „Checksum“ er afleiðing af mismunandi eða útreiknuðum gagnabitum stjórnunarleiðbeiningarinnar. „Protocol end code“ er endahluti gagnapokans þegar þessi gögn eru móttekin, það þýðir að gagnapakkinn hefur verið sendur og er tilbúinn til að taka á móti næsta gagnapakka, hér tilgreindum við það sem 0x55. Til dæmisample, heill pakki getur verið eins og „AA 070101065000 5F55“, þar sem: „07“ er Sendingargagnalengd 7 bæti. „06“ er „gerð tækisins“, svo sem mótor, LED, hljóðmerki og svo framvegis. 06 vísar hér til flutningshraða og 05 vísar til flutningsstefnu. „50 (eða 0050)“ eru stjórnandi gögnin, 0x50 í sextánda tölu er 80 þegar umreiknað er í tvíundir, sem þýðir að hraðagildið er 80. Ef gögnin eru 05 þýðir það stýristefnan, það er 80 gráður (fram). „005F“ er eftirlitsumma sem er 0x07+0x01+0x01+0x06+0x50=0x5F. „55“ er lokakóði bókunarinnar, sem gefur til kynna lok gagnaflutnings.
49

Gerðu þig fullkomna skemmtun

Alhliða tilraun

8.1 Nrf24L01 þráðlaus stjórn
8.1.1 Bendingastýring Hummer-bot snjallbíll Tengdu í samræmi við tengilínuna í fyrri kafla, tengdu síðan 9v þurrrafhlöðunni við
Arduino NANO, og hlaðið niður forritinu. Eftir að kveikt er á henni sendir Nrf24L01 einingin gögn til Hummer-Bot Nrf24L01 og stillir síðan stöðu hanskans til að stjórna Hummer-Bot fjölnotabílnum, þannig að bíllinn sem stjórnað er af íþróttahönskunum fæðist!
50

Gerðu þig fullkomna skemmtun
Mynd 28: Bendingastýring hummer-bot Forritatengill neðri tölvunnar: https://github.com/keywish/keywish-hummer-bot-Hummer-Bot-Multi-function bílakaupa hlekkurKaupa á Amazon
https://www.amazon.com/dp/B078WM15DK Stjórna kynningarmyndband Gesture-MotionTrackingvideoControl_Hunner-bot.mp4 8.1.2 Bending Control Beetle-bot Smart Car
Mynd 29: Bendingastjórnun Beetle-bot Upplýsingar um Beetle-bot https://github.com/keywish/keywish-beetle-bot
51

Gerðu þig fullkomna skemmtun
8.2 Bluetooth samskiptastillingarstýring
Tengdu í samræmi við Bluetooth snúruna, tengdu síðan 9v þurrrafhlöðuna við Arduino NANO og halaðu niður forritinu (MotionTrackLessonMotionTrack_Bluetooth MotionTrack_Bluetooth.ino). Athugaðu að þú þarft að breyta MAC vistfangi Bluetooth á neðri tölvunni. Eftir að kveikt er á þeim tengjast íþróttahanskarnir sjálfkrafa við Bluetooth-einingu bílsins.
52

Gerðu þig fullkomna skemmtun
8.2.1 Bendingastýring Aurora-Racing
Mynd 30: Bendingastýring Aurora-Racing Vöruupplýsingar: https://github.com/keywish/Aurora-Racing Framleiðslumyndband: giteeMotionTrackvideo Control_RacingCar.mp4
53

Gerðu þig fullkomna skemmtun
8.2.2 Bendingastýring Panther-tankur
Mynd 31: Bendingastýring Pather-tank Fyrir Panther-tank framleiðsluefni, vinsamlega vísað til https://github.com/keywish/keywish-panther-tank
54

Gerðu þig fullkomna skemmtun
8.2.3 Bendingastjórnun jafnvægisbíll
Mynd 32: Bending Control Mini balance-car Fyrir Balance vöruupplýsingar, vinsamlega vísað til https://github.com/keywish/mini-balance-car
55

Skjöl / auðlindir

Makefun MPU6050 Arduino bendingahreyfingarrakningu [pdfLeiðbeiningarhandbók
MPU6050 Module, JDY-16 Bluetooth Module, NRF24L01 Module, MPU6050 Arduino Bending Motion Tracking, MPU6050, Arduino Gesture Motion Tracking, Bending Motion Tracking, Motion Tracking, Tracking

Heimildir

Skildu eftir athugasemd

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru merktir *