牟曉東
在開源硬件編程中,樹莓派是一種卡片般大小的微型電腦,專為學(xué)生計(jì)算機(jī)編程教育或進(jìn)行嵌入式開發(fā)而設(shè)計(jì);古德微機(jī)器人網(wǎng)站提供了“積木”式編程方式,使得中學(xué)生(甚至是小學(xué)生)編程的難度大為降低;“釘釘”是類似于QQ的群聊溝通軟件,通常的應(yīng)用場(chǎng)所是企事業(yè)單位內(nèi)部工作群交流。如果將三者聯(lián)合起來,又會(huì)碰撞出什么“火花”呢?本文中我們打造出一個(gè)基于古德微和樹莓派硬件組合的釘釘“守望者”機(jī)器人,這個(gè)硬件機(jī)器人在釘釘工作群中有一個(gè)虛擬機(jī)器人賬號(hào),當(dāng)它的攝像頭或超聲波傳感器監(jiān)測(cè)到異常情況時(shí),會(huì)在釘釘群中發(fā)送文字信息提醒用戶,并且將抓拍的畫面同步輸出。下面,我們分別進(jìn)行樹莓派實(shí)驗(yàn)器材連接、釘釘群機(jī)器人設(shè)置和古德微“積木”編程,最終完成“守望者”的打造。
實(shí)驗(yàn)器材:樹莓派3B+一塊,古德微擴(kuò)展板一塊,HC SR04超聲波傳感器一個(gè),P5V04A SUNNY定焦攝像頭一個(gè)。
首先,將樹莓派主板的CSI卡槽接口(標(biāo)注有“CAMERA”字樣)的黑色塑料鎖扣兩端輕輕向上拉起,將攝像頭數(shù)據(jù)線銀色一面對(duì)準(zhǔn)豎紋金屬面小心插入后再將鎖扣兩端向下壓緊鎖好,完成攝像頭與樹莓派的連接操作;接著,將古德微擴(kuò)展板與樹莓派進(jìn)行“對(duì)接”;然后,將超聲波傳感器插入擴(kuò)展板標(biāo)注有“超聲波”字樣的20、21四個(gè)插孔,注意四個(gè)引腳的標(biāo)注要與擴(kuò)展板相同;最后,給樹莓派通電,啟動(dòng)操作系統(tǒng)(如圖1)。
在電腦端登錄自己的釘釘,進(jìn)入待設(shè)置的某釘釘群。
(1)添加自定義機(jī)器人
先點(diǎn)擊群右上角的齒輪狀圖標(biāo),在“群設(shè)置”中點(diǎn)擊“智能群助手”,再點(diǎn)擊“添加機(jī)器人”右側(cè)的“+”圖標(biāo);在彈出的“群機(jī)器人”頁面中“選擇要添加的機(jī)器人”中選擇最后一個(gè)“自定義:通過Webhook接入自定義服務(wù)”,點(diǎn)擊“添加”按鈕(如圖2)。
(2)生成密鑰字符串
首先在“機(jī)器人名字”處設(shè)置機(jī)器人名稱,比如“古德微樹莓派守望者”;接著勾選“加簽”,在下方的密鑰字符串上點(diǎn)擊右鍵進(jìn)行復(fù)制:“SEC2984……565”,粘貼保存至新建的文本文件中,待用;然后再勾選下方的“我已閱讀并同意《自定義機(jī)器人服務(wù)及免責(zé)條款”項(xiàng),點(diǎn)擊“完成”按鈕。
(3)生成Webhook
此時(shí)就會(huì)生成Webhook:
https:∥oapi.dingtalk.com/robot/send?access_token:9bb4d3……a4b6,點(diǎn)擊右側(cè)的“復(fù)制”按鈕,同樣將它粘貼至文本文件中進(jìn)行保存,最后點(diǎn)擊“完成”按鈕,注意Webhook泄露會(huì)有安全風(fēng)險(xiǎn)。
此時(shí)返回釘釘群,就有一條新的群消息“大家好!我是古德微樹莓派守望者機(jī)器人,很高興為你們服務(wù)”彈出,正是由剛剛我們建立的名為“古德微樹莓派守望者”的機(jī)器人發(fā)出的。
注意:生成的密鑰字符串和Webhook都要妥善保存好,下一步編程時(shí)需要使用它們。
在古德微機(jī)器人網(wǎng)站登錄自己的賬號(hào),進(jìn)行“積木”編程:
整體結(jié)構(gòu)為一個(gè)“重復(fù)當(dāng)‘真”的循環(huán)體。建立的“超聲波測(cè)距”變量是用來存放每次超聲波傳感器檢測(cè)到的與障礙物間的距離值,通過條件“超聲波測(cè)距<20”來判斷是否有異常情況發(fā)生,即“闖入者”與超聲波傳感器的間距小于20(單位為cm);條件成立的話,則控制攝像頭執(zhí)行抓拍動(dòng)作,生成圖片文件image.jpg(保存于樹莓派的/home/pi/imageTemp/目錄中)。
接著進(jìn)行釘釘機(jī)器人的初始化和參數(shù)設(shè)置:
從左側(cè)“物聯(lián)網(wǎng)”-“釘釘”中創(chuàng)建一個(gè)釘釘機(jī)器人,將Webhook值和secret值分別補(bǔ)充完整(上一步中生成的Webhook和密鑰字符串);然后為釘釘機(jī)器人添加文字報(bào)警信息:“大家請(qǐng)注意,有情況!”同時(shí)保持默認(rèn)的“@所有人@手機(jī)號(hào)”;接下來,將樹莓派攝像頭抓拍并生成的圖片文件image]Pg進(jìn)行發(fā)送。
最后,為循環(huán)體添加一個(gè)等待0.3秒的“休息”時(shí)間,防止程序一直占用樹莓派的系統(tǒng)資源而造成死機(jī)(如圖3)。
在樹莓派安裝的超聲波傳感器前方放置“海盜船”模擬有人入侵的情況,起始距離為20cm之外(如圖4)。
在古德微機(jī)器人網(wǎng)站中先執(zhí)行“連接設(shè)備”操作,出現(xiàn)五個(gè)綠色對(duì)鉤后點(diǎn)擊“運(yùn)行”按鈕;此時(shí),注意觀察釘釘群,靜悄悄的,無任何異常情況。接著,將“海盜船”逐漸向樹莓派靠近,當(dāng)進(jìn)入事先設(shè)定的小于20cm界限時(shí),釘釘群中的古德微樹莓派守望者先是發(fā)了一條文字信息:“大家請(qǐng)注意,有情況!”而且是“@所有人”的;然后就是一張圖片,拍攝內(nèi)容正是從樹莓派攝像頭角度獲取的“海盜船”。
經(jīng)過多次測(cè)試,均實(shí)現(xiàn)了預(yù)期目標(biāo),釘釘“守望者”及時(shí)發(fā)送了文字和圖片達(dá)到了效果,大家不妨一試。本次我們通過互聯(lián)網(wǎng)讓樹莓派和釘釘產(chǎn)生了聯(lián)動(dòng),局域互聯(lián)網(wǎng)的應(yīng)用是我們學(xué)習(xí)編程不能忽略的重要部分,我們會(huì)在近期持續(xù)介紹類似的應(yīng)用實(shí)例。