micropython ESP32+PCA9685 舵机转速控制

我的ESP32板子是星瞳的板子:
这里写图片描述
PCA9685 16路舵机控制板子也是星瞳的:
这里写图片描述

(上面两个板子其实无论是什么厂家的板子都差别不大)

整个工作过程:
esp32烧录micropython固件,将用micropython来编写代码,esp32连接数据线到电脑,电脑通过串口工具编写代码,esp32接收后通过i2c给pca9685,pca9685控制舵机运动。

接线图:
这里写图片描述

我写的代码:

import time
from machine import I2C,Pin
from servo import Servos
i2c=I2C(sda=Pin(21),scl=Pin(22),freq=10000)
servos=Servos(i2c,address=0x40)

//while循环下面操作
while True:
    for i in range(2, 170):  //我不想把舵机转到最尽0180度,个人喜好;当然我这里是每次转1°,如果你想调快点
                             //你可以【for i in range(2,170, 2)】,后面的2是步伐相当于c++里面的2++ 
        servos.position(0,i)  //0是表示pca9685的舵机接口,我接的是0号排针;i表示舵机位置
        time.sleep_ms(10)     
    for i in range(170, 2, -1):
        servos.position(0,i)
        time.sleep_ms(10)

对比用 arduino 的舵机转速调节程序:

#include <Servo.h>    // 声明调用Servo.h库
Servo myservo;        // 创建一个舵机对象
int pos = 0;          // 变量pos用来存储舵机位置
void setup() { 
    myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
} 

void loop() { 
   for(pos = 0; pos < 180; pos += 1){    // 舵机从0°转到180°,每次增加1°          
      myservo.write(pos);           // 给舵机写入角度   
      delay(15);                    // 延时15ms让舵机转到指定位置
   }
    for(pos = 180; pos>=1; pos-=1) {    // 舵机从180°转回到0°,每次减小1°                               
       myservo.write(pos);        // 写角度到舵机     
       delay(15);                 // 延时15ms让舵机转到指定位置
    } 
}

特别的是esp32板子烧录的是适应esp32的micropython【详情可以参考1Z实验室阿凯简书】,特点是我没有找到舵机控制的servo库而我发现一些其他的pyboard板子烧录的micropython有servo库的,所以要用到Adafruit公司开源了MicroPython控制PCA9685模块的工程:micropython-adafruit-pca9685

这里我们需要用到这个工程里面的两个文件:
- pca9685.py
- servo.py

我们把这两个文件上传到esp32中,我们就可以调用它们来使用了。如何上传文件到esp32呢,我们在windows中可以通过ampy上传到ESP32的文件系统中。首先我们用 cmd 命令 pip install adafruit-ampy --upgrade,然后用命令ampy --port /COM5 put C:/servo.py【COM5是我esp32连接电脑显示的串口名称,具体看个人修改,好像很废话,大家应该都懂的】
通过终端重新链接, 查看刚刚存入的.py文件:

>>> import os
>>> os.listdir()
['boot.py', 'servo.py']

删除文件使用rm 指令:
ampy --port /COM5 rm servo.py

那么说了,那么多整体操作效果是:【串口工具那么多随便一个都可以啦,我用的是 MobaXterm 可以到他们官网下载有免费版的】
这里写图片描述

最后感谢大家的支持,转载请标明作者和出处。

猜你喜欢

转载自blog.csdn.net/mrjiale/article/details/81813439