02 非接觸控制
(20220811)
最近一直在玩microBlock,這篇是以藍牙、ESPNOW、RFID及紅外線遙控等非接觸控制測試為主,測試時遇到一些問題,感謝亞柏老師的協助指導,如下,供參
一、藍牙測試
利用手機APP透過藍牙來開關燈
在手機APP輸入
ron:點亮紅色LED燈
yon:點亮黃色LED燈
gon:點亮綠色LED燈
alloff:關掉全部的燈
程式如下:
b ' '代表Bytes格式
概念上來說,就是 Python Application 「內部」核心處理的部分都用以 Unicode 處理,「外界」的部分,不管是 Terminal 的 stdout / stdin、HTTP content、File ,只要跟 I/O 有關,都是以 bytes 來處理,進來一律 decode 成 unicode,出去一律 encode 成 bytes。
輸入端是否有CR或LF,會影響判斷,最好都不包含(CR或LF)
如果判斷的值是數字,把取得的資料轉為10進位即可
如果不管輸入端有沒有\r\n,建議採用判斷是否為XXX字串開頭的積木
手機APP介紹
可使用下面幾款APP來傳輸料給ESP32,不用配對,直接使用
Serail Bluetooth Terminal
建議用此APP及V7RC即可
BLE Scanner
Lightblue
操作與上面BLE Scanner很像
nRF Connect for Mobile
操作與上面BLE Scanner很像
V7RC
原理
作品說明
利用轉盤來控制亮滅燈
CH1(左右移動),基準值1500
CH1>1700開紅燈
CH1<1300關紅燈
CH2(上下移動),基準值1500
CH1>1700開黃燈
CH1<1300關紅黃燈
CH3(上下移動),基準值1500
CH1>1700開綠燈
CH1<1300關綠燈
CH4(左右移動),基準值1500
CH1>1700全開燈
CH1<1300全關燈
程式如下:
V7RC的操作
使用【坦克】模式,可以同時操作4個CH
利用藍牙傳出訊息
但好像沒有儀表板的APP
分別用上面幾款APP來接收
(後續)【亞柏老師的指導】
亞柏老師介紹了一款【Bluetooth Electronics】的APP,可以做很漂亮的面板
亞柏老師也提供【ESP32 模擬HC-08】的積木,讓 Bluetooth Electronics APP可以利用BLE連上ESP32
二、ESP NOW
所使用的積木
發送端程式
接收端程式
我這邊採用【字串】來傳送及接收
但我覺得我接收到的值資料已經是【字串】,但得到結果是b'字串',呈現是Bytes格式,但又不是Bytes格式!
因此判斷開關燈時,要比對時要用b'字串'來比對,即使使用【開頭】字串來比對也一樣!
再請亞柏老師協助處理看看!(感謝亞柏老師解決這問題,這是官方的BUG,請看後面修改)
如果採用【數字型態】來接收應該就沒問題
下圖為Mason老師的教材,同時有接收及傳送時,接收端要採用timer方式來寫
(後續)【亞柏老師的指導】
亞柏老師找到問題了,這是官方的BUG
到以下路徑 resources\app\extension\ESP-NOW-2\modules,找到ESPNOW.py
將第48行的str(buff)改成buff (把str刪除)
這樣得到結果是b'字串',就是Bytes格式了
三、RFID
接線圖
取得卡片的UID值
利用卡片開關燈
四、紅外線遙控
這部份可參考前一篇文章
紅外線接收器(IO3):GPIO33
取得遙控器按鍵的【編碼值】
KEYES遙控器的方向鍵編碼值
上:ff629d
下:ffa857
左:ff22dd
右:ffc23d
OK:ff02fd
按KEYES遙控器的方向鍵
按上鍵,全亮燈
按下鍵,全滅燈
按左鍵亮紅燈
按中鍵(OK鍵)亮黃燈
按右鍵亮綠燈
註:要用變數來存取得的編碼