使用python开发了一个自动摇摆机械臂 Micropython+ESP332+舵机+USB发热贴

发布时间 2023-11-16 17:36:31作者: z天赐

前言:

在测试不同区域的红外、毫米波和激光雷达等传感器时,需要人工招手和移动进行测试。尽管这种测试是必要的,但却难以保证测试的一致性,因为人的动作很难做到完全一致。

解决方案:为了提高测试的一致性,我们测试考虑开发一种可摇摆且能发热的测试工具。这样的工具可以模拟不同动作和热源,以确保传感器在各个测试场景下的识别一致性。

这个测试工具将带来以下好处:

  1. 一致性测试:可以通过设定不同的摇摆和发热模式,确保传感器在各种情况下的稳定性和准确性。
  2. 自动化测试:摇摆和发热功能的引入将使测试过程更加自动化,减少了人工测试的需求和错误可能性。
  3. 提高效率:测试工具的使用可以大大节省测试时间,提高测试效率,从而加快产品开发和上市时间。
 
具体要求内容如下:
  1. 供电:5V
  2. 发热:5V供电发热贴,温度预计37°~40°
  3. 幅度:左右摇摆80°,摇摆间隔为0.7s(这2个参数需要可调节)
  4. 开关:通电后可以根据开关按键开启,开启中也可以支持手机蓝牙控制开关
 

一、实现方法

使用Thonny编写MicroPython代码逻辑,然后通过固件程序烧录到ESP32单片机中,通过GPIO口给舵机发送PWM信号,利用占空比控制舵机旋转角度,舵机上增加拓展支架,支架上贴上“USB发热贴”,从而实现发热“摇摆臂”需求。
 

二、准备材料

  1. 舵机:型号为MG996R金属齿轮180°数字电机
  1. ESP32的开发版
  1. USB发热贴
 

三、组装设备

  1. 将舵机的线接入到ESP32板的引脚上,接线方式如下图(黄线接入GPIO引脚中,我这里接入的是4)
 
  1. 将发热贴USB剪断,然后将黑线接到ESP32板子的GND引脚,红色线接到5V引脚上。
  2. 给舵机增加一个拓展杆,粘贴上USB发热贴,如下图
 

四、编写代码

  1. 搭建开发环境,可以看我上一篇文章:Thonny+MicroPython+ESP32开发环境配置以及遇到烧录固件出现error解决方法 - z天赐 - 博客园 (cnblogs.com)
  2. 新建main.py
      1. 在 Thonny 中的 MicroPython 设备中创建一个名为 main.py 的文件。该文件将被保存在我们刷入 ESP32 的 MicroPython 固件中。为什么要以 main.py 命名?因为 ESP32 在上电时,固件默认执行 main.py 文件,而其他文件不会执行。通过这样的设置,我们可以使机械臂在上电时开始摇摆动作。
  3. 编写机械臂摇摆代码
from machine import Pin, PWM
from time import sleep
# 初始化一个Pin对象来控制舵机电机的引脚
pin = Pin(4, Pin.OUT)
# 初始化一个PWM对象来控制舵机电机
servo_pwm = PWM(pin, freq=50, duty=0)
# 将舵机转到指定的角度的函数
def rotate(servo_pwm, degree):
    # 根据角度计算占空比值
    val = int(degree * 0.54 + 25)
    # 设置PWM信号的占空比
    servo_pwm.duty(val)
while True:
    # 将舵机转到60度的角度
    rotate(servo_pwm, 60)
    # 休眠0.7秒
    sleep(0.7)
    # 将舵机转到140度的角度
    rotate(servo_pwm, 140)
    # 休眠0.7秒
    sleep(0.7)

 

可以根据需要,修改第15行和19行的角度参数,以及调整 sleep 函数的时间,来自定义舵机的角度和速度。这样就可以实现定制机械臂的摆动角度和速度。
此时将ESP32使用5V供电即可实现自动摆臂。
 
 

效果演示

供电使用的充电宝,这个外壳使用的3D打印机做的