12下一页
返回列表 发新帖我要提问本帖赏金: 10.00元(功能说明)

[PCB] NodeMCU(ESP8226)在线查询天气+网络授时+OLED显示

[复制链接]
 楼主| 877049204 发表于 2018-10-15 16:24 | 显示全部楼层 |阅读模式
本帖最后由 877049204 于 2018-10-20 18:59 编辑

一、硬件
NodeMCU开发板一块(20块钱),USB线1根


二、开发环境
ESPlorer,Lua脚本语言


三、获取天气的接口
免费的心知天气接口,链接:https://api.seniverse.com/v3/wea ... uage=zh-Hans&unit=c
得到的数据格式为JSON格式,中英文可选,如下图
  1. {
  2. "results":
  3. [{
  4. "location":{"id":"WWMT5Q64CR3G","name":"青岛","country":"CN","path":"青岛,青岛,山东,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},
  5. "now":{"text":"多云","code":"4","temperature":"19"},
  6. "last_update":"2018-10-15T15:35:00+08:00"
  7. }]
  8. }



四、源代码
刚开始接触Lua脚本,主要是调用各种函数,参考信息出处:https://blog.csdn.net/luckey_pig/article/details/79574387
注意首先得把带sjon的固件刷入MCU,对着参考文档学习,官方参考文档如下:
  1. https://nodemcu.readthedocs.io/en/master/en/modules/sjson/#sjsondecode
代码比较简单,
1、配置Wifi
2、创建链接获取天气数据;
3、使用sjson解析数据,串口打印
源代码回复可见
游客,如果您要查看本帖隐藏内容请回复


四、效果

目前是串口打印天气,之后准备使用OLED显示屏显示,效果会更好。

等我学会了Lua脚本下驱动显示屏,有前辈知道的也可以指导下,免得走弯路





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

打赏榜单

南极的猪 打赏了 10.00 元 2018-10-16
理由:看你长得好像云锦哦

评论

[url=home.php?mod=space&uid=1277642]@877049204[/url] :好的不用谢  发表于 2018-10-16 18:25
[url=home.php?mod=space&uid=2661848]@南极的猪[/url] :当然可以教你  发表于 2018-10-16 18:23
emmmm我是一个小白。。。。不怎么能看懂。。。楼主可以教教我吗  发表于 2018-10-16 17:18
caijie001 发表于 2018-10-16 16:21 | 显示全部楼层
66666666666666mark

评论

欢迎讨论噢,后面增加了OLED显示的功能  发表于 2018-10-20 18:47
Vansm 发表于 2018-10-17 10:17 | 显示全部楼层
夜观星象  明日有雨
 楼主| 877049204 发表于 2018-10-20 18:47 | 显示全部楼层
五、增加OLED显示功
前面已经完成了串口打印天气的功能,还是不够NB方便,NodeMCU的固件支持各种OLED的库,开发非常方便。
不过在网上搜寻了一波,发现用LUA开发的例程还是比较少的。
第一步首先刷入带u8g和IIC的固件,在https://nodemcu-build.com/上定制自己需要的固件,我选择的是旧版的固件,新版的都是u8g2,资料太少不会用

刷完固件后连接开发板,串口可以看到mudules模块信息:


然后就可以编写程序测试OLED好不好用了,代码如下
  1. -- OLED Display demo
  2. -- March, 2016
  3. -- @kayakpete | pete@hoffswell.com
  4. -- Hardware:
  5. --   ESP-12E Devkit
  6. --   4 pin I2C OLED 128x64 Display Module
  7. -- Connections:
  8. --   ESP  --  OLED
  9. --   3v3  --  VCC
  10. --   GND  --  GND
  11. --   D1   --  SDA
  12. --   D2   --  SCL

  13. -- Variables
  14. sda = 1 -- SDA Pin
  15. scl = 2 -- SCL Pin

  16. function init_OLED(sda,scl) --Set up the u8glib lib
  17.      sla = 0x3c
  18.      i2c.setup(0, sda, scl, i2c.SLOW)
  19.      disp = u8g.ssd1306_128x64_i2c(sla)
  20.      disp:setFont(u8g.font_6x10)
  21. --     disp:setFontRefHeightExtendedText()
  22. --     disp:setDefaultForegroundColor()
  23.      disp:setFontPosTop()
  24.      --disp:setRot180()           -- Rotate Display if needed
  25. end

  26. function print_OLED()
  27.    disp:firstPage()
  28.    repeat
  29.      disp:setColorIndex(1);
  30.      disp:drawBox(0, 0,128,20)
  31. --     disp:setDefaultForegroundColor()
  32.      disp:setColorIndex(0);
  33.      disp:setFont(u8g.font_6x10)
  34.      disp:drawStr(20, 0, "Weather Station")
  35.      disp:drawStr(0, 10, "Powered By YunJin")
  36.      
  37.      disp:setDefaultForegroundColor()
  38.      disp:drawStr(0, 30, str1)
  39.      disp:drawStr(0, 40, str2)
  40.    until disp:nextPage() == false
  41.    
  42. end

  43. -- Main Program
  44. str1="Hello Yunjin!!"
  45. str2=" @zhongli"
  46. init_OLED(sda,scl)
  47. print_OLED()




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 877049204 发表于 2018-10-20 18:54 | 显示全部楼层
六、增加网络授时(网络时钟)功能
让开发板从网络获取时间,听着很高大上,但是对NodeMCU来说太简单了,

NodeMCU包含SNTP模块。

SNTP,即简单网络时间协议(Simple Network Time Protocol),主要被用来同步因特网上计算机的时间。SNTP协议采用客户端/服务器的工作方式。SNTP服务器通过接收GPS信号或自带的原子钟作为系统的时间基准。SNTP客户端通过定期访问SNTP服务器获得准确的时间信息,用于调整客户端自身所在系统的时间,达到同步时间的目的。

可以上网找NTP服务器,百度NTP就行。ping测试一下网速如何,这个网速不错


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 877049204 发表于 2018-10-20 18:58 | 显示全部楼层
七、最终效果
最终效果看图,Powered By YunJin由Yun同学赞助@南极的猪 ,非常感谢!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jinxiang1981 发表于 2018-10-22 15:32 | 显示全部楼层
网络授时+OLED显示
南极的猪 发表于 2018-10-23 15:41 | 显示全部楼层
877049204 发表于 2018-10-20 18:58
七、最终效果
最终效果看图,Powered By YunJin由Yun同学赞助@南极的猪 ,非常感谢!

噗哈哈哈哈 替云锦同学谢谢你哦!
我要注册zhuce 发表于 2018-11-5 23:53 来自手机 | 显示全部楼层
。。。。shshh

评论

哈哈,欢迎讨论,看来你是专门注册的  发表于 2018-11-6 18:43
cqzxc 发表于 2018-11-24 20:52 | 显示全部楼层
看看高科技
mcubaby 发表于 2018-11-30 12:44 | 显示全部楼层
回复一下看看源代码
loooooooong 发表于 2019-2-15 21:12 | 显示全部楼层
感谢分享
mcufz 发表于 2019-3-9 08:54 | 显示全部楼层

谢谢!!!
拾掇忧伤z 发表于 2019-3-29 17:03 | 显示全部楼层
来学习一下
wangmiao1234 发表于 2019-4-23 21:36 | 显示全部楼层
谢谢分享
t28 发表于 2019-4-24 12:55 | 显示全部楼层
非常感谢,学习一下
huaqiu 发表于 2019-4-25 17:21 | 显示全部楼层
5-10㎡ 3天发货,【华强PCB】
chenyuyi94 发表于 2019-5-5 18:10 | 显示全部楼层
想学习一下,谢谢分享
SayBey 发表于 2019-5-6 17:22 | 显示全部楼层
看看学习学习
Sunview45 发表于 2019-5-14 17:24 | 显示全部楼层
源代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

158

主题

1836

帖子

20

粉丝
快速回复 在线客服 返回列表 返回顶部