使用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對應到小車的動作。
Realtek IoT/Wi-Fi MCU Solutions . All Rights Reserved. 使用條款