珠韵 发表于 2018-7-30 22:36:26

物联网挑战赛第一题作业:忘了关灯照样有办法

本帖最后由 珠韵 于 2018-7-30 22:40 编辑

各位创客爱好者朋友,不知道您有没有遇到这种情况,有时候忽然想起自己家里(或者办公室)灯好像没关,又好像关了。我就是这样一个人,老会惦记自己好像忘记关灯了。我这个第一题的作业的灵感就来了,我要做一个能够远程检测灯有没有关闭,没有关就通过远程命令把灯给关闭了。我的思路是这样的:1.先看图,用到的器材有micro:bit+Micro:Mate+ OBLOQ - IoT物联网模块。2.思路,现将物联网模块和平台进行连接,然后通过网络发送指令检测板子上的LED灯是否亮着,亮着就关闭。思路就这么简单,现在开始玩起来吧。
第一阶段,接线并联网。关于连接的方法,我几个月前写过一篇教程,各位可以看一下,这里就不重复了。教程链接:https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=36517连接的几点诀窍,我总结起来:(1)4P线,绿接1,蓝接2,红黑3V5V无所谓。(经测3V5V都能带动OBLOQ模块)。(2)wifi的SSID要注意大小写。(3)测试的时候,要将电源线(数据线)插在扩展板上。
第二阶段,我们开始来写程序吧。【程序解读】(1)当开机时,初始化设置物联网模块的参数,这里有个新变化,就是“自动连接”这个程序块现在可以选择服务器了,我们选择默认的服务器。(2)当micro:bit的A键按下,点阵屏灯全亮,B按下,灯全灭。按A+B向物联网发送当前亮度值。
通过这个程序,我测出灯开的时候的亮度值和灯灭的时候的亮度值。请看下面演示视频。接收到的数据如下图:可以看出,灯亮的时候为67和56,灯灭的时候是36和33,我取中间值45。开始更改程序。起初写的程序如下图。(初始化部分和前面是一样的,就不再贴出来了)我设计的时候的设想是电脑端发送“liangdu”,返回板子的亮度,用来检测灯是否开着。发送“guandeng”,直接关闭LED点阵屏,发送“zidong”则检测亮度是否大于45,如果大于45就关闭LED。结果我在测试时发现指令“guandeng”和“zidong”均能正常操控,在开灯的情况下关闭灯。但是发送“liangdu”却无法得到反馈值。琢磨了好久,没有搞定。已经是半夜了,就在群里发了问题,先睡觉了。第二天早成,我参考了群友们的意见,进行测试。包括用点阵屏先显示一下接收的字符,发现正常。创建topic_1,把亮度值改发送到topic_1上,结果失败。
后来我在发送消息前加了延时等待1秒,结果能返回亮度值了。我觉得可能是程序没有延时,运行太快的缘故吧。下图是运行效果,怎么样,还不错吧。后来一想,micro:bit的亮度级别值受环境光影响,变化很大,白天和黑夜的值差异大,这个办法不好使,我就想起了makecod有检测点阵屏LED是否亮着的功能,用这个就更加方便了。
于是又修改了程序。解读一下,当无线接收到消息后,判断,如果(0,0)的LED灯亮着,就关闭LED。经过测试非常灵,效果非常好,这个办法检测灯是否亮着并关闭灯很好用。
这时,我又想到了一个问题,我只是想把灯关闭,不管亮着还是没有亮着,我都发送一个关灯的命令就可以了。这次我用手机微信小程序进行测试了,效果非常好,发送任意字符,就能把灯关闭。下图是录制的视频。
OBLOQ模块确实非常有意思,现在又有小程序了,更加方便了!

digi_cow 发表于 2018-7-31 07:38:18

解读一下,当无线接收到消息后,判断,如果(0,0)的LED灯亮着,就关闭LED。
经过测试非常灵,效果非常好,这个办法检测灯是否亮着并关闭灯很好用。
巧妙!这是结合硬件进行程序设计的乐趣吧{:5_176:}

rzyzzxw 发表于 2018-7-31 08:12:53

本帖最后由 rzyzzxw 于 2018-7-31 09:52 编辑

大赞,吕老师把bit玩得出神入化了。{:5_148:}图片和视频都做得好专业。{:5_146:}

微笑的rockets 发表于 2018-7-31 10:18:02

我很喜欢这个作业,通过一步步的完成来解决实际问题,最后再总结发现问题和需求之间的差距。最后找到真正需要的功能和方法。
其实很多强迫症最后只是需要再关闭一下即可,无论是开着还是关着。
但在这个过程中个,我们通过这个过程学习到了很多的知识。而这些知识可能在这个应用里面并不是最关键的,但是谁知道在未来是否会成为关键的知识点呢?
整个项目学习的过程中,这个不就是我们所需要学习的点吗?

我爱蘑菇 发表于 2018-8-6 18:36:56

吕老师,从您的帖子里解决了我迷惑很久的问题。原来我遇到的时好时坏的问题用延时解决了。
页: [1]
查看完整版本: 物联网挑战赛第一题作业:忘了关灯照样有办法