眼瞅着春节就要到了,眼看着大boss又要在群里发红包了,几千几千的发,你抢不到你说你急不急?
来个抢红包脚本放到手机里?那太没意思了,网上一抓一大把,一点创意都没有。真正的Maker用什么抢红包?当然是自制机械手臂了!不仅能抢到红包,你还能看到它蠢萌的姿态,在抢到红包的时候为你增添几分乐趣和成就感!
是的,机械臂前端是一根火腿肠。是不是也想拥有一台抢红包机器人?和果壳实验室的小伙伴一起制作吧!
需要准备的材料:
需要准备的设备:
抢红包机器人的原理是啥?
开始制作抢红包机器人时,我们试图找一个更加简单的方案:将四块TSC200颜色传感器贴在手机屏幕上红包将出现的位置的四个角,当这四个颜色传感器同时检测到微信红包的橘黄色时,可以判断为有新的红包发出来,这个时候Arduino就开始进行抢红包操作。
然而当我们拿到TSC200颜色传感器模块的时候却十分奔溃,虽然TSC200芯片非常小,但做成模块后电路板就足足占了大半个屏幕,脸都遮没了……
所以我们转而寻求另外一条途径——计算机图像识别。
用一个摄像头拍摄手机画面,通过开源的计算机视觉库openCV分析画面信号,判断出是否有新的红包出现,当红包出现时即向Arduino发送指令,Arduino控制搭载火腿肠的机械臂在屏幕上进行三次点击,完成抢红包操作。
我该怎么制作它?
抢红包机械臂机械部分主要由亚克力制成的机械臂结构、执行动作的舵机和负责触屏任务的火腿肠组成,机械臂通过Arduino进行调试。
为了将尽可能简化程序,我们设置了三个滑动变阻器和一个按钮来手动设置机械臂的路径,初次使用时,使用变阻器控制机械臂的每个动作,并将每个动作对应的角坐标记录下来填写到程序中,再重新烧写程序。
连接滑动变阻器到Arduino控制器
我们使用三个10k滑动变阻器作为电位器用于手动控制机械臂。分别将三个电位器的1号引脚接入GND端,3号引脚接入VCC端,三个电位器的2号引脚分别接入Arduino的A0、A1、A2端。当电位器转动时,2号引脚输出不同的电压型号, Arduino读取各个电位器的2号引脚的型号,控制舵机转动到对应的角度。
滑动变阻器
连接按键开关到Arduino控制器
为了方便查看手动操作时舵机转动的角度,我们用了一个设置一个输出角度信息的按钮。当我们转动舵机到我们需要的角度时,按一下按钮,Arduino便会通过串口返回一个舵机转过的角度。我们将这些角度数值记录下来烧写进Arduino中,下次操作时,只需要给Arduino发送一个串口指令,机械臂就会按设定的角度开始执行。
轻触开关
轻触开关接线图
连接舵机到Arduino控制器
舵机的选择不像普通的电机那么古板,它可以根据你的指令旋转至0至180度之间的任意角度然后精准地停下来,因此让舵机来驱动机械臂执行动作是简单经济的方案。我们使用Arduino的11、12、13端口输出PWM信号来控制舵机。
将三台舵机的红线接入VCC端、棕色线接入GND端,三台舵机的黄线分别接入Arduino的11、12、13号端口。
制作机械臂结构
我们在纸上会绘制机械臂大致的外形,然后在AutoCAD绘制各个部位的零件图,输出激光切割软件可以读取的PDF文档,然后用激光切割机在一块2mm厚的亚克力板上切割出零件,将零件拼装在一起,并用胶水或螺丝固定住。
机械臂概念草图:
机械臂零件图:
组装成的机械臂各个部件:
组装完成的机械图:
夹上火腿肠就可以出现触摸屏幕了:
图像(红包)识别
我们在python上调用openCV视觉库对进行图像处理。计算机获取到视频信号后,首先进行颜色过滤处理,将橙黄色之外的颜色过滤掉,然后获取黄色色块的轮廓、面积、质心位置。程序通过面积和质心判断是否有新的红包出现,当有红包出现时,python脚本即通过串口向Arduino发送指令。
计算机图像界面
好了,坐等红包赶紧发过来!
(制作者:果壳实验室)