您好,欢迎来到99网。
搜索
您的当前位置:首页基于ESP8266的天气数据分析系统设计

基于ESP8266的天气数据分析系统设计

来源:99网
基于ESP8266的天气数据分析系统设计彭钲皓,亓相涛(武汉商学院信息工程学院,武汉430056)摘要院物联网的生活深入及大数据飞速发展,使得在天气数据的准确度上也有了大跨度的优化,天气数据有着庞大的开发潜力,经过适当的开发将会使人们的生活变得更加便捷。基于ESP8266和Ar原duino平台,设计出了一种天气数据分析系统,给出了系统的硬件原理和软件设计,通过移动端使本系统通过WiFi连接因特网更加便捷,使用ESP8266的HTTPClient模块向天气服务器获取最近的天气情况,天气数据经过模糊综合评判的数学模型后产生的评价,对天气对应作业的时间做出了测试,提出并完成了一种基于物联网的数据分析系统的设计方案。关键词院ESP8266平台;模糊综合评判;Arduino平台1概述高的优点遥为此袁对这两种控制器进行一个月时间内的多项测试遥基于ESP8266的天气数据分析系统是由两大板块构成袁分别为硬件部分尧软件部分袁硬件部分中含有元器件选型和通过AltiumDesigner平台设计的微控制器模块尧供电模块尧充电模块尧屏幕显示模块的原理图与PCB图曰软件部分中含有通过Arduino平台设计的APP和天气数据分析野今日洗车评估冶的算法设计遥从研究与设计袁希望能为物联网的发展做出贡献遥ESP8266的基础程序尧通过AndroidStudio平台设计的硬件和软件两大模块详细地对天气数据分析系统进行了图1S3C3440与ESP8266芯片在总处理器利用率测试中进行一个月的实际数据处理操作渊图2冤袁得知S3C2440的处理器利用率平均在20%袁最高为30%袁最低为11%曰ESP8266的处理器利知在该测试中袁ESP8266的数据处理能力完全满足该设计袁即便是突发事件袁仍能保持30%的空闲处理能力袁而S3C2440则存在性能过剩问题遥在扩展性方面袁S3C2440拥有130个可扩展I/0接口袁4路PWM定时器袁8路10位ADC接口和24个外部中断源和I2C接口袁ESP8266拥有11个可扩展I/0接口袁4路PWM定时器尧1个I2C接口和继承了WiFi芯片遥S3C2440拥有极强的扩展性袁在后期应用中不易出现接口不够问题遥作者简介:彭钲皓渊1998-冤袁男袁本科袁研究方向院物联网工程曰亓相涛渊1985-冤袁男袁通讯作者袁研究方向院嵌入式系统遥收稿日期:2019-06-102019.092系统硬件设计的天气数据分析系统袁不仅具备传统的数据分析袁而且具有远程控制功能袁可以通过手机尧电脑来查看当前数据的分析情况袁也能够通过客户端进行对数据分析进行控制遥在当前物联网的飞速发展下袁该数据分析系统是其中的一个方面遥2.1控制器模块的选择及WiFi芯片的选择2.1.1控制器模块选型在控制器模块选型中袁提出两个方案袁在S3C2440用率平均在52%袁最高为69%袁最低为35%遥可以得和ESP8266渊图1冤中进行了对比袁S3C2440是来自SAMSUNG公司的低功耗尧高性能的微型控制器袁工作频率可以稳定在400MHz袁可搭载Linux系统袁在对数据处理和软件建模可以进行最大程度的优化遥ESP8266集成32位Tensilica处理器袁有标准数字外设接口尧天线开关尧射频balun尧功率放大器尧低噪放大器袁过滤器和电源管理模块等遥支持WiFi协议栈袁工作频率稳定在160MHz袁具有功耗低尧开发难度低和功能集成度75两款单片机所有内核的总处理器平均利用率测试渊相同任务下冤80%60%40%20%0%051015202530TCP/IP袁传输速率稳定在10Mbps袁满足设计要求袁故无需拓展遥S3C2440需要外接无线网卡来进行网络通信袁选择RT3070USB无线上网卡袁支持PHY速度从150到300Mbps遥ESP8266S3C2440成本方面袁RT3070USB上网卡价格颇高袁ESP8266经上述两种方案的对比袁故采用ESP8266作为该设无WiFi模块成本遥计的控制器模块及WiFi模块的硬件部分遥2.2微控制器模块电路ESP8266的工作频率为160MHz袁有11个可用图2单片机平均利用率测试进行连续运行程序30天的稳定性测试袁剔除系统升级和数据变更袁最终错误次数以图3的方式进行记录遥ESP8266采用Arduino的lua语言编写袁总错误次数为4次曰S3C2440采用Linux运行应用程序袁总错误次数为8次遥在30天测试下袁ESP8266的稳定性优于S3C2440遥成本方面袁S3C2440的价格约为ESP8266的4倍遥两款单片机的稳定性测试渊错误次数冤43210051015202530GPIO引脚袁1个ADC引脚袁1组串口引脚袁1组I2C引脚渊图4冤遥R1R21K1KRGB+3.3V12345678M1RSTADCENGPIO16GPIO14GPIO12GPIO13VCCTXD0RXD0GPIO5GPIO4GPIO0GPIO2GPIO12GND2221201918171615ESPESPESPESPDSRXDTXDIICSCLIICSDAGNDESP-12E驭FModuleESP8266S3C2440EN/RET/GPIO15/GPIO0/GPIO2/TXD0不接ESP8266图3单片机的错误次数测试2.1.2WiFi芯片选型由于控制器选择方面袁两种方案分别是使用ESP8266图4ESP8266控制器电路外部电源采用直流供电袁宽电压范围5.8V-26V袁保证环境的兼容性遥流降低电路尧电流保护尧过热保护尧电池反接和反插入保护电路遥供电电路设计渊图5冤遥P5VCCP712芯片和S3C2440芯片袁故在WiFi芯片选型中袁是以这两种芯片进行拓展和评估遥分别是院AP模式袁STA模式和STA+AP模式袁支持VCCU2LM2940-51ESP8266集成WiFi芯片袁可以工作在3种模式下袁5V线路采用LM2940低压降稳压器袁内含静态电+C3C5100uF0.1uFINOUT3+5V+C4100uFC60.1uFU4LM11173R6GNDPowerModular10KD1LEDINOUT2+3.3V+17100uFC180.1uFVCCD2LEDGNDR24GND10K3Q1BSS306N22Q2BSS306N3VBATP6VGNDPOWER_IN12VGNDPOWER_OUT图5供电系统电路3.3V线路采用LM1117低压降线性稳压器袁内含电通过USB接口提供5V电源的供电方式袁最大可提供500mA的电流袁USB协议标准遥充电模块设计渊如图6冤袁TP4056是一款精密的充电元器件袁采用了恒流/恒压的方式对单节锂离子电池流和热保护遥762019.09进行线性充电遥使用SOP-8的封装袁底部自带鳍片散热袁且内部电路完整袁仅需少量外部元器件即可完成充电功能袁具有便携性遥故选择该器件作为本设计的充电模块遥GNDR4U31.2K12R5VCCR73TEMP80.4R4PROGGNDVCCSTDBYCHRGCE710uFC24056BAT651KR610uFC3VBAT1KGNDGNDChargingModule图6充电模块屏幕显示模块电路设计渊图7冤袁SSD1306是一款0.91由横向英寸的128个像素点OLED显示器袁纵向袁支持32个像素点组成I2C协议和SPI袁可自定协议袁义字库袁SSD1306为本设计成为便携式应用提供了理想的选择遥+3.3VR7P84.7KR84.7KGND121011BS2NC_1NC_21NC_37R104.7KR11910KR926BS0BS1E/RD#304.7KGNDIREFR/W#1716GNDOLED_CS13CS#D7252415D623OLED_DCD5D422OLED_D1OLED_RES14DC#D32119RES#GND+3.3VOLEN_D0R1218D1VDD20D0VBAT9C7D2VSS6100nFC8100nF+3.3VR13R14VLSS84.7K294.7K0OLEDC9C10GND100nF100nFC11100nFC12100nFGND图7屏幕显示模块33援1系统软件ESP8266ESP8266开发方式有模块编程进行C语言开发遥AT指令过于繁琐AT指令尧LUA袁且需要终端机向语言和用SDKESP8266CLUA发送指令语言是一种及其轻便的脚本语言袁无法达到要求遥袁使用标准的Arduino语言编写点袁有助于快速编程和调试平台袁袁用源代码的方式开发具有跨平台尧袁简单清晰遥其中目前有成熟支持RTOS尧实时操作系统发展迅速的特遥SDK采用C语言开发袁使用官方提供的库函数袁有详细的API文档进行参考袁支持RTOS-SDK开发遥有着较高的开放程度袁可以方便地对内核进行调整和开发遥目前ESP8266芯片在开发上LUA语言的Arduino平台占据绝对优势袁拥有快速编写和快速拓展的便利性袁故选择在MicrosoftVisualStudio编译软件使用Ar鄄duino3援2JSON天气数据解析平台开发遥非常适合作用于服务器与客户端进行数据交互操作数据解析袁SON渊JavaScriptObjectNotation冤袁袁因为它的格式具有轻量级数据交换的特点遥虽作为JavaScript惯袁但仍然是一个化的文本格式家族的一个分支袁却拥有着遥CJSON语言的使用习数据格式由5种结构构成袁分别是字符串尧数值尧值尧数组尧对象遥从结构上来看袁JSON是由数组和集合构成袁一个对象以野{冶开始袁野}冶结束遥野院冶跟在一个野键冶后曰野袁冶隔开野键/值冶遥字符串是指由任意数量的Unicode字符组成的集合袁与C语言尧Java语言中的String基本相同袁格式为野String冶袁求JSON数据可使用转义字符袁在本地解析遥袁ESP8266并存入相关对象向天气服务器请袁以方便进行数据处理渊如图8所示冤遥开始创建StaticJsonBuffer失败请求JSON数据创建根节点袁并将JSON数据存入失败解析JSON数据将结果存入相应的对象结束图8解析JSON数据响应客户端的两种方式构成HTTP消息是由客户端向服务端发送请求和服务端遥请求头和请求正文中间有一行空行袁作为请求头结束后的标记袁告知服务器下面2019.0977是请求正文袁http1.1版本中有8种请求方法袁两种比较常用的方法是GET请求和POST请求院GET请求会向服务器发送一个请求袁以此来获取所需的某一资源袁服务器通过HTTP头和HTML文本或视频尧图片等数据反馈给客户端袁但GET请求无法包含数据遥GET请求将数据放置在URL地址中遥POST与GET请求不同的是袁POST据在请求体内请求可以向服务器提交数据表单或上传文件袁POST请求会使新数据建立或者对已有袁数的数据进行修改遥POST请求将数据放置在消息体中遥时间服务器同步袁NTP渊NetworkTimeProtocol冤服务器是使本地计算机时间与因特网尧原子钟尧卫星进行同步的一种协议袁可以使本地计算机有着高精确度的时间遥服务器向客户端发送的时间为国际标准时间UTC袁北京时间领先UTC8小时袁即60*60*8=28800秒袁在计算机本地配置中需要事先设置好偏移量袁才能获得精确的本地时间遥3援3单色图形库OLED显示模块屏幕袁支持单色袁U8G2OLED驱动库是嵌入式设备中优秀的和LCD袁有两种模式院持多种字体U8G2袁袁包括所有的图形程序对字体无高度尧需要占用内存进行渲渊线尧方形尧圆冤尧支染显示遥率袁可以直接写入显示U8x8袁仅文本输出袁渊无需内存缓冲字符冤尧字体只有遥8x8的分辨为本设计实现了视图化交互SSD1306在Arduino平台上使用遥如图9所示U8G2遥库进行开发袁图9D1306显示模块4系统测试天气数据测试是提供给人员今日是否适合作业的一个参考标准袁根据昨尧今尧明3天的天气数据进行计算袁可以根据数据对今日作业与否做出决定遥782019.09建立测试模型U={UU1表示以过去,U2,U3,U4}渊4.1冤112小时天气情况袁U2表示未来24小时天气情况袁U24小时风力遥如表3表示未来24小时气温袁U表11近所示12遥4表示未来小时天气分类过去12小时天气情况24小时天气情况24小时气温24小时风力1晴尧多云尧阴尧霾尧雾尧扬沙尧浮尘1晴尧多云尧阴1>38益1臆2级2小雨尧小雪2霾尧雾230益-38益22-3级3中雨及以上尧中雪及以上3扬沙尧浮尘320益-29益33-4级4冰雹4小雨尧小雪410益-19益44-5级5沙尘暴5中雨及以上尧中雪及以上50益-9益5>5级6冰雹6-7益-(-1)益7沙尘暴7<-8益建立评判集渊今日作业评估等级冤V={V1其中袁,V2V,V3,V4}渊4.2冤1表示良好渊>3天冤袁V2表示适合渊2-3天冤袁V3表示不适合渊1-2天冤袁V4表示几乎无效渊<1天冤遥如图10所示遥过去12小时天气情况未来24小时天气情况A1良好5适合不适合A2A3360极不适合0B1良好A406B23.5适合不适合A551120B336.5极不适合0700310170B4B5010702未来24小时气温情况B600C1良好B70032700018199C20适合C331不适合7极不适合未来24小时风力情况C4452D1良好45112适合C5351100D236不适合1极不适合C624D305111C7052031208D4D501016071822图10未来24小时天气情况权数根据过去12小时及未来24小时天气分类标准确定天气状况袁过去12小时天气状况渊A1尧A2尧A3尧A4尧A5冤尧B6尧未来24小时天气状况渊B1尧B2尧B3尧B4尧B5尧C6尧B7冤尧在每个因素中任取一种C7冤尧未来未来2424小时风力小时气温渊C1尧C2尧C3尧C4尧C5尧袁得到渊D1尧5*7*7*5=1225D2尧D3尧D4尧种天气情D5冤袁况遥使用X窑R=Y得到模糊变换袁根据权数分配后袁进行归一化处理如表2所示遥表2天气加权作业对应表天气状况A1A1A1A1A1A1A1B1B1B1B1B1B1B1C1C1C1C1C1C2C2D1D2D3D4D5D1D2作业级别2233322作业状况V2V2V3V3V3V2V2天气数据分析系统的构成与设计遥利用ESP8266袁可以连接到因特网袁实现物联云的远程访问与控制遥使用本系统为为单片机控制和天气数据分析系统提供新的解决方案袁在当今社会中具有较强的实用性遥参考文献[1]李少林,张维路.基于ZigBee/WiFi技术的无线数据采集与控制系统[J].组合机床与自动化加工技术,2018.[2]王欣蕾,刘念.基于ESP8266模块的数据采集与上传系统的设计与实现[J].科技风,2018.[3]王荣海,罗金生,李岷,曹斌.基于STM32的网络天气预报系统的设计与实现[J].电子世界,2019.气象,2005.[4]徐月顺,当周卓玛,赵应章.洗车指数[J].青海[5]罗金生,王荣海,李岷.基于Arduino和ESP8266网络远程心率测量系统[J].电脑知识与技术,2019.5结语借助了天气数据服务器和ESP8266结合Arduino平台的物联网方案袁模糊综合评判袁UDP广播等技术袁设计了一款天气数据分析系统袁介绍了系统的设计思路及工作原理遥在硬件设计方面原则通用性强的MCU袁开拓稳定的无线信号通道袁增加了LED模块的滚动显示动态天气数据曰软件上以稳定为前提确保实时性遥通过以天气对应作业强度为测试数据袁确认系统数据的实时性和实用性遥通过上文的叙述袁可以了解到基于ESP8266WiFi模块的开发与控制流程袁以及简单了解到(上接第49页)运算都遵循一般自增自减运算规则渊如测试代码三第9尧10行冤遥渊4冤当前置自减出现在总表达式开头时袁如果第二[6]曹振民,陈年生,马强,武陵,武婧.基于ESP8266的无线控制电路设计[J].工业控制计算机,2017.表达式袁如果第一项是前置自增袁第二项是后置自减袁这两个表达式运算结果就是变量经过自增和自减运算后值的两倍再加1曰总表达式开头的两个表达式袁如果第一项前置自减袁第二项后置自增袁这两个表达式运算结果就是变量经过自减和自增运算后值的两倍再减1遥以上所有的情况袁总表达式第三项及以后的自增/减表达式的运算都按一般自增自减运算规则进行遥复合自增/减运算规则如此复杂袁可能是因为编译器优化的原因袁在程序设计中为了使程序结构清晰最好尽量避免表达式中同时出现多个自增自减表达式的情况遥参考文献[1]董永建.信息学奥赛一本通[M].北京院科学技术文献出版社,2013:18-22.[2]王创伟,蔡长安.程序设计基础要从问题到C语言程序[M].北京院清华大学出版社,2011.个表达式是后置自增袁则前两个表达式的值为变量自增一次自减一次之后的值乘以2减1袁之后所有的自增/减运算都遵循一般自增自减运算规则渊如测试代码三第11行冤遥以上是C/C++语言中复合自增自减运算的所有运算规则袁对复合自增尧复合自减尧复合自增自减3种表达式的运算规则进一步总结袁可以得到结论院对于具有多个自增/减表达式的总表达式袁只要总表达式第一项不是前置自增/减表达式袁运算就按一般自增自减运算规则进行曰总表达式开头的两个表达式袁如果都是前置自增/减表达式袁这两个表达式运算结果就是变量经过两次相应自增/减运算后值的两倍曰总表达式开头的两个2019.0979

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务