7280| 4
|
[项目教程] 物联网挑战赛第一题作业:忘了关灯照样有办法 |
本帖最后由 珠韵 于 2018-7-30 22:40 编辑 各位创客爱好者朋友,不知道您有没有遇到这种情况,有时候忽然想起自己家里(或者办公室)灯好像没关,又好像关了。我就是这样一个人,老会惦记自己好像忘记关灯了。 我这个第一题的作业的灵感就来了,我要做一个能够远程检测灯有没有关闭,没有关就通过远程命令把灯给关闭了。我的思路是这样的: 1.先看图,用到的器材有micro:bit+Micro:Mate+ OBLOQ - IoT物联网模块。 ![]() 2.思路,现将物联网模块和平台进行连接,然后通过网络发送指令检测板子上的LED灯是否亮着,亮着就关闭。 思路就这么简单,现在开始玩起来吧。 第一阶段,接线并联网。 关于连接的方法,我几个月前写过一篇教程,各位可以看一下,这里就不重复了。 连接的几点诀窍,我总结起来: (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模块确实非常有意思,现在又有小程序了,更加方便了! |
我很喜欢这个作业,通过一步步的完成来解决实际问题,最后再总结发现问题和需求之间的差距。最后找到真正需要的功能和方法。 其实很多强迫症最后只是需要再关闭一下即可,无论是开着还是关着。 但在这个过程中个,我们通过这个过程学习到了很多的知识。而这些知识可能在这个应用里面并不是最关键的,但是谁知道在未来是否会成为关键的知识点呢? 整个项目学习的过程中,这个不就是我们所需要学习的点吗? |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed