Makefun-logo

Olrhain Mudiant Ystum Arduino MPU6050 Makefun

Makefun-MPU6050-Arduino-Gesture-Motion-Tracking-product

Gwybodaeth Cynnyrch

Manylebau

  • Enw'r Cynnyrch: Olrhain Symud Symud
  • Fersiwn: V.1.2
  • Cadwrfa Github: Dolen Github

Cyflwyniad Rhestr Dyfeisiau

Y citiau gofynnol ar gyfer defnyddio Olrhain Symud Symud yw:

  • Modiwl MPU6050
  • Modiwl Bluetooth JDY-16
  • Modiwl NRF24L01+
  • Prif Fwrdd Rheoli Arduino NANO
  • Bwrdd Bara Mini
  • Menig
  • Llinell DuPont Gwryw i Fenyw
  • Batri

Cyfarwyddiadau Defnydd Cynnyrch

Cyflwyniad Prosesydd NANO

Cyflenwad Pŵer

  • Gall yr Arduino Nano gael ei bweru gan ryngwyneb USB mini-B, cyflenwad pŵer DC 7 ~ 12V allanol trwy gysylltiad vin.

Cof

  • Mae gan yr ATmega168 / ATmega328 ar y Nano gof Flash 16KB / 32KB, 1KB / 2KB SRAM, a 0.5KB / 1KB EEPROM.

Mewnbwn ac Allbwn

  • Mae gan y Nano 14 porthladd I / O digidol, 6 mewnbwn analog, a phinnau penodol ar gyfer amrywiol swyddogaethau fel cyfathrebu cyfresol, ymyriadau, allbynnau PWM, SPI, ac ati.

Rhyngwyneb Cyfathrebu

  • Mae'r Nano yn cefnogi cyfathrebu cyfresol trwy UART ac mae ganddo ryngwynebau sy'n gydnaws â bysiau SPI ac I2C.

Lawrlwythwr

  • Gellir rhaglennu'r Nano gan ddefnyddio meddalwedd Arduino a'r rhaglen cychwynnydd. Gellir lawrlwytho rhaglenni hefyd trwy bennawd ICSP.

Sylw

  • Mae'r Nano yn cynnwys dyluniad ailosod awtomatig ar gyfer ailosod meddalwedd yn hawdd heb ymyrraeth â llaw.

FAQ

Cwestiynau Cyffredin

  • Q: Ble alla i ddod o hyd i'r diweddariadau diweddaraf neu adnoddau ychwanegol ar gyfer Olrhain Symud Symud?
    • A: Gallwch wirio ystorfa swyddogol Github yn y ddolen a ddarperir i gael diweddariadau ac adnoddau.
  • Q: Sut mae pweru'r Arduino Nano?
    • A: Gallwch bweru'r Nano gan ddefnyddio rhyngwyneb USB mini-B neu gyflenwad pŵer DC 7 ~ 12V allanol wedi'i gysylltu trwy'r pin vin.

“`

Eich gwneud yn hwyl delfrydol

1. Cyflwyniad rhestr dyfeisiau
Dangosir y pecynnau gofynnol yn y tabl isod. Modiwl MPU6050
Modiwl Bluetooth JDY-16 Modiwl NRF24L01+
Menig Bwrdd Bara Mini Bwrdd Rheoli Arduino NANO
Batri llinell DuPont Gwryw i Fenyw

1 1 2 1 2 1 Sawl 1

Ffigur 1: Rhestr Dyfeisiau
4

Eich gwneud yn hwyl delfrydol
2. Cyflwyniad Prosesydd NANO
Microbrosesydd Arduino Nano yw ATmega328 (Nano3.0) gyda rhyngwyneb USB-mini, sydd â 14 pin mewnbwn / allbwn digidol (gellir defnyddio 6 ohonynt fel allbwn PWM), 8 mewnbwn analog, a chyseinydd ceramig 16 MHz, 1 mini -B cysylltiad USB, pennawd ICSP a botwm ailosod. Mae'r prosesydd ATmega328 Gweithio cyftage 5v Mewnbwn cyftage (argymhellir) 7-12v Mewnbwn cyftage (ystod) 6-20v pin IO digidol 14 (gellir defnyddio 6 ohonynt fel allbwn PWM) Pin mewnbwn analog 6 pin IO DC 40 mA Cof Fflach 16 neu 32 KB (y mae 2 KB ar gyfer cychwynnydd) SRAM 1KB neu 2KB EEPROM 0.5 KB neu 1KB ATmega328 CH340 USB i sglodyn porth cyfresol Cloc 16 MHz
2.1 Cyflenwad Pŵer
Modd cyflenwad pŵer Arduino Nano: cyflenwad pŵer rhyngwyneb USB mini-B a chysylltiad vin allanol 7 ~ cyflenwad pŵer DC allanol 12V
Cof 2.2
Mae ATmega168 / ATmega328 yn cynnwys Flash 16KB / 32KB ar sglodion, a defnyddir 2KB ohono ar gyfer Bootloader. Mae yna hefyd 1KB/2KB SRAM a 0.5KB/1KB EEPROM.
2.3 Mewnbwn ac Allbwn
14 porthladd mewnbwn ac allbwn digidol: The working voltage yw 5V, a gall pob sianel allbwn a chyrchu'r cerrynt uchaf o 40mA. Mae gan bob sianel wrthwynebiad tynnu i fyny mewnol 20-50K ohm (heb ei gysylltu yn ddiofyn). Yn ogystal, mae gan rai pinnau swyddogaethau penodol.
Signal cyfresol RX (0), TX (1): Mae'n darparu signal derbyn porthladd cyfresol gyda chyfrol TTLtage lefel, wedi'i gysylltu â'r pin cyfatebol o FT232Rl.
Ymyrraeth Allanol (Rhif 2 a Rhif 3): Sbardun torri ar draws pin, y gellir ei osod i ymyl codi, ymyl syrthio neu sbardun cydamserol.
Modyliad Lled Pwls PWM (3, 5, 6, 9, 10, 11): Yn darparu allbynnau PWM 6 sianel, 8-did.
5

Eich gwneud yn hwyl delfrydol
SPI10(SS)11(MOSI)12(MISO)13(SCK):Rhyngwyneb Cyfathrebu SPI. LED (Rhif 13): Defnyddir Arduino yn arbennig i brofi rhyngwyneb neilltuedig y LED. Pan fydd yr allbwn
uchel, mae'r LED wedi'i oleuo. Pan fydd yr allbwn yn isel, mae'r LED i ffwrdd. 6 mewnbwn analog A0 i A5: Mae gan bob sianel gydraniad o 10 did (hynny yw, mae gan y mewnbwn 1024 o wahanol
gwerthoedd), yr ystod signal mewnbwn rhagosodedig yw 0 i 5V, a gellir addasu terfyn uchaf y mewnbwn gan AREF. Yn ogystal, mae gan rai pinnau swyddogaethau penodol. Rhyngwyneb TWI (SDA A4 a SCL A5): Yn cefnogi rhyngwyneb cyfathrebu (yn gydnaws â bws I2C). AREF: Mae'r cyfeirnod cyftage y signal mewnbwn analog. ResetThe microcontroller sglodion yn cael ei ailosod pan fydd y signal yn isel.
2.4 Rhyngwyneb Cyfathrebu
Porth cyfresol: Gall yr UART adeiledig o ATmega328 gyfathrebu â phorthladd cyfresol allanol trwy borthladd digidol 0 (RX) ac 1 (TX).
2.5 Downloader
Mae gan yr MCU ar yr Arduino Nano raglen cychwynnydd, felly gallwch chi lawrlwytho'r rhaglen yn uniongyrchol o feddalwedd Arduino. Gallwch hefyd lawrlwytho'r rhaglen yn uniongyrchol i'r MCU trwy bennawd ICSP ar y Nano.
2.6 Sylw
Mae'r Arduino Nano yn darparu dyluniad ailosod awtomatig y gellir ei ailosod gan y gwesteiwr. Yn y modd hwn, gall y feddalwedd gael ei ailosod yn awtomatig gan y meddalwedd Arduino yn y rhaglen i'r Nano, heb wasgu'r botwm ailosod.

Cyflwyniad Blumodule

Rhagymadrodd BlumoduleJDY-16

3.1 Nodweddion
Mae trosglwyddiad tryloyw cyflym BLE yn cefnogi cyfathrebu cyfradd Beit 8K. Anfon a derbyn data heb derfyn beit, cefnogi cyfradd baud 115200 anfon a derbyn data yn barhaus. Cefnogi 3 dull o weithio (gweler y disgrifiad o swyddogaeth gyfarwyddo AT+STARTEN). Cefnogaeth (porthladd cyfresol, IO, APP) deffro cwsg Cefnogi WeChat Airsync, rhaglennig WeChat a chyfathrebu APP. Cefnogi rheolaeth porthladd IO 4 sianel a chloc RTC manwl uchel. Cefnogi swyddogaeth PWM (gellir ei reoli gan UART, IIC, APP, ac ati). Cefnogi modd cyfathrebu UART ac IIC, rhagosodedig i gyfathrebu UART. modd iBeacon (cefnogi protocol ysgwyd WeChat a phrotocol Apple iBeacon).
6

Eich gwneud yn hwyl delfrydol
Cynnal modd trosglwyddo tryloyw (trosglwyddo data rhwng modiwlau cais, cyfathrebu gwesteiwr a chaethweision).
Cyfluniad modiwl cyfathrebu di-wifr

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

Ffigur 2: Map ffisegol modiwl JDY-16 (1) Mae cebl Nano a JDY-16

Modiwl JDY-16

Arduino NANO

VCC

5V

GND

GND

RXD

D2

TXD

D3

STAT

NC

PWRC

NC

Lawrlwytho rhaglen MotionTrackJDY-16AT_CMD AT_CMD.ino

(2) Gofynion ffurfweddu:

Gweithredu rhwymiad meistr-gaethwas o ddau fodiwl Bluetooth JDY-16.

3.2 Camau Gweithredu

1. Cysylltwch y modiwlau Nano a JDY-16 â llinell DuPont. 2. Rhowch y modd gorchymyn AT Cysylltwch y lawrlwythwr i'r cyfrifiadur ac agorwch y cynorthwyydd porth cyfresol. Gosodwch y gyfradd baud i 9600, y did data i 8 did, y did stopio i 1 did, a dim darn cydraddoldeb.

7

Eich gwneud yn hwyl delfrydol
Prawf cyfathrebu: Anfon: YN Nôl: Iawn
Ffigur 3: Anfon AT Command Diagram 3. Anfon: AT+HOSTEN1rn ————– Gosod Bluetooth fel y prif fodd Yn ôl: Iawn Yn ôl: Iawn
8

Eich gwneud yn hwyl delfrydol
Ffigur 4: Gosod Modd Gwesteiwr 4. Sganiwch y JDY-16 Bluetooth o'i amgylch: 1. Trosglwyddiad caethwasiaeth: AT+SCANrn ————— Holi cyfeiriad y caethwas ei hun Yn ôl: Iawn +DEV:1=3CA5090A160F, -62, JDY-16 +STOP:SCAN
Ffigur 5: Holi dyfeisiau Bluetooth ymylol 5. Cysylltu Bluetooth
Gwesteiwr yn anfon: AT + CONN3CA5090A160Frn ————— Cyfeiriad caethweision rhwymol gwesteiwr Yn ôl: Iawn Wedi'i gysylltu â'r cyflenwad pŵer, gellir cysylltu'r ddau Bluetooth â'i gilydd, anfon data trwy'r gwesteiwr Bluetooth, gall y caethwas Bluetooth dderbyn yr un data. Neu gallwch chi raglennu'r weithdrefn ffurfweddu meistr-gaethwas yn uniongyrchol i osod y Bluetooth meistr-gaethwas, yna mae'r gwesteiwr yn rhaglennu'r weithdrefn gysylltu ac yn cysylltu'n awtomatig. (Sylwer mai dim ond modiwl Bluetooth JDY-16 y gellir ei gysylltu'n awtomatig ar hyn o bryd)
9

Eich gwneud yn hwyl delfrydol
3.3 Dull cysylltu Nano a JDY-16
Ffigur 6: Diagram cysylltiad Nano a JDY-16

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

Eich gwneud yn hwyl delfrydol

Cyflwyniad Modiwl Di-wifr NRF24L01

Cyflwyniad Modiwl Di-wifr NRF24L01

Mae'r modiwl nRF24L01+ yn fodiwl cyfathrebu diwifr 2.4G a ddatblygwyd gan Nordig yn seiliedig ar y sglodyn nRF24L01. Mabwysiadu modiwleiddio FSK ac integreiddio protocol Byrst Byr Gwell Nordig ei hun. Gellir cyflawni cyfathrebu diwifr pointto-point neu 1-i-6. Gall cyflymder cyfathrebu di-wifr gyrraedd hyd at 2M (bps). Mae gan yr NRF24L01 bedwar dull gweithredu: modd transceiver, modd cyfluniad, modd segur, a modd diffodd. Mae'r map ffisegol a ddefnyddir yn yr arbrawf hwn ar ochr chwith Ffigur 7. Ar gyfer derbyniad sefydlog y derbynneb Nrf24L01, argymhellir cysylltu'r cynhwysydd 10uf rhwng VCC a GUD fel y dangosir ar y dde.
Ffigur 7: Map ffisegol Nrf24l01+ a diagram sodro
4.1 Nodweddion Modiwl
2.4GHz, maint bach 15x29mm gan gynnwys antena Cefnogi derbyniad data chwe sianel Cyfrol gweithio iseltage: 1.93.6V Mae cyfradd trosglwyddo data yn cefnogi: 1Mbps2Mbps Defnydd pŵer isel cerrynt gwaith dylunio wrth dderbyn yw 12.3mA, 11.3mA ar bŵer 0dBm
allyriadau, 900nA yn y modd pŵer-lawr Swyddogaeth ail-ddarlledu awtomatig, canfod ac ail-drosglwyddo pecynnau data coll yn awtomatig,
gellir rheoli amser ail-ddarlledu ac amseroedd ail-ddarlledu gan feddalwedd Swyddogaeth ymateb awtomatig, ar ôl derbyn data dilys, mae'r modiwl yn anfon ateb yn awtomatig
signal caledwedd adeiledig CRC canfod gwall a rheoli cyfeiriad cyfathrebu pwynt-i-aml-bwynt Manylion sglodion NRF24L01 cyfeiriwch at tonRF24L01 Datasheet.pdf
11

Eich gwneud yn hwyl delfrydol
Pin gwybodaeth

Ffigur 8: Diagram gwybodaeth pin Nrf24L01

Symbol Pin

Swyddogaeth

Cyfeiriad

1 GND

GND

2

+5V

Cyflenwad Pŵer

3

CE

Llinell Reoli Yn y Modd Gweithio

IN

4

Sglodion CSN Dewis Signal, Gweithio Lefel Isel

IN

5

SCK

Cloc SPI

IN

6 MOSI

Mewnbwn SPI

IN

7 MISO

Allbwn SPI

ALLAN

8

IPQ

Toriad Allbwn

ALLAN+

4.2 Pwrpas Arbrofol
1. Dysgwch am fodiwl nRF24L01+ a sut i gysylltu ag Arduino. 2. Sut i ddefnyddio modiwl arduino a nRF24L01+ i orffen derbyn ac anfon data.

4.3 Y cydrannau sydd eu hangen ar gyfer yr arbrawf hwn
Modiwl Arduino UNO R3 Motherboard Arduino NANO nRF24L01 Modiwl * 2 Sawl gwifren
12

Eich gwneud yn hwyl delfrydol
4.4 Diagram sgematig arbrofol

Ffigur 9: Diagram cysylltiad Nano a Nrf24L01

Modd cysylltu Arduino a NRF24L01

Nano arduino

nRF24L01

+3.3V

VCC

GND

GND

7pin

CSN 4pin

4pin

CE 3pin

11pin

MOSI 6pin

12pin

MISO 7pin

13pin

SCK 5pin

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

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

13

Eich gwneud yn hwyl delfrydol

13pin

SCK 5pin

4.4 Egwyddor y rhaglen
Proses lansio 1 Yn gyntaf, ffurfweddwch y modd trosglwyddo nRF24L01. 2 Yna ysgrifennwch gyfeiriad TX_ADDR y diwedd derbyn a'r data TX_PLD i'w anfon i'r ardal glustogi nRF24L01 gan y porthladd SPI mewn trefn amser. Mae 3Arduino yn ffurfweddu'r CE i fod yn uchel am o leiaf 10 s ac yn trosglwyddo data ar ôl oedi o 130 s. Os yw'r ateb auto ymlaen, mae'r nRF24L01 yn mynd i mewn i'r modd derbyn yn syth ar ôl trosglwyddo'r data ac yn derbyn y signal ateb. Os derbynnir ateb, ystyrir bod y cyfathrebiad yn llwyddiannus. Bydd 4NRF24L01 yn gosod TX_DS yn uchel yn awtomatig a bydd y TX_PLD yn cael ei glirio o'r pentwr trawsyrru. Os na cheir ymateb, bydd y data'n cael ei ail-drosglwyddo'n awtomatig. Os yw nifer yr ail-drosglwyddiadau (ARC_CNT) yn cyrraedd y terfyn uchaf, mae MAX_RT wedi'i osod yn uchel ac ni fydd TX_PLD yn cael ei glirio; MAX_RT Pan fydd TX_DS wedi'i osod yn uchel, mae IRQ yn mynd yn isel i sbarduno ymyriad MCU. Pan fydd y trosglwyddiad olaf yn llwyddiannus, os yw'r CE yn isel, bydd y nRF24L01 yn mynd i mewn i'r modd segur. 5 Os oes data yn y pentwr trosglwyddo a bod CE yn uchel, dechreuir y trosglwyddiad nesaf; os nad oes data yn y pentwr trosglwyddo a bod CE yn uchel, bydd y nRF24L01 yn mynd i mewn i'r modd segur 2. Derbyn proses ddata 1Pan fydd y nRF24L01 yn derbyn data, ffurfweddwch y nRF24L01 i dderbyn modd yn gyntaf. 2 Yna oedi 130s i'r cyflwr derbyn i aros i'r data gyrraedd. Pan fydd y derbynnydd yn canfod cyfeiriad dilys a CRC, mae'n storio'r pecyn data yn y pentwr derbynnydd. Ar yr un pryd, mae'r arwydd ymyrraeth RX_DR wedi'i osod yn uchel ac mae'r IRQ yn mynd yn isel i hysbysu'r MCU i nôl y data. 3 Os caiff ymateb awtomatig ei droi ymlaen ar yr adeg hon, bydd y derbynnydd yn mynd i mewn i'r signal ymateb adlais statws trosglwyddo ar yr un pryd. Pan fydd y derbyniad olaf yn llwyddiannus, os aiff CE yn isel, bydd y nRF24L01 yn mynd i fodd segur 1.
rhaglen prawf trawsgludwr nRF24L01 cyfeiriwch at “rhaglen MotionTracknRF24l01+”

14

Eich gwneud yn hwyl delfrydol

Mpu6050 Cyflwyniad

MPU6050 yw cydran prosesu cynnig 6-echel gyntaf y byd gyda gyrosgop 3-echel integredig a chyflymydd 3-echel. Gall gysylltu â synwyryddion magnetig eraill neu brosesu symudiad digidol synwyryddion eraill (DMP) trwy ail borthladd I2C. Mae'r peiriant cyflymu caledwedd yn bennaf yn allbynnu techneg cyfrifo ymasiad 9-echel gyflawn i'r MCU gwesteiwr ar ffurf un ffrwd ddata gan y porthladd I2C.
Daw sglodyn MPU6050 gydag is-fodiwl prosesu data DMP, mae ganddo algorithm hidlo caledwedd adeiledig, mae defnyddio data allbwn DMP wedi gallu bodloni'r gofynion yn dda mewn llawer o geisiadau. Nid oes angen ein meddalwedd arnom i wneud y hidlo. Bydd y cwrs hwn yn adeiladu menig chwaraeon cyflawn yn seiliedig ar ddarllen DMP fel data allbwn trwy Arduino.
Ffigur 10: map ffisegol modiwl mpu6050
Nodweddion Data calcwlws integredig allbwn digidol o fatrics cylchdro 6 echel neu 9 echel, quaternion ac Euler
fformat ongl. Synhwyrydd cyflymder onglog 3-echel (gyrosgop) gyda sensitifrwydd 131 LSBs/°/sec ac ystod synhwyro ystod lawn
o ±250, ±500, ±1000, a ±2000°/eiliad. Rheolaeth rhaglenadwy, cyflymydd 3-echel gydag ystod rheoli rhaglen o ±2g, ±4g, ±8g, a ±16g. Mae'r injan Prosesu Symudiad Digidol (DMP) yn lleihau'r llwyth o ddata cyfrifo ymasiad cymhleth,
synchronization synhwyrydd, a synhwyro ystum.
15

Eich gwneud yn hwyl delfrydol
Mae'r gronfa ddata prosesu symudiadau yn cefnogi Android, Linux, a Windows. Mae technegau graddnodi adeiledig ar gyfer gwyriadau amser gweithredu a synhwyrydd magnetig yn dileu'r defnyddiau '
angen ychwanegol am raddnodi. Synhwyrydd tymheredd allbwn digidol. Mae'r cyflenwad cyftage o VDD yw 2.5V±5%3.0V±5%3.3V±5%, a VDDIO yn 1.8V±5%. Cerrynt gweithredu gyro: 5mA, cerrynt wrth gefn gyrosgop: 8A; cerrynt gweithredu cyflymydd: 8A,
cerrynt modd arbed pŵer cyflymydd: 8A@10Hz. Hyd at 400kHz modd cyflym I2C, neu hyd at 20MHz rhyngwyneb gwesteiwr cyfresol SPI. Pecyn wedi'i deilwra lleiaf a theneuaf ar gyfer y cynnyrch cludadwy (QFN 4x4x0.9mm).
5.2 Sgematig Modiwl

Ffigur 11: Sgematig y modiwl mpu6050
5.3 Cyfathrebu rhwng Nano a mpu6050

5.3.1 Cysylltiad Cylchdaith
Mae rhyngwyneb data'r modiwl MPU6050 integredig yn defnyddio'r protocol bws I2C, felly mae angen help y llyfrgell Wire arnom i gyfathrebu rhwng NANO a'r MPU6050. Mae cysylltiad cyfatebol bwrdd NANO fel a ganlyn:

Modiwl MPU6050 VCC

Arduino NANO 5V

16

Eich gwneud yn hwyl delfrydol

GND SCL SDA XDA XCL YCHWANEGU INT

GND A5 A4 CC NC NC/GND

Ffigur 12: Diagram cysylltiad o Nano a mpu6050
Mae data ysgrifennu a darllen MPU6050 yn cael eu gwireddu gan gofrestrau mewnol y sglodion, mae cyfeiriadau'r gofrestr i gyd yn 1 beit, sef, 8 did o'r gofod cyfeiriad. Cyfeiriwch at “RMMPU-6000A.pdf” 1.1. Cyn ysgrifennu data i'r ddyfais bob tro, yn gyntaf trowch ar y modd trosglwyddo gwifren a nodwch gyfeiriad bws y ddyfais. Cyfeiriad bws yr MPU6050 yw 0x68 (y cyfeiriad yw 0x69 pan fo'r pin AD0 yn uchel). Yna ysgrifennwch beit o gyfeiriad cychwyn y gofrestr, ac yna ysgrifennwch ddata o unrhyw hyd. Bydd y data hyn yn cael eu hysgrifennu'n barhaus i'r cyfeiriad cychwyn penodedig, a bydd hyd y gofrestr gyfredol yn cael ei ysgrifennu i gofrestr y cyfeiriad canlynol. Diffoddwch y modd trosglwyddo gwifren ar ôl i'r ysgrifennu gael ei gwblhau. Mae'r sampmae le code yn ysgrifennu beit 0 i gofrestr 0x6B yr MPU6050.
Wire.beginTransmission(0x68); // Strat trosglwyddo'r MPU6050
17

Eich gwneud yn hwyl delfrydol
Wire.write(0x6B); // Nodwch gyfeiriad y gofrestr Wire.write(0); // Ysgrifennwch un beit o ddata Wire.endTransmission(gwir); // Trosglwyddo diwedd, gwir fodd rhyddhau bws
Darllen Data o MPU-6050
Mae darllen ac ysgrifennu fel ei gilydd, yn gyntaf yn agor y modd trosglwyddo Wire, ac yna'n ysgrifennu beit o gyfeiriad cychwyn y gofrestr. Yn nesaf, darllenwch ddata'r cyfeiriad penodedig i storfa'r llyfrgell Wire a diffoddwch y modd cludo. Yn olaf, darllenwch y data o'r storfa. Mae'r cynampMae'r cod yn dechrau gyda'r gofrestr 0x3B o MPU6050 ac yn darllen 2 beit o ddata:
Wire.beginTransmission(0x68); // Strat trosglwyddo'r MPU6050 Wire.write(0x3B); // Nodwch gyfeiriad y gofrestr Wire.requestFrom(0x68, 2, gwir); // Darllenwch y data i'r storfa Wire.endTransmission(gwir); // Cau modd trawsyrru int val = Wire.read() << 8 | Wire.read(); // Mae dau beit yn ffurfio cyfanrif 16-did
Gweithrediad Penodol
Fel arfer dylid cychwyn y llyfrgell Wire yn y swyddogaeth gosod: Wire.begin();
Rhaid i chi gychwyn y ddyfais cyn i chi berfformio unrhyw weithrediadau ar yr MPU6050, a bydd ysgrifennu beit i'w 0x6B yn ddigon. Fe'i gwneir fel arfer yn y swyddogaeth gosod, fel y dangosir yn adran 1.1.
Fformat Data MPU6050
Mae'r data y mae gennym ddiddordeb ynddo yn y gofrestr 14 beit o 0x3B i 0x48. Bydd y data hyn yn cael eu diweddaru'n ddeinamig gydag amlder diweddaru o hyd at 1000HZ. Mae cyfeiriad y gofrestr waelodol ac enw'r data wedi'u rhestru isod. Sylwch fod pob data yn 2 beit.
0x3B, cydran echel X y cyflymromedr yw ACC_X 0x3D, cydran echel Y y cyflymromedr yw ACC_Y 0x3F, cydran echel Z y cyflymromedr yw ACC_Z 0x41, y tymheredd presennol yw TEMP 0x43, cyflymder onglog o amgylch yr echelin X 0x45 , cyflymder onglog o amgylch yr Y echel GYR_Y
18

Eich gwneud yn hwyl delfrydol
0x47, cyflymder onglog o amgylch yr echelin Z GYR_Z Diffiniad cyfesurynnol y sglodyn MPU6050 yw: wynebwch y sglodyn tuag ato'i hun a throwch y testun arwyneb i'r ongl gywir. Ar yr adeg hon, mae canol y sglodion yn cael ei gymryd fel y tarddiad, y llorweddol i'r dde yw'r echelin X, a'r fertigol yw'r echelin Y, gan bwyntio'ch un chi yw'r echel Z, fel y dangosir isod:
Ffigur 13: diagram cyflymder cylchdro a onglog mpu6050 Dim ond ystyr cyflymromedr a data mesurydd cyflymder onglog yr ydym yn poeni amdano. Nawr rydym yn gyfarwydd â defnyddio mpu6050 trwy ddau arbrawf. 5.3.2 Arbrawf 1 Darllen Cyflymydd
Mae tair cydran echelin y cyflymromedr, ACC_X, ACC_Y ac ACC_Z i gyd yn gyfanrifau wedi'u llofnodi 16-did, sy'n dangos cyflymiad y ddyfais mewn tri chyfeiriad echelinol. Pan gymerir y gwerth negyddol, mae'r cyflymiad yn negyddol ar hyd yr echelin cydlynu ac mae'r gwerth positif yn bositif.
Mae'r tair cydran cyflymiad i gyd mewn lluosrifau o'r cyflymiad disgyrchiant g, a'r ystod o gyflymiad y gellir ei fynegi, hynny yw, gellir gosod y chwyddhad yn unffurf, ac mae pedwar chwyddhad dewisol: 2g, 4g, 8g, a 16g. Gan gymryd ACC_X fel cynample, os yw'r chwyddhad wedi'i osod i 2g (diofyn), mae'n golygu pan fydd ACC_X yn cymryd y gwerth lleiaf -32768, mae'r cyflymiad presennol 2 waith y cyflymiad disgyrchiant ar hyd cyfeiriad positif yr echelin X, ac ati. Yn amlwg,
19

Eich gwneud yn hwyl delfrydol

po isaf yw'r chwyddiad, y gorau yw'r cywirdeb, a'r uchaf yw'r chwyddo, y mwyaf yw'r amrediad, sy'n cael ei osod yn ôl y cais penodol.

AFS_SEL 0 1 2 3

Amrediad Graddfa Llawn ±2g ±4g ±8g ±16g

Sensitifrwydd BGLl 16384LSB/g 8192LSB/g 4096LSB/g 2048LSB/g

Mae'r berthynas rhwng cyfeiriad cylchdroi'r cyflymromedr tair echel a'r modiwl fel a ganlyn:

Ffigur 14: Cylchdroi modiwl Mpu6050 a phatrwm cyflymu Mae'r data a ddarllenir gan yr MPU6050 yn amrywio, felly mae angen ei wirio. Hynny yw, pan fydd y sglodyn mewn cyflwr llonydd, dylai'r darlleniad hwn yn ddamcaniaethol fod yn sero. Ond mae'n tueddu i gael gwrthbwyso. Am gynampLe, rydym yn darllen 200 o werthoedd ar gyfnodau o 10ms ac yna'n eu cyfartaleddu. Gelwir y gwerth hwn yn sero gwrthbwyso. Ceir y darlleniad wedi'i raddnodi trwy dynnu'r gwrthbwyso sero o bob darlleniad. Gan y dylai gwerth damcaniaethol ACC_X ac ACC_Y fod yn sero, gellir graddnodi'r ddau wrthbwyso darllen yn ôl cymedr ystadegol. Mae angen prosesu ACC_Z mewn un cam. Yn y broses o wrthbwyso ystadegol, mae cyflymiad disgyrchiant g yr echelin Z yn cael ei dynnu ar gyfer pob darlleniad. Os yw'r chwyddiad cyflymiad yn 2g, yna mae 16384 yn cael ei dynnu, ac yna mae'r graddnodi cymedrig ystadegol yn cael ei berfformio. Gellir gwneud graddnodi cyffredinol bob tro y bydd y system yn cychwyn, yna dylech wneud cyfaddawd rhwng cywirdeb ac amser cychwyn.
20

Eich gwneud yn hwyl delfrydol
5.3.2.1 Pwrpas Arbrofol
Trwy gylchdroi'r mpu6050 i arsylwi ar y berthynas data allbwn rhwng tair echelin y cyflymromedr.
5.3.2.2 Arbrawf Cod Cod LocationMotionTrackLessonmpu6050_accel mpu6050_accel.ino
21

Eich gwneud yn hwyl delfrydol

#cynnwys “Wire.h” // Rhaid gosod I2Cdev a MPU6050 fel llyfrgelloedd, neu fel arall y .cpp/.h filerhaid i s // ar gyfer y ddau ddosbarth fod yn llwybr cynnwys eich prosiect #cynnwys “I2Cdev.h” #cynnwys “MPU6050.h” #define LED_PIN 13 MPU6050 accelgyro; strwythuro RAW_type {
uint8_t x; uint8_t y; uint8_t z; }; int16_t bwyell, ay, az; int16_t gx, gy, gz; strwythuro RAW_type accel_zero_offsent; torgoch str[512]; bool blinkState = ffug ; arnofio AcceRatio = 16384.0; arnofio accx, accy, accz;

gosodiad gwagle() {

int i;

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

// ymunwch â bws I2C (nid yw llyfrgell I2Cdev yn gwneud hyn yn awtomatig)

Wire.begin();

cyfres.begin(115200);

// cychwyn dyfais

Serial.println(“Cychwyn dyfeisiau I2C…”);

accelgyro.initialize();

oedi (500);

accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);

Serial.println(“Profi cysylltiadau dyfais…”);

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

2 2

llwyddiannus” : “Methodd y cysylltiad MPU6050”);

Eich gwneud yn hwyl delfrydol
ar gyfer( i = 0; i < 200; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); ax_zero += bwyell; ay_zero += ay ; az_zero += 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); print cyfres(“t”); Serial.print(accel_zero_offsent.y); print cyfres(“t”); Serial.print(accel_zero_offsent.z); print cyfres(“n”); pinMode(LED_PIN, OUTPUT); }
dolen wag() {// darllenwch fesuriadau accel/gyro amrwd o oedi dyfais(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 = (arnofio)(ax-accel_zero_offsent.x )/AcceRatio; accy = (arnofio)( ay-accel_zero_offsent.y )/AcceRatio ; accz = (arnofio)(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

Eich gwneud yn hwyl delfrydol
1. Cylchdroi 90 gradd o amgylch yr echelin X Pan fydd yr echelin X yn cael ei chylchdroi 90 gradd, mae'r echelin Y yn araf i fyny ac mae'r echelin Z yn
yn araf i lawr. Pan fydd yr echelin yn cyrraedd 90 gradd yn union, gan fod yr echelin Y i'r cyfeiriad arall i'r disgyrchiant, allbwn yr echelin Y yw 1g (1g = = 9.8m / s ^ 2), tra bod gwerth yr echelin Z yn gostwng o 1 i 0. 2. Yn ôl i'r safle cychwynnol a gwrthdroi cylchdro 90 gradd
Pan fyddwch chi'n dychwelyd i'r sefyllfa gychwynnol, mae gwerth echel Y yn cael ei ostwng yn araf i 0, tra bod yr echelin Z yn cynyddu'n araf i 1. Yna trowch 90 gradd i'r cyfeiriad gwrthdro, ac mae'r echelin Y yn gostwng yn raddol tan -1, oherwydd bod y Y echel yn unol â'r cyfeiriad disgyrchiant, a dylai'r gwerth cyflymu fod yn negyddol. Mae'r echelin Z yn gostwng yn araf i 0. 3. Yn ôl i'r safle cychwynnol
Eglurwch fel a ganlyn: Yna dychwelwch i'r safle cychwynnol o'r cefn 90 gradd. Ar yr adeg hon, mae data'r echel Y a'r echelin Z yn cael eu hadfer yn araf i'r gwerth cychwynnol, mae'r echel Y yn 0, ac mae'r echelin Z yn 1.
Ar ôl dadansoddi cylchdro'r echel X, mae cylchdroi'r echel Y yn debyg, felly ni fyddwn yn siarad amdano yn fanwl. Nawr, gadewch i ni siarad am yr echel Z, oherwydd wrth gylchdroi o gwmpas yr echelin Z, mae'n cyfateb i swingio 90 gradd i'r chwith a'r dde. Ar yr adeg hon, mae allbwn yr echelin Z bob amser yn 1, ac mae'r echelin X a'r echel Y yn orthogonal i'r echel disgyrchiant, felly mae'r gwerthoedd allbwn i gyd yn 0, wrth gwrs, dyma'r gwerth o dan amodau cymharol statig . Os yw'r ddyfais wedi'i gosod ar gerbyd, efallai na fydd yr echelinau X ac Y o reidrwydd yn 0 pan fydd y car yn troi i'r chwith ac i'r dde.
24

Eich gwneud yn hwyl delfrydol
Canlyniad Arbrofol

5.3.3 Arbrawf 2 Darllen data o Gyro

Mae'r cydrannau cyflymder onglog GYR_X, GYR_Y a GYR_Z, sy'n cylchdroi o amgylch tair echelin gyfesurynnol X, Y a Z, i gyd yn gyfanrifau wedi'u llofnodi 1-did. O'r tarddiad i'r echelin cylchdro, mae'r gwerth yn bositif ar gyfer y cylchdro clocwedd ac yn negyddol ar gyfer y cylchdro gwrthglocwedd. Mae'r tair cydran cyflymder onglog i gyd mewn graddau/eiliad. Yr ystod cyflymder onglog y gellir ei fynegi, hynny yw, gellir gosod y chwyddhad yn unffurf. Mae 4 chwyddhad dewisol: 250 gradd/eiliad, 500 gradd/eiliad, 1000 gradd/eiliad, 2000. Graddau/eiliad. Gan gymryd GYR_X fel cynample, os gosodir y chwyddhad i 250 gradd/eiliad, mae'n golygu pan fydd y GYR yn cymryd gwerth mwyaf positif o 32768, mae'r cyflymder onglog presennol yn 250 gradd/eiliad clocwedd; os yw wedi'i osod i 500 gradd/eiliad, mae gwerth cyfredol 32768 yn nodi'r cerrynt, y cyflymder onglog yw 500 gradd/eiliad clocwedd. Yn amlwg, po isaf yw'r chwyddiad, y gorau yw'r cywirdeb, a'r uchaf yw'r chwyddo, y mwyaf yw'r ystod.

AFS_SEL 0 1 2 3

Amrediad Graddfa Llawn ±250°/s ±500°/s ±1000°/s ±2000°/s

Sensitifrwydd BGLl
131LSB/°/s 65.5LSB/°/s 32.8LSB/°/s 16.4LSB/°/s

25

Eich gwneud yn hwyl delfrydol
Lleoliad y Rhaglen “MotionTrackLessonmpu6050_gryo mpu6050_gryo.ino” Cod Arbrawf
#cynnwys “Wire.h”
// Rhaid gosod I2Cdev ac MPU6050 fel llyfrgelloedd, neu fel arall y .cpp/.h filerhaid i s // ar gyfer y ddau ddosbarth fod yn llwybr cynnwys eich prosiect #cynnwys “I2Cdev.h” #cynnwys “MPU6050.h” #define LED_PIN 13
MPU6050 accelgyro;
strwythuro RAW_type {
uint8_t x; uint8_t y; uint8_t z; };
int16_t bwyell, ay, az; int16_t gx, gy, gz; strwythuro RAW_type accel_zero_offsent , gyro_zero_offsent;
bool blinkState = ffug; torgoch str[512];
26

Eich gwneud yn hwyl delfrydol
arnofio pi = 3.1415926; arnofio AcceRatio = 16384.0; arnofio GyroRatio = 131.0; arnofio Rad = 57.3 ; //180.0/pi; gyrox arnofio, gyroy, gyroz;
gosodiad gwag() { int i ; int32_t ax_zero = 0,ay_zero = 0,az_zero = 0, gx_zero = 0 ,gy_zero =
0,gz_zero = 0 ; // ymunwch â bws I2C (nid yw llyfrgell I2Cdev yn gwneud hyn yn awtomatig) Wire.begin();
cyfres.begin(115200);
// cychwyn dyfais // Serial.println("Cychwyn dyfeisiau I2C ...");
accelgyro.initialize(); oedi (500); accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_250);
Serial.println(“Profi cysylltiadau dyfais…”); Serial.println(accelgyro.testConnection() ? “Cysylltiad MPU6050 yn llwyddiannus” : “Methodd cysylltiad MPU6050”); ar gyfer( i = 0; i < 200; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); gx_zero += gx ; gy_zero += gy ; gz_zero += gz ; } gyro_zero_offsent.x = gx_zero/200 ; gyro_zero_offsent.y = gy_zero/200 ;
27

Eich gwneud yn hwyl delfrydol
gyro_zero_offsent.z = gz_zero/200; pinMode(LED_PIN, OUTPUT); }
dolen wag() {// darllenwch fesuriadau accel/gyro amrwd o'r ddyfais 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 = (arnofio)(gx-gyro_zero_offsent.x)/AcceRatio; gyroy = (arnofio)(gy-gyro_zero_offsent.y)/AcceRatio ; gyroz = (arnofio)(gz-gyro_zero_offsent.z)/AcceRatio ; Serial.print(gyrox);Serial.print(“gt”); Serial.print(gyroy);Serial.print(“gt”); Serial.print(gyroz);Serial.print(“gn”);
oedi(100); // blink LED i ddynodi gweithgaredd blinkState = !blinkState; digitalWrite(LED_PIN, blinkState); }
Pan fyddwn yn cylchdroi i gyfeiriad cadarnhaol yr echelin-x, gwelwn fod y data gyrox printiedig yn gadarnhaol, fel arall mae'n negyddol.
28

Eich gwneud yn hwyl delfrydol
5.4 Dadansoddi Data Cynnig
Ar ôl trosi data darllen y cyflymromedr a'r mesurydd cyflymder onglog a nhw i werthoedd corfforol, dehonglir y data yn wahanol yn ôl gwahanol gymwysiadau. Yn y bennod hon, cymerir y model mudiant awyren fel example i gyfrifo'r agwedd hedfan gyfredol yn seiliedig ar gyflymiad a chyflymder onglog.
5.4.1 Model cyflymromedr
Gallwn feddwl am y cyflymromedr fel pêl mewn blwch ciwb positif sy'n cael ei dal yng nghanol y ciwb gan sbring. Pan fydd y blwch yn symud, gellir cyfrifo gwerth y cyflymiad cerrynt o leoliad y bêl ddychmygol fel y dangosir isod:
29

Eich gwneud yn hwyl delfrydol
Ffigur 15: Gwerth cyflymiad cyflwr colli pwysau
Os byddwn yn gosod grym chwith llorweddol ar y blwch, yna yn amlwg bydd gan y blwch gyflymiad chwith, yna bydd y bêl ddychmygol yn y blwch yn glynu wrth ochr dde'r blwch oherwydd syrthni. Fel y dangosir yn y ffigur canlynol:
Ffigur 16: Cyflymiad gwrthrych sy'n symud i'r dde
Er mwyn sicrhau ystyr ffisegol y data, mae cyflymromedr MPU6050 yn nodi'r gwerthoedd cyferbyn mewn tair echelin o bêl ddychmygol fel cyflymiad go iawn. Pan fo safle dychmygol y bêl yn gogwyddo tuag at flaen echelin, mae cyflymiad yr echelin yn negyddol, a phan fydd safle dychmygol y bêl yn gogwyddo tuag at echel negyddol, cyflymiad yr echelin
30

Eich gwneud yn hwyl delfrydol
mae darllen yn gadarnhaol. Yn ôl y dadansoddiad uchod, pan fyddwn yn rhoi'r sglodion MPU6050 ar y lefel leol, mae wyneb y sglodion tuag at yr awyr, ar yr adeg hon oherwydd y disgyrchiant, mae sefyllfa'r bêl tuag at gyfeiriad negyddol echel Z, felly mae'r Z. dylai darllen cyflymiad echelin fod yn gadarnhaol, ac yn ddelfrydol dylai fod yn “g”. Sylwch nad cyflymiad disgyrchiant yw hwn ond cyflymiad symudiad corfforol, gellir deall hyn: mae cyflymiad disgyrchiant yn hafal i'w werth cyflymiad symudiad ei hun, ond i'r cyfeiriad arall, dyna pam y gall y sglodyn aros yn llonydd.
5.4.2 Model rholio-traw-yaw a chyfrifiad agwedd
Model cyffredinol ar gyfer cynrychioli agwedd hedfan gyfredol awyren yw sefydlu'r system gyfesurynnau fel y dangosir isod a chynrychioli cylchdro'r echelin X trwy “Roll”, cylchdroi'r echelin Y gan “Pitch”, cylchdro'r Z. echel gan “Yaw”.
Ffigur 17: Model rholio-traw-yaw
Gan y gall MPU6050 gael y cyflymiad ar i fyny o dair echelin ac mae disgyrchiant bob amser yn fertigol i lawr, gallwn gyfrifo'r agwedd gyfredol yn ôl cyflymiad disgyrchiant
31

Eich gwneud yn hwyl delfrydol
perthynas i'r sglodion. Er hwylustod, mae gennym y sglodyn yn wynebu i lawr ar yr awyren a ddangosir uchod, ac mae'r cyfesurynnau mewn cyd-ddigwyddiad perffaith â system gydlynu'r awyren. Mae'r cyflymiad yn y tair echelin yn ffurfio fector cyflymiad “a (x, y, z)”. Gan dybio bod y sglodyn mewn cyflwr o fudiant llinellol unffurf, yna dylai'r "a" fod yn berpendicwlar i'r ddaear, sef cyfeiriad negyddol echel Z, a'r hyd yw |a|=g=sqrt{x^2+ y^2+z^2} (sy'n hafal i gyflymiad disgyrchiant ond i'r cyfeiriad arall, yn Adran 3.1). Os yw'r sglodyn (system gydlynu) yn cylchdroi, ni fydd cyfeiriad negyddol yr echelin Z bellach yn cyd-fynd â'r “a” oherwydd bod y fector cyflymiad a yn dal i fyny'n fertigol. Gweld isod.

Ffigur 18: Model cyfrifo ongl agwedd
Er mwyn hwylustod, mae cyfeiriad cadarnhaol echel Z y system gyfesurynnau uchod (y bol a blaen y sglodion) i lawr, ac mae'r echelin X tua'r dde (cyfeiriad yr awyren yn hedfan). Ar y pwynt hwn, mae ongl Rholio “” (melyn) y sglodyn yn cael ei ffurfio gan y fector cyflymiad a'i dafluniad (x, 0, z) ar yr awyren XZ, mae'r ongl Traw “” (gwyrdd) yn cael ei ffurfio gan y fector cyflymiad a'i dafluniad ar yr awyren YZ. Y dot

gall fformiwla cynnyrch gyfrifo'r ongl rhwng dau fector: didyniad syml:

. Wedi

a

.

32

Eich gwneud yn hwyl delfrydol
Sylwch, gan mai dim ond gwerthoedd positif y gall swyddogaeth arccos ddychwelyd, mae angen i chi gymryd gwerthoedd cadarnhaol a negyddol yr ongl yn ôl gwahanol amgylchiadau. Pan fydd echelin y yn bositif, mae'r ongl Roll yn cymryd gwerth negyddol, a phan fo'r echelin X yn negyddol, mae'r ongl Traw yn negyddol.
5.4.3 Yaw Problem Ongl
Gan nad oes cyfeiriad, ni ellir cyfrifo ongl cerrynt absoliwt yr Iaw, ni allwn ond gael yr amrywiad o Yaw, sef, cyflymder onglog GYR_Z. Wrth gwrs, gallwn ddefnyddio'r dull GYR_Z annatod i gyfrifo'r ongl bresennol Yaw (yn ôl y gwerth cychwynnol), yn rhinwedd cywirdeb mesur, mae'r gwerth cyfrifo yn drifftio, mae'n gwbl ddiystyr ar ôl cyfnod o amser. Fodd bynnag, yn y rhan fwyaf o gymwysiadau, megis UAVs, dim ond GRY_Z sydd ei angen.
Os oes rhaid i chi gael ongl absoliwt Yaw, yna dewiswch MPU9250, sglodyn olrhain cynnig 9-echel, gall ddarparu data ychwanegol cwmpawd 3-echel, fel y gallwn gyfrifo'r ongl Yaw yn ôl cyfeiriad maes magnetig y ddaear, ni chrybwyllir y dull penodol yma.
5.5 Prosesu a Gweithredu Data
Mae sglodion MPU6050 yn darparu data â sŵn difrifol, pan fydd y sglodion yn prosesu mewn cyflwr sefydlog, gall y data swingio mwy na 2%. Yn ogystal â'r sŵn, mae gwrthbwyso eraill yn bodoli o hyd, hynny yw, nid yw'r data'n troi o gwmpas y man gweithio statig, felly dylid graddnodi'r gwrthbwyso data yn gyntaf, ac yna dileu'r sŵn trwy hidlo algorithm. Heb os, effaith hidlydd Kalman yw'r gorau ar gyfer data gyda llawer iawn o sŵn. Yma nid ydym yn ystyried manylion algorithmig, gallwch gyfeirio atynt http://www.starlino.com/imu_guide.html.
5.5.1 Arbrawf 3 imu_kalman yn Cael Roll and Pitch Y nod yw arddangos cyflwr mudiant 3D y mpu6050 mewn amser real trwy ddarllen y mpu6050, a throsglwyddo'r cyflymiad amser real ACCEL_X, ACCEL_Y, data ACCEL_Z a data gyro GYRO_YX, GYRO_YX, GYRO_YX , a GYRO_Z i'r rhaglen brosesu.
5.5.2 Cod Arbrawf Gall cod arbrawf Arduino “MotionTrackLessonmpu6050mpu6050.ino” gael y gofrestr a thraw Mae'r canlyniad rhedeg fel a ganlyn:
33

Eich gwneud yn hwyl delfrydol
Ar ôl uwchlwytho'r rhaglen i brif fwrdd rheoli Arduino NANO, agorwch y rhaglen Brosesu “MotionTrackProcessing_demompu6050mpu6050.pde”
gyda meddalwedd Prosesu (cyfeiriad lawrlwytho https://www.processing.org). Sylwch nad rhif porthladd Arduino NANO yw'r rhif yn “[]”, ond rhif cyfresol y porthladd cyfathrebu. Mae angen ichi agor rheolwr dyfais y cyfrifiadur i view y rhif cyfresol. Am gynampLe, fy arddangosfa yw COM1, a'r porthladd cyfresol a ddefnyddir ar gyfer ein prosesu. Mae'n dechrau gyda'r tanysgrifiad 0. Felly newidiais y gwerth yn “[ ]” yn y brif raglen Prosesu i 0. Unwaith y bydd y newidiadau wedi'u cwblhau, cliciwch Rhedeg Braslun i redeg Prosesu.
34

Eich gwneud yn hwyl delfrydol
35

Eich gwneud yn hwyl delfrydol
mewnforio processing.serial.*;
MyPort cyfresol; // serila port numble
arnofio [] RwEst = fflôt newydd[3]; beit[] inBuffer = beit newydd[100];
Ffont PFont; int terfynol VIEW_SIZE_X = 1080,VIEW_SIZE_Y = 720;
gosodiad gwagle() {
maint (1080, 720, P3D); myPort = Cyfres newydd(hwn, Serial.list()()()()[0], 9600); // myPort = Cyfres newydd(hyn, “/dev/ttyUSB0”, 9600); // load Font CourierNew type /date font = loadFont(“CourierNewPSMT-32.vlw”); }
gwag readSensors() { os (myPort.available()> 0) { os (myPort.readBytesUntil('n', mewnBuffer) > 0) { Llinyn mewnbwnString = Llinyn newydd(inBuffer); Llinyn [ ] mewnbwnStringArr = hollt(inputString, ','); RwEst[0] = arnofio(inputStringArr[0]); RwEst[1] = arnofio(inputStringArr[1]); RwEst[2] = arnofio(inputStringArr[2]); } }
}
36

Eich gwneud yn hwyl delfrydol
adeilad gwagBoxShape() {//box(60, 10, 40); dimStrôc(); startShape(QUADS);
//Z+ llenwi(#00ff00); fertig(-30, -5, 20); fertig(30, -5, 20); fertig(30, 5, 20); fertig(-30, 5, 20);
//Zfill(#0000ff); fertig(-30, -5, -20); fertig(30, -5, -20); fertig(30, 5, -20); fertig(-30, 5, -20);
//Xfill(#ff0000); fertig(-30, -5, -20); fertig(-30, -5, 20); fertig(-30, 5, 20); fertig(-30, 5, -20);
//X+ llenwi(#ffff00); fertig(30, -5, -20); fertig(30, -5, 20); fertig(30, 5, 20); fertig(30, 5, -20);
//Yfill(#ff00ff); fertig(-30, -5, -20); fertig(30, -5, -20); fertig(30, -5, 20); fertig(-30, -5, 20);
37

Eich gwneud yn hwyl delfrydol
//Y+ llenwi(#00ffff); fertig(-30, 5, -20); fertig(30, 5, -20); fertig(30, 5, 20); fertig(-30, 5, 20);
endShape(); }
gwag drawCube() { pushMatrix(); // normaleiddio3DVec(RwEst); cyfieithu(300, 450, 0); graddfa (4, 4, 4); rotateX(HALF_PI * -RwEst[1]); //rotateY(HALF_PI * -0.5); cylchdroiZ(HALF_PI * -RwEst[0]); buildBoxShape(); popMatrix();
}
tynnu gwag() {// getInclination(); darllenSensors(); cefndir (#214565); llenwi(#ffffff); textFont(ffont, 20); testun("RwEst :n" + RwEst[0] + "n" + RwEst[1] + "n" + RwEst[2], 220, 180); // arddangos echelinau pushMatrix(); cyfieithu(450, 250, 0); strôc(#ffffff); // graddfa(100, 100, 100); llinell (0, 0, 0, 100, 0, 0); llinell (0, 0, 0, 0, -100, 0); llinell (0, 0, 0, 0, 0, 100); llinell(0, 0, 0, -RwEst[0], RwEst[1], RwEst[2]); popMatrix(); tynnuCube();
} 38

Eich gwneud yn hwyl delfrydol
Gallwn weld bod ein canlyniadau rhedeg fel a ganlyn:
Ffigur 19: Prosesu rendradiadau cyflwyno

Egwyddor rheoli olrhain symudiadau

Trwy gaffael data blaenorol o mpu6050 i gael yr ongl Roll a Pitch, rydym yn sefydlu'r ohebiaeth ganlynol. Rheoli gwrthrych symud y peiriant isaf: Gallwn reoli unrhyw wrthrych peiriant is trwy gael y cyflymder a'r cyfeiriad trwy mpu6050.
Trwy ddarllen cyflymiad amser real wedi'i wirio mpu6050 ACCEL_X, ACCEL_Y, data ACCEL_Z a data gyrosgop GYRO_X, GYRO_Y, GYRO_Z mae data'n cael eu trosglwyddo i'r swyddogaeth prosesu cwaternyn, mae'r rhaglen yn dangos cyflwr ongl Roller a Pitch y mpu6050 mewn amser real.
6.1 model ongl cydlynu cyfeiriad rasio
Er mwyn hwyluso rheolaeth y car, rydym nawr yn sefydlu'r model canlynol o gyfeiriad y modur gyda'r ongl cydlynu
39

Eich gwneud yn hwyl delfrydol
Ffigur 20: Cyfesurynnau ongl cyfeiriad rasio Fel y dangosir uchod, rydym yn diffinio blaen y car fel 90 gradd, 270 gradd i'r cefn, 180 gradd i'r dde, a 0/360 gradd i'r chwith. Mae 0 ~ 90 yn sefyll am y cyfeiriad blaen cywir. Mae 90 ~ 180 yn sefyll am y blaen chwith 180 ~ 270 ar gyfer y cefn chwith a 270 ~ 360 ar gyfer y cefn dde. Yn yr un modd, fe wnaethom osod y mpu6050 ar y menig chwaraeon. Fe wnaethom adeiladu'r model cynnig canlynol.
40

Eich gwneud yn hwyl delfrydol
Ffigur 21: Cyfesurynnau cyfeiriadol y menig chwaraeon Trwy'r model data Roll-pitch-yaw 5.5.2, mae'r menig chwaraeon yn cylchdroi o amgylch y ffigur Y (gan droi cefn y llaw i'r chwith ac i'r dde) a chawn yr ongl Pitch. Gan gylchdroi o gwmpas X (troi yn ôl ac ymlaen) rydym yn cael yr ongl Roll. Nawr bod gennym ni ddealltwriaeth o gyfesurynnau'r ongl agwedd a chyfesurynnau onglog y car, byddwn nawr yn ei ddisgrifio i'r olygfa. Pan fydd y menig chwaraeon yn cael eu gogwyddo i'r cyfeiriad blaen cywir, fel y dangosir yn y ffigur isod, os ydynt yn y system gydlynu, maent yn tueddu i'r ardal 0 i 90 gradd.
41

Eich gwneud yn hwyl delfrydol
Ffigur 22: Diagram sgematig o'r menig chwaraeon yn gogwyddo i'r cyfeiriad blaen cywir Mae'r gornel sy'n cyfateb i'r car isod fel a ganlyn
42

Eich gwneud yn hwyl delfrydol
Ffigur 23: Diagram sgematig o symudiad blaen dde'r car Trwy agwedd y menig chwaraeon, mae angen inni gyfrifo gradd ongl symudiad y peiriant isaf. Felly fe wnaethom adeiladu'r model tri dimensiwn canlynol
Ffigur 24: Diagram model stereo yn seiliedig ar fenig chwaraeon Er hwylustod cynrychiolaeth, mae cyfeiriad positif echel Z y system gyfesurynnau uchaf (blaen y maneg symudol) i fyny, ac mae'r cyfeiriad echel X positif (ochr dde'r maneg chwaraeon) i'r dde. Yn y cyflwr cychwynnol, mae'r menig chwaraeon yn aros yr un lifer â XY . Ar yr adeg hon, mae'r cyfeiriad y mae'r menig chwaraeon yn gogwyddo ynddo yn cael ei gynrychioli gan OB, a'r ongl Roll (du) yw'r ongl rhwng y fector cyflymiad OB a'i dafluniad (x, 0, z) ar yr awyren XZ, a'r Ongl traw (porffor) yw ei dafluniad ar y plân YZ ( Yr ongl rhwng 0, y, a z). Y lliw glas yw'r graddau y mae'r menig chwaraeon yn taflunio'r tafluniad (x, o, y) ar yr awyren XY. Rydym yn defnyddio'r ongl hon i reoli ongl llywio'r car isaf. Rydym eisoes wedi cael Roll and Pitch drwy'r arbrawf 5.6.1 blaenorol. Nawr rydyn ni'n cyfrifo'r radd yn ôl y fformiwla ganlynol. Yn y Ffigur BA OA AB OB pechod (Traw) BD OD BD OBsin (Rhôl)
43

Eich gwneud yn hwyl delfrydol
tandegree FE BD sin(Rhôl) Rhôl
OE AB sin(Pitch) Pitch deg ree arctan( Roll )
Cae Uchod mae gennym yr ongl cosin llywio, mae angen i ni luosi'r cyfernod i'r radd gyfesurynnol. 180 57.3 Dadansoddiad ongl yn unig yw'r dadansoddiad uchod pan gaiff ei ogwyddo fel yr ochr dde uchaf. Yn yr un modd, pan fydd y menig chwaraeon yn gogwyddo i'r blaen chwith
Ffigur 25: Diagram sgematig o'r menig chwaraeon yn gogwyddo i'r cyfeiriad blaen chwith deg ree arctan( Cae)*57.3 900
Rholiwch Yn yr un modd, pan fydd y menig chwaraeon yn gogwyddo i'r chwith
44

Eich gwneud yn hwyl delfrydol
Ffigur 26: Diagram sgematig o gyfeiriad cefn chwith y menig chwaraeon deg ree arctan( Rhôl )*57.3 1800
Cae Yn yr un modd, pan fydd y menig chwaraeon yn gogwyddo i'r dde isaf
Ffigur 27: Diagram sgematig o gyfeiriad cefn cywir y menig chwaraeon
45

Eich gwneud yn hwyl delfrydol
deg ree arctan( Cae)*57.3 2700 Rhôl
Nawr, gadewch i ni siarad am sut i reoli cyflymder y car. O'r ffigur uchod gallwn weld, ar gyfer y menig chwaraeon yn y mpu6050 ac ongl gogwyddo awyren XY, ein bod yn defnyddio'r awyren ganlynol i gynrychioli

B'OB yw ongl y gogwydd o'i gymharu â'r gosodiad cychwynnol gan ddefnyddio'r radd hon o ogwydd i reoli cyflymder

y car.

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

OB

OB

EF=BD OE=AB

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

Yr uchod yw'r ongl arc. Mae angen inni hefyd luosi'r cyfernod. Amrediad yr ongl hon yw (0 ~ 90). Rydym yn defnyddio'r ongl hon yn uniongyrchol fel cyflymder rheoli'r car.

46

Eich gwneud yn hwyl delfrydol

arnofio Cyfrifo Cyflymder (rholio arnofio, traw arnofio) {
tuedd arnofio = asin(sqrt(rholio*rhol + traw*traw))*Rad; gogwydd dychwelyd; }

HandInclination (gwag) gwag

{

cyfrif int statig = 0;

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

cyfrif++;

cyflymder = Cyfrif Cyflymder(rholio, traw);

os ((-0.2 <= traw) && (traw <= 0.2) && (-0.2 <= rholio) && (roll <= 0.2)) {

gradd = 90;

SendSpeed ​​= 0;

SendDegree += 90;

} arall os (traw < 0 && rholio < 0) {

gradd = atan (rholio / traw) * Rad;

SendDegree += ((heb ei lofnodi)(gradd/10))*10;

} arall os (traw> 0 && rholio < 0) {

gradd = atan(-pitch/roll)* Rad + 90;

SendDegree += ((heb ei lofnodi)(gradd/10))*10;

} arall os (traw > 0 && roll > 0) {

gradd = atan (rholio / traw) * Rad + 180;

} arall os (traw < 0 && roll > 0) {

gradd = atan(-pitch/roll)* Rad + 270;

SendDegree += ((heb ei lofnodi)(gradd/10))*10;

} arall {

gradd = 90;

SendSpeed ​​= 0;

SendDegree = 90;

}

SendDegree = (int)(cyflymder/10)*10;

os (gradd < 30 || gradd > 330) {

SendDegree = 0;

}

os (cyfrif >= 3) {

cyfrif = 0;

Send_Direction(SendDegree/3);

Send_Speed(SendSpeed);

SendDegree = 0;

SendSpeed ​​= 0;

4 7

}

Eich gwneud yn hwyl delfrydol

Protocol

Defnyddiwch Bluetooth i reoli'r car, mewn gwirionedd yw defnyddio'r app Android i anfon cyfarwyddiadau i'r Arduino

porth cyfresol trwy Bluetooth i reoli'r car. Gan ei fod yn cynnwys cyfathrebu di-wifr, un o'r hanfodol

problemau yw'r cyfathrebu rhwng y ddau ddyfais. Ond nid oes “iaith” gyffredin rhyngddynt,

felly mae angen dylunio protocolau cyfathrebu i sicrhau rhyngweithio perffaith rhwng Android a

Arduino. Y brif broses yw: Mae'r Android yn cydnabod y gorchymyn rheoli a'i becynnu i mewn i'r

pecyn cyfatebol, yna'i anfon at y modiwl Bluetooth (JDY-16), derbyniodd JDY-16 ddata a'i anfon at

Arduino, yna mae Arduino yn dadansoddi'r data ac yna'n perfformio'r cam cyfatebol. Mae fformat dyddiad y

Mae anfon Android fel isod, yn cynnwys 8 maes yn bennaf.

Protocol Hyd Data Dyfais Math Dyfais Swyddogaeth Rheoli Gwirio Protocol

Pennawd

Cod Cyfeiriad Swm Data Cod Diwedd

Yn yr 8 maes uchod, rydym yn defnyddio corff strwythurol i gynrychioli.

strwythur teipio {
start_code torgoch heb ei lofnodi; torgoch heb ei harwyddo; math torgoch heb ei arwyddo; addr torgoch heb ei arwyddo; swyddogaeth int byr heb ei lofnodi; torgoch heb ei lofnodi *data; swm byr heb ei lofnodi; end_code torgoch heb ei lofnodi; }ST_protocol;

// 8bit 0xAA
// 16 did // n bit // siec swm // 8bit 0x55

Mae “Pennawd Protocol” yn golygu dechrau'r pecyn, fel y dynodiad unffurf o 0xAA. Mae “hyd data” yn golygu ac eithrio hyd data dilys codau dechrau a diwedd y data. Mae “math o ddyfais” yn golygu'r math o offer dyfais Mae “cyfeiriad dyfais” yn golygu'r cyfeiriad sydd wedi'i osod ar gyfer rheolaeth Mae “Cod swyddogaeth” yn golygu'r math o swyddogaethau offer y mae angen eu rheoli, y mathau o swyddogaethau rydyn ni'n eu cefnogi ar hyn o bryd fel a ganlyn.

48

Eich gwneud yn hwyl delfrydol
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_ULTRASONIC = 10, E_ULTRASONIC = 11, E_ROBOT_CONTROL }E_CONTOROL_FUNC ;
Mae “data” yn golygu gwerth rheoli penodol car, megis cyflymder, ongl. Mae “Checksum” yn ganlyniad i ddarnau data gwahanol neu gyfrifedig o'r cyfarwyddyd rheoli. “Cod diwedd protocol” yw rhan ddiwedd y bag data wrth dderbyn y data hwn, mae'n golygu bod y pecyn data wedi'i anfon, ac yn barod ar gyfer derbyn y pecyn data nesaf, dyma ni wedi'i nodi fel 0x55. Am gynampLe, gall pecyn cyflawn fod fel “AA 070101065000 5F55”, lle mae “07” yn Darlledu Hyd Data 7 beit. “06” yw’r “math o ddyfais”, fel modur, LED, swnyn ac ati. Mae'r 06 yma yn cyfeirio at y cyflymder trosglwyddo, ac mae'r 05 yn cyfeirio at y cyfeiriad trosglwyddo. “50 (neu 0050)” yw'r data rheoli, 0x50 mewn hecsadegol yw 80 pan gaiff ei drawsnewid yn ddeuaidd, sy'n golygu mai'r gwerth cyflymder yw 80. Os yw'r data yn 05, mae'n golygu'r cyfeiriad rheoli, hynny yw 80 gradd (ymlaen). Gwiriad yw “005F” sef 0x07+0x01+0x01+0x06+0x50=0x5F. “55” yw cod diwedd y Protocol, sy'n nodi diwedd trosglwyddo data.
49

Eich gwneud yn hwyl delfrydol

Arbrawf cynhwysfawr

8.1 rheolaeth ddiwifr Nrf24L01
8.1.1 Rheolaeth ystum Hummer-bot car smart Cysylltwch yn ôl llinell gysylltiad y bennod flaenorol, yna cysylltwch y batri sych 9v i'r
Arduino NANO, a lawrlwythwch y rhaglen. Ar ôl pŵer ymlaen, mae'r modiwl Nrf24L01 yn anfon data i'r Hummer-Bot Nrf24L01, ac yna'n addasu lleoliad y maneg i reoli car aml-swyddogaeth Hummer-Bot, felly mae'r car a reolir gan y menig chwaraeon yn cael ei eni!
50

Eich gwneud yn hwyl delfrydol
Ffigur 28: Rheoli ystumiau hummer-bot Cyswllt rhaglen y cyfrifiadur isaf: https://github.com/keywish/keywish-hummer-bot-Hummer-Bot-Multi-function Prynu car linkBuy ar Amazon
https://www.amazon.com/dp/B078WM15DK Rheoli ystum fideo Gesture-MotionTrackingvideoControl_Hunner-bot.mp4 8.1.2 Rheoli Ystum Car Clyfar Chwilen-bot
Ffigur 29: Rheoli Ystum Gwybodaeth Bot Chwilen ar Chwilen-bot https://github.com/keywish/keywish-beetle-bot
51

Eich gwneud yn hwyl delfrydol
8.2 rheoli modd cyfathrebu Bluetooth
Cysylltwch yn ôl y cebl Bluetooth, yna cysylltwch y batri sych 9v â'r Arduino NANO a dadlwythwch y rhaglen (MotionTrackLessonMotionTrack_Bluetooth MotionTrack_Bluetooth.ino). Sylwch fod angen i chi addasu cyfeiriad MAC Bluetooth y cyfrifiadur isaf. Ar ôl pŵer ymlaen, mae'r menig chwaraeon yn cysylltu'n awtomatig â modiwl Bluetooth y car.
52

Eich gwneud yn hwyl delfrydol
8.2.1 Rheoli ystumiau Aurora-Racing
Ffigur 30: Rheoli Ystum Gwybodaeth Cynnyrch Rasio Aurora: https://github.com/keywish/Aurora-Racing Fideo cynhyrchu: giteeMotionTrackvideo Control_RacingCar.mp4
53

Eich gwneud yn hwyl delfrydol
8.2.2 Rheoli ystum Panther-tanc
Ffigur 31: Tanc Pather Rheoli Ystum Ar gyfer deunyddiau cynhyrchu Panther-tanc, cyfeiriwch at https://github.com/keywish/keywish-panther-tank
54

Eich gwneud yn hwyl delfrydol
8.2.3 Car cydbwysedd rheoli ystum
Ffigur 32: Rheoli Ystum Car cydbwysedd bach I gael gwybodaeth am gynnyrch Balans, cyfeiriwch ato https://github.com/keywish/mini-balance-car
55

Dogfennau / Adnoddau

Olrhain Mudiant Ystum Arduino MPU6050 Makefun [pdfLlawlyfr Cyfarwyddiadau
Modiwl MPU6050, Modiwl Bluetooth JDY-16, Modiwl NRF24L01, Olrhain Symudiad Ystum Arduino MPU6050, MPU6050, Olrhain Mudiant Ystum Arduino, Olrhain Symud Ystum, Olrhain Symudiad, Olrhain

Cyfeiriadau

Gadael sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Mae meysydd gofynnol wedi'u marcio *