透過 GPIO 來控制 BrightSign 播放器
本文我們來實作可以進行互動的螢幕。怎麼個互動法?這次以兩種為例:
- 透過 RFID ,刷卡感應後,讓本來循環播放 A 影片的螢幕,改為播放 B 影片。
- 透過超聲波回聲判斷,人靠近(或手懸浮在感應區域)時,讓本來循環播放 A 影片的螢幕,改為播放 B 影片。
為了達到以上效果,我們這次需要的設備除了顯示器以外還需要:
- 數位看板播放器(Digital Signage Players),此處我們選用 BrightSign 的 HD225。
- 感應 RFID 並回傳訊號的傳感設備。此處我們不買現成產品,選用微控制器 ESP-WROOM-32 + RFID 傳感模塊 MFRC522 來土炮一個。
- 感應超聲波並回傳訊號的傳感設備。此處我們也不買現成產品,選用微控制器 NodeMCU + 超聲波傳感模塊 HCSR04 來土炮一個。
RFID 互動螢幕
我們的邏輯很簡單:RFID 模塊感應讀取輸入,把 ID 傳入 ESP-WROOM-32 判斷,如果是我們要的 ID,則輸出高電平訊號。當 HD225 讀到高電平訊號傳入,觸發後續影像內容。
首先來搞定 RFID 的部分。我們 ESP-WROOM-32 使用 Arduino IDE 來進行編譯跟燒錄,所以有幾個前置準備事項:
- 在 Preference 中的 Additional boards manager URLs 中填入
https://dl.espressif.com/dl/package_esp32_index.json
- Board Manager 搜尋 esp32,找到
esp32 by Espressif Systems
,安裝它
- Board 我們選擇
ESP32 Dev Module
- Library 搜尋 MFRC522,找到
MFRC522 by GithubCommunity
,安裝它
然後找出我們這顆控制器的腳位圖:
對照腳位,把 MFRC522 接上:
- SCK 接入 GPIO18
- MOSI 跟 MISO 分別接入 GPIO23、GPIO19
- IRQ 我們此例用不到,不接
- 3.3V 跟 GND 按圖接入
- SDA 與 RST 可隨選
然後我們就可以開始編程了。程式內容請參考:
1 |
|
其中,LED
的腳位在接入 HD225 之前就是接著 LED 來進行測試。當 LED 點亮,就表示該腳位輸出了 3.3v 高電平。後來就懶得改變數名稱了,看得懂就好 :)
傳感器完成後,我們將該輸出腳位接到 HD225 的 GPIO 上。(為了這個需要,我們必須另外準備 pitch 為 3.5mm 的端子座。官方建議買 4 或 6 pin 的,因為 12 pin 會很難拆)除了輸出腳位以外,記得還要共地,所以 ESP 的 GND 也要接一條到 HD225 的 GND。
最後我們到 HD225 的控制後台 BrightAuthor:connected 進行設定。因為我把上述 LED 腳位接入 HD225 的第六 pin,根據對應,我們要設定 BUTTON 3。腳位請參考:
將 BUTTON 3 的 Trigger Event On Button 設定為 Down,就會在高電平的時候觸發該判斷。至於為什麼他要預設你的 GPIO 接的是按鈕,我也覺得這樣頗誤導人。
至此,設置完畢!
超聲波互動螢幕
一樣先捋一捋邏輯:超聲波模塊持續感應是否有物體靠近,當有東西靠近到足夠距離,請 NodeMCU 送出一個高電平訊號。當 HD225 讀到高電平訊號傳入,觸發後續影像內容。
首先來搞定超聲波測距的部分。我們 NodeMCU 一樣使用 Arduino IDE 來進行編譯跟燒錄,所以有幾個前置準備事項:
- 在 Preference 中的 Additional boards manager URLs 中填入
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Board Manager 安裝
esp8266 by ESP8266 community
- Board 我們選擇
NodeMCU v1.0
- Library 裝Bifrost.Arduino.Sensors.HCSR04
接線與程式部分:
1 |
|
其中的 LED
比照前例,一開始用 LED 測試,後來直接作為輸出,跟 HD225 溝通。
控制後台 BrightAuthor:connected 的設定跟前例的邏輯完全一樣,注意腳位不要搞錯就好。
以上!