YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 95060|回复: 218

ESP8266+0.96OLED weather station(气象站) -- 无线wifi天气预报

  [复制链接]

签到天数: 867 天

[LV.10]以坛为家III

发表于 2016-9-8 16:01:28 | 显示全部楼层 |阅读模式
上贴写了,如何使用ESP8266获取免费的网络天气资讯:http://www.yfrobot.com.cn/thread-11877-1-1.html本帖将使用OLED来显示这些天气资讯!

首先登陆心知天气:http://www.thinkpage.cn/免费注册(邮箱激活即可使用)!

心知天气更改新IP - api.seniverse.com,原api - api.thinkpage.cn也可用(最好用新的),使用本文中的程序时,请保证你的ID是付费版、付费版、付费版(第一次注册会有免费试用)!
完成注册后,登陆自己的账户,按照下图操作,可免费使用15天!你如果懒得注册,可以使用我已经注册好的 APIKEYshqnpz15ahhefsrz,有效期:2016/9/5~2016/9/20

免费试用.jpg

电路连接:
WeatherStation_750.jpg


OLED显示未来3天天气预报+当前天气资讯,演示视频【优酷网站观看】:



解惑:
1、黄色区域(两个界面相同)
     * 左边的云朵的图标表示获取数据状态 -- 正在获取(云中向下箭头)、成功获取(云中√)
     * 中间的日期为当天日期(从获取的JSON数据中提取)
     * 右边的wifi信号,这个不用解释了吧(当前wifi信号强度)
2、蓝色区域<br>  界面一(3个天气图标):
     * 未来3天的天气预报情况,界面空间限制,很多数据没有解析显示。
     * 底部时间,为最后一次更新数据时间
  界面二:
     * 左上侧为当前天气图标及气温。
     * 左下侧为最后一次更新数据时间
     * 右侧:H-湿度 V-能见度 WD-风向 WS-风力等级(http://baike.baidu.com/view/465076.htm) P-大气压力
风向代码解释(其他参数应该比较好理解):
wind_directions.jpg

代码获取(github地址):
游客,如果您要查看本帖隐藏内容请回复


代码获取(百度网盘地址)):
游客,如果您要查看本帖隐藏内容请回复


常见问题:
★1 图片显示错位问题,库文件有变,将drawBitmap 函数改 drawXBitmap ;如果编译提示无此函数,请自行下载最新库文件。
★2 编译出现如下错误:“DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6 ” 请注意 ArduinoJson 库文件版本,降至5.xx 版本即可正常编译程序。
ArduinoJson版本问题 (1).png ★3 程序正常编译,但是总是重启,串口返回一堆数据,一般情况下,都是解析部分出现错误。
串口打印.png

正常工作程序中可以看到,获取json数据是没问题的,显示“Read Over!”,下一步就是解析数据,就是解析错误导致程序重启。
解析数据.png

串口读取的json数据:
Get the data from Internet!
{"results":[{"location":{"id":"WTUXK27DXN0R","name":"Huaian","country":"CN","path":"Huaian,Huaian,Jiangsu,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"Cloudy","code":"4","temperature":"29"},"last_update":"2020-04-30T17:19:00+08:00"}]}
Read Over!

两者进行对比,看下是否是某些数据没有了:对比发现
now下的数据只有 :text、code、temperature
我们解析了(这些应该是会员账号有的数据):
  strcpy(userData->weather, root["results"][0]["now"]["text"]);
  userData->weatherCode = root["results"][0]["now"]["code"];
  strcpy(userData->temp, root["results"][0]["now"]["temperature"]);
  strcpy(userData->feel, root["results"][0]["now"]["feels_like"]);
  strcpy(userData->pressure, root["results"][0]["now"]["pressure"]);
  strcpy(userData->hum, root["results"][0]["now"]["humidity"]);
  strcpy(userData->visi, root["results"][0]["now"]["visibility"]);
  strcpy(userData->wind, root["results"][0]["now"]["wind_direction"]);
  userData->windScale = root["results"][0]["now"]["wind_scale"];
  strcpy(userData->udate_now, root["results"][0]["last_update"]);

将没有数据的解析程序注释,应该就可以正常工作了。

签到天数: 8 天

[LV.3]偶尔看看II

发表于 2017-4-28 07:07:33 | 显示全部楼层
lemonking 发表于 2017-4-27 19:45
楼主  size_t length = client.peekBytes(content, maxSize);这句函数ESP8266WiFi库里没有啊,是我下的库不 ...

我也遇到这个问题,发现是版本的问题,把原来的ESP8266平台卸了,再按照楼主另一个教程 http://www.yfrobot.com/thread-11797-1-1.html 里面的 “离线安装包(手动下载,离线安装)”装了就可以了  
因为我的IDE只能显示到2.0.0版本,只能离线安装了
回复 支持 1 反对 0

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2016-9-9 21:03:22 | 显示全部楼层
看一下,有代码吗
回复 支持 反对

使用道具 举报

签到天数: 867 天

[LV.10]以坛为家III

 楼主| 发表于 2016-9-10 08:00:37 | 显示全部楼层
zhaoxaio2 发表于 2016-9-9 21:03
看一下,有代码吗

有的,在github网站上直接下载
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-9-21 17:24:41 | 显示全部楼层
看那看那                                          
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2016-10-12 16:40:33 | 显示全部楼层
看看  有不有代码吧
回复 支持 反对

使用道具 举报

签到天数: 867 天

[LV.10]以坛为家III

 楼主| 发表于 2016-10-12 18:52:55 | 显示全部楼层
gtx1989 发表于 2016-10-12 18:21
好的  正想搞一一个  但是楼主是否可以用STC的单片机实现呢

可以,当然还是需要WIFI模块的
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-12-19 10:28:59 | 显示全部楼层
观摩测试一下!
回复 支持 反对

使用道具 举报

签到天数: 13 天

[LV.3]偶尔看看II

发表于 2016-12-23 21:05:44 | 显示全部楼层
本帖最后由 FJ51 于 2016-12-23 21:30 编辑

不错不错,先收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-10-4 00:27 , Processed in 0.054695 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表