打印
[其他]

【21ic第二届设计大赛】+气象信息和星座运势获取方法

[复制链接]
2106|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 gaoyang9992006 于 2018-8-9 22:37 编辑

找了半天没有找到显示屏,没法了,只能交个不合格的了。不过功能是可以实现的,目前只是通过串口发出来。
找了一天终于找到了合适的信息接口了,哈哈。
硬件:NodeMCU(ESP8266+NodeMCU:lua)+USB串口设备
这个就是esp8266烧录的嵌入式Lua解释器NodeMCU固件。
项目分为两个代码文件:init.lua    负责模块入网以及启动另外一个文件                  tianqi.lua           这个实现跟服务器通信并get回json数据

由于设备简陋,串口线也没,找了个STM32的开发板,用上面的串口顶一下,非常好用,STM32的这个系列开发板就是好啊。哈哈,其实我可以通过32扩展一堆东西利用这个ESP8266的,不过我没传感器了,之前一个DIY用掉了。


蓝色灯闪烁代表已经连接网络并正式工作。
--init.lua
print("set up wifi mode")
wifi.setmode(wifi.STATION)
sta_cfg={}
sta_cfg.ssid="360WiFi-SJB"
sta_cfg.pwd="shejibu123"
wifi.sta.config(sta_cfg)

wifi.sta.connect()
print("IP unavaiable, Waiting...")
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()~= nil then

tmr.stop(1)
print("Config done, IP is "..wifi.sta.getip())
dofile("tianqi.lua")
end

end)
这是第一个文件
————————————————————————————————————————————————————————————————————————————
led1 = 4 --蓝色LED在GPIO4
stat=1
host = "api.avatardata.cn" --天气网站

gpio.mode(led1, gpio.OUTPUT)

tmr.alarm(2, 1000, tmr.ALARM_AUTO,function()

if stat==1 then
gpio.write(led1, gpio.LOW);
stat=0
elseif stat==0 then
gpio.write(led1, gpio.HIGH);
stat=1
end
end
)--设置led1=D4 蓝色LED 1秒循环闪烁



tmr.alarm(3, 10000, tmr.ALARM_AUTO,function() --每10秒到网站获取数据
conn=net.createConnection(net.TCP, 0)
conn:connect(80,host)
conn:on("receive", function(conn, payload)
print(payload)

end )
conn:on("connection", function(conn, payload)

conn:send("GET /Constellation/Query?key=e7d7d7968de9414bb79421c6b6c504f6&consName=%E5%A4%A9%E8%9D%8E%E5%BA%A7&type=today".." HTTP/1.1\r\n".."Host: "..host.. "\r\n".."Connection: close\r\n\r\n")

end
)


end)



tmr.alarm(4, 50000, tmr.ALARM_AUTO,function() --每50秒到网站获取数据
conn=net.createConnection(net.TCP, 0)
conn:connect(80,host)
conn:on("receive", function(conn, payload)
print(payload)

end )
conn:on("connection", function(conn, payload)

conn:send("GET /Weather/Query?key=8f4048cb00d24692bd0fa6898ad811d9&cityname=%E5%95%86%E6%B0%B4".." HTTP/1.1\r\n".."Host: "..host.. "\r\n".."Connection: close\r\n\r\n")

end
)


end)



大家不要抄我的key啊,要不然我就没法玩了,可以自己去注册一个。

串口打印出来的数据,为了容易区分,我把两个频率设置的不同。另外一天只有1000次访问数据限制,因此可以算好,87秒访问一次刚好够用。其实这种数据你120秒访问一次就够了。

相关帖子

沙发
gaoyang9992006|  楼主 | 2018-8-9 19:32 | 只看该作者
其实还可以获取股票,方法类似啊。同样的方法访问股票接口。不过我这没有个牛X的显示器,看着太LOW就不再显摆了。希望其他参赛的朋友也贴出源码啊。呵呵哒。

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2018-8-9 19:36 | 只看该作者
另外觉得看着不爽的还可以从json里抽取出你感兴趣的某几条也是可以的。这个不再赘述,我眼疼,先撤了。

使用特权

评论回复
地板
wahahaheihei| | 2018-8-9 19:55 | 只看该作者
太感谢了,一直不会获取。楼主再给个时间获取方法吧

使用特权

评论回复
5
gx_stove| | 2018-8-9 20:20 | 只看该作者
助威来了

使用特权

评论回复
6
lin5674675| | 2018-8-9 21:00 | 只看该作者
好牛X的样子,顶起来

使用特权

评论回复
7
乙?!| | 2018-8-9 22:27 | 只看该作者
看不懂。

使用特权

评论回复
8
gaoyang9992006|  楼主 | 2018-8-9 22:38 | 只看该作者


esp8266里面烧录的NodeMCU固件,支持Lua编程,然后就可以很容易这么几十行就做好了一个WEB数据获取的程序。

使用特权

评论回复
9
springvirus| | 2018-8-10 08:14 | 只看该作者
gaoyang9992006 发表于 2018-8-9 19:36
另外觉得看着不爽的还可以从json里抽取出你感兴趣的某几条也是可以的。这个不再赘述,我眼疼,先撤了。 ...

以此判断,楼主宅男一枚,手机控+敲代码,哈哈,注意劳逸结合。。。

使用特权

评论回复
10
qjy780804| | 2018-8-10 08:50 | 只看该作者
楼主,你太牛了,只能给你点赞

使用特权

评论回复
11
小明的同学| | 2018-8-10 11:24 | 只看该作者
springvirus 发表于 2018-8-10 08:14
以此判断,楼主宅男一枚,手机控+敲代码,哈哈,注意劳逸结合。。。

其实我很阳光的,宅的不太狠,最近天太热没法,星期天还是在外溜达的。谢谢。今晚回老家乡下,乡村游一周。

使用特权

评论回复
12
小明的同学| | 2018-8-10 11:25 | 只看该作者
qjy780804 发表于 2018-8-10 08:50
楼主,你太牛了,只能给你点赞

谢谢,这个东西实现网络应用很容易,不用太多代码,一条指令就可以建立好链接和应用。配合Lua强大的处理能力和丰富的库函数,可以很容易抽取出你感兴趣的文字内容。

使用特权

评论回复
13
gaoyang9992006|  楼主 | 2018-8-10 11:32 | 只看该作者
那个回复你们的是我的这个账号的马甲。

使用特权

评论回复
14
zhuotuzi| | 2018-8-10 11:41 | 只看该作者
我来给你呐喊。

使用特权

评论回复
15
gejigeji521| | 2018-8-12 10:27 | 只看该作者
太神奇了,买了esp8266怎么烧录你说的这个?求教程。

使用特权

评论回复
16
小小电子爱好者| | 2018-8-12 10:37 | 只看该作者
厉害咯   !!!

使用特权

评论回复
17
yiy| | 2018-8-14 16:37 | 只看该作者
我来看星座从哪儿搞。

使用特权

评论回复
18
yiy| | 2018-8-14 16:37 | 只看该作者
厉害了,这个好资源可以,这种一天获取几次就够的。做成产品放办公桌就高大上了

使用特权

评论回复
19
zhuomuniao110| | 2018-8-24 21:30 | 只看该作者
这不是C?也不是Python?

使用特权

评论回复
20
734774645| | 2018-9-10 23:03 | 只看该作者
用send?不是应该用get吗,http.get是不是也行?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

1972

主题

15992

帖子

210

粉丝