用OBLOQ物联网模块做一个防沉迷盒子

2019-08-102.6万
精华项目
AI 快速预览详细 收起
本文介绍了一个利用DFRduino UNO R3和OBLOQ物联网模块制作的防沉迷盒子项目。该项目通过电磁锁、超声波测距和重量传感器等组件,实现对电子设备使用的远程控制和时间管理。家长可以通过IOT平台设定时间限制,并实时监控盒子的状态。这个项目不仅有助于保护孩子的视力,还能激发他们对编程的兴趣。
    开头胡扯:之前,由于公司需要以及自身亟待提高的屌丝气质,所以决定为自己取一个英文名字,思来想去最后选了——Random,“随机”的意思。就是那个将抛硬币上天,然后落回手背,让人猜正反面的随机。我自己是很早就离开了学校,但出来工作后,还保持着对这个世界里面规律规则的好奇,所以平时也偶尔看看科普读物,经常思考些与柴米油盐不沾边的问题,于是被朋友冠上了“民科”的称号。为什么选“Random”呢?因为我肤浅地认为“随机”可能是这个世界最深层次的秘密。我其实之前一直是“极端决定论”的支持者,这个理论解释起来就是——我为什么要在这里写下现在这些文字呢?其实是因为张三之前站在撒哈拉沙漠里打了一个喷嚏;而他打喷嚏,又是因为李四在澳大利亚的马路上摔了一跤;而李四摔了一跤,又是因为仙女星云里有一颗恒星开始转变为红巨星......这个连锁就像是抽毛线团一样,没有止境地,可以一直往前推演。从初中接触物理知识开始,一个观点就开始在我心里不断地被夯实,那就是——这个世界,所有的东西都是有其自身的规律规则。历史上“极端决定论”,在经典物理大厦落成时达到顶峰,那时人们认为只要掌握足够多的数据,就可以知晓过去,甚至是未来,比如预测天气。后来被人们用新的物理知识推翻了“极端决定论”。可是我却一直相信着“决定论”,坚定地认为新的物理领域里的“随机”只是人类暂时的知识盲区而已。所以我一直觉得我们的世界不存在真正的随机。而真正的随机,可能是最迷人的现象。如果它真的存在,这个世界就不至于单调乏味;也就不至于仅仅用规律规则就能算出来各自的未来和这个世界的命运,其实这也正是人们口中常念叨的“冥冥中”。

    有天我骑车回家,路上又出神了。当时一个念头蹦了出来——如果我们这个世界真的被最终确认为万事万物都有其规律规则,就不能产生随机了吗?很神奇的是,居然好像也可以产生。这恰好又是因为“一切皆有其自身的规则规律”,能产生出随机。在一个完全有规律的封闭系统里,任何事物的细微动作都会对周围环境产生巨大扰动。就好比你永远无法思考出在你跟前的微观粒子的当前状态,因为你一思考,它就又被扰动了,这又让人不禁联想到海森堡发现的“测不准原理”。其实这样的情况也算是一种自欺欺人的随机吧。不知道算不算巧合,现在比较前沿的物理,在微观层面发现存在“随机”现象,而在宏观上面却存在着诸如牛顿三定律这样的规律法则。这就好像是在笼统的宏观上会产生“牛顿三定律”,而在细枝末节的微观上会产生随机。由于我自身见识有限,这种体会,不知该给它安上一个什么样的词句来总结。是随着科学探索的尺度越来越微观,人类会变得越来越无知?还是你想去抓一个小气球,而你伸出去的手所带动的气流,却把它推到了更远的地方?我也猜测,会不会是现在人们研究的领域,已经触碰到了这个封闭系统的边缘了呢?就像是一个人类物理学家,他的大脑仅仅思考了那么一小下,却在他所要观察的微观层面上掀起了惊涛骇浪,将试验结果搅得天翻地覆。

    我也曾想到过一个情况,可以计算出一个系统的过去与未来。假设现在有个鱼缸摆在你的面前,里面有鱼、水、水草、小石子,这样一个小的生态系统。而你所处的外部世界独立于鱼缸世界,也可以说是高于鱼缸世界,由于鱼缸世界是封闭的,并且完全有规律。所以尽管你能看到鱼缸世界里面所有信息,但是你的“看”不会对鱼缸世界产生任何影响,鱼缸里的鱼类科学家根本不可能通过任何物理手段探测到你的存在。其实你“看鱼缸世界”这个行为其实已经收走了鱼缸世界里的光,对它们肯定会有影响的,不过咱们是开着挂的,所以不必深究这个细节。然后,你对鱼缸世界进行观察和总结,一段时间后,你可以利用你所在的外部世界里的物质作为工具,来计算出鱼缸世界每一颗砂砾、每一个细胞的过去和未来

【正文】

    现在正值暑假期间,从学校里解放的小朋友们,又终于可以回到家里玩爸爸了。不过由于父母上班比较忙,在这样的寒暑长假里,有些小朋友们在家里玩手机和平板这些就没人管了,小朋友可能一玩就是一整天。应运而生,为了拯救快近视了的野生小朋友们,于是就产生了一个想法——物联网防沉迷盒子。这个想法是看到论坛里的朋友 hnyzcj的《用电磁锁做一个指纹锁》这个制作得到的启发。

【10s短视频】



【完整制作视频】



以下为图文制作介绍(会比视频更详细):

    之前有朋友说我做的东西,手工成分太厉害,导致了他那样手工不好的人只能无奈摇头。应他的要求,这次这个防沉迷盒子,我将手工成分降到最低。概括起来就是——需要打一处热溶胶和拧不到二十颗的螺丝。

先放几张完成后的图片:


用OBLOQ物联网模块做一个防沉迷盒子图25


用OBLOQ物联网模块做一个防沉迷盒子图24


用OBLOQ物联网模块做一个防沉迷盒子图26


用OBLOQ物联网模块做一个防沉迷盒子图27


制作思路:
    使用电磁锁作为盒子的开关结构,盒子会在关闭状态下(锁会告诉UNO此刻盒子的开闭状态),等待3分钟,如果3分钟内无按键上的操作就会进入睡眠模式。当按下薄膜按键上的“1”键后,会唤醒盒子,并通过OBLOQ模块向IOT平台发送一条开启请求。IOT平台接收到请求后,会决定是否要通过平台向盒子发送开启指令。当盒子被唤醒后,每30秒左右会向IOT平台发送盒子此刻的开闭状态、盒子内物品的厚度(超声波测距)、盒子内的物品的重量(重量传感器),这几个参数可以让那些头脑比较灵光的小朋友放弃对抗。设置密码开启的目的,是针对家长在家的时候,可以直接当面开启,RGB LED模块放置在盒子正面处,提供蓝绿红三种颜色。当蓝色亮起时,说明此刻装置处于唤醒的状态;当绿色亮起时,说明盒子立即会打开锁;当红色亮起时,说明输入的密码错误;当LED熄灭时,说明盒子进入了睡眠模式。

准备材料:
1.    DFRduino UNO R3                                                 DFR0216
2.    IO 传感器扩展板 V7.1                                              DFR0265
3.    Gravity: UART OBLOQ - IoT物联网模块                   TEL0118
4.    数字继电器模块(Arduino兼容)                                  DFR0017
5.    4*4 薄膜数字键盘(背面带贴纸)                             FIT0129
6.    Gravity:URM09-模拟量超声波测距传感器                 SEN0307
7.    重量传感器模块 (电子称)                                      SEN0160
8.    电磁锁                                                                      FIT0620
9.    Gravity:数字RGB全彩LED模块                                DFR0605
10.   高品质公母头跳线 21cm*30根                                  FIT0365
11.   DC 5.5*2.1mm 1(母头)分2(公头)电源线
12.   9~12V 电源
13.   自攻螺丝(M3*10) x 20
14.   圆头十字螺丝(M5*20)  & 螺母x 2
15.   内六角螺丝(M4*35) x 2
16.   内六角螺丝(M3*18)  & 螺母 x 2
17.   柜门合页 (2寸) x 1(图上多了一个)

用OBLOQ物联网模块做一个防沉迷盒子图1

这两款是DF新推出的Grivaty接口的超声波模块,插接方便。左边款是模拟量的,右边这款是I2C的,I2C这款不仅具有超声波测距功能,还有测温度的功能。

用OBLOQ物联网模块做一个防沉迷盒子图3

用OBLOQ物联网模块做一个防沉迷盒子图9

继电器需要搭配电磁锁使用,因为电磁锁使用的是9-12v的电源进行开闭操作,UNO通过控制继电器来达到控制电磁锁电路的闭合和断开。(注意:电磁锁不可长时间通电,最好完成动作后立马断电,长时间通电会导致电磁锁发烫并最后烧坏)
继电器的左边是接控制闭合和断开的接线柱,从上往下依次为(NC、NO、N/A、COM),右边是接UNO的IO引脚的。当UNO给高电平时,NO和COM的接线导通;UNO给低电平时,NC和COM的接线导通。与电磁锁进行接线时,电磁锁的电源线正极(粗、红色)接在COM上,电磁锁电源负极(粗、黑色)和电磁锁上的负极(细、黑色)一起接在N/A上,电磁锁上的正极(细,红色)接在NO上

用OBLOQ物联网模块做一个防沉迷盒子图4

电磁锁的右上角有一个金属拨杆,手动拨动的话,可以将电磁锁开锁并将锁舌弹出去。锁身上有3个安装孔,可以将其固定在其他物体上,安装孔可以穿过M3的螺丝。锁的配件里有一根DC电源线和一根转接杜邦线,这个转接杜邦线连在UNO的IO引脚上,可以将锁此刻的开闭状态告诉给UNO。

用OBLOQ物联网模块做一个防沉迷盒子图5

4*4薄膜键盘,背面带有粘胶,撕开就可以贴在相应的区域。键盘最厚处1.23mm,有8个引脚,引脚两端标有数字,最左边是8,最右边是1。8-5号引脚是连接的行,依次为1、2、3、4行,4-1号引脚是连接的列,依次为1、2、3、4列;当万用表打在电阻档时,一头接在8号引脚,一头接在4号引脚上,按下数字键“1”,阻值会从无穷大降低至3K欧左右;一头接8号引脚,另一头接3号引脚,按下数字键“2”的现象类似。当UNO对键盘的相应引脚进行电平扫描时,说明键此刻被按下。键盘内部有硬件消抖,所以在程序上就不用写消抖函数了,直接读取引脚的电平高低即可。

用OBLOQ物联网模块做一个防沉迷盒子图6

重量传感器模块,包含了一块PCB和一条铝块,铝块上左边是两个M5的螺纹孔,右边是两个M4的螺纹孔,分别用于固定位置和固定托盘。铝块中间填胶的位置有传感器,当铝块的一头受力时,中间填胶处通过检测张力来测得重物的重量。重量传感器最大可测1Kg重量,数值结果保留至0.1g的精度。

用OBLOQ物联网模块做一个防沉迷盒子图7

数字RGB LED全彩模块,兼容WS2812灯珠的控制。模块右边是控制信号的输入端,左边是信号输出端,通过插针搭配杜邦线母头的连接方式,可以很方便地快速连接数个这样的LED模块,轻松实现包括节日氛围灯、圣诞树装饰彩灯的布置

用OBLOQ物联网模块做一个防沉迷盒子图8

用OBLOQ物联网模块做一个防沉迷盒子图36

设计盒子的外观:

用OBLOQ物联网模块做一个防沉迷盒子图30

FDM 3D打印

用OBLOQ物联网模块做一个防沉迷盒子图2

接下来安装薄膜键盘。撕下薄膜键盘背面的贴纸,将键盘贴在盒子正面的方槽里:

用OBLOQ物联网模块做一个防沉迷盒子图10

用OBLOQ物联网模块做一个防沉迷盒子图11

安装RGB LED模块,在盒子正面的内侧左边有一个为LED模块设置的位置,用自攻螺丝可以直接将LED固定在那里:

用OBLOQ物联网模块做一个防沉迷盒子图16

盒子底部,按照如下图示摆放,并使用M5*10的自攻螺丝分别固定在底板上
依次为:OBLOQ模块、重量传感器模块、继电器模块、UNO及扩展板

用OBLOQ物联网模块做一个防沉迷盒子图12

这根铝条,左边的M5的两个螺纹孔,使用M5*20的带螺母的螺丝固定在底板上:

用OBLOQ物联网模块做一个防沉迷盒子图13

将螺母放置在盒子底部的两个六边形孔里,卡住:

用OBLOQ物联网模块做一个防沉迷盒子图14

将螺丝从盒子内部穿过铝块,然后与底部螺母旋紧,固定住铝块:

用OBLOQ物联网模块做一个防沉迷盒子图15

接下来安装电磁锁,将两枚M3*18的螺丝的螺母分别塞进两个对应的内六角槽里,卡住:

用OBLOQ物联网模块做一个防沉迷盒子图17

将电磁锁从盒子内部的下方往上推,塞进电磁锁的卡缝里,并用两枚M3*18螺丝固定住:

用OBLOQ物联网模块做一个防沉迷盒子图18

安装DC 1分2的电源线,这根电源线那个母头是安装在盒子背面的圆孔里,我买的这种母头上有个圆环台阶,直接可以从内部往外面塞紧,可以加一些热熔胶之类的胶固定更牢固。这个母头是接外部电源,分出来的2个公头,一头接在电磁锁的电源线上,一头接在UNO的DC电源接口上,为这两个器件供电:

用OBLOQ物联网模块做一个防沉迷盒子图19

用OBLOQ物联网模块做一个防沉迷盒子图20

用之前的公母头杜邦线8根,公头连接在薄膜键盘的8根接线上,延长出来,后边接在UNO扩展板的IO口上:

用OBLOQ物联网模块做一个防沉迷盒子图21

安装盒子的合页,同样使用自攻螺丝:

用OBLOQ物联网模块做一个防沉迷盒子图22

在盖子内侧用自攻螺丝安装超声波模块和锁舌,和之前的步骤类似。

将所有的器件按照下图连接起来:

用OBLOQ物联网模块做一个防沉迷盒子图41

将所有的线都卡在这两个卡线槽里,线太多的话,可以采取只卡粗线,用粗线将其他细线压住:

用OBLOQ物联网模块做一个防沉迷盒子图31

根据自己的WiFi和IOT平台账户与设备,修改程序开头的相应的WiFi名称(WIFISSID)、WiFi密码(WIFIPWD)、IOT平台网站(SERVER)、IOT的ID(IOTID)、IOT的密码(IOTPWD)、IOT里自己的某台设备编号(TOPIC)、以及你想要设置开启盒子的密码(adminPassword双引号里的数值),我的密码是0123456789A并按下#键确认

然后将程序烧录进去:

用OBLOQ物联网模块做一个防沉迷盒子图32

用两枚M4*35的螺丝穿过托盘,然后用螺丝去旋紧底部的铝块上的两个M4的螺纹孔,固定住托盘:

用OBLOQ物联网模块做一个防沉迷盒子图33

用OBLOQ物联网模块做一个防沉迷盒子图23

制作就完成了。插上外部电源,盒子就开始工作了。

演示功能:
手机远程开启。收到盒子发过来的开启请求,然后在IOT平台上的发送指令窗口里输入0123456789A,点击发送,然后盒子就被打开了,小朋友可以取出里面的手机或者平板玩了。

用OBLOQ物联网模块做一个防沉迷盒子图34

电脑远程开启,原理和手机开启一样:

用OBLOQ物联网模块做一个防沉迷盒子图35

IOT平台那边会收到盒子发过来的开启请求和盒子内的各项数据:

用OBLOQ物联网模块做一个防沉迷盒子图29

用OBLOQ物联网模块做一个防沉迷盒子图28

密码开启:
睡眠状态:
用OBLOQ物联网模块做一个防沉迷盒子图38

唤醒后工作状态:
用OBLOQ物联网模块做一个防沉迷盒子图37

密码输入错误:
用OBLOQ物联网模块做一个防沉迷盒子图39

密码输入正确,并会开启盒子:
用OBLOQ物联网模块做一个防沉迷盒子图40

以上为制作的全部过程,感谢阅读观看。


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(15)
ZeZeXe
ZeZeXe
大佬你好,请问程序烧录进去后偶尔几次连接IOT成功了,可以接受数据,但是大部分时候连接上WIFI后,OBLOQ也是绿灯,但是IOT上接收不到数据
屌丝王小明
屌丝王小明
作者
回复ZeZeXe
串口打印出来的什么信息
DFKK-SUN
DFKK-SUN
麻烦再问一下,这个格式我这个打印机不支持,请问怎么转换成STL格式的文件呢?
DFKK-SUN
DFKK-SUN回复DFKK-SUN
不好意思找到了
DFKK-SUN
DFKK-SUN
请问大神,3D建模是什么软件
屌丝王小明
屌丝王小明
作者
回复DFKK-SUN
之前是使用solidworks,现在使用fusion360
好奇吖斌
好奇吖斌
请问用的是哪个Hx711库,有分享库文件吗?我编译不通过
ZeZeXe
ZeZeXe回复好奇吖斌
同样的问题,请问怎么解决
屌丝王小明
屌丝王小明
作者
回复好奇吖斌
我这边使用的是HX711这个头文件,它里面有getGram这个函数
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
王佩奇儿
王佩奇儿
小朋友哭了。。。。。。
创客JieGe
创客JieGe
请问,这个作品的,传感器的功能,先后的程序是怎样的,功能的先后能不能发一下
屌丝王小明
屌丝王小明
作者
回复创客JieGe
程序就一个呢,需要使用积分下载,论坛的规定呢。传感器方面就是,只要装置被唤醒了,就会发送盒子的当前状态,是否还锁住的,盒内物体厚度,盒内物体重量
EmSECpn6
EmSECpn6

汤半泛
汤半泛
膜拜大神的动手能力
天才的青春雨少年
天才的青春雨少年
繁荣与他人
汤半泛
汤半泛回复天才的青春雨少年
膜拜大神的动手能力
天才的青春雨少年
天才的青春雨少年
对于我们来说,两分钟解决,莫有用
Icarus
Icarus
挺好玩的
DFByOXbISQB
DFByOXbISQB
画接线图用的什么软件啊?求教
屌丝王小明
屌丝王小明
作者
回复DFByOXbISQB
ppt。使用各个零件的svg图进行画
gada888
gada888
创意OK
刁雷
刁雷
嗯! 对你开头的胡扯很感兴趣,正文略过.....
屌丝王小明
屌丝王小明
作者
回复刁雷
okok
汤果
汤果
很不错的创意,制作也很棒!
- 没有更多了 -