教你用STM32获取全球疫苗接种数据
由于之前做过类似的项目,所以做起来还是比较简单的。改一下API接口,JSON解析函数,调整一下显示界面就可以了。于是之前的项目就变成了全球新冠疫苗接种数据实时监控平台。名字很唬人,其实很简单。效果展示:

疫苗接种数据
下面介绍如何来制作这样一个全球新冠疫苗接种数据实时监控平台,并不需要和我一样的硬件,只需要了解整个项目的实现过程,在任何平台上实现都是一样的。
主要包括以下内容:
1.硬件平台准备
2.API接口获取
3.ESP8266配置
4.JSON数据解析
5.LCD数据显示
6.开源地址
1.硬件平台准备
基本硬件主要有以下:
一款主控芯片。比如ARM、51、AVR等平台,最好是片上外设多一点的,GPIO,串口,定时器这些,如果带有WiFi功能就更好了,这意味着可以省掉一个WiFi模块。如ESP8266就是一款具有WiFi功能的MCU,可以进行SDK开发。
一个联网模块。比如WiFi,2G/4G,有线以太网等,如果主控芯片带有WiFi功能,可以省略!
一个显示设备。比如LCD,OLED,墨水屏,点阵屏等,用于数据的显示。
一些必要的调试工具。如下载器,USB-TTL模块等,最重要的是要有一颗不怕困难的心。
这里我使用的是STM32+ESP8266的方案,通过AT指令的方式和WiFi模块进行交互。
主要包括以下硬件模块:
STM32F103RET6,主控芯片,完成串口交互,LCD控制等
ESP8266-01,用于连接WiFi获取数据
3.2' TFT LCD,用于显示数据
SPI Flash,用于存储字库
LED,用于指示状态
J-Link,USB-TTL,用于程序调试与下载。
实际开发板如下,这是一款我在大学期间自己画的小板子:
图片
2.API接口获取
API和之前一样是通过腾讯新闻获取,使用浏览器打开腾讯新闻-实时接种数据页面:
PC和手机端界面:

PC界面
F12打开开发者模式,切换到Network网络面板,刷新页面,找到请求的URL,可以看到是POST方式:

POST方式
并使用浏览器直接访问这个页面,
访问疫苗接种数据API
可以看到是GET方式:

GET方式
说明支持两种HTTP请求方式:
GET:
182.254.21.58:443
POST:
182.254.21.36:443
3.ESP8266配置
有了IP地址,端口号和API地址,下一步就是使用ESP8266来访问这个API接口,并得到返回的数据。为了和之前的程序兼容,这里我选择的是GET请求的方式。EPS8266使用AT指令的方式进行配置,由于之前的项目已经完成了ESP8266配置的部分,只需要修改一下IP地址,端口号和API地址即可,配置流程使用串口打印出来,如下:
JSON解析
可以看到返回的数据是常用的JSON格式字符串,长度为265字节。有了JSON数据,下一步就是对数据进行解析,使用的是cJSON解析库,由于数据格式比较简单,解析函数也不多。
格式化之后的数据:
json原始数据
4.JSON数据解析
由于数据比较简单,解析函数就不贴出来了。可以点击:了解JSON格式,使用cJSON解析,使用cJSON构建,获取以往的文章介绍。
在解析数据时,要注意,其中"中国","全球"汉字为UTF-8编码,在Keil中进行键值解析时,需要修改字符编码为UTF-8:

UTF-8
或者在GBK2312编码状态下,键值对字符串"中国"="涓浗",这一点要特别注意:

GBK2312
5.LCD数据显示
LCD显示部分,和上一个项目有所不同,之前是把使用到的部分字体进行取模,获取点阵数据,然后再显示出来。这次我是读取板子上的SPI Flash字库文件,然后进行显示的,这样可以显示所有的文字,比较方便。UI界面比较简单,没有采用GUI库。

疫苗接种数据





