micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室
概要
阿凱在本文中講解了如何使用MicroPython-ESP32通過PCA9685模塊控制舵機旋轉角度。同時也涉及到了MicroPython-ESP32的I2C資源與API講解。
出品:1Z實驗室 (1ZLAB: Make Things Easy)
目錄
PCA9685模塊簡介
pca9685.jpg
問題1:為什么我們要用到舵機驅動模塊?
工作電壓 首先ESP32的工作電壓是3.3v,不能直接驅動額定電壓在5v-7.4v的數字舵機,需要外接電源。
工作電流 舵機工作電流在100MA~1.5A,運動越快電流越大,可能會損傷USB口.
IO資源 一般的開發板IO資源有限,例如控制一個6DOF的機械臂,需要占用六個IO口,如果是蛛形機器人的話需要用的也就更多,所以使用舵機驅動板是一種節省IO資源的方式。
問題2:什么是PCA9685?
PCA9685是一款基于IIC總線通信的12位精度16通道PWM波輸出的芯片,該芯片最初由NXP推出時主要面向LED開關調光,但就目前國內的形式來看,好像在被Arduino在舵機控制領域使用的更廣泛。 stm32+pca9685控制舵機機械臂
問題3:單片機與PCA9685如何通信?
pca9685-cascade.jpg
PCA9685模塊與單片機通過I2C總線的方式進行通信。
I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。
每個PCA9685都可以分配一個地址位,通過I2C接口,一個單片機可以控制最多64個PCA9685舵機控制板。每個舵機控制板上可以搭載16個舵機。
詳細的使用說明見奇果派工坊的這篇文章,寫的很詳細。
MicroPython驅動PCA9685
Adafruit公司開源了MicroPython控制PCA9685模塊的工程:
micropython-adafruit-pca9685
這里我們需要用到這個工程里面的兩個文件:
其中關于舵機驅動的API看這里:Servo Driver
MicroPython-ESP32驅動PCA9685
上傳庫文件
接下來講MicroPython-ESP32與PCA9685。
首先將micropython-adafruit-pca9685中的pca9685.py與servo.py保存到本地,并通過ampy上傳到ESP32的文件系統中。
創建一個I2C對象
在ESP32里面可以自定義引腳為I2C接口,支持I2C的管腳編號為:
0, 2, 4, 5, 9, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27
0號管腳還有2號管腳比較特殊,不推薦使用。
這里我們使用25號引腳作為SCL引腳(串行時鐘線),26號引腳為SDA(串行數據線)引腳。
連接方式
GND -> ESP32的GND (外接電源與ESP32共地)
SCL -> ESP32 D25
SDA -> ESP32 D26
VCC -> ESP32 3.3V
V+ -> 5v外接電源
代碼片段
from machine import I2C,Pin
gpio_scl = 25
gpio_sda = 26
# 初始化I2C
scl_pin = Pin(gpio_scl)
sda_pin = Pin(gpio_sda)
i2c = I2C(scl=scl_pin, sda = sda_pin, freq=10000) # 創建I2C實例
其中SCL時鐘頻率支持范圍 0 < freq ≤ 500000(Hz)
創建Servos對象
從之前的servo.py引入Servos對象,注意不是MicroPython自帶的Servo.
實例化的時候,傳入我們上面創建的I2C對象,同時指定當前PCA9685模塊的地址,默認是0x40, 你也可以通過焊接PCA9685模塊上面的焊點修改地址編號。
from servo import Servos
servos = Servos(i2c, address=0x40)
控制舵機的角度
設定舵機控制板上的舵機編號servo_idx, 有效范圍為1-16
另外設置舵機舵機的角度degree。
TODO 查看源碼 確認degree的范圍
servos.position(servo_idx, degrees=degree)
項目實戰
face-track.png
參考文章
1ZLAB推廣
出品:1Z實驗室 (1ZLAB: Make Things Easy)
1Z實驗室 Make Things Easy . 致力于在機器人+計算機視覺+人工智能的重疊區域, 制作小白友好的教程.
ad.png
總結
以上是生活随笔為你收集整理的micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 对二维数组排序 升序 降序
- 下一篇: python with open 循环建