查看: 1053|回复: 1

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

[复制链接]
  • TA的每日心情

    2018-1-11 13:58
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 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 | 显示全部楼层
    大佬,能不能把程序发我一份~ 拜托拜托
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    智能物联网花盆
    智能物联网花盆
    打坏了一个费时5小时 3D打印的花盆,耗时22小时 下载:Kittenblock软件,安装、运
    呼吸灯实验
    呼吸灯实验
    本文节选自《Arduino程序设计基础》 之前的章节已经介绍了多种方法控制LED,但单是开
    为开发板 Generic ESP8266 Module 编译时出错
    为开发板 Generic ESP8266
    第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
    Arduino Uno 无法上传程序
    Arduino Uno 无法上传程序
    原来可以正常使用的Arduino Uno 板子突然不能上传程序了,硬件驱动正常,TX和RX指示灯
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表