基于API技术的嵌入式天气预报设计

2018-02-22 12:32刘孝赵王成
无线互联科技 2018年23期
关键词:数据天气预报单片机

刘孝赵 王成

摘 要:在现实生活中,天气预报对人们的生活非常重要,很多人一天的计划和行动都会根据天气预报进行决定。文章的设计基于将STM32 F103微控制器与天气数据API互连的设备,经过单片机处理把天气信息应用在各种显示设备,既节省了传感器硬件资源,又能实时播报各个区域的天气预报,这种设备移动便携,可以安放在不同场景。

关键词:天气预报;API;单片机;数据

传统的气象显示系统主要由温度、湿度等传感器采集数据,再通过接收模块将采集到的数据发送给单片机。这样各传感器在焊接时可能会有不同程度的损坏,有时候可能某个引脚接触不良,调试时就会出现各种各样的问题,而且不易查找。本设计在硬件上省去了各传感器,通过WiFi模块连接路由器或手机上的热点,利用JSONP的方法跨域获取天气数据。利用专业的商业气象数据网站心知天气,此网站免费提供API接口,不仅稳定还实时更新,可以达到每小时400次刷新,能提供国内200多个城市的天气实况,6项生活指数,预测未来3天的天气,使用者也可以随时切换城市,不受地域限制。

1 天气API介绍

在网上有很多天气API,本系统使用的是商业气象网站心知天气API。此天气API是面向开发者,可以提供丰富稳定的天气数据服务。通过心知天气API,可以轻松地把心知天气的数据整合进手机应用、桌面应用、网站,甚至嵌入式操作系统里。心知天气提供了全球多达2.4万个城市的天气数据。而且它还可以支持多达13种语言。心知天气API不仅可以返回天气的数据,还可以对气象灾害进行预警,查看当前空气质量的实况,逐小时潮汐等数据[1]。

每个API里面会设有很多参数。例如location后面是城市名称或者城市代码,language后面是返回数据的语言种类,unit后边为温度单位,c代表的是摄氏度。

当我们请求API时,服务器将以jason的形式返回天气数据。

"results": [{ “location”: { “id”: “C23NB62W20TF”, “name”: “西雅图”, “country”: “US”, “timezone”: “America/Los_Angeles”, “timezone_offset”: “-07:00” },

这个是返回的一部分jason数据。id后面代表的是城市ID,name后面代表的是城市名称,country后面代表的是城市所在的国家。

2 系统设计

2.1 系统结构

本設计的整个系统由STM32F103单片机、ESP8226 WiFi模块和显示屏幕组成。同样的也需要一个能够连接互联网的WiFi路由设备。STM32F103的MCU通过串口连接到ESP8226 WiFi模块,显示屏通过SPI协议进行通信,ESP8226 WiFi模块通过Internet与天气服务器通信。整体的结构如图1所示。STM32 F103首先通过串口向ESP8226 WiFi模块发送命令,允许ESP8226 WiFi模块连接到Internet,然后,通过请求API数据,获得天气服务器上的天气数据,最后通过解析获得天气数据,把天气信息显示在液晶显示屏上[2]。

2.2 WiFi电路设计

ESP8226 WiFi模块的原理如图2所示。模块可以为其他设备联网,也可以自己单独作为控制器,因为它接受标准的联网协议。在作为一个WiFi模块时,既能单独存在,也能嵌入其他设备当中。内部包含了ROM和SRAM存储寄存器,MCU可以通过不同的接口访问寄存器,当搭载在其他主机中运行时,其内部的高速存储寄存器能够在减少内存方面作出很大的贡献,提高系统整体的性能。ESP8266在承担适配器的任务时,能通过SPI接口或IIC接口将其加入其他微控制器中,而且连接方法很简单。该模块强大的存储和处理能力体现在通过GPIO端口集成传感器和其他设备的能力,以最大限度地减少开发和运营过程中的资源,整个模块在设计上以最低的价格发挥了最优的实用性[3]。

2.3 显示电路设计

本设计采用液晶屏作为显示模块,这是一款通用式电阻式触摸屏,LCD模块外加玻璃钢化屏,外部排针是黄色全铜镀金,不仅美观还耐用。采用ILI9341驱动IIC,可以与CPU接口直接连接。这里所用的液晶屏是16位并口驱动模式,其中利用DB1至DB8和DB10至DB17这16个引脚,让它们与MCU的D0至D15口连接,实现液晶屏与开发板的通信。需要特别指出的是这个液晶屏模块采用双电源来供电,主电源和背光供电引脚都需要接上才能正常显示。

3 系统软件设计

3.1 主程序设计

系统软件由3部分组成:天气预报、客户端和天气服务器,天气预报总结了客户需求的基本数据。其中天气预报结论提供客户需求的基础数据,客户端的设计重点是地图浏览,以及把用户访问请求(漫游、放大、缩小等)发送给服务器,心知天气服务器则负责处理用户的访问请求。

软件在设计的过程中主要通过串口给WiFi模块发送指令,与WiFi模块通信,解析天气数据,以及驱动液晶显示屏的操作。单片机首先做一些初始化工作,比如时钟初始化,WiFi初始化,液晶屏幕初始化,使能RTC时钟,然后先获取一次天气信息。最后等待,一直等待到整点的时候,再更新一次天气信息。每到一次整点的时候,都会重新获取一次天气信息,并且把它显示到液晶屏幕上[4]。

3.2 初始化地图元素

要显示地图,使用者需要使用天气服务器API提供的类和方法创建天气预报的基本地图信息。在心知天气服务器的相关地图服务中创建一个地图,并定义一个中心点坐标,将某个城市定义为地图中心坐标,并设置地图显示级别,一般城市级别设置为10,县级别设置为14。部分代码如下:

var map = new Map.Map(“dituContent”); var point = new Map.Point(102.55,24.3333)map.centerAndZoom(point,10

3.3 查询天气

获取到城市名称后,就可以直接让ESP8226 WiFi模块连接到互联网,然后再通过请求API数据获取到心知天气服务器上的天气数据,最后解析得到的天气数据,把天气信息显示在液晶显示屏上。

WeatherStateweatherState=new WeatherState();

if(result!=null)

{

String state1=result.getProperty(5).toString(); //

温度

String state2=result.getProperty(10).toString(); //

天气实况

}

3.4 获取城市码数据库文件

数据库文件存储了中国许多省市的数量,天气主要通过使用城市代码获得,如果系统是第一次运行,系统将从心知天气服务器API端口获取城市名代码,然后将其解析,创建数据库,再将数据填入数据库对应的表中,如果不是第一次运行,系统就直接访问数据得到城市代码[5]。

3.5 界面显示调试

为了获得更好的界面显示效果,对系统的界面进行调试,屏幕上显示天气的状况需要用到天气图标,这个图标可以自己在网站中查找,然后将输出灰度选为单色,这样的好处是得到最小的取模数据。在调试的时候尝试调出两种不同的效果,如图3—4所示。

4 结语

此次实时天气系统的设计采用keil5作为调试软件进行总程序的调试,设计中主要涉及对stm32系列的MCU研究。总体上想要完成本设计,需要熟练掌握SPI通信和SPI FLASH存储,JSONP跨域获取天气数据,还有ESP8266无线模块配置模式等,设计将单片机与互联网技术联系起来,有一定的技术基础。主要实现的功能是对当天天气情况进行实时更新,也能对未来3天天气情况进行预报,还能随时改变显示城市,有一定的实用性。

[参考文献]

[1]李泽椿,毕宝贵,金荣花,等.近10年中国现代天气预报的发展与应用[J].气象学报,2014(6):1069-1078.

[2]余卫东,张广周,張弘.河南省农用天气预报业务系统的设计与应用[J].气象与环境科学,2011(3):79-82.

[3]谭晓光,罗兵.天气预报分析型数据模型及生成[J].应用气象学报,2014(1):120-128.

[4]吴亚林.浅析基于Android的天气预报系统设计与实现[J].山东工业技术,2015(24):123.

[5]罗显发.气象网站公众天气预报更新方法浅析[J].青海科技,2010(1):68-69.

Abstract:In real life, weather forecasts are very important to peoples lives. Many people plan and act on a daily basis based on weather forecasts. The design of the design of a single chip based on the microcontroller and the weather API weather forecast, it can get the weather data on the Internet, after the MCU STM32F103 processing can display the weather information on the LCD screen.

Key words:weather forecast; API; single chip microcomputer; data

猜你喜欢
数据天气预报单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
测不准的天气预报
天气预报的前世今生
中期天气预报
浅谈计量自动化系统实现预购电管理应用
小小天气预报员
Microchip推出两个全新PIC单片机系列