02 非接觸控制

(20220811)

最近一直在玩microBlock,這篇是以藍牙、ESPNOW、RFID及紅外線遙控等非接觸控制測試為主,測試時遇到一些問題,感謝亞柏老師的協助指導,如下,供參

一、藍牙測試

  • 利用手機APP透過藍牙來開關燈

    • 在手機APP輸入

      • ron:點亮紅色LED燈

      • yon:點亮黃色LED燈

      • gon:點亮綠色LED燈

      • alloff:關掉全部的燈

    • 程式如下:

      • b ' '代表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鍵)亮黃燈

    • 按右鍵亮綠燈

      • 註:要用變數來存取得的編碼