我們必須先用這個函數來確認,client還連線在Server,以確保下面讀取到
的資料是由client傳過來的。在測試的時候,曾拿掉這個判斷,會讀到還沒
連線前的資料,造成誤判。
if (c=='\n') { //如果讀到的字元是 '\n',表示這個網頁是第一次連上 Web Server。
所以是第一次連到 Server,所以顯示初始的網頁。
字串
除了使用C語言來撰寫控制微控器(MicroController)的程式,目前非常多人使用的Python程式語言也可以撰寫控制程式;只是一般微控器上的記憶體容量並不大,所以無法使用Python的所有功能。因此劍橋大學的 Damien P. George教授開發了 Python的精簡版,能使用在微控器上的 MicroPython。但必須要注意它並非能使用所有Python的函數庫及功能。(註1、2)
ESP8266及ESP32模組的相片如下,左邊的是ESP8266,右邊的是ESP32。在 Arduino中要燒錄程式到微控器時,都要按右下角的按鈕(BOOT/FLASH)。
市面上有可以一鍵燒錄的ESP32模組,如下圖。還提供可以外加電源輸入的插槽(左下角)。
要在 ESP32 或是 ESP8266上使用 MicroPython 前,必須將相對應 MicroPython 的韌體(Firmware)燒錄到微控器上。在 Google上搜尋 MicroPython 就可以找到連接的網址:https://micropython.org/,上方的 DOWNLOAD 網頁內,就可以選擇要搭配相關微控器的MicroPython。
ESP32:https://micropython.org/download/esp32/
ESP8266:https://micropython.org/download/esp8266/
網站是使用 esptool.py 來燒錄韌體。但如果對於文字模式的操作有困難,建議可以使用uPyCraft 這套由大陸 DFRoot 公司所推出免費的整合式開發軟體(IDE),它整合了終端機、Python 程式編輯器及軟體線上燒錄的功能。下載網址:https://github.com/DFRobot/uPyCraft。下載zip檔後,解壓縮後,以系統管理員身分執行 uPyCraft 應用程式。
若是在執行後,出現找不到 MSVCR100.dll 的訊息,請到微軟的下載中心 Download Center
網站:https://www.microsoft.com/en-us/download/details.aspx?id=26999。
Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update 選擇 Chinese(Traditional) 語系後,按下 Download 按鈕。
開啟程式後,在 Tools 功能表下,從 board 中選取 esp32,再設定 Serial 中設定 esp32 模組連接的串列埠號(要按各自 esp32 連結到電腦的埠號)。
若 ESP32模組未安裝 MicroPython韌體的話,uPyCraft會出現下面的視窗:
此時,可以直接燒錄 uPyCraft所提供的 MicroPython韌體,但還是建議使用 MicroPython官網所提供韌體。burn_addr(燒錄韌體的起始位址)要設定成 0x1000,就可以開始燒錄。
按下 ok按鈕後,先進行清除(Erase)的工作,如果無法開始清除,試著按住ESP32模組上右下角的BOOT按鍵,直到開始清除。
燒錄完,不會出現任何的提示訊息,此時可以按下uPyCraft視窗右邊功能鈕的連結(Connect)。
連接上 ESP32 模組,在 uPyCraft下半部的 Shell 視窗就會出現 MicroPython 的提示 >>>,可以輸入指令進行測試,另外左邊的視窗,點選 device,會顯示 ESP32模組上的檔案。
接下來自行輸入一個 python 程式,或是由 範例 (Examples)中選取一個程式,進行測試是否可以在 ESP32 模組上使用 Python,最簡單的測試範例就是可以讓 onBoard 的 LED閃爍。所以選擇 blink.py。
如果有錯誤的地方,例如 while Ture 後面,忘了加上:經過 yntaxCheck 檢查,會在 Shell 視窗出現錯誤的訊息。如下圖:
語法檢查後,沒有問題就可以在 Tools 功能表下的 DownloadAndRun 命令或是直接按下快捷鍵 F5,將 MicroPython 檔案 (blink.py)上傳到 ESP32 後,執行程式,檢查結果是否正確。
在 uPyCraft 左邊的視窗,在 device 資料夾中,可以看到剛上傳到 ESP32的檔案 (blink.py), 還有 boot.py。
如果要執行在 ESP32 內的某個 MicroPython 檔案,可以利用 uPyCraft 左邊的視窗,從 device 資料夾中點選檔案後,按下滑鼠右鍵,選擇 Run 的命令。如果選擇 Default Run,則是 ESP32一接上電源後就會馬上執行程式 blink.py。
一旦將 blink.py設定成 Default Run,會產生 main.py 無限迴圈執行檔案,以致關掉uPyCraft程式或是拔起 ESP32模組後 ,uPyCraft 無法連線上 ESP32模組。
要解決這個問題,若是在設定成 Default Run 後,先從 Tools 功能表下的 Stop 命令停止程式執行,再刪除 main.py,將會出現 delete error。
目前想到解決的方法是:
1.開啟 main.py
2.將 main.py內的 exec(open('./main.py').read(),globals()) 程式刪除掉。
3.再從 Tools 功能表中,選擇 Download命令,將 main.py清除空白。
如果未清除 main.py 內的 exec(open('./main.py').read(),globals()) ,就關掉 uPyCraft 程式或是拔起 ESP32模組,那除了重新燒錄韌體外,可以選擇用 Thonny 整合開發軟體來刪除 main.py。
uPyCraft更多的使用方法,請參考註2的說明文件。
另外要注意的是:使用 uPyCraft 燒錄 ESP8266 韌體時,burn_addr 要設定成 0x0 (預設值)。
註1:超圖解Python物聯網實作入門,趙英傑,旗標出版社(2018)。
註2:uPyCraft簡體中文說明文件:http://docs.dfrobot.com.cn/upycraft
註3:MicroPython on ESP8266 (六) : 檔案系統測試,小狐狸事務所,http://yhhuang1966.blogspot.com/2017/05/micropython-on-esp8266_18.html。
註4:經典ESP學習網站(Random Nerd Tutorials): https://randomnerdtutorials.com/