将BMI160用作超灵敏震动传感器,制作《地球之光》小灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9913|回复: 2

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

[复制链接]
发表于 2018-12-14 14:33 | 显示全部楼层 |阅读模式
题外:哲学老三问还差一问,为了凑数,怎么也得写啊。我们到哪里去?或者这样问——世界诞生我们的目的是什么?我们在这样一局游戏里扮演什么样的角色?在我看来这个问题和“我们从哪里来”问的内容很相似。今天想从另外一个角度来回答。有天,我跟朋友聊天,他突然指着眼前的颜色鲜艳的花问我:“花的目的是什么?”,我一下就愣住了,花的目的?对呀,花的目的是什么?我才意识到——会不会是我们自己想得太多了?我们做任何一件事情都有原因,自然我们做的每件事都存在着目的,我们总是如此思考与行事,目的性太强,我们自然而然地把自己的这种行为动机强加给了这个世界,认为世界诞生出我们是肯定有目的性的。可是万一我们就是这世界的自然演变过程中无意产生的一朵花呢?这种没有目的的行为,咱们能理解吗?

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


《Light of earth》




       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.      放在桌面上,几乎没有抖动的情况下:


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



2.敲击后:


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


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



电路的连接(如图焊接):
充电板的microusb接口会留在灯座外壳外,供充电


开始制作:

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



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


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



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



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



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




开始组装:

1.       焊接


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




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



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



(额,索尼的相机为啥拍出来这么绿,涨知识了)



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


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



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




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



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












发表于 2019-4-23 17:04 | 显示全部楼层
大佬,能不能把程序发我一份~ 拜托拜托
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 04:50 , Processed in 0.208104 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表