使用6轴控制小车
材料准备
小車材料:
- Ameba x 1
- L298N H-Bridge x 1
- 4轮车 or 2轮车+万向轮
- 18650 Li-ion battery >=2 (optional)
- 18650 batter holder x 1 (optional)
Ameba控制端:
- Ameba x 1
- MPU6050 x 1
- lithium polymer (optional)
范例说明
小车的范例我们使用之前没有摄影机的范例 “car2wd_mobile_control”
另外我们准备另一块Ameba板子,上面搭载MPU6050,并且握着Ameba来控制小车。
请先下载AmebaMotors 1.0.3版的library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/AmebaMotors-1.0.3.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/I2Cdev.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/MPU6050.zip
另外我们准备另一块Ameba板子,上面搭载MPU6050,并且握着Ameba来控制小车。
请先下载AmebaMotors 1.0.3版的library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/AmebaMotors-1.0.3.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/I2Cdev.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/MPU6050.zip
下载之后,参考Arduino官方网站的教学文章将zip档的library加入Ameba:
https://www.arduino.cc/en/Guide/Libraries#toc4打开范例 “File” -> “Examples” -> “AmebaMotor” -> “car2wd_mpu6050_control”
电源的部份,我们使用锂离子电池,这样方便握着Ameba。锂离子电池的电压为3.7V,充饱时为4.2V,将它的正极接到Ameba板子上5V的地方,板子上有降压模组会将电压转至3.3V给Ameba。
底下是接线图,请注意MPU6050的X轴与Y轴的方向。
接起来的成品:(电池藏在背后)
控制的方式分两阶段
1. 启动控制器:当Ameba控制端连线到小车后,为了避免误触六轴感测器造成车子乱跑,我们设定启动手势,在3秒内将Ameba翻转至背面再转回来2次,就可以启动控制。
2. 控制小车:想像Ameba前面有个小钢珠,当Ameba往前倾,车子就往前。往后倾车子就往后。往右倾就右转,往左倾就左转。
底下是控制车子的影片:
程式码说明
程式里多了Wifi,有几个要注意的地方:
- Wifi传送资料需要时间,如果时间太长,就需要将MPU6050的DMP FIFO清空
清空的实作如下。它会等到下一次Interrupt发生时,再发送I2C的请求,让MPU6050清空FIFO:// wait until UVC is ready for streaming void safeResetMPU6050() { /* If dmp interrupt happends at I2C send/recv, then MPU6050 would hang and can only recover * by plug out/in VCC. To avoid this happen we wait next interrupt and then reset buffer */ mpuInterrupt = false; while (!mpuInterrupt) { os_thread_yield(); // without yield, the empty busy loop might make CPU behave un-expected } mpu.resetFIFO(); mpuInterrupt = false; }
- 控制小车:我们只使用Pitch与Roll。
其中Roll对应到我们接线的方式,转的是X轴,根据右手法则,往下压数值会减少,往上拉则数值增加
Pitch转的是Y轴,用同样的方式处理:
在转换数值时,可以加个不动作的区间,范例程式里,当角度在-24~+24度之间,就不动作。取-24~-48与+24~+48对应到小车的动作。
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. 使用条款