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

[复制链接]
2821|20
 楼主| gaoyang9992006 发表于 2018-8-9 19:27 | 显示全部楼层 |阅读模式
本帖最后由 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用掉了。


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

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

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

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

  4. gpio.mode(led1, gpio.OUTPUT)

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

  6. if stat==1 then
  7. gpio.write(led1, gpio.LOW);
  8. stat=0
  9. elseif stat==0 then
  10. gpio.write(led1, gpio.HIGH);
  11. stat=1
  12. end
  13. end
  14. )--设置led1=D4 蓝色LED 1秒循环闪烁



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

  20. end )
  21. conn:on("connection", function(conn, payload)

  22. 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")

  23. end
  24. )


  25. end)



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

  31. end )
  32. conn:on("connection", function(conn, payload)

  33. 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")

  34. end
  35. )


  36. 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 来自手机 | 显示全部楼层
太感谢了,一直不会获取。楼主再给个时间获取方法吧
gx_stove 发表于 2018-8-9 20:20 来自手机 | 显示全部楼层
助威来了
lin5674675 发表于 2018-8-9 21:00 | 显示全部楼层
好牛X的样子,顶起来
乙?! 发表于 2018-8-9 22:27 | 显示全部楼层
看不懂。
 楼主| gaoyang9992006 发表于 2018-8-9 22:38 | 显示全部楼层


esp8266里面烧录的NodeMCU固件,支持Lua编程,然后就可以很容易这么几十行就做好了一个WEB数据获取的程序。
springvirus 发表于 2018-8-10 08:14 | 显示全部楼层
gaoyang9992006 发表于 2018-8-9 19:36
另外觉得看着不爽的还可以从json里抽取出你感兴趣的某几条也是可以的。这个不再赘述,我眼疼,先撤了。 ...

以此判断,楼主宅男一枚,手机控+敲代码,哈哈,注意劳逸结合。。。
qjy780804 发表于 2018-8-10 08:50 | 显示全部楼层
楼主,你太牛了,只能给你点赞
小明的同学 发表于 2018-8-10 11:24 | 显示全部楼层
springvirus 发表于 2018-8-10 08:14
以此判断,楼主宅男一枚,手机控+敲代码,哈哈,注意劳逸结合。。。

其实我很阳光的,宅的不太狠,最近天太热没法,星期天还是在外溜达的。谢谢。今晚回老家乡下,乡村游一周。
小明的同学 发表于 2018-8-10 11:25 | 显示全部楼层
qjy780804 发表于 2018-8-10 08:50
楼主,你太牛了,只能给你点赞

谢谢,这个东西实现网络应用很容易,不用太多代码,一条指令就可以建立好链接和应用。配合Lua强大的处理能力和丰富的库函数,可以很容易抽取出你感兴趣的文字内容。
 楼主| gaoyang9992006 发表于 2018-8-10 11:32 | 显示全部楼层
那个回复你们的是我的这个账号的马甲。
zhuotuzi 发表于 2018-8-10 11:41 | 显示全部楼层
我来给你呐喊。
gejigeji521 发表于 2018-8-12 10:27 | 显示全部楼层
太神奇了,买了esp8266怎么烧录你说的这个?求教程。
小小电子爱好者 发表于 2018-8-12 10:37 | 显示全部楼层
厉害咯   !!!
yiy 发表于 2018-8-14 16:37 来自手机 | 显示全部楼层
我来看星座从哪儿搞。
yiy 发表于 2018-8-14 16:37 来自手机 | 显示全部楼层
厉害了,这个好资源可以,这种一天获取几次就够的。做成产品放办公桌就高大上了
zhuomuniao110 发表于 2018-8-24 21:30 | 显示全部楼层
这不是C?也不是Python?
734774645 发表于 2018-9-10 23:03 | 显示全部楼层
用send?不是应该用get吗,http.get是不是也行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2052

主题

16403

帖子

222

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