qq交流群:757384775
作者:B站up 李不胖谁胖
概述
简介:
相信童年看过《机器人瓦力》电影的小伙伴一定都想拥有一台属于自己的瓦力,本教程就DIY瓦力所需的物料和控制程序开始,带着大家一起DIY一个瓦力机器人。我想没有男孩子能抵抗的住这集成声、光、电、动的小机器人玩具吧,寒假带着娃做一个,把隔壁小孩馋哭 哈哈。
物料清单(BOM)
序号 | 模块 | 功能 | 数量 | 参考价格(单价) | 参考价格(总价) | 备注 |
---|---|---|---|---|---|---|
1 | Arduino UNO R3开发板 | 主控芯片 | 1 | 16.4 | 16.4 | |
2 | ESP32 C3开发板 | MQTT协议连接服务器 | 1 | 9.9 | 9.9 | |
3 | L298N 双H桥点击驱动板 | 驱动履带电机 | 1 | 6.4 | 6.4 | |
4 | PCA9685 16路舵机驱动板 | 舵机驱动 | 1 | 12.5 | 12.5 | |
5 | 随身WIFI | 提供WIFI | 1 | 15 | 15 | |
6 | DC-DC 12V 转5V 直流降压模块 | 12V 转 5V供电 | 1 | 5.9 | 5.9 | |
7 | 12V 370偏轴减速电机 107转/分钟 | 驱动履带 | 2 | 15 | 30 | 注意要买偏轴的,不是中置的轴 |
8 | 18650电池盒(3节) | 电池仓 | 1 | 1.2 | 1.2 | |
9 | 18650电池 | 串联提供12V电源 | 3 | 8 | 24 | |
10 | 18650充电器 | 1 | 10 | 10 | ||
11 | SG90 9g舵机 | 驱动运动关节 | 7 | 3.79 | 26.53 | |
12 | DC电源插头5.5mm(公头) | 电池仓电源输出接头 | 2 | 0.3 | 0.6 | |
13 | PETG-ECO 黑色 | 打印履带、电机座 | 1 | 35 | 35 | 实际总用量大概1.2kg左右吧,毛估没有具体算过 |
14 | PETG-ECO 灰色 | 打印瓦力头部 | 1 | 35 | 35 | |
15 | PETG-ECO 卡特黄 | 打印瓦力身体 | 1 | 35 | 35 | |
16 | ASR PRO语音模块(带喇叭) | 语音识别 | 1 | 28.9 | 28.9 | 语音控制(可选) |
17 | 1.3寸TFT彩屏 | 天气时钟屏幕 | 1 | 12.9 | 12.9 | 天气时钟使用(可选) |
18 | ESP8266开发板 | 天气时钟控制芯片 | 1 | 13.3 | 13.3 | 天气时钟使用(可选) |
19 | 5V 激光模块 | 眼睛 | 1 | 0.65 | 0.65 | 可选 |
20 | WIFI摄像头 | 网络传输视频 | 1 | 20 | 20 | 可选 |
21 | Mini Mp3 Player | 播放音乐 | 1 | 3.8 | 3.8 | 可选 |
22 | MFRC-522 RFID模块 | NFC无线识别 | 1 | 3.9 | 3.9 | 可选 |
23 | DHT11温度传感器 | 测量温度 | 1 | 2.5 | 2.5 | 可选 |
24 | 船型开关 | 电源开关 | 1 | 0.5 | 0.5 | 可选 |
25 | 3W 8R 喇叭 | 播放音乐 | 1 | 4.2 | 4.2 | 可选 |
26 | 1u2g云服务器 | MQTT服务器、部署H5控制页面 | 1 | 69 | 69 | 可选 |
27 | 丙烯颜料(12种盒装) | 瓦力上色 | 1 | 1.8 | 1.8 | 可选 |
合计 | 424.88 |
如果只想完成基础功能,实现履带底盘的行进和关节运动的话硬件部分成本大概在160元,扩展的模块可根据自己需要选择性购买即可。
一下是Diy必备的一些工具和常见的小物品就不算在内了
序号 | 工具&物品名称 |
---|---|
1 | 热熔胶枪 |
2 | 万用表 |
3 | 电烙铁 |
4 | 老虎钳 |
5 | TF卡、读卡器 |
6 | 回形针 |
7 | M3螺柱 螺母 |
8 | 502胶水 |
9 | 杜邦线(公对母、母对母) |
使用或涉及的技术栈
Arduino IDE 开发环境
Element Plus + Vue3 + Vite + TypeScript 自建H5控制页面
Linux + Nginx + Docker + EMQX 后台服务器
一、Web控制端
1.1 Arduino IDE开发环境搭建
Arduino官网 https://www.arduino.cc/
Arduino中文社区 https://arduino.me/
安装Arduino软件
添加开发板管理器 文件 -> 首选项 -> 其他开发板管理器地址 将如下链接填入
一下是Arduino中文社区提供的index 会比github上下载的快些,github可能会遇到下载失败的情况
1 | http://arduino.me/packages/esp8266.json |
3.安装Blinker库 在线安装失败 请尝试离线安装包 https://www.diandeng.tech/doc/getting-start-esp32-wifi
Blinker 首页 https://www.diandeng.tech/home
Blinker 的github仓库地址可以自行下载最新支持包 https://github.com/blinker-iot
Blinker 官网提供的安装包 https://www.diandeng.tech/sdk/blinker-library-0.3.10230510.zip
4.安装 ESP32、ESP8266 开发板库,直接点击分享的对应库的exe文件安装既可
5.安装USB串口驱动,这个要看你所使用的开发板上下载芯片的型号,合宙的ESP32 C3要安装CH343驱动,常见的是CH34X、CP21XX芯片等,文件里分享了这两种,如果没有的话请搜索你开发板的串口芯片型号,下载对应驱动后安装。
1.2 使用Blinker App 作为控制端
新建Blinker独立设备、复制设备秘钥替换代码中的Blinker设备秘钥。
1
2// Blinker设备秘钥
char auth[] = "xxxxxxxx";更新Blinker App 瓦力设备的界面配置,使用如下代码进行替换。
瓦力界面配置代码:
1 | {¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨blinker入门示例¨¨t1¨¨文本2¨¨bg¨Ë¨ico¨´´¨cols¨Í¨rows¨Ê¨key¨¨tex-272¨´x´É´y´É¨speech¨|÷¨lstyle¨Ê¨clr¨¨#FFF¨}{ßC¨btn¨ßJ¨fas fa-arrow-alt-down¨¨mode¨ÉßE¨后退¨ßGßHßIÉßKËßLËßM¨btn-back¨´x´Ì´y´¤FßPÉßQ¨#076EEF¨}{ßCßSßJ¨fas fa-arrow-alt-up¨ßUÉßE¨前进¨ßGßHßIÉßKËßLËßM¨btn-go¨´x´Ì´y´¤BßQßXßPÉ}{ßCßSßJ¨fal fa-power-off¨ßUÉßE¨急停¨ßGßHßIÉßKËßLËßM¨btn-stop¨´x´Ì´y´¤DßQ¨#EA0909¨ßPÉ}{ßCßSßJ¨fas fa-arrow-alt-right¨ßUÉßE¨向右¨ßGßHßIÉßKËßLËßM¨btn-right¨´x´Î´y´¤DßPÉßQßX}{ßCßSßJ¨fas fa-arrow-alt-left¨ßUÉßE¨向左¨ßGßHßIÉßKËßLËßM¨btn-left¨´x´Ê´y´¤DßQßXßPÉ}{ßCßSßJ¨fad fa-arrow-alt-circle-up¨ßUÉßE¨抬脖子¨ßGßHßIÉßKËßLËßM¨btn-nick-up¨´x´Ì´y´ÏßQ¨#FBA613¨}{ßCßSßJ¨fad fa-arrow-alt-circle-down¨ßUÉßE¨低脖子¨ßGßHßIÉßKËßLËßM¨btn-nick-down¨´x´Ì´y´ÑßQßoßPÉ}{ßCßSßJ¨fad fa-arrow-alt-up¨ßUÉßE¨左手上¨ßGßHßIÉßKËßLËßM¨btn-left-hand-up¨´x´É´y´ÒßQ¨#00A90C¨ßPÉ}{ßCßSßJßsßUÉßE¨右手上¨ßGßHßIÉßKËßLËßM¨btn-right-hand-up¨´x´Ï´y´ÒßQßv}{ßCßSßJ¨fad fa-arrow-alt-down¨ßUÉßE¨左手下¨ßGßHßIÉßKËßLËßM¨btn-left-hand-down¨´x´É´y´¤BßPÉßQßv}{ßCßSßJßyßUÉßE¨右手下¨ßGßHßIÉßKËßLËßM¨btn-right-hand-down¨´x´Ï´y´¤BßQßv}{ßCßSßJ¨fad fa-arrow-alt-circle-left¨ßUÉßE¨左转头¨ßGßHßIÉßKËßLËßM¨btn-head-left¨´x´Ê´y´ÐßQßo}{ßCßSßJ¨fad fa-arrow-alt-circle-right¨ßUÉßE¨右转头¨ßGßHßIÉßKËßLËßM¨btn-head-right¨´x´Î´y´ÐßPÉßQßo}{ßCßSßJßyßUÉßE´低头´ßGßHßIÉßKËßLËßM¨btn-head-down¨´x´Ì´y´ÍßQßoßPÉ}{ßCßSßJßsßUÉßE´抬头´ßGßHßIÉßKËßLËßM¨btn-head-up¨´x´Ì´y´ËßQßo}{ßCßSßJ¨fad fa-user-robot¨ßUÉßE¨动作1¨ßGßHßIÉßKËßLËßM¨btn-act1¨´x´É´y´ÎßQßXßPÉ}{ßCßSßJ¨fad fa-redo-alt¨ßUÉßE¨动作复位¨ßGßHßIÉßKËßLËßM¨btn-reset¨´x´Ï´y´ÎßPÉßQßX}{ßCßSßJ¨fad fa-lightbulb-on¨ßUÉßE´激光´ßGßHßIÉßKËßLËßM¨btn-led¨´x´É´y´ÌßPÉßQße}{ßCßSßJ¨fad fa-thermometer-three-quarters¨ßUÉßE´温度´ßGßHßIÉßKËßLËßM¨btn-tem¨´x´Ï´y´ÌßPÉßQßv}{ßC¨deb¨ßUÉßIÉßKÑßLÌßM¨debug¨´x´É´y´¤H}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡´on´¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ß1P¨source_zh¨¨开关状态¨¨state¨|´on´ß1S÷¨state_zh¨|´打开´´关闭´÷}÷´rt´|÷} |
3.烧写控制代码到ESP32 C3开发板
合宙ESP32 C3 开发板官方文档 https://wiki.luatos.com/chips/esp32c3/index.html
如果使用的开发板不是ESP32 C3 请自行替换引脚定义,否则编译可能会出现报错。
代码中需要替换以下内容
1 | // Blinker设备秘钥 |
更改设备秘钥和wifi名称密码后,将ESP32_Blinker.ino 烧录到ESP32 C3开发板上
烧录之前请确保Arduino IDE已安装如下库:
1 | Blinker |
使用合宙ESP32 C3 烧录程序有一下几点需要注意,否则可能会导致烧录失败:
1.Flash Mode选择 “DIO” 模式。
2.USB CDC On Boot 选择 “Enabled” 方便串口调试。
3.按住板载boot键上电进入下载模式,此时两个板载led微亮。
4.如果烧录完成,板载的灯没有亮起,还是微亮状态,请按下reset键重启,或者给开发板重新上电。
1.3 使用自建H5页面作为控制端
- 本节需要在Linux环境下使用Docker安装EMQTX,并使用Nginx作为Web服务器部署瓦力的H5控制页面。
- EMQX官方文档:https://www.emqx.io/docs/zh/latest/deploy/install-docker.html
- EMQX Vue3示例:https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-Vue3.js
1.安装Docker
1 | 安装相关工具 |
2.Docker安装 EMQX
1 | 拉取镜像 |
3.安装Nginx
1 | yum install -y nginx |
4.部署H5控制页面
1 | 安装unzip |
3.烧录ESP32_H5.ino程序到ESP32中
- 打开 ESP32_H5.ino 文件,替换mqtt链接相关的参数
1 | // MQTT Broker |
- 参数替换完成后,烧录程序到ESP32中,打开串口监视器查看日志。
- 打开H5控制页面,测试发送指令,并在串口监视器中查看。
考虑到这里部署H5页面对没接触过Linux的初学者可能会有些挑战、还有些小伙伴没有服务器的情况,所以如果不想搭建的话可以使用我分享出来的网站和MQTT服务器直接使用,为防止多个小伙伴一起使用时,串Topic的情况,使用时请务必按照格式替换Topic
1 | H5控制页面地址:https://walle.werfamily.fun |
自己搭建:需要替换如下,协议、服务器地址、端口
使用我搭建好的:topic请输入自己的B站UID
为了防止小伙伴订阅的主题重复冲突,所以使用时务必要将UID替换为自己的B站UID
B站UID查看的方法为 进入”我的主页” -> 点击空间 -> 点击详情
如何获取UID?
电脑浏览器查看自己的UID 在个人资料中
手机端查看自己的UID
第一步
第二步
第三步
二、履带电机控制
2.1 履带电机使用的是12V偏轴107转/分钟的减速电机,电机驱动使用的是双H桥L298N驱动板
L298N资料:
IN1 | IN2 | ENA(A) | 电机A状态 |
---|---|---|---|
0或1 | 0或1 | 0 | 停止 |
1 | 0 | 1 | 顺时针 |
0 | 1 | 1 | 逆时针 |
0 | 0 | 1 | 制动 |
1 | 1 | 1 | 制动 |
IN3 | IN4 | ENA(B) | 电机B状态 |
---|---|---|---|
0或1 | 0或1 | 0 | 停止 |
1 | 0 | 1 | 顺时针 |
0 | 1 | 1 | 逆时针 |
0 | 0 | 1 | 制动 |
1 | 1 | 1 | 制动 |
这里我们不使用PWM调速,ENA(A) ENA(B)默认短接就是最大转速。
控制方式:两个履带电机正转为前进,都反转为后退,一正转一反转为转向。
IN1 | IN2 | IN3 | IN4 | 行进状态 |
---|---|---|---|---|
1 | 1 | 1 | 1 | 停止 |
0 | 0 | 0 | 0 | 停止 |
1 | 0 | 1 | 0 | 前进 |
0 | 1 | 0 | 1 | 后退 |
1 | 0 | 0 | 1 | 右转 |
0 | 1 | 1 | 0 | 左转 |
2.2 电路连接:
DC12V降压模块的12V 连接 L298N 的12V输入来给L298N供电。
1 | L298N模块 Arduino UNO开发板 |
1 | ESP32 C3开发板 Arduino UNO开发板 |
2.3 Arduino UNO代码
百度网盘链接:https://pan.baidu.com/s/1HNKWE4Z2C2nG0kT3WxBQWA?pwd=zm6l
1 | /** |
H5页面控制方式的ESP32 C3代码(推荐,连接很稳定)
百度网盘链接:https://pan.baidu.com/s/1HEGymdvOeyf_LJFmb-WZXg?pwd=qh1i
1 | /** |
Blinker控制方式的ESP32 C3代码(连接可能不稳定)
百度网盘链接:https://pan.baidu.com/s/1OK_kX1OvmjliplcLMSUIGQ?pwd=e1in
1 | /** |
三、舵机控制
舵机控制使用的是PCA9685 16路舵机驱动板
下面是电路连接图:
1 | PCA9685舵机驱动板 Arduino UNO开发板 |
使用前请先确保Arduino IDE已安装了Adafruit PWM Servo Driver Library库
Arduino UNO舵机控制代码
百度网盘地址:链接:https://pan.baidu.com/s/1U4rW1MrFWgN5JhVQwd_Qtg?pwd=rghc
1 | /** |
四、扩展模块(选配)
没有使用的模块请自行删除对应代码
完整版(包含所有模块)ESP32 C3代码:链接:https://pan.baidu.com/s/1AcRYgk3Fzj8J-DgBbBVwbA?pwd=453w
完整版(包含所有模块)Arduino UNO代码:链接:https://pan.baidu.com/s/1WTP7OwrzfyabWFWJCDkhqA?pwd=w5f2
使用语音控制模块前请先安装天问Block软件
天问官网 :http://www.twen51.com/new/twen51/index.php
ASR PRO语音模块代码:https://pan.baidu.com/s/1F9mbbMGzFKIO1RYE3TRoSA?pwd=ucwb
4.1 ASR PRO语音控制模块
1 |
|
4.2 DHT11温湿度模块
需要安装 DHT sensor library 库
1 | DHT11温湿度模块 ESP32 C3 |
4.3 RC522 RFID识别模块
Arduino_NFC代码:链接:https://pan.baidu.com/s/1FvI96uUmDy-ZOgpB4U8FaA?pwd=wzwa
需要安装 MFRC522 库
1 | RC522 RFID模块 Arduino UNO 开发板 |
4.4 Mini Mp3Player Mp3播放模块
需要安装 DFRobotDFPlayerMini 库
官方文档:https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
把音乐文件夹导入SD卡中
音乐链接:https://pan.baidu.com/s/15qRZ5JTXNoIE5nzJVDV0Vw?pwd=dmkf
Arduino_MP3代码:链接:https://pan.baidu.com/s/1Si77ZYmtONfURM49FJ6aQw?pwd=dpfk
1 | Mini Mp3Player模块 Arduino UNO 开发板 |
4.5 红色激光
1 | 红色激光头 ESP32 C3 |
问题Q&A
为了更快的排查问题,解决问题,按一下图中的定义来约定一二三段通信。
首先看控制链路的原理图:
整体连接图:
控制不了?没反应?
(1)首先确保H5控制端和ESP32都连接上了mqtt服务器。
(2)一段通信:H5控制端连接mqtt服务器后,点击发送指令,如果页面自己能收到指令并打印日志,则证明一段通信没问题。
(3)二段通信:H5发送指令后,ESP32串口有相应日志输出,并且板载Led交替闪烁。
(4)三段通信:H5发送指令后,UNO串口有相应日志输出。
ESP32连接不上MQTT服务器?
1.mqtt的topic是否已替换
2.WIFI和密码是否已替换
如何提问?
先确保以上链路的通信没问题之后,在检查模块接线。
1.开发板代码版本、问题描述
2.ESP32串口日志截图
3.UNO串口日志截图
第一次写教程录视频,难免有些卡壳和不足,如有错误之处还请指正,请见谅。
如果感觉对你有帮助的话,请帮忙点个一键三连,谢谢。