好久没更新文章了,看看又做了什么些好玩的东西。文章目录
- 前言
- 开发板的选择
- 获取疫情数据API接口
- ESP8266发送HTTPS请求
- LCD显示
- 代码下载
- 在其他MCU上的实现
前言
2020,新冠肺炎疫情在全球蔓延,国内得到了有效的控制,最近国内部分地区的疫情形势又紧张起来。不知道大家是否了解我之前做的一个新冠肺炎疫情监控平台,基于跨平台Qt实现,从桌面Qt,到嵌入式Qt,相关文章:
基于桌面Qt环境的疫情监控平台开发笔记:
- [开源]基于桌面Qt的肺炎疫情监控平台
- [开源]基于桌面Qt的肺炎疫情监控平台1.1版本
基于嵌入式Qt环境的疫情监控平台开发笔记:
- [开源]我用STM32MP1做了个疫情监控平台1—交叉编译环境搭建
- [开源]我用STM32MP1做了个疫情监控平台2—Qt环境搭建
- [开源]我用STM32MP1做了个疫情监控平台3—疫情监控平台实现
- [开源]我用STM32MP1做了个疫情监控平台4—功能完善界面重新设计
作为疫情监控三部曲:
桌面PC > 嵌入式ARM Linux > MCU。在前面两个平台上实现之后,就想着在内存和性能都比较有限的MCU上实现,比如STM32F103,但一直都没有找到一个合适的API接口,直到最近发现了一个数据量比较小,连接比较稳定的API。于是,设计了这个基于STM32 MCU的疫情监控平台,STM32通过串口和ESP8266进行AT指令交互,连接互联网获取最新的疫情数据,并显示在LCD显示屏上,可以直观方便的了解到最新的疫情数据信息。最终效果如下:
显示效果主板拆分开发板的选择
开发板用的是我在大四时自己设计的STM32开发板——NiceDay,基于
STM32F103RET主控。前几天看大佬说有学生在大一就自己画板打样了,我感到自愧不如啊!这是我设计的第二块板子(第一块是毕业设计两轮平衡车主板),是在大四快毕业时,毕设实物和论文完成之后还有点时间,就设计了这款板子,最开始是准备做桌面天气时钟的。
NiceDayNiceDay拆分效果如果你在百度上搜索:
ESP8266 关键字,其中就有我当时的一个回答。
ESP8266好了,言归正传,换个API就是疫情监控平台了:
最终效果获取疫情数据API接口
2020新冠疫情的爆发,各大互联网IT公司和个人都开发了实时疫情地图平台,腾讯新闻、丁香园、网易、新浪等等,这些数据大小都在几百KB,对于PC和嵌入式Linux来说,不用在意数据量的大小,但是对于存储非常有限的MCU来说,数据量的大小是不得不考虑的一个问题,而且对于ESP8266来说,AT指令的方式,SSL缓存最大只有4096个字节的缓存!经过网上一番搜索,找到了几个数据量小的API,但是有的接口连接不稳定,刚连上就掉线了,最后终于找到了一个连接稳定,数据量小,数据齐全的接口:
https://lab.isaaclin.cn/nCoV/zh这是一位国人使用服务器爬虫获取了丁香园的数据,然后开放了API接口供大家免费使用,目前已经被调用了2千万次,这个网站还包括了多个接口,我只使用到了其中的疫情数据这一个接口:
https://lab.isaaclin.cn/nCoV/api/overall,数据量大概为1300个字节。JSON数据内容如下:
json数据格式为了能使用ESP8266获取这个API返回的内容,我们还需要知道以下信息:TCP连接类型,端口号,API地址。我们在浏览器中按F12,打开开发者模式,在地址栏输入
https://lab.isaaclin.cn/nCoV/api/overall这个接口地址,可以很容易的获取到我们想要的信息:
服务器地址:47.102.117.253
端口号:443
API地址:https://lab.isaaclin.cn/nCoV/api/overall
关于端口号,如果API地址是http开头的,一般是选择TCP连接类型,80端口;如果是https开头的,一般是选择SSL连接类型,443端口。这个信息在后面会用到。
API获取ESP8266发送HTTPS请求
WiFi模块选择的是乐鑫的ESP8266-01S模组,支持AP、Station和AP