Contents

ElectronBot

Derivative work of ElectronBot.

Githubs

Videos

Debugging

Time line

日期 進度
6/29 完成新的 layout
7/1 送 PCB
7/5 淘寶訂貨完成
7/12 PCB 到貨,完成6片伺服馬達板子焊接
7/12 發現沒買到 PAJ7620U2 ,吐了
7/14 完成底板 + SensorBoard 焊接
7/14 換了不少片 HS8836A ,但是還是沒有成功連線
7/14 另外3片底板只有一片能讀到,其他兩片都沒有
7/16 今天做比較晚做到半夜,5片底板測試都OK
7/16 一片新 layout的板子銅箔被我剝起來,要重新焊整片了嗚嗚
7/16 libusb32 安裝 ElectronBot@PZH 問題解決
7/16 頭部版測試也OK (播放表情沒問題)
7/16 完成 3 組機器人核心版 (包含ElectronBot, SensorBoard, BaseConnector),其中一組有相機測試沒問題
7/16 有多完成一組自己 layout 的 SensorBoard 板子,測試過也沒問題
7/16 注意測量電壓的時候不要誤觸短路,今天也燒掉一條排線,還有一片 SensorBoard 的電阻,測半天弄不出來,後來整批換掉就好了
7/17 馬達 I2C 好像還是有點問題,兩個上位機都連線不上
7/17 單顆馬達目前直接稍轉 360 的韌體可以動作了,正在懷疑是不是焊接問題
7/19 把六個馬達板上到馬達上了,有一個馬達是壞的,換過之後都可以正常轉動並讀到數值,但是9g的大馬達轉不起來,跟小羊要了一顆之後,他的角度讀數是壞掉的
7/24 今天燒馬達韌體 I2C ID,燒錄之後全部接到板子上,也成功連線上位機,成功讀寫每個馬達的角度!不過角度的位移有點不敏感,可能 tune PID 會好。
8/14 擱了一陣子回來繼續做,多加了一條供電線到 SensorBoard 上面,9g馬達總算會動了,不過角度也沒有到180。
8/22 Tune 好了小顆的馬達,不過大顆的9g馬達還是控不太起來,現在計畫全部都改成小顆的馬達了。希望今天組得完~
8/23 算是組完了,阿不過殼子合不起來,身體的空間太小了,脖子的現也不夠粗
8/24 把 CAD 圖改完了,零件要重新印過
9/4 出國玩回來直接開組,總算組完了,新的零件也很合適

Cost

5 隻小機器人

  • 電路板 ~10000元
  • 元件 + 零件 ~8000元

1 隻價格: ~3500元

使用元件

Original version

  • CP2102: USB to UART Bridge
  • STM32F405RGT6: 32-bit ARM Cortex-M4F MCU
  • MPU6050: 6-axis motion tracking device
  • USB3300: USB PHY
  • HS8836A: USB Hub
  • LCD 240x240 round
  • PAJ7620U2: Gesture sensor
  • Camera module
  • STM32F042F6
  • FM116C: Motor driver

Audio version

電路板

Original version

  1. ElctronBot: 頭部主板
  2. SensorBoard: 接感測器、馬達的主板
  3. ServoDrive: 馬達驅動板
  4. ServoDrive-DK: 馬達驅動板(調整用)
  5. BaseConnector: USB Type-C 轉接板

Jinson

  1. ElctronBot: 頭部主板與原本使用一樣地即可
  2. SensorBoard: 增加 Audio Codec
  3. 其他都一樣

小卡

  1. ElctronBot: 頭部主板與原本使用一樣地即可
  2. SensorBoard: 與原本相同
  3. MotorDrive: 增加電容更穩定
  4. BaseConnector: 將 codec 晶片、麥克風等等 lay 到這張上面

最終選擇

  1. ElectronBot: 自己 lay
  • 大部分是原版,參考小卡增加喇叭 (8P FPC -> 10P FPC)、增加一個 SH-2P
  • 增加兩組 SH-2P for capacitance sensing
  • SD card module modification

大約 lay 5 個小時

  1. SensorBoard: 自己 lay
  • 大部分是原版,參考小卡 header 位置,比較好連接
  • 增加兩組 I2C header,作為底部連接擴充

大約 lay 7 個小時

  1. BaseConnector: 用小卡的
  2. MotorDrive: 用小卡的

Audio version

  • 可以只改用新版的 SensorBoard

硬體線路

USB Hub USB Hub 總共有4個port,這裡用到3個port,分別是:

  • Port 1 (ST): USB3300
  • Port 2 (CP): STM32F405RGT6 + CP2102
  • Port 3 (CAM): Cameara module
  • Port 4 (PAJ): Audio codec

韌體燒錄

系統辨識 Port

  • CP2102
  • ElectronBot@PZH (USB3300)
  • camera

上位機

  • ElectronBot Braincase

    • 有蠻多功能可以用的
    • 測試OK
  • ElectronBot-Debugger

    • 所有的韌體編譯好的檔案都在 pictures 路徑下面
    • 操作可以參考這篇
    • 測試連線不到
  • Jinson-ServerMotor Tester

    • 好像也連線不到
  • All I2C Command

單元測試

先單獨測試每個模組沒問題(屏幕顯示和USB通信用Test資料夾裡的工程、舵機都單獨測試好了),然後需要接上所有6個舵機才行; 先連接機器人,再打開studio,三檔開關打到模型優先就可以動了,是即時同步的

字體在LargeFiles資料夾裡面

螢幕 可以參考這個教學 8:00 的地方 Bilibili video

但是可能會發生缺少 dll 的問題,用 Dependency 掃一下

之後照著這個 issue 提供的方法做就可以了 dll issue resolve 將 ElectronBot@PZH 直接強制燒到 USB3300 的 Port 上面,就可以了

硬體組裝全測

在 gitee 上我有找到馬達對應的位置和 ID,ID 都是偶數從 2 ~ 12,如下圖所示:

馬達連接全測:

全部插上之後可以測式連接,用寫好的 Unity 上位機去連線,記得左右滑動調整模型優先模式或是實體優先模式。

問題

HS8836A 一直無法辨識,但是CP2102等等是好的
  • CSDN 這篇也是遇到一樣問題,不過是焊接虛焊的問題。
HS8836A REF 腳位下拉電阻

datasheet 裡面用的是 10k,但 schematic 裡面用的是 100k,不果目前兩種都無法正確連線到,看網路上寫沒差,姑且先這樣。

decoupling capacitor

小卡的板子在 5V 的地方 decoupling capacitor 的容值是 0.1uF,但是原本的板子是 4.7uF,替換過後還是連不到,不確定有沒有影響。

HS8826A VID PID on linux

214b:7250

  • VID PID search Linux 讀得到 HS8826A 但是 Windows 就讀不到,不確定是不是 HS8826A 的問題。

用 libusb-win32 也有抓到 Generic USB Hub

Driver installation

214b:7250

跟著這個教學把原本ElectronBot@PZH的驅動程式移除,然後重新安裝,裝完就變成上圖這個樣子。本來想按照 Readme 裡面做,但是我發現我電腦關掉驅動強制簽名之後,還是沒辦法抓到並安裝,所以就用這個方法。

自己心 layout 的頭部板子燒綠角位有錯誤

這裡的 GND 跟 SWDIO 和原本版本相反了,燒綠的時候要注意要把兩條線反過來才能正常燒錄。 switch SWDIO and GND

馬達接線
可以參考 github issue 裡面的圖 (不過是稚暉君的 layout,小卡的板子不太一樣)

馬達角度讀取位置
在根目錄 Ctrl/Motor.cpp:7 的地方設定斷點,就可以看到馬達的角度讀取位置 (0 ~ 180) 通常量起來會有偏移,可能會到負值最大值也沒有 180。

馬達 5 個全上 SensorBoard 會卡住
把兩個中間馬達的 shell 外面剪掉。
9g 馬達供電不足

更新:換成小馬達之後就不用這樣做了

馬達供電不足,導致馬達轉不動,要從 USB 底板供電。 測試過後,多焊接兩題線到中間的 5V 和 GND,就可以正常運作了。

4.3g 馬達來回跳動問題

馬達上電之後,會不斷來回轉動看起來有點像overshooting (6號馬達有問題,其他都正常)

測試: 1. 不是馬達正負線接反 (有試過直接返著接,他直接爆轉轉到可變電阻中間被扭斷) 2. 角度感測器沒有接錯讀值正常 3. 有把PID從(10 0 50)調成(5 0 30)(1 0 0)但是看起來響應都一樣所以應該不是這個問題 4. 也不是 FM116C 壞掉的問題,有換過其他的但結果還是一樣

8/16 新問題:今天把壞掉的板子漢好的板子PWM拿來比較,發現壞掉的PWM頻率比較低

  • 好的:

  • 壞掉的:

是軟體的問題嗚嗚嗚,修好了。 不過還是怪怪的,我調PID沒有任何變化,不知道是哪裡有問題。

修好之後的波型:

螢幕發熱燒壞
原來是螢幕反向貼到電路板上面的時候,因為螢幕的背面是鐵板,所以直接短路了,好險電路板沒壞。 換新的螢幕之後,在背面多貼了賣膠帶隔絕。

成品展示

  • 電路組裝測試

  • 組裝完成圖

  • 展示影片