02 玩ESP32及兩晶片的互動

(2022/06/06)

之前測試了Pixel:BitEZ Start Kit+做一結合,利用BlocklyDuino來寫ATmega328P晶片上的程式,今天改利用BlocklyDuino來寫ESP32晶片上的程式,感謝吉哥完成TFT彩色螢幕的積木,這樣一來就可以方便資料的顯示。又由於Pixel:Bit是晶片板子,兩晶片間的互動為本文的重點,基本測試如下,供參


一、使用ESP32晶片

  • Pixel:Bit 搭載 ESP32 與 ATmega328P 雙控制器,ESP32 處理影像擷取、畫面顯示和 SD 卡存取,ATmega328P 負責正面兩顆按鈕,以及金手指腳位 GPIO 控制。彼此透過 UART 相互溝通,任務依照需求分工,程式碼更加簡潔,同步執行功能,效率大幅提升。

  • Pixel:Bit 正面有一塊 1.3 吋的彩色 LCD,可讓使用者顯示資訊,或是將鏡頭拍攝到的畫面顯示在 LCD 上 ,解析度為 240 x 240。使用者可用來顯示文字資訊,或是拍攝影像。

  • 先把【UART切換開關】切換到【ESP 模式


二、BlocklyDuino的吉哥積木-TFT彩色螢幕

  • 測試一:顯示中英文字

    • 關於英文和數字相關的積木有二個,一個是字型編號,一個是字的大小。

      • 一、字的大小:為1~7的數字,可以設定字的大小,可將字放大或縮小。

      • 二、字型編號:為1~8的數字,字型編號愈大,字愈大。編號1~4,字的內容包含英文及數字共96個字元,編號6~8則只包含以下引號內所包含的字元:「1234567890:-.」。(字的編號3及5是空的,沒有這二個編號的字)。

      • 1號字:高8像素,包含英文及數字共96個字元

      • 2號字:高16像素,包含英文及數字共96個字元

      • 4號字:高26像素,包含英文及數字共96個字元

      • 6號字:高48像素,只包含「1234567890:-.」這些字元

      • 7號字:高48像素,只包含「1234567890:-.」這些字元,七節字,適合用來當時鐘或計時的數字

      • 8號字:高75像素,只包含「1234567890:-.」這些字元

    • 中文字的高度都是16像素,無法調整大小。

ATmega328P晶片透過序列埠的發送及接收測試

      • 開啟【Putty序列埠監看視窗】,就會看到從1~100的數字跳動

      • 建議開啟【啟動Arduino IDE】下的【序列埠監看視窗】,右下方的鮑速要選57600,就會看到從1~100的數字跳動

    • 測試ATmega328P當接收端,顯示從發送端傳過來的訊息

      • 利用EZ Start Kit+的OLED屏幕顯示訊息

      • 程式如下:

        • (20220608更新)以下程式為第一版,需要經過Arduino IDE來修改程式,不要再用了,改用後面的【吉哥積木】或【法蘭斯積木】,更加簡便!!

  • 積木程式的Arduino碼有一點問題,再請吉哥或法蘭斯協助解決

  • 把上面複製的程式碼,貼到Arduino IDE下,把原本\\n改為\n,再進行燒錄

  • (20220608更新) 將取得序列埠資料的程式,改用【吉哥積木】或【法蘭斯積木】,程式修改如下:

    • 以下為ESP32晶片的【測試四】程式

    • 另外,ATmega328P晶片的【測試】程式也是跟以下一樣的

        • 一樣,開啟【啟動Arduino IDE】下的【序列埠監看視窗】

          • 右下方的鮑速要選57600

          • 另外,要選Newline或Both NL & CR

          • 輸入要顯示的數字或文字,按enter或 Send

          • 就會在OLED屏幕上顯示出你剛輸入的訊息了

、ESP32晶片透過序列埠的發送及接收測試

    • 測試ESP32當發送端程式: 傳送1~100的數字到【序列埠】

      • 把【UART切換開關】切換到【ESP 模式

      • 這邊的程式與上面ATmega328P晶片的都一樣

  • 測試方式也與上面都一樣

    • 開啟【Putty序列埠監看視窗】,就會看到從1~100的數字跳動

    • 建議開啟【啟動Arduino IDE】下的【序列埠監看視窗】,右下方的鮑速要選57600,就會看到從1~100的數字跳動

    • 測試ESP32晶片當接收端,顯示從發送端傳過來的訊息

      • 直接利用Pixel:Bit 正面塊 1.3 吋的彩色 LCD屏幕顯示訊息

      • 這邊的程式與上面ATmega328P晶片的原理都一樣(屏幕顯示積木不一樣)

      • 程式請直接用【吉哥積木】或【法蘭斯積木】的更簡更寫法

  • 測試過程也一樣

    • 開啟【啟動Arduino IDE】下的【序列埠監看視窗】

      • 右下方的鮑速要選57600

      • 另外,要選Newline或Both NL & CR

      • 輸入要顯示的數字或文字,按enter或 Send

      • 就會在OLED屏幕上顯示出你剛輸入的訊息了

、兩晶片(ATmega328P晶片、ESP32晶片)間的互動

    • 測試ATmega328P當發送端、ESP32晶片當接收端

      • ATmega328P使用【測試一】的程式把【UART切換開關】切換到【PRO MINI 模式】

      • ESP32使用【測試四】的程式,把【UART切換開關】切換到【ESP 模式

      • 把【UART切換開關】切換到【GO 模式

      • 最後,就會看到Pixel:Bit 正面那塊 1.3 吋的彩色 LCD屏幕有1~100的數字在跳動

    • 測試ATmega328P當接收端、ESP32晶片當發送端

      • ATmega328P使用【測試】的程式,把【UART切換開關】切換到【PRO MINI 模式】

      • ESP32使用【測試】的程式,把【UART切換開關】切換到【ESP 模式

      • 把【UART切換開關】切換到【GO 模式

      • 最後,就會在EZ Start Kit+的OLED屏幕有1~100的數字在跳動


  • 測試成功後,接下來就可以做很多應用了,如ATmega328P取得的金手指腳位的測器就可呈現在ESP32的彩色屏幕上