将BMI160用作超灵敏震动传感器,制作《地球之光》小灯

2018-11-285.6万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用BMI160陀螺仪加速计制作一款名为《地球之光》的小灯。通过详细的测试和程序编写,实现了高灵敏度的震动检测。项目所需材料包括BMI160、Beetle、锂电池等。通过焊接灯珠、3D打印地球模型、喷漆等步骤,最终完成了这个创意DIY项目。此外,还展示了BMI160可以检测手的抖动,并在检测到抖动时点亮自己,变身成灯笼形态。整个项目适合零基础新手尝试,是一款有趣的创意礼物。
       题外:哲学老三问还差一问,为了凑数,怎么也得写啊。我们到哪里去?或者这样问——世界诞生我们的目的是什么?我们在这样一局游戏里扮演什么样的角色?在我看来这个问题和“我们从哪里来”问的内容很相似。今天想从另外一个角度来回答。有天,我跟朋友聊天,他突然指着眼前的颜色鲜艳的花问我:“花的目的是什么?”,我一下就愣住了,花的目的?对呀,花的目的是什么?我才意识到——会不会是我们自己想得太多了?我们做任何一件事情都有原因,自然我们做的每件事都存在着目的,我们总是如此思考与行事,目的性太强,我们自然而然地把自己的这种行为动机强加给了这个世界,认为世界诞生出我们是肯定有目的性的。可是万一我们就是这世界的自然演变过程中无意产生的一朵花呢?这种没有目的的行为,咱们能理解吗?

       前段时间遭受了暴击,女同学生日、几个情人节、纪念日。每个日子,女同学都管我要礼物,导致礼物数量+++,欠下了一屁股孽债,最近准备一一还了,就想做个简单的小灯给她。找遍了市面上的震动传感器都觉得不行,一点都不灵敏,奔溃得很,我就想轻轻敲击桌面,就点亮小灯。突然有天,灵感来了,于是,被我拿到了DF出品的这款BMI160陀螺仪加速计。是的,你没有看错,我就是要用BMI160来当超灵敏震动开关。这里先剧透一下,使用效果真的666。先放张图吧:


《Light of earth》

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图5

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图7

       Ok,我们开始吧!


需要的材料:
1.       BMI160
2.       Beetle
4.       3.7v锂电池
5.       食人鱼灯珠10颗
6.       少量丙烯颜料(绿、黄、蓝、棕。如果有灰、白两色,就不用准备油漆了)
7.       浅灰、白色油性喷漆
8.       一颗好看的2脚按钮(我是在宝上面买的)
9.       铅丝(2mm)(经一位坛友测试,往里塞慢钢珠也不够配重,建议直接还是用铅丝或铅块)
10.   pvc空心圆棒40cm(我用的是外径9mm,内径5mm)
11.   20mm长的螺丝螺母一支



BMI160的测试:
将BMI160的例程程序下载到uno上,然后打开串口观察数据,并通过一系列的敲击,进行数据采样,然后通过对数据的分析,写出相应的程序。

1.      放在桌面上,几乎没有抖动的情况下:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图13

前三列为陀螺仪,后三列为加速度。可以看出在没有抖动、震动的情况下,陀螺仪会在0.30的范围内拨动,而加速计的值只会在0.02内波动。



2.敲击后:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图14

陀螺仪变化在17左右,而加速计在0.20左右,这是一次明显的敲击。


经过多次、多种强度的敲击采样,分析得出:只要陀螺仪差值大于0.30的同时,加速计差值大于0.03就可以判定为一次敲击。可是有朋友会问,这样很容易产生误敲击啊。是的,所以我最终采取的是两次敲击才判定为有效。有两种情况:1.敲击一次后 ,在1s钟内,恢复了正常状态后又检测到一次敲击,则判定为两次敲击。2.敲击一次后,因为敲击过重,传感器在1s内始终无法恢复到正常状态,此时,如果有1次加速计地差值,比前面5次差值的平均值大0.20,也可以判定为两次敲击。



电路的连接(如图焊接):
将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图16
充电板的microusb接口会留在灯座外壳外,供充电


开始制作:

1.      焊接灯珠:焊接成三棱柱形状,每条3颗,最后剩下的1颗放在底部

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图25


2.      3d打印出来的地球模型,用丙烯上色(我参照的是astroreality的小地球模型的颜色):

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图24

3.      按钮开关周边喷成灰色、螺丝喷成灰色(使用美纹纸遮挡其余部分):

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图26


4.      拿出祖传的铅丝,开始缠绕10支春卷,配重:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图1


5.      在地球模型顶部开一个小孔,供穿线;给pvc管喷漆成灰色,在两头锯出槽口,放置线:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图17


6.      打印底座模型,在文章最下面有模型文件,打印完毕后,喷白色油漆。




开始组装:

1.       焊接

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图2

2.       装进底座,周围一圈塞入配重,模型背部会预留一个充电板的槽,可以露出microusb接口,bmi160粘在底板上:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图3


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图10


组装好后,烧录程序,我先在uno上试验了效果;bmi160的效果真的很赞,你轻轻敲击它也能感受到。整个桌面都感觉变成了开关,只要你在任意位置轻敲两下,就能打开小灯:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图18


最后,打完收工,放在桌子或者床头,还是挺不错的,bmi160如此高的灵敏度,应该还有很多玩法,等待牛人的开发挖掘:


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图4


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图6


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图11


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图19
(额,索尼的相机为啥拍出来这么绿,涨知识了)



有的朋友可能会发问,这个bmi160还能干点什么?——它还能检测到手的抖动!

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图15

从数据上分析,抖动会导致陀螺仪与加速计的数值都是持续地大变化,所以我在程序上使用多次检测差值,并且设置了阈值,比如超过了0.20的差值变化,就全部等于0.20。通过对35次差值的平均值的大小,就能判断此刻bmi160是否处于抖动中。


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图20

有的朋友会问,检测到手的抖动,那有什么作用呢?


将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图9

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图21


哈哈,检测到手的抖动,说明有人要用它啦,它就点亮自己,并变身成灯笼形态,陪小主走夜路去啦。



小灯送给女同学,女同学表示很满意:

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图8

将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图12


代码:将BMI160用作超灵敏震动传感器,制作《地球之光》小灯图21



创作许可协议

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

评论(39)
战悠局局长诸葛亮
战悠局局长诸葛亮
好看!!!!!!!!!!!!!!!!!!!!
IOHDHQ
IOHDHQ
厉害,不过文末代码后面怎么是视频?
JOVI
JOVI
学习学习
花生编程
花生编程
不错,点赞!!
花生编程
花生编程
厉害厉害!!
三春牛-创客
三春牛-创客
好漂亮啊!赞赞赞!
三春牛-创客
三春牛-创客
厉害厉害!!
耘想
耘想
666666666666666666
Lb0sihNKI9NJ
Lb0sihNKI9NJ
学习到了喜欢,,,
Lb0sihNKI9NJ
Lb0sihNKI9NJ
求代码 创造力值不够
yangqu
yangqu
学习一下大佬的算法
小名叫大明的小明
小名叫大明的小明
厉害了.感觉很不错。得弄一个
kinpy
kinpy
你好 我想把代码改为持续检测到震动,持续输出开关量,把这个void processingDat(float *addr) void 改为void loop(){ 就行了吗
诩
楼主上色的技术还有待提高
诩
回复
但是灯一开,效果就燃爆了
DFBJFz5siXP
DFBJFz5siXP
不错很漂亮学习了
dofanng
dofanng
想要代码,但创造力不足,哭
DFrJ2OaU4qU
DFrJ2OaU4qU
哥们,能发个代码的百度云吗
屌丝王小明
屌丝王小明
作者
回复DFrJ2OaU4qU
代码有问题,建议自己写一下
1551
1551
这个杆子咋搞的
屌丝王小明
屌丝王小明
作者
回复1551
微信beikewangli
1551
1551回复屌丝王小明
请问方便加您的微联系方式吗,想做一个,但是有很多问题想问一下!
共5条回复,已加载2条,点击查看更多共5条回复,已加载全部
DF清风明月
DF清风明月
之前一直做月球灯,这个挺美
DFrJnCdAk8B
DFrJnCdAk8B
非常漂亮