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