|
|
基本和 我爱苹果的帖子是一样的。 [ARM]仿制ESP8266+OLED Weather Station成功--已更新修改好的源码和库文件 http://bbs.mydigit.cn/read.php?tid=1691649改自国外作者。 因为国外的天气源不好用,我改为了国内的天气源。
照着做了,但是原作者的方案将天气信息的解码部分放在另外的服务器上来实现,国内连不上,只能显示一堆错误的数据。 随后在网上搜索了,没有找到完整的能在国内方便使用的完整的代码。 只好自己动手了。 首先确定天气预报的源, 参考链接 有哪些免费开放且收录城市较完整的天气 API 接口?http://www.zhihu.com/question/20521716/answer/21247376我找了方便注册,开放接口,免费的和风天气 http://www.heweather.com/。 (P.S忘了当初不选国家气象局源的原因了,可能是注册麻烦。希望现在这个不要用着就挂了) (做好放了3个月,突然发现之前的程序无法正常使用了,3月返回的get请求,第9波是是JSON代码,到了6月变成第7波是JSON代码了,只好改程序,使用字符串长度来判断) 和风天气的数据是 JSON格式的,就是你发个请求过去,它会回你一大坨数据。 {"HeWeather data service 3.0":[{"aqi":{"city":{"aqi":"87","pm10":"82","pm25":"64"}},"basic":{"city":"金山","cnty":"中国","id":"CN101020700","lat":"30.824000","lon":"121.211000","update":{"loc":"2016-06-01 23:53","utc":"2016-06-01 15:53"}},"daily_forecast":[{"astro":{"sr":"04:52","ss":"18:53"},"cond":{"code_d":"309","code_n":"101","txt_d":"毛毛雨/细雨","txt_n":"多云"},"date":"2016-06-01","hum":"77","pcpn":"15.6","pop":"99","pres":"1005","tmp":{"max":"23","min":"18"},"vis":"2","wind":{"deg":"63","dir":"东北风","sc":"微风","spd":"4"}},{"astro":{"sr":"04:52","ss":"18:54"},"cond":{"code_d":"101","code_n":"305","txt_d":"多云","txt_n":"小雨"},"date":"2016-06-02","hum":"58","pcpn":"0.0","pop":"0","pres":"1010","tmp":{"max":"24","min":"19"},"vis":"10","wind":{"deg":"108","dir":"东风","sc":"微风","spd":"0"}},{"astro":{"sr":"04:52","ss":"18:54"},"cond":{"code_d":"306","code_n":"306","txt_d":"中雨","txt_n":"中雨"},"date":"2016-06-03","hum":"91","pcpn":"9.5","pop":"84","pres":"1007","tmp":{"max":"22","min":"19"},"vis":"9","wind":{"deg":"86","dir":"东北风","sc":"微风","spd":"1"}},{"astro":{"sr":"04:51","ss":"18:55"},"cond":{"code_d":"305","code_n":"104","txt_d":"小雨","txt_n":"阴"},"date":"2016-06-04","hum":"82","pcpn":"3.9","pop":"79","pres":"1010","tmp":{"max":"23","min":"17"},"vis":"2","wind":{"deg":"62","dir":"东北风","sc":"微风","spd":"3"}},{"astro":{"sr":"04:51","ss":"18:55"},"cond":{"code_d":"101","code_n":"101","txt_d":"多云","txt_n":"多云"},"date":"2016-06-05","hum":"50","pcpn":"0.0","pop":"6","pres":"1015","tmp":{"max":"25","min":"18"},"vis":"10","wind":{"deg":"90","dir":"东北风","sc":"微风","spd":"3"}},{"astro":{"sr":"04:51","ss":"18:56"},"cond":{"code_d":"101","code_n":"101","txt_d":"多云","txt_n":"多云"},"date":"2016-06-06","hum":"61","pcpn":"0.0","pop":"0","pres":"1014","tmp":{"max":"25","min":"19"},"vis":"10","wind":{"deg":"122","dir":"东风","sc":"微风","spd":"1"}},{"astro":{"sr":"04:51","ss":"18:56"},"cond":{"code_d":"101","code_n":"101","txt_d":"多云","txt_n":"多云"},"date":"2016-06-07","hum":"65","pcpn":"0.0","pop":"0","pres":"1011","tmp":{"max":"25","min":"20"},"vis":"10","wind":{"deg":"146","dir":"东风","sc":"微风","spd":"3"}}],"hourly_forecast":[{"date":"2016-06-02 01:00","hum":"89","pop":"0","pres":"1009","tmp":"19","wind":{"deg":"14","dir":"东北风","sc":"微风","spd":"6"}},{"date":"2016-06-02 04:00","hum":"94","pop":"0","pres":"1009","tmp":"18","wind":{"deg":"23","dir":"东北风","sc":"微风","spd":"6"}},{"date":"2016-06-02 07:00","hum":"88","pop":"0","pres":"1010","tmp":"21","wind":{"deg":"57","dir":"东北风","sc":"微风","spd":"9"}},{"date":"2016-06-02 10:00","hum":"68","pop":"0","pres":"1010","tmp":"26","wind":{"deg":"86","dir":"东风","sc":"微风","spd":"15"}},{"date":"2016-06-02 13:00","hum":"59","pop":"0","pres":"1010","tmp":"27","wind":{"deg":"103","dir":"东南风","sc":"3-4","spd":"21"}},{"date":"2016-06-02 16:00","hum":"62","pop":"0","pres":"1009","tmp":"25","wind":{"deg":"108","dir":"东南风","sc":"3-4","spd":"21"}},{"date":"2016-06-02 19:00","hum":"72","pop":"0","pres":"1010","tmp":"22","wind":{"deg":"95","dir":"东风","sc":"微风","spd":"15"}},{"date":"2016-06-02 22:00","hum":"79","pop":"0","pres":"1011","tmp":"20","wind":{"deg":"97","dir":"东风","sc":"微风","spd":"13"}}],"now":{"cond":{"code":"101","txt":"多云"},"fl":"19","hum":"89","pcpn":"0","pres":"1009","tmp":"18","vis":"10","wind":{"deg":"360","dir":"北风","sc":"微风","spd":"1"}},"status":"ok","suggestion":{"comf":{"brf":"舒适","txt":"白天不太热也不太冷,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。"},"cw":{"brf":"不宜","txt":"不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"},"drsg":{"brf":"较舒适","txt":"建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"},"flu":{"brf":"易发","txt":"相对于今天将会出现大幅度降温,风力较大,易发生感冒,请注意适当增加衣服。"},"sport":{"brf":"较不宜","txt":"有降水,且风力较强,气压较低,推荐您在室内进行低强度运动;若坚持户外运动,须注意避雨防风。"},"trav":{"brf":"适宜","txt":"有降水,虽然风稍大,但温度适宜,适宜旅游,可不要错过机会呦!"},"uv":{"brf":"最弱","txt":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"}}}]}
这么一大坨,普通的arduino板肯定无法处理了。 网上找了个arduino 的JSON库,可以从JSON中提取出所需要的数据。经过反复测试,数据量太大,无法解析。(砍掉一半数据是可以解析的) 后来使用了字符串查找函数,取出了所需的数据,修改原程序,任务完成。 做完放了三个月,现在有空整理下发出来。 (P.S 后来原作者又更新了NTP获取时间的功能,等哪天有空再给抄上。)
- [size=; font-size: 1rem,1rem]准备元件
esp8266 我选的是ESP-12OLED 用1306控制芯片,IIC接口LDO之前选过XC6206,但是电流太小,初始化的时候老是会复位 - [size=font-size: 1rem,1rem]安装 arduino 1.6.5
我用的是1.6.5 其它版本未测试,太老的不支持新功能。 - [size=font-size: 1rem,1rem]安装 esp8266 扩展
去 http://www.heweather.com/注册,获取API KEY 修改 无线路由的SSID 修改 无线路由的Password 修改 城市名称/城市代码 参考 http://www.heweather.com/documents/cn-city-list修改 API KEY - [size=font-size: 1rem,1rem]编译
编译时有可能会出现下图错误,原因是某个库文件有问题,把它替换掉就行了。
 使用附件中的文件替换C:\Documents and Settings\Administrator\Application Data\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9\xtensa-lx106-elf\lib\libm.a再次编译就不会报错了。
- [size=font-size: 1rem,1rem]下载
将GPIO0和GND短接,选择UART Download模式。 接好串口线。 重新上电。 点击upload按钮。
|