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

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

[复制链接]
6175|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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格式,中英文可选,如下图
{
"results":
[{
"location":{"id":"WWMT5Q64CR3G","name":"青岛","country":"CN","path":"青岛,青岛,山东,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},
"now":{"text":"多云","code":"4","temperature":"19"},
"last_update":"2018-10-15T15:35:00+08:00"
}]
}



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


四、效果

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

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





lua.rar

714 Bytes

打赏榜单

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

评论
南极的猪 2018-10-16 18:25 回复TA
@877049204 :好的不用谢 
877049204 2018-10-16 18:23 回复TA
@南极的猪 :当然可以教你 
南极的猪 2018-10-16 17:18 回复TA
emmmm我是一个小白。。。。不怎么能看懂。。。楼主可以教教我吗 

相关帖子

沙发
caijie001| | 2018-10-16 16:21 | 只看该作者
66666666666666mark

使用特权

评论回复
评论
877049204 2018-10-20 18:47 回复TA
欢迎讨论噢,后面增加了OLED显示的功能 
板凳
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好不好用了,代码如下
-- OLED Display demo
-- March, 2016
-- @kayakpete | pete@hoffswell.com
-- Hardware:
--   ESP-12E Devkit
--   4 pin I2C OLED 128x64 Display Module
-- Connections:
--   ESP  --  OLED
--   3v3  --  VCC
--   GND  --  GND
--   D1   --  SDA
--   D2   --  SCL

-- Variables
sda = 1 -- SDA Pin
scl = 2 -- SCL Pin

function init_OLED(sda,scl) --Set up the u8glib lib
     sla = 0x3c
     i2c.setup(0, sda, scl, i2c.SLOW)
     disp = u8g.ssd1306_128x64_i2c(sla)
     disp:setFont(u8g.font_6x10)
--     disp:setFontRefHeightExtendedText()
--     disp:setDefaultForegroundColor()
     disp:setFontPosTop()
     --disp:setRot180()           -- Rotate Display if needed
end

function print_OLED()
   disp:firstPage()
   repeat
     disp:setColorIndex(1);
     disp:drawBox(0, 0,128,20)
--     disp:setDefaultForegroundColor()
     disp:setColorIndex(0);
     disp:setFont(u8g.font_6x10)
     disp:drawStr(20, 0, "Weather Station")
     disp:drawStr(0, 10, "Powered By YunJin")
     
     disp:setDefaultForegroundColor()
     disp:drawStr(0, 30, str1)
     disp:drawStr(0, 40, str2)
   until disp:nextPage() == false
   
end

-- Main Program
str1="Hello Yunjin!!"
str2=" @zhongli"
init_OLED(sda,scl)
print_OLED()




使用特权

评论回复
5
877049204|  楼主 | 2018-10-20 18:54 | 只看该作者
六、增加网络授时(网络时钟)功能
让开发板从网络获取时间,听着很高大上,但是对NodeMCU来说太简单了,

NodeMCU包含SNTP模块。

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

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


使用特权

评论回复
6
877049204|  楼主 | 2018-10-20 18:58 | 只看该作者
七、最终效果
最终效果看图,Powered By YunJin由Yun同学赞助@南极的猪 ,非常感谢!





使用特权

评论回复
7
jinxiang1981| | 2018-10-22 15:32 | 只看该作者
网络授时+OLED显示

使用特权

评论回复
8
南极的猪| | 2018-10-23 15:41 | 只看该作者
877049204 发表于 2018-10-20 18:58
七、最终效果
最终效果看图,Powered By YunJin由Yun同学赞助@南极的猪 ,非常感谢!

噗哈哈哈哈 替云锦同学谢谢你哦!

使用特权

评论回复
9
我要注册zhuce| | 2018-11-5 23:53 | 只看该作者
。。。。shshh

使用特权

评论回复
评论
877049204 2018-11-6 18:43 回复TA
哈哈,欢迎讨论,看来你是专门注册的 
10
cqzxc| | 2018-11-24 20:52 | 只看该作者
看看高科技

使用特权

评论回复
11
mcubaby| | 2018-11-30 12:44 | 只看该作者
回复一下看看源代码

使用特权

评论回复
12
loooooooong| | 2019-2-15 21:12 | 只看该作者
感谢分享

使用特权

评论回复
13
mcufz| | 2019-3-9 08:54 | 只看该作者

谢谢!!!

使用特权

评论回复
14
拾掇忧伤z| | 2019-3-29 17:03 | 只看该作者
来学习一下

使用特权

评论回复
15
wangmiao1234| | 2019-4-23 21:36 | 只看该作者
谢谢分享

使用特权

评论回复
16
t28| | 2019-4-24 12:55 | 只看该作者
非常感谢,学习一下

使用特权

评论回复
17
huaqiu| | 2019-4-25 17:21 | 只看该作者
5-10㎡ 3天发货,【华强PCB】

使用特权

评论回复
18
chenyuyi94| | 2019-5-5 18:10 | 只看该作者
想学习一下,谢谢分享

使用特权

评论回复
19
SayBey| | 2019-5-6 17:22 | 只看该作者
看看学习学习

使用特权

评论回复
20
Sunview45| | 2019-5-14 17:24 | 只看该作者
源代码

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

158

主题

1836

帖子

20

粉丝