三八资料网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

三八资料网 门户首页 电脑维修 查看内容

用古德微树莓派开发疫情实时播报智能系统

2020-8-18 07:07| 发布者: 南召修电视| 查看: 41| 评论: 0

摘要: 目前,COVID-19新型冠状病毒感染的肺炎仍在肆虐中,大家每天都比较关心各个地区的疫情,如果不想每次都上网刷新页面查看疫情数据的话,借助于树莓派和古德微机器人平台进行“积木”编程,我们可以开发出一个疫情实时 ...

目前,COVID-19新型冠状病毒感染的肺炎仍在肆虐中,大家每天都比较关心各个地区的疫情,如果不想每次都上网刷新页面查看疫情数据的话,借助于树莓派和古德微机器人平台进行“积木”编程,我们可以开发出一个疫情实时播放的智能系统——轮流显示并语音播报各地区(或省份)的各项疫情数据。

一、系统实现实时播报的原理分析

疫情数据的实时获取需要“对接”网络上提供此类服务的API数据接口,经测试后发现丁香园提供的“全国新型肺炎疫情实时数据接口”不错,免费使用且网络响应速度很快。在此,以笔者所在的省份为例来开发疫情实时播报智能系统,需要使用丁香园所提供的“返回XX省疫情最新数据”的API数据接口,因此需要访问的网站连接URL(统一资源定位符)为:“https://lab.isaaclin.cn/nCoV/api/area?latest=1&province=山东省”。

首先在浏览器中访问该网址,返回一大堆字母、数字、汉字和标点组成的数据,我们可以调节一下浏览器窗口的大小,直到数据看上去比较有规律(如图1所示):山东省的济宁、烟台等共15个地区各自的数据就像是在Excel电子表格中一样对齐,现在就可以对这些数据大体来进行分类比较了。类似于这种结构在Python编程语言中所对应的数据类型为“字典”,即其中的每个成员都包括“键”和所对应的“值”(用英文的半角冒号隔开),以“烟台”为例,对应的字典内容为:“{"cityName":"烟台","currentConfirmedCount":29,"confirmedCount":47,"suspectedCount":0,"curedCount":18,"deadCount":0,"locationId":370600,"cityEnglishName":"Yantai"}”,我们的疫情实时播报智能系统要用到的数据及对应的含义如下:

“cityName”键的值是“烟台”,表示“城市名称”;“currentConfirmedCount”键的值是29,表示“现存确诊人数”;“confirmedCount”键的值是47,表示“累计确诊人数”;“suspectedCount”键的值是0,表示“疑似感染人数”;“curedCount”键的值是18,表示“治愈人数”;“deadCount”键的值是0,表示“死亡人数”。

注意:各键的大小写不能错,因为Python语言编程是区分字母的大小写的。我们开发的疫情实时播报智能系统就是要“读取”这些几乎每天都在更新的数据,由于并不借助于浏览器的访问,而是直接进行最新数据的“抓取”,因此必须要保证能够通过正确地定位到“键”来读取对应的“值”,然后显示输出到OLED屏和转换合成为语音在音箱中播放出来。

 

图1

二、实验器材及连接

实验器材包括树莓派(带电源线)一块,古德微扩展板一块,LED灯一支,OLED显示屏一块,音箱一只。首先将扩展板正确插入树莓派中,注意四周要均匀用力;接着将LED灯插入扩展板的5号引脚,注意其长脚为正极、短脚为负极;再将OLED显示屏轻轻插入至扩展板内侧的I2C接口(标注有“Up”的列),紧贴下方的四个引脚,即OLED显示屏的VCC、GND、SCL和SDA四个引脚必须与扩展板的VCC、GND、CLK和DATA四个引脚一一对应;最后,将音箱接入树莓派的圆形音频输出孔,插好树莓派的电源线,通电启动操作系统(如图2所示)。

图2

三、古德微机器人平台编程与运行测试

1.登录网站并连接好设备

当树莓派的操作系统启动成功后,打开浏览器访问古德微机器人编程平台,登录账号,接着切换至“设备控制”区,点击“连接设备”按钮,正常的话会连续弹出五个绿色对勾提示,说明已经成功连接到树莓派,准备进行编程语句的编写。

2.初始化OLED显示屏

从左侧“积木”区域的“智能硬件”-“显示屏”中,将初始化OLED的积木语句拖放至中央的编程区,保持其所有的默认参数不变:设备型号为“ssd1306”,使用接口为“i2c”,宽度和高度分别为128和64。然后建立一个名为“图片对象”的变量,将其赋值为“新建图片模式,同样参数也是保持默认即可(如图3所示)。

图3

3.获取API接口的数据并进行解析

首先建立“URL”变量,其值为丁香园网站所提供的山东省API数据接口:https://lab.isaaclin.cn/nCoV/api/area?latest=1&province=山东省,特别要注意的是,如果直接将该URL粘贴至积木编程中给URL变量进行赋值的话,最后的“山东省”这三个汉字会被转码,必须重新手动将转码后的字符串再修改成“山东省”即可。接着,建立“Request对象”变量,将其赋值为“为URL初始化request对象”;建立“返回数据”变量,赋值为“通过request对象‘Request对象’获得http请求数据”;建立“转到字典”变量,赋值为“将JSON字符串‘返回数据’变成字典数组”。接下来进行一次判断:树莓派是否成功地从API接口处成功读取到数据并转变为字典数组的形式(检测是否有“success”标志),成功的话则将变量“判断”赋值为1(逻辑真),依次建立三个变量并进行各自的赋值:

建立“省级列表”变量,赋值为“从‘转到字典’中获取属性‘results’”;然后建立“山东字典”变量,赋值为“在列表中‘省级列表’取得随机值”;接着建立变量“地市列表”,赋值为“从‘山东字典’中获取属性‘cities’”(如图4)。此时,我们就得到了存放有山东省15个地区名称的数据组合(包括各自所对应的各项参数的数值信息),可分别进行精确定位和读取等操作。

图4

4.在循环结构中进行各地区数据的“遍历”显示和语音播报

使用变量“i”并按照“地市列表”的长度值进行15个地区的依次循环:先建立“城市字典”变量,再建立“城市名称”变量,用来从“城市字典”中获取键“cityName”的值,即对应的是“济宁”、“烟台”等等地区名称;然后使用“图片对象”变量,将该城市的名称显示在OLED显示屏上(坐标点(50,6)为其显示的起始点),语句“控制‘5’号小灯‘亮’”的作用是点亮LED灯,提醒现在开始显示一个城市的数据;接着执行“播放语音‘城市名称’”语句,再建立“现存确诊人数”变量,其值是从“城市字典”中获取“currentConfirmedCount”的属性,也就是读取字典数据中对应“现存确诊人数”的数值;然后,一方面将该数据及其含义在OLED显示屏上输出,另一方面通过播放语音语句从音箱中播报该信息(如图5所示)。

图5

同样,再“重复”这样的四次操作,分别将“累计确诊人数”(confirmedCount)、(“疑似感染人数”(suspectedCount)、“治愈人数”(curedCount)和“死亡人数”(deadCount)分别按照这样的步骤进行显示和播报,注意修改各自变量与字典的键和值要正确对应。同时还要注意添加恰当的等待语句,给OLED显示屏显示数据和音箱播报以足够的时间;还有,当上一个城市的所有数据都遍历输出之后,使用“控制‘5’号小灯‘灭’”语句来关闭LED灯,让它在下一下城市的数据开始显示和播报时再亮起。

5.系统的测试运行

“积木”语句都编写结束之后,点击“保存”按钮;然后打开右侧的LOG显示区,再点击上方的“运行”按钮,开始进行疫情实时播报智能系统的测试运行:

先是LED灯亮起,OLED显示屏上显示:“济宁”、“现存确诊人数:223”,同时LOG显示区也有“济宁现存确诊人数:223”,音箱中也进行同样的语音播放;接着又显示和播报第二项内容:“济宁累计确诊人数:253”,第三项“济宁疑似感染人数:0”,第四项“济宁治愈人数:30”和第五项“济宁死亡人数:0”,LED灯灭,结束第一个城市的疫情实时播报。然后开始第二个城市:烟台,LED灯亮,OLED屏和LOG显示区均显示文字数据信息,音箱同步播报(如图6所示),一直向下运行……

图6

6.关于系统升级改进的设想

使用古德微树莓派开发的这个疫情实时播报智能系统实现了预期的目标,不过还有许多可以改进的地方,比如扩大API数据接口的范围,覆盖到全国甚至是全球;是否可考虑加入语音唤醒功能,就是系统通过全向麦克风检测到用户的指令(比如只想查询“上海市”的疫情数据),然后只输出目标地区的各种数据;或者考虑加入数据对比模块,将某时间段(比如昨天的最新数据)内疫情最不容乐观的数据进行播报;或是在一定范围内对两个甚至是多个城市进行相关数据的对比,或是同一个数据参数值的全省、全国的趋势走向及预测……


路过

雷人

握手

鲜花

鸡蛋

最新评论

论坛最新帖
  • 一个格力2P的柜机开机不制冷
  • 2019最新!乐视S50AIR超级电视全系列刷机去
  • 氧气传感器 O2S-FR-T4-5P-387提高了蒸烤箱
  • 一种绕制微型变压器的方法
  • 自制修电磁炉的好工具机内假负载
  • 十个家电维修技巧一定要看
  • 真诚求助!!!
  • 电脑开机进不了系统
  • 小米65寸电视背光黑屏故障的维修
  • 资料分享
门户最新文章
  • 三相电源断零线,为什么会接二连三烧坏电器
  • 又是推架子,工人被活活电死,直到化成灰烬,
  • 故障修的快是我的本事,凭什么不给钱?
  • 配电房是如何送电的?送电方式是什么?看完
  • 电工接的电缆头,能找到5个错误以上的,都
  • 防雷接地地焊怎么做?单面焊还是双面焊
  • 电线都燃了为什么空开不跳闸?80%的电工不
  • 配电箱14大禁忌,千万要注意!
  • 惨烈!配电室爆炸,3人瞬间变成渣!
  • 你知道避雷器和浪涌保护器的区别吗?

QQ|门户地图|手机版|小黑屋|家电维修论坛 ( 蜀ICP备14030498号 )

GMT+8, 2024-5-26 23:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部