大姚
作為人工智能應(yīng)用領(lǐng)域中重要的一個(gè)方面,智能家居已經(jīng)越來(lái)越受到人們的關(guān)注。人們常常會(huì)想象各種“未來(lái)之家”的場(chǎng)景:走進(jìn)房間,燈光自動(dòng)打開(kāi),電視自動(dòng)播放,空調(diào)自動(dòng)調(diào)節(jié)……我們相信這些智能設(shè)備在不久的將來(lái)都不再只是夢(mèng)想,它們正在逐步成為現(xiàn)實(shí)?,F(xiàn)在一些智能產(chǎn)品的實(shí)現(xiàn)也變得越來(lái)越簡(jiǎn)單,我們甚至可以自己動(dòng)手制作一些簡(jiǎn)單的智能產(chǎn)品了,比如本期介紹的手勢(shì)控制燈。
Arduino控制器,GP2D120X紅外距離傳感器,RGB LED燈條,電源適配器,杜邦線(xiàn),連接端子2套,25cm長(zhǎng)的有機(jī)玻璃棒和有機(jī)玻璃固定板。
GP2D120X紅外距離傳感器可提供約30cm的精確距離探測(cè),當(dāng)然也可以測(cè)得更遠(yuǎn)一點(diǎn)的距離,只是精度會(huì)變低。但是由于手勢(shì)燈對(duì)距離精度的要求不高,我們可采用它進(jìn)行50cm的測(cè)距。
該傳感器一般用于機(jī)器人的測(cè)距、避障以及路徑規(guī)劃,是機(jī)器視覺(jué)及其應(yīng)用領(lǐng)域的不錯(cuò)選擇,而且它還能很好地兼容Arduino(Uno、Mega、Due等)控制器。其工作電壓為4.5—5.5V,輸出模擬信號(hào),一共有三個(gè)接口,分別是紅色的5V電源端、黑色的接地端和橙色信號(hào)端。
手勢(shì)控制燈采用RGB LED燈條。該燈條是軟性燈條,一面是發(fā)光的LED線(xiàn)陣顆粒,一面附有3M雙面膠,可固定于底板。
燈條長(zhǎng)50cm,共有72個(gè)LED芯片。燈條的兩頭,一頭是信號(hào)輸入端,一頭是信號(hào)輸出端。輸入端有3個(gè)接線(xiàn)端,分別是紅色的5V電源端、白色的接地端和藍(lán)色的信號(hào)輸入端。
電源適配器,12V直流輸出,輸出電流1A。如果沒(méi)有12V直流電源,則可以采用7—12V直流電源,它們都可以給Arduino Uno控制器供電。
1. 將兩塊有機(jī)玻璃固定板用熱熔膠連接在一起,構(gòu)成50cm長(zhǎng)的固定板,以匹配LED燈條的長(zhǎng)度。再將LED燈條的背面雙面膠撕除,粘貼到有機(jī)玻璃固定板上。接著用熱熔膠將兩根有機(jī)玻璃棒固定在LED燈條的上方。
2. 找一個(gè)硬紙板盒子,用美工刀在盒子上面開(kāi)兩個(gè)方孔(10mm×5mm),用于通過(guò)紅外距離傳感器和LED燈條的接線(xiàn)端。同時(shí)在盒子的側(cè)面開(kāi)一個(gè)小圓孔,用于走適配器的電線(xiàn),給Arduino控制器供電。
3. 用3根杜邦線(xiàn)分別連接Arduino控制器與紅外距離傳感器的接線(xiàn)端,具體連接方式見(jiàn)下圖:紅外距離傳感器紅色和黑色線(xiàn)分別接Arduino控制器的5V電源端和接地端,橙色線(xiàn)連接Arduino 控制器的模擬信號(hào)A1輸入端。
4. 與LED燈條相連:將Arduino控制板的5V電源端、接地端和6號(hào)數(shù)字口分別連接到LED燈條的5V電源端、地線(xiàn)端和信號(hào)接入端。用LED燈條的信號(hào)輸入端的細(xì)線(xiàn)連接Arduino控制器的6號(hào)PWM輸出端。
5. 插上電源適配器,對(duì)Arduino控制器進(jìn)行供電,至此硬件連接部分全部完畢。要讓手勢(shì)控制燈正常工作,還需要給Arduino控制器下載控制程序。
6. 為了下載控制程序,先要通過(guò)D口USB線(xiàn)(藍(lán)色數(shù)據(jù)線(xiàn))連接電腦和Arduino 控制器,下載Adafruit_NeoPixel Library庫(kù)文件(下載地址:https://learn.adafruit.com/adafruit- neopixel- uberguide/arduino- library- installation),將其解壓縮在C:\Program Files (x86)\Arduino\libraries。
7. 運(yùn)行Arduino,打開(kāi)GestureControl
LightingV3.ino文件(下載地址:https://pan.baidu.com/s/17M- yd0RC-fzkVvE0a83Onw)。打開(kāi)菜單欄中“工具”選項(xiàng),點(diǎn)擊“板卡”選項(xiàng),選擇Arduino控制器的型號(hào)(這里是Arduino Uno)。
8. 選擇Arduino控制器與電腦的連接端口。為了判斷是否連接正確,可以通過(guò)插拔USB線(xiàn),查看COM口。插上Arduino與電腦時(shí),新增的COM口即為Arduino的通信端口。
9. 點(diǎn)擊“文件”下面的“下載”,將程序上傳到Arduino控制器,上傳成功后即可脫離電腦運(yùn)行。
當(dāng)接通電源后,程序會(huì)開(kāi)啟紅外距離傳感器探測(cè),關(guān)閉LED燈條上的所有LED。
本程序采用間隔50ms探測(cè)紅外距離傳感器的數(shù)據(jù),見(jiàn)程序第9行:int delaytime = 50。
當(dāng)紅外距離傳感器的上方有遮擋,且遮擋的距離小于500mm時(shí)(見(jiàn)第25行),就會(huì)點(diǎn)亮遮擋相應(yīng)高度內(nèi)的LED顆粒。
不同的遮擋高度點(diǎn)亮不同顆數(shù)的LED,點(diǎn)亮LED的顆數(shù)根據(jù)500mm對(duì)應(yīng)72顆燈珠依次推算得到。當(dāng)遮擋物上下移動(dòng)時(shí),點(diǎn)亮的LED顆數(shù)也會(huì)隨之變化。
當(dāng)遮擋物從一定高度(500mm以?xún)?nèi))抽離時(shí),紅外距離傳感器的數(shù)據(jù)就會(huì)從當(dāng)前距離一下子變到500mm以上,那么此時(shí)的點(diǎn)亮LED顆粒將在此前的高度。