首页 > 编程语言 >使用python开发了一个自动摇摆机械臂 Micropython+ESP332+舵机+USB发热贴

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

时间:2023-11-16 17:46:54浏览次数:36  
标签:Micropython USB 舵机 python ESP32 摇摆 测试 发热

前言:

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

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

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

  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打印机做的

 

 

标签:Micropython,USB,舵机,python,ESP32,摇摆,测试,发热
From: https://www.cnblogs.com/ztcbug/p/17836846.html

相关文章

  • Python/C API 异常处理
    Python/CAPI异常处理(部分)Python/CAPI中的异常处理与Unix系统中的errno变量类似,每个线程都有一个全局的异常指示器,该指示器只记录最后一次发生的异常。大多数函数都不会在成功执行时清除该指示器,但会在异常发生时及时设置该指示器。大部分函数函数也都会返回一个标志来指......
  • C++调用Python3实战,和PyImport_ImportModule返回NULL问题解决
    LinuxC++调用Python3入门准备以下面的目录结构演示如何在LinuxC/C++调用python3。|--hello.py|--main.cpp|--CMakeLists.txt hello.py:python的脚本,里面有2个函数main.cpp:c++函数CMakeLists.txt:Cmake文件,生成makefilepython脚本示例python脚本hello.py内容如下,......
  • 如何通过python实现导出题库到pdf?
    要通过Python实现将题库导出为PDF,你可以使用一些第三方库来处理PDF文件和生成内容。下面是一个基本的步骤和示例代码:安装所需的库:首先,你需要安装reportlab库,它是一个用于创建PDF文档的强大工具。你可以使用以下命令来安装该库:pipinstallreportlab创建PDF文档:使用reportlab库创建......
  • 基于pybind11实现C++程序中调用Python脚本增加C++程序扩展性
     文章目录前言一、pybind11与Python环境配置二、C++环境配置三、C++调用Python交互代码四、C++调用PythonDemo完整源码 前言Windows平台,在实际C++项目开发中,结合pybind11库,让python成为C++的脚本语言,可以大大提高C++程序的可扩展性,大大提高开发效率,特别......
  • C++通过pybind11调用Python 实现transpose
    在某些场合需要在C++实现类似numpy的numpy.transpose(a,axes)功能,但是很多库如NumCpp都没有提供这样的方法,只有二维矩阵的转置,没法进行多维矩阵任意维度的转换。比较简单的想法就是利用numpy现有的功能,在c++代码里面通过调用python来调用Numpy的transpose。直接调用Python提......
  • python基础之字典 Dictionary
      字典Dictionary¶在Python中,字典(Dictionary)是一种无序的、可变的数据类型,用于存储键-值(key-value)对的集合。字典是通过键来索引和访问值的,而不是通过位置。字典dictionary,在一些编程语言中也称为hash,map,是一种由键值对组成的数据结构。  基......
  • C++调用python踩坑记录
     目录0、参考文档及博客1、环境配置步骤2、C++调用python的方法代码框架:(同样来源于上面这篇博客,可用于测试环境配置成功与否)报错处理函数(1)处理方法一:PyErr_Print(2)处理方法二:PyErr_Fetch2.5、终极解决方案3、踩坑记录(1)python第三方库调用出错(2)python模块环......
  • 《流畅的Python》 读书笔记 第8章_对象引用、可变性和垃圾回收
    第8章_对象引用、可变性和垃圾回收本章的主题是对象与对象名称之间的区别。名称不是对象,而是单独的东西name='wuxianfeng'#name是对象名称'wuxianfeng'是个str对象variablesarelabels,notboxes变量是标注,而不是盒子引用式变量的名称解释本章还会讨论标识......
  • python生成 时间戳和日期格式
    1.获取当前日期要获取当前日期,我们可以使用datetime模块中的datetime类的now()方法。下面是获取当前日期的代码示例:importdatetimecurrent_date=datetime.datetime.now().date()print("当前日期:",current_date)#运行以上代码,输出的结果类似于:当前日期:2022-01-01#获取时......
  • Python的txt文本操作-读、写
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......