謝作如
創(chuàng)客空間應(yīng)該是一個充滿個性的地方,各種奇思妙想都能在這里得到實現(xiàn)。當(dāng)我校的創(chuàng)客空間全新裝修好后,我和學(xué)生總覺得還不夠個性化,科技感也不強。創(chuàng)客空間里的細(xì)節(jié)布置肯定要自己來設(shè)計并且實現(xiàn)。于是,我們把目光投向了照明系統(tǒng),即燈光。
要讓照明系統(tǒng)體現(xiàn)個性,自然要買支持物聯(lián)網(wǎng)控制的燈泡,如小米、華為和Yeelight的智能燈泡(如圖1)。這些燈泡往往具有可調(diào)光、支持手機遠(yuǎn)程控制等特點,也稱為智能情景照明燈。但我們不滿足于用企業(yè)開發(fā)的APP來控制燈光,而是希望能夠自己編程對燈泡進(jìn)行個性化控制,如定時開燈和關(guān)燈,或者結(jié)合一些創(chuàng)客空間的傳感器實現(xiàn)真正的智能控制。
原理分析
支持手機APP控制的智能燈泡很多,但是能夠讓用戶自行編程控制的卻寥寥無幾。研究了市場上常見的開放接口的智能燈泡,總結(jié)出自定義編程大致有兩種方式:一是智能燈泡的物聯(lián)網(wǎng)網(wǎng)關(guān)支持第三方認(rèn)證接入,如天貓精靈;二是智能燈泡同時支持局域網(wǎng)內(nèi)部的控制,如Yeelight。
默認(rèn)情況下,Yeelight智能燈泡與物聯(lián)網(wǎng)網(wǎng)關(guān)建立聯(lián)系,然后手機APP通過網(wǎng)關(guān)發(fā)送控制指令給燈泡,每一個智能燈泡都是一個智能終端。但是,Yeelight智能燈泡如果開啟了“局域網(wǎng)控制”功能,那么就可以同時響應(yīng)來自局域網(wǎng)任一智能設(shè)備的控制指令了,發(fā)送控制指令的設(shè)備可以是電腦、手機,也可以是任何一個支持網(wǎng)絡(luò)功能的MCU,如掌控板、虛谷號和樹莓派等,具體過程如圖2所示。
智能燈泡的編程控制實驗
雖然任何一種支持網(wǎng)絡(luò)的編程語言都可以給Yeelight智能燈泡設(shè)備進(jìn)行編程,但考慮到學(xué)習(xí)難度,我們選擇了Python語言。因為Yeelight官方提供了一個庫,在這個庫的支持下,編程會更加容易。
1.準(zhǔn)備工作
(1)智能燈泡和電腦或者其他可編程智能設(shè)備要處于同一個局域網(wǎng)。我們使用的是最新的虛谷號(如上頁圖3),它是一款面向人工智能教學(xué)和Python編程學(xué)習(xí)而開發(fā)的開源硬件平臺,自帶了Wi-Fi,接上鼠標(biāo)鍵盤和顯示器,就是一臺電腦。它也可以像U盤一樣,插入普通電腦進(jìn)行編程。
(2)打開智能燈泡的局域網(wǎng)控制功能,具體操作如圖4所示。
(3)安裝好Python3環(huán)境。虛谷號已經(jīng)內(nèi)置了Python3.5,并且已經(jīng)安裝了一些常見的庫。
2.實驗過程
步驟1:安裝Yeelight庫。
在命令行中輸入pip install yeelight,通過網(wǎng)絡(luò)安裝Yeelight庫,安裝速度很快。
步驟2:打開Python IED進(jìn)行編程測試。
(1)尋找設(shè)備。輸入如表1代碼。
屏幕打印出這個局域網(wǎng)中找到的智能燈泡設(shè)備數(shù)量。變量ledlist的數(shù)據(jù)類型為“列表”,用print(ledlist)語句打印出來,會看到如表2的內(nèi)容。
這些信息描述了這個智能燈泡的關(guān)鍵信息,其中192.168.199.184和192.168.199.142就是智能燈泡的IP地址,這說明局域網(wǎng)中有兩個智能燈泡設(shè)備。
(2)控制智能燈泡的開關(guān)狀態(tài)。
使用Bulb對象指定一個設(shè)備的IP地址,用“bulb.turn_on()”和“bulb.turn_off()”就可以控制燈泡的開關(guān)狀態(tài)。參考代碼如表3。
除了用“bulb.turn_on()”和“bulb.turn_off()”,Yeelight還提供了一個“bulb.toggle()”的方法直接讓設(shè)備切換狀態(tài)。
(3)控制一個設(shè)備的色彩。
Yeelight支持多方式控制燈光色彩,如RGB、HSV和色溫控制等方式。表4的代碼實現(xiàn)了RGB方式控制。
如果要實現(xiàn)更多功能,可以查看Yeelight庫的文檔介紹。Yeelight庫文檔的地址為:https://yeelight.readthedocs.io/en/latest/。
更多創(chuàng)意示例
一旦實現(xiàn)了局域網(wǎng)控制后,這個智能燈泡就變得更加好玩了,也能支持我們的各種奇思妙想。我和學(xué)生們討論了幾種創(chuàng)意方案。
創(chuàng)意1:根據(jù)天氣預(yù)報自動變換燈泡的色彩
用Python代碼定時獲取當(dāng)前的天氣預(yù)報,然后顯示不同的燈泡色彩。晴天就柔和一點,下雨天則要亮一些。學(xué)生說如果是刮風(fēng)天氣,燈光要閃爍,如同被大風(fēng)吹過,確實是腦洞大開。
創(chuàng)意2:設(shè)計一個大型的LED燈帶
在創(chuàng)客空間前面的走廊,我們準(zhǔn)備裝一排8個以上的智能燈泡,這樣就形成了一個大型的“LED燈帶”,可以實現(xiàn)彩虹燈、流水燈之類的效果,也可以根據(jù)音樂旋律來顯示一些閃爍的舞臺燈光效果。
創(chuàng)意3:設(shè)計一個大型的LED陣列
如果在創(chuàng)客空間的天花板上,裝上25(5*5)個智能燈泡,可以做一個和micro:bit的點陣屏差不多的大型“LED陣列”,用來顯示特定的圖案,如笑臉、字母等,和micro:bit不同的是,這個LED陣列還是全彩的呢。
還有遠(yuǎn)程開燈、刷臉開燈等,因為虛谷號支持各種Arduino傳感器模塊,也支持?jǐn)z像頭,從簡單互動到人工智能,學(xué)生的創(chuàng)意想法越來越多,不再一一列舉了。
盤點這些年學(xué)校創(chuàng)客空間中做的各種作品,往往局限于LED、舵機、直流電機之類的電子模塊,很少有人去直接控制家用電器,這是因為家用電器使用的是220V的電路,比較危險?,F(xiàn)在,有了支持物聯(lián)網(wǎng)功能的電器后,一種新的玩法也出現(xiàn)了。創(chuàng)客空間里的學(xué)生會發(fā)現(xiàn),編程并不是虛擬世界中的游戲,而是能真正作用于真實世界的。當(dāng)然,要方便自如地控制這些智能燈泡,虛谷號是一個很好的工具。
基金項目:本文是江蘇省教育科學(xué)“十三五”規(guī)劃專項課題“江蘇省高中STEM教育基地實驗項目的設(shè)計與實踐研究”階段性成果,課題批準(zhǔn)文號:C-a/2018/02/19。