## 前言:项目介绍与发展
终端使用离线语音和微信小程序控制设备,使用esp8266和ASR PRO语音模块与云服务器连接和微信小程序互通,有高拓展性,可通过使用不同基础功能的pcb拓展板实现有关物联网项目功能的同时兼具丰富的语音交互能力,例如增加温湿度和温度传感器实现小程序实时查看和语音环境播报(小毕设),例如加入继电器、红外等实现接入非物联网家居设备的目的。此项目时间有限目前目前实现在独立锂电池供电环境下对舵机的控制、语音交互、微信小程序控制等。因使用的语音芯片性价比高,功能性强,操作门槛低,可以低成本的嵌入到各种diy设计中,方便小白玩家在自己的项目中集成物联网和语音功能。
## 项目流程
```
使用阿里云服务器和微信小程序连接esp8266,通过服务器信息云流转在手机端与ESP8266通信无线控制设备状态,达成使用手机端远程控制开关舵机的目的,线下端使用离线语音模块,通过语音和使用者进行人机交互和设备状态语音提示,让使用者在家时可直接离线语音控制,硬件上使用锂电池充放电管理及升压芯片和电量检测电路,加块锂电池,优化设备使用和提高设备驱动能力。
```
1、搭建阿里云服务器与微信小程序手机端2、esp8266控制硬件模块和连接云服务器3、进行离线语音模块功能编写4、离线语音模块与esp8266通信和控制5、锂电池充放电管理及升压芯片电路设计6、锂电池电量检测与语音电量状态警报
## 1、搭建阿里云服务器与微信小程序手机端
需要先注册[阿里云服务器](https://account.aliyun.com),不过放心低流量少设备的个人玩家基本上是免费使用的,添加新的产品和在产品下加入设备等一系列操作,具体建议B站看相关视频,我肯定没人家专业的。
![image.png]

![image.png]

[微信小程序开发](https://mp.weixin.qq.com/)需要申请账号和获取小程序相关的码,不然无法在真实环境里运行,这个教程B站就更多了,毕竟好多靠这个卖课的,不过不建议太投入这个大概了解能改别人的代码就够用了,真上生产力就直接找外包了。
![image.png]

## 2、esp8266控制硬件模块和连接云服务器
**阿里云有针对arduino的示例代码,只需要改一下设备相关的认证码就可以直接使用了,需要下载arduino阿里云拓展库**
![image.png]

## 3、进行离线语音模块功能编写
ASR PRO语音识别模块[淘宝链接](https://m.tb.cn/h.UuHGiI5?tk=B1X3dmDuodR)这东西对偏小白人群十分友好,功能也挺强大的。
模块使用图形化编程,用什么功能只要拖动相应功能框就可以完成编程,当然官方是更推荐字符编程模式的,感兴趣的小白可以搞一个玩玩,相应教程可以看B站祝良友老师的。我放一个传送门[ASRPRO标准模式编程]( https://b23.tv/fv1VMmY
)
![image.png]

## 4、离线语音模块与esp8266通信和控制
```
ESP8266-NodeMCU从定义上是应该有两个硬件串口的,但是实际上,我们只能用U0那组串口,U1串口的RXD由于跟其它接口相连,所以正常情况下是无法使用的。所以我们真正能用的是U0TXD、U0RXD、U1TXD。
ESP8266 软件中默认使用的是 UART0 来输出程序日志,但是日志的输出会干扰模块通信内容的纯洁性,导致无法响应,用arduino进行日志屏蔽也挺麻烦,所以可以选择直接加一个模拟串口。
在Arduino开发中,可以通过库--SoftwareSerial.h,将普通的GPIO口模拟成串口。
```
![Screenshot_2023-05-01-02-11-25-679_net.csdn.csdnp.jpg]

## 5、锂电池充放电管理及升压芯片电路设计
```
IP5306是一款集成升压转换器、锂电池充电管理、电池电量指示的多功能电源管理SOC,为移动电源提供完整的电源解决方案。
IP5306是高集成度与丰富功能,使其在应用时仅需极少的外围器件,并有效减少整体方案的尺寸,降低BOM成本。
IP5306只需一个电感实现降压与升压功能。DC-DC转换器工作在500KHz,可以支持低成本电感和电容。
IP5306的同步升压系统提供zd2.4A输出电流,转换效率高至93%。空载时,自动进入休眠状态,静态电流降至50μA。
IP5306采用开关充电技术,提供zd2.1A电流,充电效率高至97%。内置IC温度和输入电压智能调节充电电流。
IP5306支持1/2/3/4颗LED电量显示,第5引脚,按键按下持续时间长于30ms,但小于 2s, 即为短按动作,短按会打开电量显示灯和升压输出。
```
![$_6P@L966J1NDZA8TCBI{XW.png]

## 6、锂电池电量检测与语音电量状态警报
```
一般对于电压检测会使用两个电阻分压的方式来获取电压,通过两个电阻分压,连接到单片机的ADC引脚。ADC测到的电压,就是锂电池电压的一半。但是在使用电池的设备上,如果不彻底切断电源,设备将一直通过分压电阻放电减少设备续航和损害电池健康。
A0引脚接单片机普通IO,在设备关机的时候,将引脚拉高,PMOS将电路断开,不让这两个分压电阻消耗电量。
```
![1D8VDW@O_8}BXAGDY}BO`1.png]

###### **ESP8266电量检测部分代码**
![image.png]

###### **ASR PRO 离线语音模块图形化电量播报代码**
![_QD3W_Z}XH_N8B)YIZNN6W.png]

## 3D仿真图与成品实物图
![OOBHYA7WUT8F}D00D)QT~A.png]

![image.png]

![IMG_20230427_224717.jpg]

![image.png]