前言:
在测试不同区域的红外、毫米波和激光雷达等传感器时,需要人工招手和移动进行测试。尽管这种测试是必要的,但却难以保证测试的一致性,因为人的动作很难做到完全一致。解决方案:为了提高测试的一致性,我们测试考虑开发一种可摇摆且能发热的测试工具。这样的工具可以模拟不同动作和热源,以确保传感器在各个测试场景下的识别一致性。
这个测试工具将带来以下好处:
- 一致性测试:可以通过设定不同的摇摆和发热模式,确保传感器在各种情况下的稳定性和准确性。
- 自动化测试:摇摆和发热功能的引入将使测试过程更加自动化,减少了人工测试的需求和错误可能性。
- 提高效率:测试工具的使用可以大大节省测试时间,提高测试效率,从而加快产品开发和上市时间。
具体要求内容如下:
- 供电:5V
- 发热:5V供电发热贴,温度预计37°~40°
- 幅度:左右摇摆80°,摇摆间隔为0.7s(这2个参数需要可调节)
- 开关:通电后可以根据开关按键开启,开启中也可以支持手机蓝牙控制开关
一、实现方法
使用Thonny编写MicroPython代码逻辑,然后通过固件程序烧录到ESP32单片机中,通过GPIO口给舵机发送PWM信号,利用占空比控制舵机旋转角度,舵机上增加拓展支架,支架上贴上“USB发热贴”,从而实现发热“摇摆臂”需求。
二、准备材料
- 舵机:型号为MG996R金属齿轮180°数字电机
- ESP32的开发版
- USB发热贴
三、组装设备
- 将舵机的线接入到ESP32板的引脚上,接线方式如下图(黄线接入GPIO引脚中,我这里接入的是4)
- 将发热贴USB剪断,然后将黑线接到ESP32板子的GND引脚,红色线接到5V引脚上。
- 给舵机增加一个拓展杆,粘贴上USB发热贴,如下图
四、编写代码
- 搭建开发环境,可以看我上一篇文章:Thonny+MicroPython+ESP32开发环境配置以及遇到烧录固件出现error解决方法 - z天赐 - 博客园 (cnblogs.com)
-
新建main.py
- 在 Thonny 中的 MicroPython 设备中创建一个名为 main.py 的文件。该文件将被保存在我们刷入 ESP32 的 MicroPython 固件中。为什么要以 main.py 命名?因为 ESP32 在上电时,固件默认执行 main.py 文件,而其他文件不会执行。通过这样的设置,我们可以使机械臂在上电时开始摇摆动作。
- 编写机械臂摇摆代码
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打印机做的