牟曉東
炎炎夏日,一直“貓”在空調房中取涼對身體是極為不利的,還是用風扇吹自然風比較健康。對于我們熱衷于“鼓搗”的創客一族而言,吹吹風也一定要吹出不一樣的境界,比如使用App Inventor編程開發個手機應用程序,遠程操控樹莓派的智能風扇——既能任意變速,又能定時關機。
所需的實驗器材包括:樹莓派3B+(帶電源線)一塊,古德微擴展板一塊,風扇模塊一個,智能手機一部,公對母異色杜邦線四根(如圖1)。

風扇模塊(L9110)直流電動機的馬達控制板提供有四個引腳:電源正極VCC、接地GND和IA、IB兩個輸入控制端,引腳次序與古德微擴展板24號一一對應,但“直插”的話會導致扇葉在放置時與擴展板親密接觸,因此應該借助杜邦線進行“延長”。注意:控制板的IA引腳接擴展板24號的D端,控制板的IB引腳接擴展板的A0端(如果這兩個輸入控制端交叉連接就會出現扇葉“反轉”——變成“排氣扇”)。
1.組件設計
瀏覽器訪問App Inventor網站(https://app.wxbit.com/login/),QQ賬號登錄。新建“智能風扇”項目,分別建立三個“水平布局”,進行“居中”,寬度“充滿”,高度“自動”設置;在第一個水平布局中建立“風力調節”標簽和“風力調節滑桿”水平滑動條,注意滑桿的最大值設為3000,最小值設為0,滑桿位置設為0;在第二個水平布局建立兩個標簽,分別為“風力”和“風力值”(文本設為0);在第三個水平布局中建立一個“時間選擇框”(重命名為“定時關機”),再建立“關機時間”標簽(文本設置為“00:00”)。
然后建立一個“圖像框”,上傳風扇圖片(“自動縮放有效”,寬度和高度均為“自動充滿”);再從“通信連接”中建立一個“MQTT客戶端”,注意將“服務器URL”修改為古德微機器人網站的URL:“tcp://www.gdwrobot.top:1883”;最后從“傳感器”中建立一個“計時器”,完成組件設計(如圖2)。

2.邏輯設計部分
切換至“邏輯設計”界面進行相關項目的初始化和連接等設置。比如“當屏幕Screen初始化”時,調用MQTT客戶端連接;“當MQTT客戶端已連接”時,設置風力值文本顯示為“MQTT已經連接成功!”;“當定時關機被點擊”時,調用定時關機彈出選擇框;當“定時關機完成時間設定”時,設置顯示關機時間等相關信息(如圖3)。

當“風力調節滑桿的滑塊位置發生改變”時,設置風力值為滑塊位置的四舍五入數值,然后調用MQTT客戶端發布相關的信息(注意“luke008/Fan”主題必須與樹莓派賬號一一對應)(如圖4)。

當“計時器到計時間隔點”,根據用戶設定的定時關機時間再次進行發布(如圖5)。

瀏覽器訪問古德微機器人平臺(http://www.gdwrobot.cn/),輸入賬號密碼登錄。首先從“物聯網”處設置物聯網服務器積木模塊,再監聽主題Fan并設置初始值為0;然后建立“循環當真”結構,判斷是否收到主題Fan的新數據:如果收到,先在調試區輸出該數據,然后控制24號(風扇)GPIO輸出;如果主題Fan的數據為0,控制24號關停風扇;最后添加等待時間,保存程序為“編程智能風扇”(如圖6)。

確保風扇與擴展板正確連接之后,通電啟動樹莓派;在古德微機器人平臺上點擊“連接設備”后打開LOG調試區,點擊“運行”按鈕;到App Inventor網站智能風扇項目中點擊“連接”-“AI伴侶”,出現二維碼;在智能手機上運行AI伴侶,掃描二維碼,連接成功后會顯示出與在App Inventor組件設計中相同的界面。
此時就可以向右撥動“風力調節”后面的風力調節滑桿,下方的“風力”處即時顯示出數值(比如1620),同時在古德微機器人平臺的程序LOG調試區也會對應顯示該數值。當然,最重要的是風扇此時已經轉動起來了,撥動調節該數值越大,風扇葉片的旋轉速度就越快——撥動到0,風扇停轉(如圖7)。

再來試一下“定時關機”功能,比如現在是14:29,可以點擊彈出的時間鐘表盤設置關機時間——比如14:31。此時風扇仍然是按照撥動的轉速值在旋轉,到預定的關機時間后,風扇立刻停轉了,非常“聽話”,大家不妨一試。
(本實例效果演示可在B站搜索“二娃學編程”觀看)