相关链接
项目简介
本项目是基于ESP32单片机四足机器人设计,从创建工程到写此文共用时7天,从已有的步态开始建立。
主要功能:执行16个不同的动作,配合表情变化,可以通过手机APP使用UDP远程控制,
可以使用AP模式或者STAION模式来控制,也可以用手机app配网无需打开或者更改程序,
带OTA空中下载功能方便更新,OTA网址可以通过手机app写入,使用巴法云平台托管OTA更新所需bin文件。
项目功能
- 机器人16个动作:立正,前进,后退,左转,右转,正常,趴下,睡眠,狗刨,装死,过来,臣服,你好,手指,投降,跳舞。
- 可以使用手机app或者电脑上的NetAssist通过udp协议直接向单片机传输动作指令或是功能指令。
- 功能指令包括:动作控制,单个舵机控制,PWM频率控制,配网,配置OTA更新网址,切换ESP32的WiFi模式,触发OTA更新程序。
- 动作指令包括:16个基础动作,RGB炫彩灯任务的挂起和恢复,显示本地IP,9个表情轮询展示。
- 带有0.96寸的OLED屏幕能够显示表情和提示信息:9个表情映射16个动作,显示本地IP,提示配网信息接受成功,显示OTA更新中提示,展示WiFi模式选择菜单。
- 两颗WS2812目前就做了炫彩灯功能。
- 四个按键,EN,BOOT,Key1,Key2,配合使用能够切换WiFi模式和触发OTA更新。
- 使用OTA更新功能方便进行远程更新下载。
项目参数
- 采用PCA9685芯片控制8个舵机,使用I2C和单片机进行通信,能够节约引脚和算力。
- 直接市面上比较普遍的充放一体模块进行电源设计,节省设计时间。链接
- 四足的零件是直接淘宝买的成品。链接
- 舵机是最便宜最烂的SG90。
硬件说明
本项目由以下部分组成:电源部分,主控部分,舵机控制部分,按键控制部分,功能器件部分。
硬件联系图
加重颜色代表底层,而减轻颜色代表顶层,最淡的代表盖在顶层之上。

单片机程序说明
一开始其实想用蓝牙的,连接方便,单片机程序方便,手机APP程序开发也方便,就是太大了,我没开蓝牙之前编译完用了22%的flash(默认程序分配1.2M大小),开蓝牙一下子占用到90%,导致后续程序估计写不下了,最后就用了UDP。
arduino的自带库是这样的,用idf就会好很多。
本程序采用FreeRTOS多任务结构运行,任务之间使用任务通知进行沟通,包括:
void ota_task(void *param)
//OTA任务,可被其他任务创建,用于触发OTA更新
void udp_control(void *param)
//UDP任务,用于接收发过来的指令,解析后通知其他任务处理,还能在启动任务时广播发出本地IP和WiFi模式以及RGB的状态,以便单片机不知道手机APP的IP情况下让APP也能接收后解析读取
void motion_task(void *param)
//舵机控制任务,接收UDP任务发送过来的通知,并且执行相应动作
void oled_task(void *param)
//OLED控制任务,接收UDP任务发送过来的通知,并且执行相应显示,还能够通过按键显示菜单来通知UDP重启并且切换WiFi模式
void ws2812_task(void *param)
//RGB炫彩灯任务,简单执行炫彩灯,可以被指令挂起或者恢复达到切换RGB显示的目的
void setup()
void loop()
//在setup中创建开始所需的任务以及一些必须的初始化,随后在loop中删除任务节约内存
OTA使用巴法云服务器进行bin文件托管,相关教程可以参考这篇blog。
还把一些比较繁杂的过程都写成Class了,main.cpp就是主要流程。
由于这个工程写的比较快,没有美化什么,所以阅读估计不太方便。
具体的程序内容和介绍可以去看我github库,之后大概会在里面的readme写更加详细的代码功能。
随后有空可能会在代码中添加注释,这种比较小的工程不太愿意写什么注释,大家可以用VSCode里面找个AI插件,让AI辅助注释一下。目前我在用CodeGeeX,不能说特别厉害,但还是挺好使的,最主要不用钱!
可以看一下我的Commit,确实提交次数不多,都是在加功能,没啥优化。

手机APP程序说明
AI2的工程文件也会放在GitHub库中,这里只会发目前版本的APK文件。
可以看到默认master分支里面的 appinventor2 文件夹里面就是aia文件。
使用APP Inventor 2进行图形化编程开发,对于没有Android开发经验的新人还是非常友好的。
我直接用的MIT的原站而不是国内的不维护的网站,不知道工程能不能兼容。
唯一使用UDP拓展,就是这个:

图形化编程太大了不好截图就不发了,实物图有软件在手机上的截图
主要控件内容:
//指令发送部分,包括指令填写框和发送按钮
//单个舵机控制部分,同样使用上面的指令发送按钮
//5个移动动作:四向运动和立正,10个展示动作
//RGB开关
//我想跳舞!16号动作
//UDP所需的remote IP 和 remote Port填写框(会自动输入,也可以手动)和连接开关
//UDP不像TCP那样一对一连接,所以这个连接按钮主要功能是切换面板内容
//UDP监听开关和监听显示框,是程序控制的
//AP模式和STA模式两个按钮,对应单片机上的AP模式和STA模式
//配网:WiFi名称和WiFi密码输入框,点击配网按钮
//OTA网址输入框和发送框,用于更新OTA网址
注意事项
- 短期项目,内容比较潦草,可能会有奇怪的BUG,没有美化,功能也不是很完善。
- 第一次下载需要物理连接串口进行platformIO的下载或者直接下载bin文件,之后可以脱离物理串口,连接网络后通过OTA进行空中下载。
- 要使用OTA功能需要刷入OTA固件才行,而且Flash分配要有OTA的空间(默认就有)。
- 板子上开的m3的孔对不上底板上的洞,我是用扎带把PCB板和底板捆起来的。
- 舵机要对应我视频内的序号来,否则就得改代码了。
- 如果买的是我发的连接的四足机器人套件,舵机就得买6孔机臂的,否则装不进
- 不会写步态,是直接使用的这个UP主发的视频下的链接然后改了改,前后移动基本原地踏步。
- WiFi名称还没测试过能否使用中文,不过工程全部都是UTF-8编码的,应该没问题。
- 我链接的APP Inventor 2网站或者我的GitHub库网站进不去不要来问我。
组装流程
会一并剪进视频当中。
实物图









原理图和PCB



Comments NOTHING