当乐高遇见Arduino:乐高桌面乒乓发球机
科技活动
原创
科技学堂/文
阅读:28087
收藏:2

“十指无力眼睛花,脖痛腰老肩膀脆”,相信每一位一个姿势长时间久坐操作电脑的朋友,都有各自不同的“痛的领悟”。

 

网友也想了不少方法增加活动量。比如这样可以活动手臂和肩膀

QQ截图20170719143043.png


比如读这段文字可以活动脖子(不是让你转手机)

QQ截图20170719143058.png


这些方法说白了就是在工作间隙适当增加运动量。但周边的同事突然开始摇头晃脑或者手舞足蹈,容易把别人吓到。


所以运动就要有个运动的样子,我们还是得做做正规运动。可是运动少不了需要器械和场地,办公室没有怎么办?作为创客,我们不禁又要开一下脑洞。

 

于是我们又双叒叕随手用乐高……做了一个小装置:桌面乒乓球发球机

微信图片_20170719143104.jpg 

这个装置有以下优点:

  1. 小巧,易于搬运

  2.  场地需求较小,可玩性高

  3.  锻炼反应速度(发球时间随机)、注意力(球运动速度快)、逻辑分析能力(判断球的轨迹、落点、反弹方向)、身体协调能力(能接住球)

  4. 运动量合适(接住球放回去或跟球跑捡球放回去)

  5. 加速血液循环,改善大脑供氧

  6. 锻炼手眼协调,活动全身肌肉群

 

而且,这个装置既可以一个人玩,也可以两个人玩。我们特地给发球机增加了遥控功能,这样你拿好球拍站好位置后,按一下遥控器就可以开始运动了。而不用先打开乐高电源,再手忙脚乱的跑回去接球。

 

一个人玩,按一下遥控器,程序会随机间隔触发电机,连续将球弹出。

微信图片_20170719143115.gif

 

两个人玩……并不是双打,而是……一人填球一人接球。不会打乒乓球也没关系,可以用纸杯接哦。

微信图片_20170719143120.gif

 

运动完了,有没有感到神清气爽、思维活跃?在制作发球机的遥控功能时,我们用到了一个新的技术组成:


乐高近场红外控制

 

老规矩,我们依旧选用的是市面上最成(pian)熟(yi)的红外套件:

微信图片_20170719143126.jpg

红外遥控模块


想要乐高听指挥,首先要让arduino听懂红外指令。前一篇文章对比智能家电和传统家电时提到了红外遥控控制,要有发射设备(上图左)和接收设备(上图右)共同构成。

 

红外控制原理即发射端以特定频率发出信号,接收端接收并转码,程序根据不同转码结果触发不同反馈。控制信号以红外二极管特定不同间隔通断时间的方式发出,接收器平时输出高电平,收到指令时输出低电平:

微信图片_20170719143132.gif

红外信号传输原理图


上图的示意信号实际上是一连串特定时长的红外二极管亮灭,这样的红外指令用arduino读出来是这样子的:


微信图片_20170719143137.jpg

时间编码

  

这样的指令不仅看起来瞬间脑大,还不方便调试,所以厂家通常会将这样的代码先翻译成1010的二进制,再转换为16进制显示。翻译的标准各家就有区别了,按照最常用的NEC的标准,2.25ms波形代表11.12ms波形代表0


QQ截图20170719143151.png


我们看一下前面获取的红外指令:


QQ截图20170719143203.png


600+550=1150μs,对应0;550+550+600+550=2250μs,对应1;于是上述代码就翻译成了01110。


再来看NEC红外指令编码方式:


微信图片_20170719143208.jpg

NEC红外编码格式


引导码+用户码+数据码+结束码(无信号)”,引导码和数据码默认传输两遍,一次正向,一次反向用于接收器校检(如图10中同一按键对应的3条出现局部50μs差异。知道了规律,我们就很方便的提取出我们所需的指令了。将二进制指令中控制指令转变为16进制:


QQ截图20170719143221.png

 

是不是瞬间清晰了,于是我们很方便就能得到遥控器上的按键与指令的对应关系:

QQ截图20170719143234.png

 

至此我们完成了遥控器指令的破解,剩下的事情就简单了,我们只需在程序中设定不同指令对应的触发操作即可,以本文案例为例,那就是随机触发还是立即触发。随机触发,程序将生成一个1~5的随机数,延时对应秒数后,触发弹射程序。

 

所以流程可以总结为:遥控器发射指令接收器接收解码触发对应操作,这就是红外遥控的实现原理。这个流程在身边随处可见,比如电视换台,调音量,我们只是将其用在了乐高上。

 

除了控制乐高弹球,控制继电器开关电器这样直白的应用,我们还可以结合Arduino的红外二极管制作发射器,控制其他设备。比如将家里电视空调等遥控器最常用的遥控指令都破译出来,与一台遥控器上不常用的按键对应。编一个小程序,若接收器收到这些不常用按键发来的控制信号,则由Arduino控制红外发射头发射对应的原遥控器指令,这样就将多个遥控器功能集中到一个遥控器上。这便是现在市场上各类结合手机音频插孔或智能红外盒子的原理。如果喜欢动手,不妨自己尝试一下,结合上篇文章的物联概念,就能远程控制家里的电器,那智能家居的实现也有章可循了。

 

还等什么,一起做创客吧。

投稿邮箱:info@makerclass.cn
标签: Arduinotem
发表评论