
智能机器狗训练营
简介
利用ESP8266 2.4G模块与ASRPro语音模块制作的智能机器狗。
简介:利用ESP8266 2.4G模块与ASRPro语音模块制作的智能机器狗。开源协议
:GPL 3.0
描述
视频链接:
项目简介
本项目基于ESP8266主控芯片开发的智能桌面宠物机器狗,参考嘉立创智能机器狗设计方案,具备低成本、易上手的特点(总成本约80元),适用于电子制作初学者学习与实践。作品融合物联网控制、机械结构与嵌入式开发技术,用户可通过手机Wi-Fi(AP模式)远程操控其动作,并搭配0.96英寸OLED屏幕(SSD1306/SSD1315驱动)实现电子宠物动态交互。
学习价值
项目涵盖电子电路设计(原理图与PCB绘制)、软件开发(vscode)、3D打印结构建模、软硬件联调全流程。该项目可作为桌面伴侣,兼具趣味性与技术深度,适用DIY爱好者二次开发。
项目功能

1.手机连接ESP8266创建的WiFi热点,浏览器访问设备IP 192.168.4.1。
2.宠物交互:触发预设动作和表情动画。
3.界面切换:显示时间、城市天气。
4.电量监控:实时显示电池电压及剩余电量百分比。
硬件设计
- 主控与通信:采用ESP8266芯片,集成Wi-Fi功能,支持无线遥控。
- 电源管理:使用21700/4000mAh 3.7V动力锂电池,为节约空间用厚双面胶粘贴于壳体内;搭配IP5306充电/放电电路,升压输出稳定5V,以满足舵机运行的需求,为后续扩展提供必要的电源。
- 交互模式:增加ASR-PRO模块,提供Wi-Fi手机遥控 + 离线语音指令识别。
- 低成本:核心部件包含舵机(20元)、OLED屏(4.5元)、主控(11元),兼 顾功能与性价比。
- 易于维护:集成CH340N下载电路与复位电路,提高开发效率。
- 其他优化:
- 预留扩展接口,方便使用0.96OLED屏幕或扩展TFT屏幕进行连接。
- type-c接口,支持一键下载和充电功能。
- 引出可用IO口并预留5V取电位。
- 增加触摸电路,提高人机交互功能。
电路解析
1、电源管理:
IP5306支持电池充电、5V升压输出,即一片IP5306等于充电电路+5V升压电路。对于小型便携式设备来说,其内部一般只有一小块锂电池,需要具备充电功能,同时设备内部的供电要求5V和3.3V,这对于锂电池3.2~4.2V的工作电压来说,需要先将电池电压升压到5V,再使用LDO降低到3.3V。

而IP5306完美的实现了上面两个功能,且提供最大2.4A的输出电流,转换效率高达92%。在空载状态下,系统会自动进入休眠,充电效率高,用于简化电路设计和pcb空间占用。同时IP5306支持边充边放,4颗LED电量显示,无需后续考虑电池的充放电切换问题。本设计采用ESOP-8封装,SW5为唤醒按钮,为避免插接件接触面积小导致的发热等问题,PCB布线应尽量粗。

按键方式
IP5306支持通过按键进行功能切换
按键持续时长50ms~2s,开启升压输出;
1s内连续短按两次,关闭升压输出;
Type-C接口

LDO稳压电路:
由于3.3V主要向主控、屏幕和向主控的IO2提供高电平启动信号,使esp-12f在通电时运行模式、下载模式),所需电流不大,不需要DCDC降压芯片,直接采用更简单的AMS1117-3.3V线性稳压器,将电池的电压降压为3.3V为主控和屏幕供电,C3,C4电容滤波,提高系统稳定性。

主控电路:
ESP-12F 是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型MCU,带有16位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成Wi-Fi MAC/ BB/RF/PA/LNA。ESP-12F Wi-Fi 模块支持标准的 IEEE802.11 b/g/n 协议,完整的TCP/IP 协议栈。用户可以使用该模块为现有设备添加联网功能,也可以构建独立的网络控制器。


启动模式:
启动模式是指设备在上电或复位时进入的工作模式。对不同的GPIO引脚施加不同的电平进入不同的启动模式。经过查询模组的规格书,可通过设置以下引脚的电平状态分别进入下载模式和运行模式。

故GPIO0、EN、RST、GPIO2必须上拉到VCC,GPIO15必须下拉到GND进入到运行模式;只需将GPIO0下拉到GND则进入下载模式。
舵机接口:
一般小型舵机的工作电压为5V-6V,故本项目的舵机采用5V供电。IO口采用下拉方式连接到主控模块。

本项目采用SG90的180°舵机。舵机的控制一般需要一个20ms左右的时基脉冲,通过控制占空比(高电平占整个周期的时间比例)来控制舵机的旋转角度。以180度角度伺服为例,那么对应的控制关系如下:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

SG90的线序定义如下图所示。

OLED屏幕:
为了方便焊接,简化电路,这里使用的是SSD1315驱动的I2C接口的OLED屏幕模块,该模块自带有屏幕驱动电路,仅需接口接入即可。在此根据该屏幕模块的接口线序配置好了对应接口的线序,直接插入即可使用。

下载接口:
为方便下载,单独引出了IO0及GND接口,当插入跳帽短接H3的IO0和GND引脚时,使ESP8266进入下载模式。反之,取下跳帽被主控部分电路拉高,进入工作模式。

按键电路:
按键部分使用IO15引脚,IO15必须在启动时保持低电平才能进入运行模式,所以按键按下时拉高,空闲时被拉低。反之,GPIO2在启动时保持高电平才能进入运行模式。

ADC电量检测电路:
由于电池电压最高为4.2V,MCU的ADC输入最高电压为1V,故需要设计电量检测电路,本项目通过采用电阻分压采样的方式来间接的获取电池电压值,电路图如下:

根据上图信息利用欧姆定律可得出:

我们需要当电池电压为4.2V时,MCU的ADC接口输入电压为1V,则根据上式得出:

假设R6使用阻值为10kΩ,代入上式计算得出R5为320kΩ。
由于320KΩ的电阻不易寻得,故采用330kΩ替代。ADC电压检测部分宜采用精度更高的电阻。
软件设计及刷写
本项目使用VSCode中的PlatformIO插件进行开发,data文件夹里存放的html文件,src文件夹存放固件源代码。如果需要修改源代码,请自行下载源代码修改即可。如若不需要对程序进行修改,则直接下载firmware.bin程序固件和spiffs.bin文件系统固件。

程序框图

软件代码(部分)
1、热点名称
const char *ssid = "EDA-Robot";
const char *password = ""; // 无密码
2、舵机控制定义
int engine1 = 14; // 舵机引脚
int engine1offsetleftpwm = -224; // 舵机左转补偿
int engine1offsetrightpwm = -248; // 舵机左转补偿
int engine2 = 16; // 舵机引脚
int engine2offsetleftpwm = -233; // 舵机左转补偿
int engine2offsetrightpwm = -252; // 舵机左转补偿
int engine3 = 12; // 舵机引脚
int engine3offsetleftpwm = -274; // 舵机左转补偿
int engine3offsetrightpwm = -267; // 舵机左转补偿
int engine4 = 13; // 舵机引脚
int engine4offsetleftpwm = -223; // 舵机左转补偿
int engine4offsetrightpwm = -227; // 舵机左转补偿
int speed = 310; // 舵机转速
3、ADC电量检测定义
// 分压器比例(输入电压到 ADC 电压的比例)
const float voltageDividerRatio = 33.6; // 分压比(33.6倍缩小)
// 电压范围(电池电压)
const float minVoltage = 3.2; // 电压为0%时
const float maxVoltage = 6.4; // 电压为100%时
// 采样次数
const int numSamples = 10;
float batteryVoltage = 0; // 计算电池电压
int batteryPercentage=0;
4、按键定义
#define BUTTON_PIN 2 // GPIO2 引脚 (D4)
#define BUTTON_PIN2 15
volatile bool buttonPressed = false; // 按键标志
volatile bool buttonPressed2 = false; // 按键标志
unsigned long lastPressTime = 0; // 上次按键时间
const unsigned long debounceDelay = 50; // 消抖时间 (ms)
unsigned long lastPressTime2 = 0; // 上次按键时间
const unsigned long debounceDelay2 = 50; // 消抖时间 (ms)
串口驱动安装
事先准安装好对应的驱动程序。笔者这里使用的是CH340为主控的USB-TTL串口模块,并已经安装好CH340的USB串口驱动。

接线方式
按照如下接线或采用跳帽短接即可:
IO0-GND、T-t、R-r

将Type-C线的另一端插入电脑USB口,右击桌面此电脑,点击管理,打开设备管理器,找到串口所在的COM口,如下图:

固件烧录
可以使用VSCode中PlatformIO编译器进行烧录,也可以使用乐鑫官方的Flash Download Tool进行。烧录步骤如下:
1.打开源码:

2.在底部工具栏选择工作区为(EDA-RD1),点击✔开始编译,点击→箭头符号开始烧录

3.重新初始化
使用源码在固件烧录完成后会关闭烧录接口,烧录文件系统前请务必按如下步骤操作:
- 断电取下短接跳帽,关闭电源,再上电正常启动
- 断电接上短接跳帽再上电进下载模式 固件前面烧成功后按步骤操作完成后继续烧录文件系统就可以了,不需要再烧固件。
4.烧录文件系统
在左侧边框栏点击PlatformIO的图标,然后如下操作

- 点击Build Filesystem Image构建文件系统镜像
- 点击Upload Filesystem Image烧录文件系统
- 一切烧录完成后,拔下短接跳帽,重新上电即可正常启动。
ASRPro语音软件设计
1.打开天问block

2.编写完成后点击生成模型,等待片刻后选择对应串口与芯片型号,点击烧写。

3.弹出以下提示,是否连接设备,此时应取下GND跳帽再重新插入,识别成功后即可烧录。


3D结构

图1:底座

图2:主体

图3:脚
实物图

图1:机壳内部

图2:机壳组装后
注意事项
- 遥控使用前需要联网配对
- 外壳装配完成后需要对齐进行填缝处理
Disigner:皓月当空
EDA-Robot V1.1
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










