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):  //我不想把舵机转到最尽0或180度,个人喜好;当然我这里是每次转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

这里我们需要用到这个工程里面的两个文件:

我们把这两个文件上传到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 可以到他们官网下载有免费版的】
这里写图片描述

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

  • 10
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值