Makefun MPU6050 Arduino اشارو حرکت تعقیب
د محصول معلومات
مشخصات
- د محصول نوم: Gesture-MotionTracking
- نسخه: V.1.2
- Github ذخیره: د ګیتوب لینک
د وسایلو لیست پیژندنه
د ګیسچر موشن ټریکینګ کارولو لپاره اړین کټونه په لاندې ډول دي:
- MPU6050 ماډل
- JDY-16 بلوتوټ ماډل
- NRF24L01+ ماډل
- د Arduino NANO اصلي کنټرول بورډ
- د مینی ډوډۍ بورډ
- دستکشې
- له نارینه څخه تر ښځینه ډوپونټ لاین
- بیټرۍ
د محصول کارولو لارښوونې
د NANO پروسیسر پیژندنه
د بریښنا رسول
- د Arduino نانو د مینی-B USB انٹرفیس لخوا پرمخ وړل کیدی شي، د وین اتصال له لارې د بهرني 7 ~ 12V DC بریښنا رسولو.
حافظه
- په نانو کې ATmega168/ATmega328 16KB/32KB فلش حافظه، 1KB/2KB SRAM، او 0.5KB/1KB EEPROM لري.
داخل او محصول
- نانو 14 ډیجیټل I/O بندرونه لري، 6 انلاګ ان پټونه، او د مختلفو کارونو لپاره ځانګړي پنونه لکه سیریل مواصلات، مداخلې، PWM محصولات، SPI، او نور.
د مخابراتو انٹرفیس
- نانو د UART له لارې د سیریل ارتباط ملاتړ کوي او د SPI او I2C بس مناسب انٹرفیسونه لري.
ډاونلوډر
- نانو د Arduino سافټویر او بوټلوډر پروګرام په کارولو سره پروګرام کیدی شي. پروګرامونه د ICSP سرلیک له لارې هم ډاونلوډ کیدی شي.
پاملرنه
- نانو د لاسي مداخلې پرته د اسانه سافټویر ریسیټ لپاره د اتوماتیک ریسیټ ډیزاین وړاندې کوي.
FAQ
په مکرر ډول پوښتل شوي پوښتنې
- Q: زه چیرته کولی شم د ګیسچر-موشن ټریکینګ لپاره وروستي تازه معلومات یا اضافي سرچینې ومومئ؟
- A: تاسو کولی شئ د تازه معلوماتو او سرچینو لپاره چمتو شوي لینک کې د ګیتوب رسمي ذخیره وګورئ.
- Q: زه څنګه د Arduino نانو ځواک کولی شم؟
- A: تاسو کولی شئ نانو ته د mini-B USB انٹرفیس یا بهرنۍ 7 ~ 12V DC بریښنا رسولو په کارولو سره بریښنا ورکړئ چې د وین پن له لارې وصل شوي.
"`
تاسو ته مثالی تفریح وکړئ
1. د وسایلو لیست پیژندنه
اړین کیټونه په لاندې جدول کې ښودل شوي. MPU6050 ماډل
JDY-16 بلوتوټ ماډل NRF24L01+ ماډل
د Arduino NANO اصلي کنټرول بورډ مینی ډوډۍ بورډ دستکشې
له نارینه څخه تر ښځینه ډوپونټ لاین بیټرۍ
1 1 2 1 2 1 څو 1
شکل 1: د وسایلو لیست
4
تاسو ته مثالی تفریح وکړئ
2. د NANO پروسیسر پیژندنه
د Arduino نانو مایکرو پروسیسر د USB-mini انٹرفیس سره ATmega328 (Nano3.0) دی، کوم چې 14 ډیجیټل ان پټ/آؤټ پوټ پنونه لري (6 یې د PWM محصول په توګه کارول کیدی شي)، 8 انلاګ ان پټونه، او د 16 میګا هرټز سیرامیک ریزونټر، 1 منی -B USB اتصال، د ICSP سرلیک او د بیا تنظیم کولو تڼۍ. پروسیسر ATmega328 کاري حجمtage 5v د ننوتلو حجمtage (وړاندیز شوی) 7-12v ان پټ والیومtage (رینج) 6-20v ډیجیټل IO پن 14 (6 له دې څخه د PWM محصول په توګه کارول کیدی شي) د انلاګ ان پټ پن 6 IO پن DC 40 mA فلش حافظه 16 یا 32 KB (په کوم کې چې د بوټلوډر لپاره 2 KB) SRAM 1KB یا 2KB EEPROM 0.5 KB یا 1KB ATmega328 CH340 USB ته سیریل پورټ چپ ساعت 16 MHz
2.1 د بریښنا رسول
د Arduino نانو بریښنا رسولو حالت: د مینی-B USB انٹرفیس بریښنا رسولو او د بهرنی وین اتصال 7 ~ 12V بهرنۍ DC بریښنا رسولو
د 2.2 یادونه
ATmega168/ATmega328 آن چپ 16KB/32KB فلش لري، چې له هغې څخه 2KB د بوټلوډر لپاره کارول کیږي. دلته 1KB/2KB SRAM او 0.5KB/1KB EEPROM هم شتون لري.
2.3 داخلول او محصول
14 ډیجیټل داخل او محصول بندرونه: د کار حجمtage 5V دی، او هر چینل کولی شي د 40mA اعظمي اوسني تولید او لاسرسی ومومي. هر چینل د 20-50K ohm داخلي پل اپ مقاومت سره مجهز دی (د ډیفالټ لخوا نه وصل شوی). سربیره پردې، ځینې پنونه ځانګړي دندې لري.
سیریل سیګنل RX (0)، TX (1): دا د TTL حجم سره سیریل پورټ ترلاسه کولو سیګنال چمتو کويtage کچه، د FT232Rl اړونده پن سره وصل شوی.
بهرنۍ مداخله (نمبر 2 او نمبر 3): محرک مداخله پن، کوم چې کیدای شي د لوړیدو څنډه، د ښکته کیدو څنډه یا یو ځای محرک ته وټاکل شي.
د نبض پراخوالي ماډلول PWM (3, 5, 6, 9, 10, 11): د 6 چینل، 8-bit PWM محصول چمتو کوي.
5
تاسو ته مثالی تفریح وکړئ
SPI10(SS)11(MOSI)12(MISO)13(SCK): د SPI مخابراتي انٹرفیس. LED (نمبر 13): Arduino په ځانګړې توګه د LED ساتل شوي انٹرفیس ازموینې لپاره کارول کیږي. کله چې محصول وي
لوړ، LED څراغ دی. کله چې تولید ټیټ وي، LED بند دی. د A6 څخه تر A0 پورې 5 انلاګ ان پټونه: هر چینل د 10 بټونو ریزولوشن لري (یعنی دا ان پټ 1024 مختلف لري
ارزښتونه)، د ډیفالټ ان پټ سیګنال حد له 0 څخه تر 5V پورې دی، او د ان پټ پورتنۍ حد د AREF لخوا تنظیم کیدی شي. سربیره پردې، ځینې پنونه ځانګړي دندې لري. TWI انٹرفیس (SDA A4 او SCL A5): د ارتباطي انٹرفیس ملاتړ کوي (د I2C بس سره مطابقت لري). AREF: د حوالې جلدtagد انلاګ ان پټ سیګنال e. د مایکرو کنټرولر چپ بیا تنظیم کیږي کله چې سیګنال ټیټ وي.
2.4 د مخابراتو انٹرفیس
سیریل پورټ: د ATmega328 جوړ شوی UART کولی شي د ډیجیټل پورټ 0 (RX) او 1 (TX) له لارې د بهرني سیریل پورټ سره اړیکه ونیسي.
2.5 ډاونلوډر
په Arduino نانو کې MCU د بوټلوډر پروګرام لري، نو تاسو کولی شئ دا پروګرام مستقیم د Arduino سافټویر څخه ډاونلوډ کړئ. تاسو کولی شئ په مستقیم ډول په نانو کې د ICSP سرلیک له لارې MCU ته برنامه ډاونلوډ کړئ.
2.6 توجه
د Arduino نانو د اتوماتیک ریسیټ ډیزاین چمتو کوي چې د کوربه لخوا بیا تنظیم کیدی شي. په دې توګه، سافټویر کولی شي په اتوماتيک ډول د Arduino سافټویر لخوا په پروګرام کې نانو ته بیا ځای پرځای شي، پرته له دې چې د ری سیٹ تڼۍ فشار ورکړي.
د بلومودول پیژندنه
Blumodule معرفي JDY-16
3.1 ځانګړتیاوې
د BLE لوړ سرعت شفاف لیږد د 8K بایټ نرخ ارتباط ملاتړ کوي. د بایټ حد پرته ډیټا لیږل او ترلاسه کول ، د 115200 باډ نرخ ملاتړ په دوامداره توګه ډیټا لیږل او ترلاسه کول. د کار 3 حالتونو ملاتړ وکړئ (د AT+STARTEN لارښوونې فعالیت توضیحات وګورئ). ملاتړ (سیریل پورټ، IO، APP) د خوب ویښیدل د WeChat Airsync، WeChat اپلیټ او APP ارتباط ملاتړ کوي. د 4 چینل IO پورټ کنټرول او لوړ دقیق RTC ساعت ملاتړ کوي. د PWM فعالیت ملاتړ (د UART، IIC، APP، او نور لخوا کنټرول کیدی شي). د UART او IIC مخابراتو حالت ملاتړ وکړئ ، د UART مخابراتو ته ډیفالټ. iBeacon حالت (د WeChat شیک پروتوکول او ایپل iBeacon پروتوکول ملاتړ کوي).
6
تاسو ته مثالی تفریح وکړئ
د کوربه شفاف لیږد حالت (د غوښتنلیک ماډلونو، کوربه او غلام اړیکو ترمنځ د معلوماتو لیږد).
د بې سیم مخابراتو ماډل ترتیب
شکل 2: JDY-16 ماډل فزیکي نقشه (1) د نانو او JDY-16 کیبل
JDY-16 ماډل
Arduino NANO
VCC
5V
GND
GND
RXD
D2
TXD
D3
STAT
NC
PWRC
NC
د MotionTrackJDY-16AT_CMD AT_CMD.ino پروګرام ډاونلوډ کړئ
(2) د تشکیلاتو اړتیاوې:
د دوه JDY-16 بلوتوټ ماډلونو ماسټر غلام پابندۍ پلي کړئ.
3.2 عملیاتي مرحلې
1. د نانو او JDY-16 ماډلونه د DuPont لاین سره وصل کړئ. 2. د AT کمانډ حالت ته ننوتئ ډاونلوډر کمپیوټر ته وصل کړئ او د سیریل پورټ معاون خلاص کړئ. د باډ نرخ 9600 ته وټاکئ، د ډیټا بیټ 8 بټ ته، د سټاپ بیټ 1 بټ ته، او هیڅ برابري بیټ ته.
7
تاسو ته مثالی تفریح وکړئ
د ازموینې اړیکه: لیږل: AT بیرته: سمه ده
شکل 3: د AT کمانډ ډیاګرام 3 واستوئ. لیږل: AT+HOSTEN1rn ————– بلوتوټ د اصلي حالت په توګه تنظیم کړئ شاته: ښه بیرته: OK
8
تاسو ته مثالی تفریح وکړئ
شکل 4: د کوربه حالت ترتیب کول 4. شاوخوا JDY-16 بلوتوټ سکین کړئ: 1. د غلام لیږد: AT+SCANrn ————— د غلام خپل پته پوښتنه وکړئ: OK +DEV:1=3CA5090A160F, -62, JDY-16 + ودرول: سکین
شکل 5: د پرفیریل بلوتوټ وسیلو پوښتنې کول 5. بلوتوټ سره وصل کړئ
کوربه لیږل: AT+CONN3CA5090A160Frn ————— د کوربه پابند غلام پته شاته: OK د بریښنا رسولو سره وصل شوی، دوه بلوتوټ یو بل سره وصل کیدی شي، د کوربه بلوتوټ له لارې ډاټا ولیږئ، غلام بلوتوټ کولی شي ورته ډاټا ترلاسه کړي. یا تاسو کولی شئ په مستقیم ډول د ماسټر غلام بلوتوټ تنظیم کولو لپاره چمتو شوي ماسټر غلام ترتیب کړنلاره برنامه کړئ ، بیا کوربه د پیوستون کړنلاره برنامه کوي او په اوتومات ډول وصل کیږي. (په یاد ولرئ چې یوازې د JDY-16 بلوتوټ ماډل اوس مهال په اوتومات ډول وصل کیدی شي)
9
تاسو ته مثالی تفریح وکړئ
3.3 د نانو او JDY-16 د نښلولو طریقه
شکل 6: نانو او JDY-16 پیوستون ډیاګرام
10
تاسو ته مثالی تفریح وکړئ
NRF24L01 د بې سیم ماډل پیژندنه
NRF24L01 د بې سیم ماډل پیژندنه
nRF24L01+ ماډل د 2.4G بې سیم مخابراتي ماډل دی چې د نورډیک لخوا د nRF24L01 چپ پراساس رامینځته شوی. د FSK ماډلول غوره کړئ او د نورډیک خپل پرمختللي لنډ برسټ پروتوکول مدغم کړئ. پوائنټو-پوائنټ یا 1-to-6 بې سیم ارتباط ترلاسه کیدی شي. د بې سیم مخابراتو سرعت تر 2M (bps) پورې رسیږي. NRF24L01 څلور عملیاتي حالتونه لري: د لیږد حالت، د ترتیب کولو حالت، غیر فعال حالت، او د بند حالت. په دې تجربه کې کارول شوې فزیکي نقشه د 7 شکل په کیڼ اړخ کې ده. د Nrf24L01 رسید د ثابت رسیدلو لپاره، دا سپارښتنه کیږي چې د 10uf capacitor د VCC او GUD ترمنځ وصل کړئ لکه څنګه چې په ښي خوا کې ښودل شوي.
شکل 7: Nrf24l01+ فزیکي نقشه او د سولډر ډیاګرام
4.1 د ماډل ځانګړتیاوې
2.4GHz، کوچنۍ اندازه 15x29mm د انتن په شمول د شپږ چینل ډیټا استقبال ملاتړ کوي ټیټ کاري حجمtage: 1.93.6V د ډیټا لیږد نرخ ملاتړ کوي: 1Mbps2Mbps د ټیټ بریښنا مصرف ډیزاین د ترلاسه کولو په وخت کې کار کول 12.3mA دی ، 11.3mA په 0dBm بریښنا کې
اخراج، 900nA په پاور-ډاون حالت کې د اتوماتیک بیا لیږد فعالیت، د ورک شوي ډیټا پاکټونو اتوماتیک کشف او بیا لیږدول،
د بیا لیږد وخت او د بیا لیږد وختونه د سافټویر اتوماتیک غبرګون فعالیت لخوا کنټرول کیدی شي ، د باوري معلوماتو ترلاسه کولو وروسته ، ماډل په اوتومات ډول ځواب لیږي
سیګنال جوړ شوی هارډویر CRC خطا کشف او د څو نقطو ارتباطي آدرس کنټرول NRF24L01 چپ توضیحات مهرباني وکړئ مراجعه وکړئ tonRF24L01 Datasheet.pdf
11
تاسو ته مثالی تفریح وکړئ
معلومات پین کړئ
شکل 8: د Nrf24L01 پین معلوماتو ډیاګرام
د سمبول نښه
فعالیت
هدایت
1 GND
GND
2
+5V
د بریښنا رسول
3
CE
په کاري حالت کې د کنټرول لاین
IN
4
CSN چپ سیګنال انتخاب کړئ، د ټیټې کچې کار کول
IN
5
SCK
د SPI ساعت
IN
6 MOSI
د SPI انډول
IN
7 MISO
د SPI محصول
بهر
8
IPQ
د محصول مداخله
بهر +
4.2 تجربوي موخه
1. د nRF24L01 + ماډل په اړه زده کړه وکړئ او څنګه د Arduino سره وصل شئ. 2. د معلوماتو ترلاسه کولو او لیږلو پای ته رسولو لپاره د arduino او nRF24L01+ ماډل کارولو څرنګوالی.
4.3 د دې تجربې لپاره اړین برخې
Arduino UNO R3 Motherboard Arduino NANO Motherboard nRF24L01 ماډل*2 څو تارونه
12
تاسو ته مثالی تفریح وکړئ
4.4 تجربه لرونکی سکیمیک ډیاګرام
شکل 9: نانو او Nrf24L01 پیوستون ډیاګرام
Arduino او NRF24L01 د پیوستون حالت
arduino نانو
nRF24L01
+3.3V
VCC
GND
GND
7pin
4pin CSN
4pin
3pin CE
11pin
6pin MOSI
12pin
7pin MISO
13pin
5pin SCK
arduino Uno +3.3V GND 7 4 11pin 12pin
nRF24L01
VCC GND 4pin CSN 3pin CE 6pin MOSI 7pin MISO
13
تاسو ته مثالی تفریح وکړئ
13pin
5pin SCK
4.4 د پروګرام اصول
پروسه پیل کړئ 1 لومړی، د لیږد حالت لپاره nRF24L01 ترتیب کړئ. 2 بیا د ترلاسه کونکي پای پته TX_ADDR ولیکئ او معلومات TX_PLD د وخت په ترتیب سره د SPI بندر لخوا nRF24L01 بفر ساحې ته لیږل کیږي. 3Arduino لږترلږه 10s لپاره CE ترتیبوي او د 130 s ځنډ وروسته ډاټا لیږدوي. که اتومات ځواب فعال وي، nRF24L01 د معلوماتو له لیږدولو سمدلاسه د ترلاسه کولو حالت ته ننوځي او د ځواب سیګنال ترلاسه کوي. که ځواب ترلاسه شي، اړیکه بریالۍ ګڼل کیږي. 4NRF24L01 به په اوتومات ډول TX_DS لوړ تنظیم کړي او TX_PLD به د لیږد سټیک څخه پاک شي. که ځواب نه وي ترلاسه شوی، معلومات به په اتوماتيک ډول بیرته لیږدول کیږي. که چیرې د بیا لیږد شمیر (ARC_CNT) پورتنۍ حد ته ورسیږي، MAX_RT لوړ ټاکل شوی او TX_PLD به پاک نشي؛ MAX_RT کله چې TX_DS لوړ ټاکل کیږي، IRQ د MCU مداخلې پیل کولو لپاره ټیټ کیږي. کله چې وروستی لیږد بریالی وي، که CE ټیټ وي، nRF24L01 به سټینډ بای حالت ته ننوځي. 5 که چیرې د لیږد سټیک کې معلومات شتون ولري او CE لوړ وي ، راتلونکی لیږد پیل کیږي؛ که چیرې د لیږد سټیک کې هیڅ معلومات شتون ونلري او CE لوړ وي ، نو nRF24L01 به سټینډ بای حالت ته ننوځي 2. د ډیټا پروسه ترلاسه کړئ 1کله چې nRF24L01 ډیټا ترلاسه کوي ، مهرباني وکړئ لومړی د ترلاسه کولو لپاره nRF24L01 ترتیب کړئ. 2 بیا د ترلاسه کولو حالت ته د 130s ځنډ وکړئ ترڅو د معلوماتو رارسیدو ته انتظار وکړئ. کله چې ترلاسه کوونکی یو باوري پته او CRC کشف کړي، دا د ډیټا کڅوړه د رسیدونکي سټیک کې ذخیره کوي. په ورته وخت کې، د مداخلې نښه RX_DR لوړه ټاکل شوې او IRQ ټیټ کیږي ترڅو MCU ته د معلوماتو ترلاسه کولو خبر ورکړي. 3 که چیرې په دې وخت کې اتوماتیک ځواب فعال شي، ترلاسه کونکی به په ورته وخت کې د لیږد حالت د اکو غبرګون سیګنال ته ننوځي. کله چې وروستی استقبال بریالی وي، که CE ټیټ شي، nRF24L01 به بې کاره حالت 1 ته لاړ شي.
د nRF24L01 ټرانسیور ازموینې برنامه مهرباني وکړئ "MotionTracknRF24l01 + برنامه" ته مراجعه وکړئ
14
تاسو ته مثالی تفریح وکړئ
Mpu6050 پیژندنه
MPU6050 د نړۍ لومړی د 6-axis حرکت پروسس کولو برخه ده چې د 3-axis gyroscope او 3-axis accelerator سره یوځای کیږي. دا کولی شي د نورو مقناطیسي سینسرونو یا نورو سینسرونو ډیجیټل حرکت پروسس کولو (DMP) سره د دوهم I2C بندر له لارې وصل شي. د هارډویر سرعت انجن په عمده ډول د I9C پورټ لخوا د واحد ډیټا جریان په توګه کوربه MCU ته د 2-axis فیوژن محاسبې تخنیک بشپړوي.
د MPU6050 چپ د ډیټا پروسس کولو فرعي ماډل DMP سره راځي ، د هارډویر فلټر کولو الګوریتم جوړ شوی دی ، د DMP محصول ډیټا کارول توانیدلي چې په ډیری غوښتنلیکونو کې اړتیاوې په ښه توګه پوره کړي. موږ د فلټر کولو لپاره زموږ سافټویر ته اړتیا نلرو. دا کورس به د Arduino له لارې د محصول ډیټا په توګه د DMP لوستلو پراساس د سپورت بشپړ دستکشې رامینځته کړي.
شکل 10: mpu6050 ماډل فزیکي نقشه
ځانګړتیاوې د 6 محور یا 9 محور گردش میټریکس، کواترینین او یولر د ډیجیټل محصول مربوط حسابی ډاټا
زاویه بڼه. 3-محور زاویه سرعت سینسر (ګیروسکوپ) د 131 LSBs/°/sec حساسیت او د بشپړ رینج سینس کولو رینج سره
د ±250، ±500، ±1000، او ±2000°/sec. د پروګرام وړ کنټرول، 3-محور سرعت د پروګرام کنټرول رینج سره د ±2g، ±4g، ±8g، او ±16g. د ډیجیټل حرکت پروسس کولو (DMP) انجن د پیچلي فیوژن محاسبې ډیټا بار کموي ،
د سینسر همغږي کول، او د اشارې احساس کول.
15
تاسو ته مثالی تفریح وکړئ
د حرکت پروسس کولو ډیټابیس د Android ، لینکس او وینډوز ملاتړ کوي. د عملیاتي وخت انحراف او مقناطیسي سینسر لپاره د انډول کولو تخنیکونه کارول له مینځه وړي
د کیلیبریشن لپاره اضافي اړتیا. د ډیجیټل محصول تودوخې سینسر. د عرضې حجمtagد VDD e 2.5V±5%3.0V±5%3.3V±5% دی، او VDDIO 1.8V±5٪ دی. د ګیرو عملیاتي اوسنی: 5mA، د ګیروسکوپ سټینډ بای اوسنی: 8A؛ د سرعت عملیاتي جریان: 8A،
سرعت کونکي د بریښنا سپمولو حالت اوسنی: 8A @ 10Hz. تر 400kHz چټک حالت I2C، یا تر 20MHz SPI سریال کوربه انٹرفیس پورې. د پورټ ایبل محصول (4x4x0.9mm QFN) لپاره ترټولو کوچنی او پتلی جوړ شوی کڅوړه.
5.2 ماډل سکیماتیک
11 شکل: د mpu6050 ماډل سکیمیک
5.3 د نانو او mpu6050 ترمنځ اړیکه
5.3.1 د سرکټ پیوستون
د مدغم MPU6050 ماډل ډیټا انٹرفیس د I2C بس پروتوکول کاروي ، نو موږ د NANO او MPU6050 ترمینځ د خبرو اترو لپاره د تار کتابتون مرستې ته اړتیا لرو. د NANO بورډ اړونده اړیکه په لاندې ډول ده:
MPU6050 ماډل VCC
Arduino NANO 5V
16
تاسو ته مثالی تفریح وکړئ
GND SCL SDA XDA XCL ADD INT
GND A5 A4 NC NC NC NC/GND
12 شکل: د نانو او mpu6050 پیوستون ډیاګرام
د MPU6050 لیکلو او لوستلو ډاټا د چپ داخلي راجسترونو لخوا احساس کیږي، د راجستر پتې ټول 1 بایټ دي، یعنې د پتې ځای 8 بټونه. مهرباني وکړئ "RMMPU-6000A.pdf" 1.1 ته مراجعه وکړئ. مخکې لدې چې هر وخت وسیلې ته ډیټا ولیکئ ، لومړی د تار لیږد حالت فعال کړئ او د وسیلې بس پته مشخص کړئ. د MPU6050 د بس پته 0x68 ده (د پته 0x69 ده کله چې د AD0 پن لوړ وي). بیا د راجستر پیل پته یو بایټ ولیکئ، او بیا د هر اوږدوالي ډاټا ولیکئ. دا ډاټا به په دوامداره توګه د ټاکل شوي پیل پتې ته لیکل کیږي، او د اوسني راجستر اوږدوالی به د لاندې پتې راجستر ته ولیکل شي. د لیکلو بشپړیدو وروسته د تار لیږد حالت بند کړئ. لاندې sample کوډ د MPU0 0x6B راجستر ته یو بایټ 6050 لیکي.
Wire.beginTransmission(0x68); // د MPU6050 لیږد کول
17
تاسو ته مثالی تفریح وکړئ
Wire.write(0x6B); // د راجستر پته مشخص کړئ Wire.write(0); // د معلوماتو یو بایټ ولیکئ Wire.endTransmission(reښتیا)؛ // د لیږد پای، ریښتینې معنی د خوشې کولو بس
د MPU-6050 څخه ډاټا لوستل
لوستل او لیکل یو شان دي ، لومړی د تار لیږد حالت خلاص کړئ ، او بیا د راجسټر پیل پته بایټ ولیکئ. بیا، د تار کتابتون کیچ کې د ټاکل شوي پتې ډاټا لوستل او د ټرانسپورټ حالت بند کړئ. په نهایت کې ، د کیچ څخه ډاټا لوستل. لاندې پخوانيample کوډ د MPU0 د 3x6050B راجستر سره پیل کیږي او د 2 بایټ ډیټا لوستل کیږي:
Wire.beginTransmission(0x68); // د MPU6050 Wire.write(0x3B) لیږد لیږد کړئ؛ // د راجستر پته مشخص کړئ Wire.requestFrom(0x68, 2, true); // کیچ ته ډاټا ولولئ Wire.endTransmission(reښتیا)؛ // د لیږد حالت بند کړئ int val = Wire.read() << 8 | Wire.read(); // دوه بایټونه د 16-bit انټیجر جوړوي
ځانګړي تطبیق
د تار کتابتون معمولا باید د تنظیم کولو فعالیت کې پیل شي: Wire.begin();
تاسو باید وسیله پیل کړئ مخکې لدې چې تاسو په MPU6050 کې کوم عملیات ترسره کړئ ، او د دې 0x6B ته د بایټ لیکل به کافي وي. دا معمولا د تنظیم کولو فعالیت کې ترسره کیږي، لکه څنګه چې په 1.1 برخه کې ښودل شوي.
د MPU6050 ډاټا بڼه
هغه معلومات چې موږ یې لیوالتیا لرو د 14x0B څخه تر 3x0 پورې د 48 بایټ راجستر کې دي. دا ډاټا به په متحرک ډول د 1000HZ پورې د تازه فریکونسۍ سره تازه شي. د لاندې راجستر پته او د معلوماتو نوم لاندې لیست شوي دي. په یاد ولرئ چې هر ډاټا 2 بایټ دی.
0x3B، د اکسلرومیټر د ایکس محور برخه ACC_X 0x3D ده، د اکسلرومیټر د Y محور برخه ACC_Y 0x3F ده، د اکسلرومیټر Z محور برخه ACC_Z 0x41 ده، اوسنۍ تودوخه TEMP 0x43 ده، د XRXX په شاوخوا کې د انګورومیټر 0x45 ده. د Y محور GYR_Y په شاوخوا کې زاویه سرعت
18
تاسو ته مثالی تفریح وکړئ
0x47، د Z محور په شاوخوا کې زاویه سرعت GYR_Z د MPU6050 چپ همغږي تعریف دا دی: چپ ځان ته مخامخ کړئ او د سطح متن سم زاویه ته واړوئ. په دې وخت کې، د چپ مرکز د اصلي په توګه اخیستل شوی، ښي خوا ته افقی د X محور دی، او عمودی یې Y محور دی، خپل ځان ته اشاره کول Z محور دی، لکه څنګه چې لاندې ښودل شوي:
13 شکل: mpu6050 گردش او زاویه سرعت ډیاګرام موږ یوازې د سرعت او زاویه سرعت میټر ډیټا معنی ته پام کوو. اوس موږ د دوه تجربو له لارې د mpu6050 کارولو سره اشنا یو. 5.3.2 تجربه 1 د لوستلو سرعت
د اکسلرومیټر درې محور برخې، ACC_X، ACC_Y او ACC_Z ټول د 16-bit لاسلیک شوي انټیجرونه دي، چې په دریو محوری لارښوونو کې د وسیلې سرعت څرګندوي. کله چې منفي ارزښت واخیستل شي، سرعت د همغږۍ محور سره منفي وي او مثبت ارزښت مثبت وي.
د سرعت درې برخې ټول د جاذبې سرعت g په څو ضربو کې دي، او د سرعت حد چې څرګند کیدی شي، دا دی، میګنیفیکیشن په مساوي ډول ټاکل کیدی شي، او څلور اختیاري میګنیفیکشنونه شتون لري: 2g، 4g، 8g، او 16g. د پخواني په توګه د ACC_X اخیستلample، که میګنیفیکشن 2g (default) ته ټاکل شوی وي، دا پدې مانا ده چې کله ACC_X لږ تر لږه ارزښت -32768 اخلي، اوسنی سرعت د X محور په مثبت لوري کې د جاذبې سرعت 2 ځله دی، او داسې نور. په ښکاره ډول،
19
تاسو ته مثالی تفریح وکړئ
څومره چې میګنیفیکیشن ټیټ وي، هغومره دقت ښه وي، او هرڅومره چې میګنیفیکیشن لوړ وي، هومره یې رینج لوی وي، کوم چې د ځانګړي غوښتنلیک له مخې ټاکل شوی وي.
AFS_SEL 0 1 2 3
د بشپړ پیمانه حد ±2g ±4g ±8g ±16g
د LSB حساسیت 16384LSB/g 8192LSB/g 4096LSB/g 2048LSB/g
د درې محور اکسلرومیټر او ماډل د گردش سمت تر مینځ اړیکه په لاندې ډول ده:
شکل 14: د Mpu6050 ماډل گردش او سرعت نمونه د MPU6050 لخوا لوستل شوي ډاټا بدلیږي، نو دا باید تایید شي. دا دی، کله چې چپ په ثابت حالت کې وي، دا لوستل باید په نظرياتي توګه صفر وي. مګر دا یو تاوان لري. د مثال لپارهample، موږ په 200ms وقفو کې 10 ارزښتونه لوستل او بیا یې اوسط کوو. دا ارزښت د صفر آفسیټ په نوم یادیږي. کیلیبریټ لوستل د هرې لوستلو څخه د صفر آفسیټ کمولو سره ترلاسه کیږي. څرنګه چې د ACC_X او ACC_Y نظري ارزښت باید صفر وي، د لوستلو دوه بندونه د احصایوي وسیلو له مخې تنظیم کیدی شي. ACC_Z باید په یو ګام کې پروسس شي. د احصایوي آفسټ په پروسه کې، د Z محور د جاذبې سرعت g د هرې لوستلو لپاره کمیږي. که د سرعت لوړوالی 2g وي، نو 16384 کمیږي، او بیا د احصایوي معنی اندازه کول ترسره کیږي. عمومي کیلیبریشن هرکله چې سیسټم پیل کیږي ترسره کیدی شي ، نو تاسو باید د دقت او د پیل وخت ترمینځ تجارت وکړئ.
20
تاسو ته مثالی تفریح وکړئ
5.3.2.1 تجربوي موخه
د mpu6050 په څرخولو سره د اکسلرومیټر د دریو محورونو ترمینځ د محصول ډیټا اړیکه مشاهده کړئ.
5.3.2.2 د تجربې کوډ کوډ LocationMotionTrackLessonmpu6050_accel mpu6050_accel.ino
21
تاسو ته مثالی تفریح وکړئ
#شامل "Wire.h" // I2Cdev او MPU6050 باید د کتابتونونو په توګه نصب شي، که نه نو .cpp/.h files // د دواړو ټولګیو لپاره باید ستاسو د پروژې شاملې لارې کې وي # "I2Cdev.h" # شامل کړئ "MPU6050.h" # د LED_PIN 13 MPU6050 accelgyro تعریف کړئ؛ جوړښت RAW_type {
uint8_t x; uint8_t y; uint8_t z; }; int16_t ax, ay, az; int16_t gx, gy, gz; جوړښت RAW_type accel_zero_offsent؛ char str[512]; bool blinkState = دروغ ; float AcceRatio = 16384.0; float accx,accy,accz;
باطل تنظیم () {
int i ;
int32_t ax_zero = 0,ay_zero = 0,az_zero = 0 ;
// د I2C بس سره یوځای شئ (I2Cdev کتابتون دا په اوتومات ډول نه کوي)
Wire.begin();
لړۍ پیل (115200);
// وسیله پیل کړئ
Serial.println("I2C وسیلو پیل کول…");
accelgyro.initialize();
ځنډ (500) ;
accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
Serial.println("د وسیلې پیوستون ازمول…");
Serial.println(accelgyro.testConnection() ? “MPU6050 پیوستون
2 2
بریالی" : "MPU6050 پیوستون ناکام شو")؛
تاسو ته مثالی تفریح وکړئ
لپاره( i = 0 ; i < 200 ; i ++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); ax_zero += محور ; 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); Serial.print("t"); Serial.print(accel_zero_offsent.y); Serial.print("t"); Serial.print(accel_zero_offsent.z); Serial.print("n"); پن موډ(LED_PIN، OUTPUT)؛ }
باطل لوپ() { // د وسیلې له ځنډ څخه د خام سرعت/ګایرو اندازه لوستل (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 = (فلوټ) (ax-accel_zero_offsent.x )/AcceRatio؛ accy = (فلوټ) (ay-accel_zero_offsent.y )/AcceRatio ; accz = (فلوټ) (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; ډیجیټل رایټ (LED_PIN، blinkState)؛ }
23
تاسو ته مثالی تفریح وکړئ
1. د ایکس محور شاوخوا 90 درجې وګرځوئ کله چې د ایکس محور 90 درجې وګرځول شي، د Y محور ورو ورو پورته کیږي او د Z محور دی.
ورو ورو ښکته. کله چې محور دقیقا 90 درجو ته ورسیږي، ځکه چې د Y محور د جاذبې په مخالف لوري کې دی، د Y محور تولید 1g (1g==9.8m/s^2) دی، پداسې حال کې چې د Z محور ارزښت له دې څخه کمیږي. 1 څخه تر 0. 2. بیرته لومړني حالت ته او د 90 درجو بیرته راګرځیدنه
کله چې تاسو بیرته لومړني حالت ته ورسیږئ، د Y محور ارزښت ورو ورو 0 ته راټیټیږي، پداسې حال کې چې د Z محور ورو ورو 1 ته لوړیږي. بیا 90 درجې په شا لوري ته واړوي، او د Y محور په تدریجي ډول تر -1 پورې راټیټیږي، ځکه چې Y محور. محور د جاذبې د سمت سره سم دی، او د سرعت ارزښت باید منفي وي. د Z محور ورو ورو 0 ته راټیټیږي. 3. بیرته لومړني حالت ته
په لاندې ډول تشریح کړئ: بیا د 90 درجو څخه بیرته لومړني حالت ته راستون شئ. په دې وخت کې، د Y-axis او Z-axis ډاټا ورو ورو لومړني ارزښت ته راستانه کیږي، Y-axis 0 دی، او Z-axis 1 دی.
د ایکس محور د گردش تحلیل وروسته، د Y محور گردش ورته دی، نو موږ به یې په تفصیل سره خبرې ونه کړو. اوس راځئ چې د Z محور په اړه وغږیږو، ځکه چې کله د Z محور شاوخوا ګرځي، دا د 90 درجې کیڼ او ښي خوا ته د تیرولو سره برابر دی. په دې وخت کې، د Z محور محصول تل 1 وي، او د X محور او Y محور د جاذبې محور ته اورتوګونل دي، نو د محصول ارزښتونه ټول 0 دي، البته، دا د نسبتا جامد شرایطو لاندې ارزښت دی. . که چیرې وسیله په موټر کې نصب شوې وي، د X او Y محورونه ممکن د 0 نه وي کله چې موټر چپ او ښي خوا ته وګرځي.
24
تاسو ته مثالی تفریح وکړئ
د تجربې پایله
5.3.3 تجربه 2 د Gyro څخه د معلوماتو لوستل
د زاویه سرعت اجزا GYR_X، GYR_Y او GYR_Z، چې د X، Y او Z د دریو همغږي محورونو شاوخوا ګرځي، ټول د 1-bit لاسلیک شوي عددونه دي. له منبع څخه تر محور پورې، ارزښت د ساعت په لور د حرکت لپاره مثبت او د ساعت په مقابل کې د حرکت لپاره منفي دی. درې زاویه سرعت اجزا ټول په درجو / ثانیو کې دي. د زاویه سرعت سلسله چې بیان کیدی شي، دا دی، لویوالی په یو شان ترتیب کیدی شي. 4 اختیاري لوړوالی شتون لري: 250 درجې/ثانوي، 500 درجې/ثانوي، 1000 درجې/ثانوي، 2000 درجې/ثانوي. د پخواني په توګه د GYR_X اخیستلample، که پراخوالی 250 درجې/ثانوي ته ټاکل شوی وي، دا پدې مانا ده چې کله GYR د 32768 مثبت اعظمي ارزښت اخلي، اوسنی زاویه سرعت 250 درجې/دوهم ساعت دی؛ که دا په 500 درجو / ثانیو کې ټاکل شوی وي، د 32768 اوسنی ارزښت د اوسني زاویې سرعت 500 درجې / ثانیې د ساعت په لور ښیي. په ښکاره ډول، څومره چې لوړوالی ټیټ وي، دقت یې ښه وي، او هرڅومره چې میګنیفیکیشن لوړ وي، حد یې هم لوی وي.
AFS_SEL 0 1 2 3
د بشپړ پیمانه حد ±250°/s ±500°/s ±1000°/s ±2000°/s
د LSB حساسیت
131LSB/°/s 65.5LSB/°/s 32.8LSB/°/s 16.4LSB/°/s
25
تاسو ته مثالی تفریح وکړئ
د پروګرام ځای "MotionTrackLessonmpu6050_gryo mpu6050_gryo.ino" د تجربې کوډ
# "Wire.h" شامل کړئ
// I2Cdev او MPU6050 باید د کتابتونونو په توګه نصب شي، یا بل .cpp/.h files // د دواړو ټولګیو لپاره باید ستاسو د پروژې شاملې لارې کې وي # "I2Cdev.h" # شامل کړئ "MPU6050.h" # LED_PIN 13 تعریف کړئ
MPU6050 accelgyro;
جوړښت RAW_type {
uint8_t x; uint8_t y; uint8_t z; };
int16_t ax, ay, az; int16_t gx, gy, gz; جوړښت RAW_type accel_zero_offsent ,gyro_zero_offsent؛
bool blinkState = غلط char str[512];
26
تاسو ته مثالی تفریح وکړئ
float pi = 3.1415926; float AcceRatio = 16384.0; float GyroRatio = 131.0; فلوټ راډ = 57.3 ; //180.0/pi؛ فلوټ gyrox, gyroy, gyroz;
باطل ترتیب () { int i ; int32_t ax_zero = 0,ay_zero = 0,az_zero = 0,gx_zero = 0,gy_zero =
0 gz_zero = 0 ; // د I2C بس سره یوځای شئ (I2Cdev کتابتون دا په اوتومات ډول نه کوي) Wire.begin();
لړۍ پیل (115200);
// وسیله پیل کړئ // Serial.println("د I2C وسیلو پیل کول…");
accelgyro.initialize(); ځنډ (500) ; accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_250);
Serial.println("د وسیلې پیوستون ازمول…"); Serial.println(accelgyro.testConnection() ? "MPU6050 پیوستون بریالی شو" : "MPU6050 پیوستون ناکام شو"); لپاره( 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
تاسو ته مثالی تفریح وکړئ
gyro_zero_offsent.z = gz_zero/200; پن موډ(LED_PIN، OUTPUT)؛ }
void loop() { // raw accel/gyro اندازه د وسیلې څخه ولولئ 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 = (float)(gx-gyro_zero_offsent.x)/AcceRatio؛ gyroy = (فلوټ)(gy-gyro_zero_offsent.y)/AcceRatio ; gyroz = (float)(gz-gyro_zero_offsent.z)/AcceRatio ; Serial.print(gyrox);Serial.print("gt"); Serial.print(gyroy);Serial.print("gt"); Serial.print(gyroz);Serial.print("gn");
ځنډ (100)؛ // Blink LED د فعالیت څرګندولو لپاره blinkState = !blinkState; ډیجیټل رایټ (LED_PIN، blinkState)؛ }
کله چې موږ د ایکس محور په مثبت لوري کې حرکت کوو، موږ ګورو چې چاپ شوي ګیروکس ډیټا مثبت دی، که نه نو دا منفي دی.
28
تاسو ته مثالی تفریح وکړئ
5.4 د حرکت ډیټا تحلیل
د سرعت میټر او زاویه سرعت میټر لوستلو ډیټا بدلولو وروسته او فزیکي ارزښتونو ته ، ډاټا د مختلف غوښتنلیکونو له مخې په مختلف ډول تشریح کیږي. په دې فصل کې، د الوتکې حرکت ماډل د پخوا په توګه اخیستل کیږيampد سرعت او زاویه سرعت پر بنسټ د اوسني الوتنې چلند محاسبه کول.
5.4.1 د سرعت میټر ماډل
موږ کولی شو د اکیلرومیټر په اړه په مثبت مکعب بکس کې د بال په توګه فکر وکړو چې د پسرلي په واسطه د کیوب په مرکز کې ساتل کیږي. کله چې بکس حرکت کوي، د اوسني سرعت ارزښت د خیالي بال له موقعیت څخه محاسبه کیدی شي لکه څنګه چې لاندې ښودل شوي:
29
تاسو ته مثالی تفریح وکړئ
15 شکل: د وزن د ضایع کیدو حالت سرعت ارزښت
که موږ په بکس کې افقی کیڼ ځواک ولګوو، نو ښکاره ده چې بکس به یو کیڼ سرعت ولري، نو په بکس کې به خیالي بال به د انارشیا له امله د بکس ښي اړخ ته ودریږي. لکه څنګه چې په لاندې انځور کې ښودل شوي:
16 شکل: د یو څیز سرعت چې ښي خوا ته حرکت کوي
د دې لپاره چې د ډیټا فزیکي معنی یقیني کړي، د MPU6050 سرعت متقابل ارزښتونه د اصلي سرعت په توګه د خیالي بال په دریو محورونو کې په نښه کوي. کله چې د خیالي بال موقعیت د محور د مخکینۍ خوا طرفدار وي، د محور سرعت منفي وي، او کله چې د خیالي بال موقعیت د منفي محور په لور متعصب وي، د محور سرعت
30
تاسو ته مثالی تفریح وکړئ
لوستل مثبت دي. د پورته تحلیل له مخې، کله چې موږ په سیمه ایزه کچه د MPU6050 چپ کیږدو، د چپ سطحه د اسمان په لور ده، په دې وخت کې د جاذبې له امله، د بال موقعیت د Z محور منفي لوري ته دی، پدې توګه Z. د محور سرعت لوستل باید مثبت وي، او په مثالي توګه باید "g" وي. په یاد ولرئ چې دا د جاذبې سرعت نه دی بلکه د فزیکي حرکت سرعت دی، پدې پوهیدل کیدی شي: د جاذبې سرعت د خپل حرکت سرعت ارزښت سره مساوي دی، مګر په مخالف لوري کې، له همدې امله چپ کولی شي ثابت پاتې شي.
5.4.2 د رول-پیچ-یو ماډل او د چلند محاسبه
د الوتکې د اوسنۍ الوتنې چلند نمایندګي لپاره عمومي ماډل د همغږۍ سیسټم رامینځته کول دي لکه څنګه چې لاندې ښودل شوي او د "رول" په واسطه د ایکس محور گردش استازیتوب کوي، د Y محور گردش د "پیچ" په واسطه، د Z گردش د "Yaw" لخوا محور.
17 شکل: د رول-پیچ-یو ماډل
څرنګه چې MPU6050 کولی شي د دریو محورونو پورته سرعت ترلاسه کړي او جاذبه تل په عمودي توګه ښکته وي، موږ کولی شو اوسنی چلند د جاذبې د سرعت له مخې محاسبه کړو.
31
تاسو ته مثالی تفریح وکړئ
د چپ سره تړاو لري. د اسانتیا لپاره، موږ چپ په پورته ښودل شوي الوتکه کې ښکته یو، او همغږي د الوتکې د همغږۍ سیسټم سره په بشپړ ډول مطابقت لري. په دریو محورونو کې سرعت د سرعت ویکتور "a (x, y, z)" جوړوي. فرض کړئ چې چپ د یونیفورم خطي حرکت په حالت کې وي، نو "a" باید د ځمکې سره عمودی وي، یعنې د Z محور منفي لوري، او اوږدوالی یې |a|=g=sqrt{x^2+ دی. y^2+z^2} (د جاذبې د سرعت سره مساوي مګر مخالف لوري، په 3.1 برخه کې لیدل کیږي). که چیرې چپ (د همغږۍ سیسټم) وګرځي، د Z محور منفي لوري به نور د "a" سره سمون ونلري ځکه چې د سرعت ویکتور a لاهم په عمودی توګه پورته کیږي. لاندې لیدل.
18 شکل: د چلند زاویې محاسبه ماډل
د اسانتیا لپاره، د پورتنۍ همغږي سیسټم Z محور مثبت لوري (بیلی او د چپ مخکی) ښکته خوا ته دی، او د ایکس محور ښي خوا ته دی (د الوتکې د الوتنې لوري). په دې وخت کې، د چپ رول زاویه "" (ژېړ) د سرعت ویکتور لخوا رامینځته کیږي او د XZ په الوتکه کې د هغې پروجیکشن (x, 0, z)، د پچ زاویه "" (شنه) د سرعت ویکتور لخوا رامینځته کیږي. او د هغه پروجیکشن په YZ الوتکه کې. ټوکه
د محصول فورمول کولی شي د دوو ویکتورونو ترمنځ زاویه محاسبه کړي: ساده کسر:
. وروسته
او
.
32
تاسو ته مثالی تفریح وکړئ
په یاد ولرئ چې څنګه چې د آرکوس فنکشن یوازې مثبت ارزښتونه بیرته راګرځوي، تاسو اړتیا لرئ چې د مختلفو شرایطو سره سم د زاویې مثبت او منفي ارزښتونه واخلئ. کله چې y محور مثبت وي، د رول زاویه منفي ارزښت اخلي، او کله چې د ایکس محور منفي وي، د پچ زاویه منفي وي.
5.4.3 د یاو زاویه ستونزه
ځکه چې هیڅ حواله نشته، د Yaw مطلق اوسنۍ زاویه نشي محاسبه کیدی، موږ کولی شو یوازې د Yaw توپیر ترلاسه کړو، یعنې د زاویه سرعت GYR_Z. البته، موږ کولی شو د اوسني یاو زاویه محاسبه کولو لپاره د GYR_Z انضمام میتود وکاروو (د ابتدايي ارزښت له مخې)، د اندازه کولو دقت له مخې، محاسبه شوی ارزښت تیریږي، دا د یوې مودې وروسته په بشپړه توګه بې معنی دی. په هرصورت، په ډیری غوښتنلیکونو کې، لکه UAVs، یوازې GRY_Z ته اړتیا ده.
که تاسو د یاو مطلق زاویه ترلاسه کول غواړئ، نو MPU9250 غوره کړئ، د 9 محور حرکت تعقیب چپ، دا کولی شي د 3 محور کمپاس اضافي معلومات چمتو کړي، نو موږ کولی شو د یاو زاویه د ځمکې د مقناطیسي ساحې د سمت له مخې محاسبه کړو، ځانګړی میتود دلته ندی ذکر شوی.
5.5 د معلوماتو پروسس او پلي کول
د MPU6050 چپ ډیټا د جدي شور سره چمتو کوي ، کله چې چپ په جامد حالت کې پروسس کوي ، معلومات ممکن له 2٪ څخه ډیر تیر شي. د شور سربیره ، لاهم نور آفسیټونه شتون لري ، د دې معنی دا ده چې ډیټا د جامد کاري نقطې شاوخوا نه تیریږي ، نو د ډیټا آفسیټ باید لومړی کیلیبریټ شي ، او بیا د الګوریتم فلټر کولو سره شور له مینځه ویسي. د کلمان فلټر اغیزه بې له شکه د لوی شور سره ډیټا لپاره غوره ده. دلته موږ د الګوریتمیک توضیحاتو ته پام نه کوو، تاسو کولی شئ مراجعه وکړئ http://www.starlino.com/imu_guide.html.
5.5.1 تجربه 3 imu_kalman رول او پیچ ترلاسه کوي موخه یې دا ده چې د mpu3 د 6050D حرکت حالت په ریښتیني وخت کې د mpu6050 لوستلو سره ښکاره کړي، او د ریښتیني وخت سرعت ACCEL_X، ACCEL_Y، ACCEL_Z ډیټا او GYRO_X ډیټا GYRO_XV لیږدوي. ، او د پروسس کولو پروګرام ته GYRO_Z.
5.5.2 د تجربې کوډ Arduino تجربې کوډ "MotionTrackLessonmpu6050mpu6050.ino" کولی شي رول او پیچ ترلاسه کړي د چلولو پایله په لاندې ډول ده:
33
تاسو ته مثالی تفریح وکړئ
د Arduino NANO اصلي کنټرول بورډ ته د پروګرام اپلوډ کولو وروسته، د پروسس کولو پروګرام "MotionTrackProcessing_demompu6050mpu6050.pde" پرانیزئ.
د پروسس کولو سافټویر سره (د ادرس ډاونلوډ کړئ https://www.processing.org). په یاد ولرئ چې په "[]" کې شمیره د Arduino NANO پورټ شمیره نه ده، مګر د ارتباطي بندر سیریل شمیره ده. تاسو اړتیا لرئ د کمپیوټر وسیله مدیر خلاص کړئ view سیریل نمبر د مثال لپارهample، زما نندارتون COM1 دی، او سیریل پورټ زموږ د پروسس لپاره کارول کیږي. دا د سبسکریپټ 0 سره پیل کیږي. نو ما د پروسس کولو اصلي برنامه کې د "[]" ارزښت 0 ته بدل کړ. یوځل چې بدلونونه بشپړ شي ، د پروسس کولو چلولو لپاره په سکیچ چلول کلیک وکړئ.
34
تاسو ته مثالی تفریح وکړئ
35
تاسو ته مثالی تفریح وکړئ
د وارداتو پروسس سریال.*؛
سریال myPort; // سیریلا پورټ نمبر
float [ ] RwEst = نوی فلوټ [3] ; بایټ [] inBuffer = نوی بایټ[100]؛
د فونټ فونټ; وروستی int VIEW_SIZE_X = 1080،VIEW_SIZE_Y = 720;
باطل تنظیم () {
اندازه (1080, 720, P3D)؛ myPort = نوی سریال(دا، Serial.list()[0]، 9600)؛ // myPort = نوی سریال (دا، "/ dev/ttyUSB0"، 9600)؛ // لوډ فونټ کوریر نوی ډول / نیټه font = loadFont("CourierNewPSMT-32.vlw"); }
void readSensors() { که (myPort.available() > 0) { که (myPort.readBytesUntil('n', inBuffer) > 0) { String inputString = new String(inBuffer); String [ ] inputStringArr = split(inputString,','); RwEst[0] = float(inputStringArr[0]); RwEst[1] = float(inputStringArr[1]); RwEst[2] = float(inputStringArr[2]); } }
}
36
تاسو ته مثالی تفریح وکړئ
void buildBoxShape() { //box(60, 10, 40); noStroke(); د پیل شکل (QUADS)؛
//Z+ ډک (#00ff00); عمودی (-30, -5, 20); عمودی (30, -5, 20); عمودی (30, 5, 20); عمودی (-30, 5, 20);
//Zfill(#0000ff)؛ عمودی(-30, -5, -20); عمودی (30, -5, -20); عمودی (30, 5, -20); عمودی (-30, 5, -20);
//Xfill(#ff0000); عمودی(-30, -5, -20); عمودی (-30, -5, 20); عمودی (-30, 5, 20); عمودی (-30, 5, -20);
//X+ ډک (#ffff00); عمودی (30, -5, -20); عمودی (30, -5, 20); عمودی (30, 5, 20); عمودی (30, 5, -20);
//Yfill(#ff00ff)؛ عمودی(-30, -5, -20); عمودی (30, -5, -20); عمودی (30, -5, 20); عمودی (-30, -5, 20);
37
تاسو ته مثالی تفریح وکړئ
//Y+ ډک (#00ffff)؛ عمودی (-30, 5, -20); عمودی (30, 5, -20); عمودی (30, 5, 20); عمودی (-30, 5, 20);
پای شکل(); }
void drawCube() { pushMatrix(); // normalize3DVec(RwEst)؛ ژباړه(300, 450, 0); پیمانه (4، 4، 4)؛ rotateX(HALF_PI * -RwEst[1]); //rotateY(HALF_PI * -0.5); rotateZ(HALF_PI * -RwEst[0]); buildBoxShape(); popMatrix();
}
void draw() { // getInclination(); readSensors(); پس منظر(#214565); ډک کړئ(#ffffff); متن فونټ (فونټ، 20)؛ متن("RwEst :n" + RwEst[0] + "n" + RwEst[1] + "n" + RwEst[2], 220, 180); // نندارې محور pushMatrix (); ژباړه(450, 250, 0); ضربه(#ffffff); // پیمانه(100، 100، 100)؛ کرښه(0, 0, 0, 100, 0, 0); کرښه(0, 0, 0, 0, -100, 0); کرښه(0, 0, 0, 0, 0, 100); کرښه(0, 0, 0, -RwEst[0], RwEst[1], RwEst[2]); popMatrix(); drawCube();
} 38
تاسو ته مثالی تفریح وکړئ
موږ ګورو چې زموږ د چلولو پایلې په لاندې ډول دي:
شکل 19: د پریزنټشن رینڈرینګ پروسس کول
د حرکت تعقیب کنټرول اصول
د رول زاویه او پچ ترلاسه کولو لپاره د mpu6050 د پخوانیو معلوماتو استملاک له لارې، موږ لاندې لیکونه رامینځته کوو. د ټیټ ماشین خوځنده څیز کنټرول کړئ: موږ کولی شو د mpu6050 له لارې د سرعت او سمت ترلاسه کولو سره د ټیټ ماشین څیز کنټرول کړو.
د mpu6050 د ریښتیني وخت تایید شوي سرعت په لوستلو سره ACCEL_X, ACCEL_Y, ACCEL_Z ډیټا او د ګیروسکوپ ډیټا GYRO_X, GYRO_Y, GYRO_Z ډیټا د کوټرنیون پروسس کولو فنکشن ته لیږدول کیږي ، برنامه په ریښتیني وخت کې د رولر او پیچ زاویې حالتونه د mpu6050 حالت ښیې.
6.1 د ریسینګ سمت همغږي زاویې ماډل
د دې لپاره چې د موټر کنټرول اسانه کړو، موږ اوس د همغږۍ زاویه سره د موټرو سمت لاندې ماډل تاسیس کوو
39
تاسو ته مثالی تفریح وکړئ
شکل 20: د ریسینګ سمت زاویه همغږي لکه څنګه چې پورته ښودل شوي، موږ د موټر مخکینۍ برخه د 90 درجې، شا ته 270 درجې، ښي خوا ته 180 درجې، او کیڼ اړخ ته 0/360 درجې تعریفوو. 0 ~ 90 د ښي مخ لوري لپاره ولاړ دی. 90 ~ 180 د کیڼ مخ لپاره ولاړ دی 180 ~ 270 د چپ شا لپاره او 270 ~ 360 د ښي شا لپاره. په ورته ډول، موږ mpu6050 د سپورت دستکشو کې نصب کړ. موږ لاندې حرکت ماډل جوړ کړ.
40
تاسو ته مثالی تفریح وکړئ
21 شکل: د سپورت دستکشو مستقیم همغږي د 5.5.2 رول-پیچ-یو ډیټا ماډل له لارې، د سپورت دستکشې د Y شکل په شاوخوا کې ګرځي (د لاس شاته کیڼ او ښي خوا ته اړول) او موږ د پچ زاویه ترلاسه کوو. د X شاوخوا ګرځول (شاته او شاته فلیپ) موږ د رول زاویه ترلاسه کوو. اوس چې موږ د چلند زاویه او د موټر زاویه همغږي پوهه لرو، اوس به یې صحنې ته بیان کړو. کله چې د سپورت دستکشې ښي لوري ته ښي خوا ته غورځول کیږي، لکه څنګه چې په لاندې انځور کې ښودل شوي، که دوی د همغږۍ سیسټم کې وي، دوی د 0 څخه تر 90 درجې ساحې ته ځي.
41
تاسو ته مثالی تفریح وکړئ
22 شکل: د سپورټ دستکشو سکیماتیک ډیاګرام د ښي مخ لوري ته ټیک شوی کونج د لاندې موټر سره ورته دی په لاندې ډول دی
42
تاسو ته مثالی تفریح وکړئ
23 شکل: د موټر د ښي مخي حرکت سکیماټیک ډیاګرام د سپورت دستکشو د چلند له لارې، موږ اړتیا لرو چې د ټیټ ماشین د حرکت زاویه درجه محاسبه کړو. نو موږ لاندې درې اړخیز ماډل جوړ کړ
24 شکل: د سټیریو ماډل ډیاګرام د سپورت دستکشو پراساس د نمایش د اسانتیا لپاره، د پورتنۍ همغږۍ سیسټم Z-axis مثبت لوري (د حرکت دستکشې مخکینۍ برخه) پورته ده، او د مثبت ایکس محور لوري (د ښي اړخ ښي اړخ) د سپورت دستکشې) ښي خوا ته دی. په لومړني حالت کې، د سپورت دستکشې د XY سره ورته لیور پاتې کیږي. په دې وخت کې، هغه لوري ته چې د سپورت دستکشې ټیک شوی وي د OB لخوا استازیتوب کیږي، او د رول زاویه (تور) د XZ په الوتکه کې د سرعت ویکتور OB او د هغې پروجیکشن (x، 0، z) ترمنځ زاویه ده، او د پچ زاویه (جامني) د YZ په الوتکه کې د هغې پروجیکشن دی (د 0، y، او z ترمنځ زاویه). نیلي رنګ هغه درجه ده چې د سپورت دستکشې په XY الوتکه کې پروجیکشن (x, o, y) وړاندې کوي. موږ دا زاویه کاروو ترڅو د ټیټ موټر سټیرینګ زاویه کنټرول کړو. موږ لا دمخه د تیر 5.6.1 تجربې له لارې رول او پیچ ترلاسه کړی دی. اوس موږ د لاندې فورمول په واسطه درجه محاسبه کوو. په شکل کې BA OA AB OB sin (Pitch) BD OD BD OBsin (رول)
43
تاسو ته مثالی تفریح وکړئ
tandegree FE BD sin(Roll) رول
OE AB sin(Pitch) Pitch deg ree arctan( رول )
پورته پورته موږ د سټیرینګ کوزین زاویه ترلاسه کړې، موږ اړتیا لرو چې کوفیفینټ د همغږۍ درجې ته ضرب کړو. 180 57.3 پورتني تحلیل یوازې د زاویه تحلیل دی کله چې د پورتنۍ ښیې په څیر ټیک شوی وي. په ورته ډول، کله چې د سپورت دستکشې کیڼ اړخ ته ځړول کیږي
شکل 25: د سپورټ دستکشو سکیمیک ډیاګرام چې کیڼ اړخ ته د ډیګ ری آرکټان (پیچ) * 57.3 900 ته خړوبیږي
په ورته ډول رول کړئ، کله چې د سپورت دستکشې کیڼ اړخ ته ځړول کیږي
44
تاسو ته مثالی تفریح وکړئ
26 شکل: د سپورت دستکشې د کیڼ شا لوري سکیمیټ ډیاګرام deg ree arctan (Rol)*57.3 1800
پچ په ورته ډول، کله چې د سپورت دستکشې ښکته ښي خوا ته ځړول کیږي
27 شکل: د سپورت د دستکشو د ښي شا لوري سکیماټیک ډیاګرام
45
تاسو ته مثالی تفریح وکړئ
deg ree arctan(پچ)*57.3 2700 رول
اوس راځئ چې څنګه د موټر سرعت کنټرول کړو. د پورتنۍ شمیرې څخه موږ لیدلی شو چې په mpu6050 کې د سپورت دستکشو او د الوتکې XY الوتکې د زاویې زاویې لپاره، موږ د نمایندګۍ لپاره لاندې الوتکه کاروو
B'OB د ابتدايي حالت په پرتله د تمایل زاویه ده چې د سرعت د کنټرول لپاره د دې درجې خښتو څخه کار اخلي.
موټر
B'OB=OBF arcsin(of) arcsin(OE2 EF 2 )
OB
OB
EF=BD OE=AB
OBF آرکسین (sin2 (رول) sin2 (Pitch)) arcsin (Rol2 Pitch2)
پورته د آرک زاویه ده. موږ هم اړتیا لرو چې ضخامت ضرب کړو. د دې زاویې حد (0~90) دی. موږ په مستقیم ډول دا زاویه د موټر د کنټرول سرعت په توګه کاروو.
46
تاسو ته مثالی تفریح وکړئ
float CalculateSpeed(فلوټ رول، فلوټ پچ) {
د فلوټ انډول = asin(sqrt(roll*roll +pitch*pitch))*Rad؛ بیرته ستنیدل؛ }
باطل لاس ته راوړل (باطل)
{
static int count = 0;
static int SendSpeed = 0 , SendDegree = 0 ;
شمېره++;
سرعت = د سرعت محاسبه (رول، پچ)؛
که ((-0.2 <= پچ) && (پچ <= 0.2) && (-0.2 <= رول) && (رول <= 0.2)) {
درجې = ۹۰؛
SendSpeed = 0;
د لیږلو درجې += 90;
} نور که (پچ <0 && رول <0) {
درجې = اتان (رول/پیچ) *ریډ؛
SendDegree += ((نه لاسلیک شوی int)(degree/10))*10;
} نور که (پچ > 0 او رول < 0) {
درجه = اتان (-پیچ/رول) *ریډ + 90؛
SendDegree += ((نه لاسلیک شوی int)(degree/10))*10;
} نور که (پچ > 0 او رول > 0) {
درجه = اتان (رول/پیچ) *ریډ + 180؛
} نور که (پچ <0 && رول> 0) {
درجه = اتان (-پیچ/رول) *ریډ + 270؛
SendDegree += ((نه لاسلیک شوی int)(degree/10))*10;
} نور {
درجې = ۹۰؛
SendSpeed = 0;
د ليږلو درجه = 90 ;
}
د لیږلو درجې = (int) (سرعت/10)*10؛
که (درجې <30 || درجې > 330) {
د ليږلو درجه = 0 ;
}
که (شمیر >= 3) {
شمېر = 0;
Send_direction(SendDegree/3);
Send_Speed(SendSpeed)؛
د ليږلو درجه = 0 ;
SendSpeed = 0;
4 7
}
تاسو ته مثالی تفریح وکړئ
پروتوکول
د موټر کنټرول لپاره بلوتوټ وکاروئ، په حقیقت کې د Android اپلیکیشن کارول د Arduino ته لارښوونې لیږلو لپاره
د موټر کنټرول لپاره د بلوتوټ له لارې سیریل پورټ. ځکه چې پدې کې د بې سیمه اړیکه شامله ده، یو له اړینو څخه
ستونزه د دوو وسیلو ترمنځ اړیکه ده. مګر د دوی تر مینځ هیڅ مشترکه "ژبه" نشته،
نو دا اړینه ده چې د مخابراتو پروتوکولونه ډیزاین کړئ ترڅو د Android او Android ترمینځ مناسب تعامل ډاډمن کړي
Arduino اصلي پروسه دا ده: Android د کنټرول کمانډ پیژني او په کې بسته بندي کوي
اړونده کڅوړه، بیا د بلوتوټ ماډل (JDY-16) ته لیږل کیږي، JDY-16 ډاټا ترلاسه کړي او لیږل کیږي
Arduino، بیا Arduino ډاټا تحلیلوي بیا ورته عمل ترسره کوي. د نیټې بڼه چې د
Android په لاندې ډول لیږل کیږي، په عمده توګه 8 ساحې لري.
د پروتوکول ډیټا اوږدوالی وسیلې ډول د وسیلې فعالیت کنټرول چیک پروتوکول
سرلیک
د پته کوډ ډیټا د پای کوډ
په پورته 8 برخو کې، موږ د استازیتوب لپاره ساختماني بدن کاروو.
typedef جوړښت {
غیر لاسلیک شوی چار start_code; نه لاسلیک شوی چار لین؛ غیر لاسلیک شوي چار ډول؛ نه لاسلیک شوی چار اضافه نه لاسلیک شوی لنډ int فعالیت؛ غیر لاسلیک شوي چار * ډاټا؛ نه لاسلیک شوی لنډ int sum; غیر لاسلیک شوی چار پای_کوډ؛ }ST_پروتوکول؛
// 8bit 0xAA
// 16 بټ // n بټ // چک سمال // 8 بټ 0x55
د "پروتوکول سرلیک" معنی د پاکټ پیل دی، لکه د 0xAA یونیفورم نومول. "د ډیټا اوږدوالی" معنی د ډیټا د پیل او پای کوډونو معتبر ډیټا اوږدوالي پرته. "د وسیلې ډول" معنی د وسیلې د تجهیزاتو ډول دی "د وسیلې پته" پدې معنی چې هغه پته چې د کنټرول لپاره ټاکل شوې ده "فکشن کوډ" پدې معنی ده چې د تجهیزاتو ډولونه چې کنټرول ته اړتیا لري ، د فعالیت ډولونه چې موږ یې اوس مهال په لاندې ډول ملاتړ کوو.
48
تاسو ته مثالی تفریح وکړئ
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، E_9VR = E_10UPE، E_11VR = XNUMX} _CONTOROL_FUNC ;
"ډاټا" د موټر ځانګړي کنټرول ارزښت معنی لري، لکه سرعت، زاویه. "چیکسم" د کنټرول لارښوونې مختلف یا محاسبه شوي ډیټا بټونو پایله ده. "د پروتوکول پای کوډ" د ډیټا کڅوړې وروستۍ برخه ده کله چې دا ډیټا ترلاسه کوي ، دا پدې معنی ده چې ډیټا پیک لیږل شوی ، او د راتلونکي ډیټا کڅوړې ترلاسه کولو لپاره چمتو دی ، دلته موږ دا د 0x55 په توګه مشخص کړی. د مثال لپارهample، یو بشپړ پاکټ کیدای شي لکه "AA 070101065000 5F55" وي، په کوم کې چې: "07" د لیږد ډیټا اوږدوالی 7 بایټ دی. "06" د "وسیلې ډول" دی، لکه موټر، LED، بزر او داسې نور. دلته 06 د لیږد سرعت ته اشاره کوي، او 05 د لیږد لوري ته اشاره کوي. "50 (یا 0050)" د کنټرول ډاټا ده، په هیکساډیسیمل کې 0x50 80 دی کله چې بائنری ته بدل شي، پدې معنی چې د سرعت ارزښت 80 دی. که چیرې ډاټا 05 وي، دا د کنټرول سمت معنی لري، دا 80 درجې (مخکې) دی. "005F" یو چیکسم دی چې 0x07+0x01+0x01+0x06+0x50=0x5F دی. "55" د پروتوکول پای کوډ دی، د معلوماتو لیږد پای ته اشاره کوي.
49
تاسو ته مثالی تفریح وکړئ
هر اړخیزه تجربه
8.1 Nrf24L01 بې سیم کنټرول
8.1.1 د اشارې کنټرول Hummer-bot سمارټ موټر د تیر فصل د پیوستون لاین سره سم وصل کړئ ، بیا د 9v وچ بیټرۍ سره وصل کړئ
Arduino NANO، او برنامه ډاونلوډ کړئ. د بریښنا له فعالیدو وروسته ، د Nrf24L01 ماډل Hummer-bot Nrf24L01 ته ډاټا لیږي ، او بیا د همر - بوټ ملټي فنکشن موټر کنټرول لپاره د دستکشې موقعیت تنظیموي ، نو د سپورت دستکشو لخوا کنټرول شوی موټر زیږیدلی!
50
تاسو ته مثالی تفریح وکړئ
28 شکل: د ټيټ کمپيوټر د اشارو کنټرول hummer-bot پروګرام لینک: https://github.com/keywish/keywish-hummer-bot-Hummer-Bot-Multi-function د موټر پیرود لینک په ایمیزون کې پیرود
https://www.amazon.com/dp/B078WM15DK د ډیمو ویډیو کنټرول Gesture-MotionTrackingvideoControl_Hunner-bot.mp4 8.1.2 د اشارې کنټرول بیټل بوټ سمارټ موټر
29 شکل: د بیټل بوټ په اړه د اشارې کنټرول بیټل بوټ معلومات https://github.com/keywish/keywish-beetle-bot
51
تاسو ته مثالی تفریح وکړئ
8.2 د بلوتوټ ارتباط حالت کنټرول
د بلوتوټ کیبل له مخې وصل کړئ ، بیا د 9v وچه بیټرۍ د Arduino NANO سره وصل کړئ او برنامه ډاونلوډ کړئ (MotionTrackLessonMotionTrack_Bluetooth MotionTrack_Bluetooth.ino). په یاد ولرئ چې تاسو اړتیا لرئ د ټیټ کمپیوټر د بلوتوټ MAC پته بدل کړئ. د بریښنا له فعالیدو وروسته ، د سپورت دستکشې په اوتومات ډول د موټر بلوتوټ ماډل سره وصل کیږي.
52
تاسو ته مثالی تفریح وکړئ
8.2.1 د اشارې کنټرول اورورا ریسینګ
30 شکل: د اشارې کنټرول اورورا ریسینګ محصول معلومات: https://github.com/keywish/Aurora-Racing د تولید ویډیو: giteeMotionTrackvideo Control_RacingCar.mp4
53
تاسو ته مثالی تفریح وکړئ
8.2.2 د اشارې کنټرول پینتھر ټانک
31 شکل: د پینتھر ټانک تولیدي موادو لپاره د اشارې کنټرول پیټر ټانک، مهرباني وکړئ مراجعه وکړئ https://github.com/keywish/keywish-panther-tank
54
تاسو ته مثالی تفریح وکړئ
8.2.3 د اشارې کنټرول توازن موټر
32 شکل: د اشارې کنټرول مینی بیلنس موټر د بیلانس محصول معلوماتو لپاره مهرباني وکړئ مراجعه وکړئ https://github.com/keywish/mini-balance-car
55
اسناد / سرچینې
![]() |
Makefun MPU6050 Arduino اشارو حرکت تعقیب [pdf] د لارښوونې لارښود MPU6050 ماډل، JDY-16 بلوتوټ ماډل، NRF24L01 ماډل، MPU6050 Arduino اشارو حرکت تعقیب، MPU6050، Arduino اشارو حرکت تعقیب، د اشارې حرکت تعقیب، د حرکت تعقیب، تعقیب |