- 振动驱动的微型机器人非完整约束补偿的定位方法 (engineering.org.cn)
- NN机器人--微型视觉控制振动机器人 - 嘉立创EDA开源硬件平台 (oshwhub.com)
- 【ESP32最全学习笔记(基础篇)——4.ESP32 引脚介绍】「已注销」的博客-CSDN博客
- kilobot-超赞的集群机器人 - 知乎 (zhihu.com)
- GPIO模拟时序控制外设4——红外发射管-CSDN博客
项目概述:
- 应用场景
- 教学演示
- 群控算法验证
- 依赖与支持
- 支持TCP协议通信
- 多线程任务处理
- PWM调速
- NEC协议红外收发
开发中遇到的问题:
- 【已经解决】pcb设计问题 pwm信号线与wifi天线太近,导致丢包严重
- 解决方案
- 使用 esp-wroom-32u 外置天线 【封装与esp-wroom-32相同】
- 重画pcb
- 电驱放边缘
- 主控下方避开走线
- 无线设备过多导致干扰严重
- 改用TCP通信
- 解决方案
- 【已经解决】两个震动马达振幅不同,难以控制
- 解决方案
- 调整震动马达位置
- 使用两个不同通道的pwm输出
- 解决方案
- 【已经解决】脚针的角度对移动的控制影响很大,对焊接要求苛刻
- 解决方案
- 增厚pcb
- 反向焊接,探针头朝下
- 解决方案
你可以通过以下方式获得技术帮助:
- MkM
- bilibili 无我识l心空妙有
- CH340K 【TTL串口通信】
- esp32-wroom-32u 【外置天线】
- IRM-3638T 【红外接收】
- TP4059 【锂电池充放电保护】
- RT9193-33GB 【3.3v稳压】
- 5050ws2812b 【RGB彩灯】
- 小型震动振子马达1034
| GPIO | 功能 |
|---|---|
| pin2 | led |
| pin4 | 左电机 |
| pin17 | 右电机 |
| pin12 | ws2821 RGB |
| pin15 | IRM红外接收 |
| pin26 | 红外发射 |
| pin32 | 电池ADC |
❗必须先用usb数据线将机器人与电脑连接后再打开机器人电源开关,机器人电源开关在底部
❗当机器人死机无法进入系统时,只需要关闭再打开机器人电源 或者按下res开关
-
在Windows操作系统的电脑中安装Thonny 1. 开发环境搭建 (itprojects.cn) Python+ESP32 快速上手(持续更新中)【 通俗易懂 】_哔哩哔哩_bilibili
-
在手机中安装TCP调试工具,或使用电脑的TCP调试工具,端口号为7788 服务器IP地址为运行机器人后打印出的地址
-
打开Thonny,连接机器人与电脑,删除esp32中除boot.py文件以外的所有文件 将最新代码选中到esp32中 点击 上传到/
机器人红灯是充电中,绿灯是充满电,蓝灯是已上电 -
打开esp32的 config.txt 修改配置信息
❗调试阶段建议 清除main.py里的程序 或 关闭开机运行wifi
❗运行 main_.py 必须设置 main on
变量含义:
main <功能: 进入死循环, 防止core1卡死、看门狗重启>
wifi <当且仅当为on时开机启动wifi的TCP服务器>
PASSWORD <WiFi密码>
SSID <WiFi名,确保机器人与上位机共用同一局域网>
bot_name <机器人名>
team <机器人队伍名>
aruco_id <机器人顶部粘贴的Aruco码>
参考设置:
main on
wifi on
PASSWORD 66666666pi
SSID MKM_PRO8
bot_name yuk2
team blue
aruco_id [8]
- boot.py
- esp32启动时执行的文件,不可删除,不建议在内部运行程序
- config.txt
- 机器人信息配置,可以修改和添加,不可以删除
- ir_send.py
- 红外发送程序,NEC协议红外收发
- IRM.py
- 红外接收程序,NEC协议红外收发
- main.py
- TCP服务器,接收命令处理与任务分配
- save_load.py
- 读取和保存config中的配置
- WS2812.py
- ws2812RGB灯驱动
/connect <wifi名> <wifi密码>执行后设置并保存WiFi名和密码,连接该WiFi,开启TCP服务器/say2wifi <信息>执行后通过TCP发送该<信息> 到客户端/say2inf <信息>执行后通过调用红外发送该<信息>/m <左电机pwm> <右电机pwm> # 控制电机转速freq=1000 执行后设置当前电机PWM 0~1000/setcolor <r> <g> <b>设置当前ws2812颜色 范围0~255/show执行后通过TCP发送机器人信息到客户端- 内容包括:名,睡眠状态,ws2812颜色,队伍名
/team <队伍名>设置机器人队伍
- 相机设定
- 编辑
pc\visual_feedback.py的78行内容cap = cv2.VideoCapture(1,cv2.CAP_DSHOW) - 0,1,2...为所对应的相机
- 编辑
- 相机标定
- 运行
拍照.bat用不同的视角拍摄棋盘,数量越多越准确 - 运行
相机标定.bat通过拍照所得的图片生成相机标定文件
- 运行
- 确保机器人连接的WiFi是本机电脑开启的
- 运行客户端
客户端.bat
/liveip查看当前已经建立的连接/rescan从新扫描并建立新的连接/send [8] /show向 机器人[8]号 发送 /show/line [8] x y ae r令 机器人[8]号 沿直线运动到(x,y) 角度容许误差为ae 目标半径为r/arc [9] x0 y0 x1 y1令 机器人[8]号 以(x0,y0)为圆心 短弧为轨迹 运动到 (x1,y1)/rot [8] a ae令 机器人[8]号 旋转到角度a 容许角度误差为ae/rotp [8] x y ae令 机器人[8]号 旋转并指向(x,y) 容许角度误差为ae


