写点什么

实践丨手把手教你用 STM32 设计 WiFi 语音播报日程表

  • 2022 年 7 月 14 日
  • 本文字数:3024 字

    阅读完需:约 10 分钟

实践丨手把手教你用STM32设计WiFi语音播报日程表

本文分享自华为云社区《基于STM32设计的WiFi语音播报日程表》,作者: DS 小龙哥 。

1. 前言


近年来,随着电子产品的发展,数字日程表这项应用在人们工作和生活中起到越来越重要的作用。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,遇上重要事务,一时的耽误可能酿成大祸。


因此从人们的日常生活到公司办公,从台式电脑到便携式智能手机,都要求标配上日程表的作用。人们要求随时随地都能快速准确的提醒当前事务,并且要求日程表能够更直观、更可靠、更便宜。这种要求催生了新型日程表的产生。除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对日程表的又有了体积小、功耗低的要求。

2. 功能需求

2.1 硬件部分


整个项目在正点原子 stm32f103mini 开发板环境下进行。开发板主控是 stm32f103rct6。


项目模块由一些部分组成:


(1)2.8 寸 tft 触摸屏负责显示和进行交互;

(2)pcf8563t 用作时钟计时,并把日期和时间显示在屏幕上。

(3)时间采用 24 小时制显示,上位机要支持设备端 RTC 日期及时间信息更新.

(4)DHT11 温湿度传感器检测环境信息,并把信息显示在液晶屏幕上;

(5)使用 esp8266 作 WiFi 模块与手机 app 进行通信;

(6)单片机将接收到的内容存储在 w25Q64 内,同时可以在屏幕上指定位置将内容显示出来。内容包括具体日程的文字内容以及日程开始、结束的时间;

(7)使用蜂鸣器以及通过 syn6288 语音芯片合成的语音信息,通过喇叭播报实现提醒功能。在日程开始、结束前五分钟提前(这个提前提醒的时间要可以修改)通过蜂鸣器以及喇叭发出语音提示。

(8)显示屏(横屏显示)上应包含:


基础的日期、时间、温湿度信息显示,屏幕主体部分通过列表的方式显示从手机 app 端接收到的日程内容;屏幕上设置一个触屏按钮,按下该按钮是可以跳当前进行中的,或者还未开始的下一项即将开始的日程。


日程显示部分:因为 2.8 寸显示屏的空间有限,所以同屏范围内只显示一到两个日程的具体内容。需要显示出日程的文字内容,开始和结束的时间。当日程时间即将开始以及即将结束时触发语音提示;日程结束之后要从当前显示位置上清除,同时删除 w25Q64 上存储的信息。同时显示下一个待开始的日程。


显示的文本部分要求能够支持显示 16 和 24 大小的,包括中文字符在内的所有字符(无法兼容就做成 24 大小即可)。从手机端发送的中文文本信息在在屏幕上显示的同时要存储在 w25q64 内。并且单片机终端上要支持存储最少十五条日程内容。单片机要能识别具体日程的时间信息,根据时间排序,同时判断日程是否过时,过时的日程直接删除,删除和跳过日程不需要触发提示。


(9)语音提示内容:


1:您有待开始的日程,请注意时间。(如果可以实现将手机端输入的日程内容(主要是汉字)读出来,那么此句改为:下一项日程:XXX 即将开始,请注意时间。(XXX 内即为日程内容))

2:当前日程即将结束

3:连接成功(成功连上 app 时播报)

4:连接失败

5:日程已设置(单片机接收到手机上发送的日程内容。)


(10)每句提示播报前蜂鸣器响一声,响完后停顿一秒再播报。

2.2 软件部分


软件部分主要就是手机上的控制 app,手机的 app 包括可以选择添加日程的按钮,可以输入信息的文本框,可以将文本框内的内容发送到单片机的按钮。同时要可以在 app 上查看单片机终端的已录入的日程内容,以及加入一个可以删除已录入内容的按钮。文本框分为三部分,一部分输入文本内容(两到八个汉字字符左右的长度即可。)输入开始时间的文本框,输入结束时间的文本框。

2.3 功能总结


(1)STM32 采用正点原子 mini 板。正点原子的 2.8 寸 tft 触摸屏

(2)pcf8563t 用作时钟计时,并把日期和时间显示在屏幕上

(3)DHT11 温湿度传感器检测环境信息,并把信息显示在液晶屏幕上

(4)使用 esp8266 作 WiFi 模块与手机 app 进行通信;

(5)w25Q64 烧录字库,存放字库,存放日程提醒信息


实现思路: 将 W25Q64 安装 FATFS 文件系统,方便数据存放读取,读写日程信息,字库信息。


(6)syn6288 语音芯片合成的语音信息,通过喇叭播报实现提醒功能

(7)开发手机 APP 输入提醒日程,单片机接收到手机上发送的日程内容。


单片机将接收到的内容存储在 w25Q64 内,同时可以在屏幕上指定位置将内容显示出来。内容包括具体日程的文字内容以及日程开始、结束的时间;日程信息采用文件形式存储,修改、读写都针对文件进行操作。

3. 软件运行效果


软件打开之后先输入设备端的 IP 地址和端口,连接成功之后就可以进行功能操作。


软件上有日程表查看页面(也就是主页面)、日志页面、新增日程提醒页面。


软件分为 windows 桌面版本和 Android 手机版本,下面演示的截图以 windows 桌面版本为例。


软件采用 QT 设计,Qt Creator 是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。


Qt Creator 官网下载地址:下载 Qt |嵌入式系统|实时嵌入式系统|断续器


QT 所有版本下载地址:索引 /archive/qt


QT 环境搭建,入门开发专栏: https://blog.csdn.net/xiaolong1126626497/category_11400392.html

(1)日程表查看页面(也就是主页面),查看日程提醒事件,点击更新日程按钮,可以从设备端获取最新的数据过来。


(2)日志页面用来查看软件与设备间交互的过程,可以调试了解发送的数据是否正常。





(3)新增日程提醒页面


在这个页面上可以填入提醒的事件内容,输入提醒的起始时间、结束时间,提前提醒的时,输入完毕后,点击新增提醒事件按钮,就可以将数据发送给设备端,并且在主页面添加数据显示。


(4)Android 手机运行效果




4. 通信协议


设备端与软件上位机之间数据交互的的协议:


(1)软件上位机对STM32发送:#update          让STM32发送当前存储的所有日程数据过来
STM32向上位机返回的数据格式:$update,起始时间,结束时间,事件内容,提前提醒时间(0~59分钟)$update,2022/02/22 13:15,2022/02/23 12:17,吃饭,5
(2)给STM32发送一条日程数据过去格式:$add,起始时间,结束时间,事件内容,提前提醒时间(0~59分钟)$add,2022/02/22 13:15,2022/02/23 12:17,吃饭,5
(3)给STM32发送校准时间 *20220222131338
(4)删除STM32上存储的日程数据$del,起始时间,结束时间,事件内容,提前提醒时间(0~59分钟)$del,2022/02/22 13:15,2022/02/23 12:17,吃饭,5
复制代码

5. 测试流程总结


设备端采用 ESP8266 与上位机进行通信,ESP8266 上电初始化为 AP+TCP 服务器模式,设置固定端口号。

采用电脑或者手机运行 APP 测试之前,先搜索 ESP8266 创建的 WIFI 热点连接上,然后打开软件,在软件里输入 ESP8266 服务器的 IP 地址和端口号点击连接,连接成功之后就可以与设备端进行交互。


如果没有设备端,也可以采用网络调试助手与上位机之前交互,测试功能。




6. 硬件部分

6.1 硬件实物





板子的串口正常提示:


(1)上电提示



(2) 更新事件提示



(3)SD 卡上生成的文件


6.2 外设硬件连线


(1) ESP8266 WIFIPB10--->ESP8266-RXPB11--->ESP8266-TX3.3v--->VCCGND---->GND(2) SYN6628PA2(TX)---SYN6628-RXPA3(RX)---SYN6628-TX3.3v---->VCCGND----->GND(3) DHT11 温湿度传感器PA5 ---->DHT11-OUT3.3v---->VCCGND----->GND
剩下的用的硬件是开发板本身自带--正点原子STM32F1战舰V3开发板,硬件连接详情看原理图接口。
复制代码

6.3 字库创建



6.4 SD 卡上存放的字库文件


......


戳我查看完整全文


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
实践丨手把手教你用STM32设计WiFi语音播报日程表_开发_华为云开发者联盟_InfoQ写作社区