02 玩ESP32及兩晶片的互動
(2022/06/06)
之前測試了Pixel:Bit與EZ 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彩色螢幕
感謝吉哥已經做好TFT彩色螢幕的積木,路徑在【吉哥積木】/【ESP32】/【模組】/【TFT彩色螢幕】
吉哥教學 https://sites.google.com/jes.mlc.edu.tw/ljj/esp32/t-display
測試一:顯示中英文字
關於英文和數字相關的積木有二個,一個是字型編號,一個是字的大小。
一、字的大小:為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晶片透過序列埠的發送及接收測試
參考資料:https://www.circuspi.com/index.php/2022/04/27/pixelbit-unit2/2/
測試一:ATmega328P當發送端程式: 傳送1~100的數字到【序列埠】
先把【UART切換開關】切換到【PRO MINI 模式】
程式如下:
開啟【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的彩色屏幕上