機(jī)器人搶紅包大作戰(zhàn)
高清無碼火腿腸搶紅包機(jī)器人:盯——紅包!—— 搶!
是的,機(jī)械臂前端是一根火腿腸。是不是也想擁有一臺(tái)搶紅包機(jī)器人?和果殼實(shí)驗(yàn)室的小伙伴一起制作吧!
需要準(zhǔn)備的材料:
Arduino Mega2560
面包板 ×1
杜邦線 若干
按鍵開關(guān) ×1
10K 電阻 X1
10K 滑動(dòng)變阻 X3
舵機(jī) ×3
2mm亞克力板 約40cm×40cm
橡皮筋 ×2
火腿腸 ×1
需要準(zhǔn)備的設(shè)備:
激光切割機(jī)
一臺(tái)裝有python+opencv+numpy環(huán)境的電腦
外置的攝像頭
攝像頭支架
搶紅包機(jī)器人的原理是啥?
開始制作搶紅包機(jī)器人時(shí),我們?cè)噲D找一個(gè)更加簡單的方案:將四塊TSC200顏色傳感器貼在手機(jī)屏幕上紅包將出現(xiàn)的位置的四個(gè)角,當(dāng)這四個(gè)顏色傳感器同時(shí)檢測到微信紅包的橘黃色時(shí),可以判斷為有新的紅包發(fā)出來,這個(gè)時(shí)候Arduino就開始進(jìn)行搶紅包操作。
然而當(dāng)我們拿到TSC200顏色傳感器模塊的時(shí)候卻十分奔潰,雖然TSC200芯片非常小,但做成模塊后電路板就足足占了大半個(gè)屏幕,臉都遮沒了……
所以我們轉(zhuǎn)而尋求另外一條途徑——計(jì)算機(jī)圖像識(shí)別。
用一個(gè)攝像頭拍攝手機(jī)畫面,通過開源的計(jì)算機(jī)視覺庫openCV分析畫面信號(hào),判斷出是否有新的紅包出現(xiàn),當(dāng)紅包出現(xiàn)時(shí)即向Arduino發(fā)送指令,Arduino控制搭載火腿腸的機(jī)械臂在屏幕上進(jìn)行三次點(diǎn)擊,完成搶紅包操作。
我該怎么制作它?
搶紅包機(jī)械臂機(jī)械部分主要由亞克力制成的機(jī)械臂結(jié)構(gòu)、執(zhí)行動(dòng)作的舵機(jī)和負(fù)責(zé)觸屏任務(wù)的火腿腸組成,機(jī)械臂通過Arduino進(jìn)行調(diào)試。
為了將盡可能簡化程序,我們?cè)O(shè)置了三個(gè)滑動(dòng)變阻器和一個(gè)按鈕來手動(dòng)設(shè)置機(jī)械臂的路徑,初次使用時(shí),使用變阻器控制機(jī)械臂的每個(gè)動(dòng)作,并將每個(gè)動(dòng)作對(duì)應(yīng)的角坐標(biāo)記錄下來填寫到程序中,再重新燒寫程序。
連接滑動(dòng)變阻器到Arduino控制器
我們使用三個(gè)10k滑動(dòng)變阻器作為電位器用于手動(dòng)控制機(jī)械臂。分別將三個(gè)電位器的1號(hào)引腳接入GND端,3號(hào)引腳接入VCC端,三個(gè)電位器的2號(hào)引腳分別接入Arduino的A0、A1、A2端。當(dāng)電位器轉(zhuǎn)動(dòng)時(shí),2號(hào)引腳輸出不同的電壓型號(hào), Arduino讀取各個(gè)電位器的2號(hào)引腳的型號(hào),控制舵機(jī)轉(zhuǎn)動(dòng)到對(duì)應(yīng)的角度。

滑動(dòng)變阻器
連接按鍵開關(guān)到Arduino控制器
為了方便查看手動(dòng)操作時(shí)舵機(jī)轉(zhuǎn)動(dòng)的角度,我們用了一個(gè)設(shè)置一個(gè)輸出角度信息的按鈕。當(dāng)我們轉(zhuǎn)動(dòng)舵機(jī)到我們需要的角度時(shí),按一下按鈕,Arduino便會(huì)通過串口返回一個(gè)舵機(jī)轉(zhuǎn)過的角度。我們將這些角度數(shù)值記錄下來燒寫進(jìn)Arduino中,下次操作時(shí),只需要給Arduino發(fā)送一個(gè)串口指令,機(jī)械臂就會(huì)按設(shè)定的角度開始執(zhí)行。

輕觸開關(guān)

輕觸開關(guān)接線圖
連接舵機(jī)到Arduino控制器
舵機(jī)的選擇不像普通的電機(jī)那么古板,它可以根據(jù)你的指令旋轉(zhuǎn)至0至180度之間的任意角度然后精準(zhǔn)地停下來,因此讓舵機(jī)來驅(qū)動(dòng)機(jī)械臂執(zhí)行動(dòng)作是簡單經(jīng)濟(jì)的方案。我們使用Arduino的11、12、13端口輸出PWM信號(hào)來控制舵機(jī)。
將三臺(tái)舵機(jī)的紅線接入VCC端、棕色線接入GND端,三臺(tái)舵機(jī)的黃線分別接入Arduino的11、12、13號(hào)端口。
制作機(jī)械臂結(jié)構(gòu)
我們?cè)诩埳蠒?huì)繪制機(jī)械臂大致的外形,然后在AutoCAD繪制各個(gè)部位的零件圖,輸出激光切割軟件可以讀取的PDF文檔,然后用激光切割機(jī)在一塊2mm厚的亞克力板上切割出零件,將零件拼裝在一起,并用膠水或螺絲固定住。
機(jī)械臂概念草圖:

機(jī)械臂零件圖:

組裝成的機(jī)械臂各個(gè)部件:

組裝完成的機(jī)械圖:

夾上火腿腸就可以出現(xiàn)觸摸屏幕了: 圖像(紅包)識(shí)別
我們?cè)趐ython上調(diào)用openCV視覺庫對(duì)進(jìn)行圖像處理。計(jì)算機(jī)獲取到視頻信號(hào)后,首先進(jìn)行顏色過濾處理,將橙黃色之外的顏色過濾掉,然后獲取黃色色塊的輪廓、面積、質(zhì)心位置。程序通過面積和質(zhì)心判斷是否有新的紅包出現(xiàn),當(dāng)有紅包出現(xiàn)時(shí),python腳本即通過串口向Arduino發(fā)送指令。

計(jì)算機(jī)圖像界面
好了,坐等紅包趕緊發(fā)過來!
搶紅包機(jī)器人大聯(lián)歡
獨(dú)樂樂不如眾樂樂嘛,我們這么有意思的東西當(dāng)然要和大家一起分享啦。現(xiàn)在我們將開源我們的全部內(nèi)容,召集感興趣的小伙伴一起共同制作各種搶紅包機(jī)器人,來看看誰的設(shè)計(jì)更蠢萌,“手”更快!
你是不是也想?yún)⑴c并制作一個(gè)屬于自己的搶紅包機(jī)器人?是不是也想在除夕夜炫耀一把?現(xiàn)在就可以勾搭實(shí)驗(yàn)君的AI!
|