Charles:讓天底下沒有難抓的包。 前言 今天給大家推薦一個我所使用過的抓包工具中最好用的抓包工具-Charles(音譯:查爾斯),它可以抓各端發起的網路請求,我主要用來抓移動設備上的請求,上次小明就通過這種方式找到了一款付費App課程的漏洞,咳咳,不展開說了,畢竟web端的瀏覽器網路請求,打開 ...
ESP32簡介
ESP32 是上海樂鑫公司開發的一款比較新的32位微控制器,它集成了WiFi及藍牙等功能,有著性能穩定、功耗低、價格低廉等特點,非常適用於物聯網開發,但也可以作為普通的MCU使用。
ESP8266 也是樂鑫公司開發的一種非常流行的WiFi晶元。相比 ESP8266 ,ESP32 更加強大。這篇文章 比較了 ESP8266 和 ESP32 之間的差別。
ESP32的主要晶元種類有ESP32-C系列、ESP32-S系列和ESP32系列。這些晶元的參數和功能略有差異,例如ESP32-S2就不支持藍牙功能。在選型時註意檢查晶元型號。
完整的晶元型號對比可以參考官方網站的介紹:https://www.espressif.com/zh-hans/products/socs
模塊是基於ESP32晶元,按照一定功能封裝了基本的外設等形成的集成晶元。樂鑫提供的ESP32模塊主要可分為WROOM系列、WROVER系列以及MINI系列,完整的介紹及對比可以參見官方網站:https://www.espressif.com/zh-hans/products/modules 。模塊參數的詳細PDF文檔可以從 https://www.espressif.com/zh-hans/products/modules/esp32 處下載。
而開發板則是由ESP32模塊和USB口、複位開關等組成的完整開發套件。開發板的廠商較多,使用時需要查看對應的開發板電路連接原理圖,並註意開發板提供的功能。樂鑫提供的官方開發板介紹可以參見 https://www.espressif.com/zh-hans/products/devkits 。
這裡選擇 DOIT ESP32 DEVKIT V1 作為開發板。該開發板的特點為:
- 尺寸很小(約 52mm x 28mm )
- 價格低廉(僅需 ¥20 左右,相比樂鑫官方動輒 60+ 非常親民)
- 板載一個藍色 LED 燈,方便在無額外元器件時便可以調試
- 遠銷海外( platformIO 甚至還有該開發板專門的介紹文檔)
其外觀如下。事實上很多商家的 ESP32 的開發板結構都非常類似。在選擇開發板時只需註意主要結構及功能即可。
MicroPython簡介
什麼是MicroPython
MicroPython是基於Python實現的簡易版本,用於在嵌入式系統中運行,例如樹莓派、ARM單片機和ESP32。它相容大部分Python3語法,因此只要熟悉Python3就能無障礙上手MicroPython。
相比Python3,MicroPython精簡了許多實現細節,並且刪去了許多標準庫以及標準庫里的內容。不過,MicroPython卻額外包含了能夠操作底層GPIO等外設的標準庫,這些是對底層寄存器的高度封裝。
建立MicroPython開發環境
目前來說,有 3 個比較常用的 MicroPython 開發環境,它們都是免費、開源且跨平臺的。它們分別為:
- uPyCraft IDE
uPyCraft IDE 是一個簡單並且對入門 MicroPython 友好的集成開發環境,它自身可以直接燒入 MicroPython 到 ESP32 中,並且支持從編寫程式到串口調試的所有基本功能。除此之外,它還內置了許多示例代碼,可以直接運行這些示例代碼查看效果。
uPyCraft 的 GitHub 地址為:https://github.com/DFRobot/uPyCraft 。可以從中下載軟體與查看官方文檔。
- Thonny IDE
Thonny IDE 是一個 Python 的集成開發環境,不過它同時也支持直接開發 MicroPython 。Thonny IDE 功能豐富,支持各種調試方式,,並且可以加上插件進一步擴展功能。
Thonny IDE 的官方網站為:https://thonny.org ,GitHub 倉庫地址為:https://github.com/thonny/thonny 。
- Visual Studio Code
大名鼎鼎的 VSCode 想必許多人都有所耳聞。VSCode 想要開發 MicroPython ,主要依靠插件的支持。
這裡推薦將 Thonny IDE 作為開發環境,主要是出於以下考慮:
- VSCode 相對 MicroPython 入門來說,還是有些過於重量級。並且 VSCode 主要依賴於插件來開發 MicroPython ,並不能很好地用到 VSCode 的所有優勢,而且開發環境的配置也對入門級別不是很友好,因此除非日後需要利用到一些進階功能,否則並不推薦將 VSCode 作為入門開發環境。
- uPyCraft 儘管是專門支持 MicroPython 的開發環境,但是它目前版本還比較低,不僅功能很少,而且使用者也很少,許多功能沒有得到廣泛的測試,可能存在許多 bug 未能得到解決。
- 相比之下,Thonny IDE 非常輕量級,卻也支持許多高級的功能。由於有足夠多的使用者,現版本的 Thonny 已經非常穩定,完全可以滿足 MicroPython 的全流程開發。
由於 Thonny 不支持燒入功能,因此需要額外下載燒入工具。在燒入之前,需要安裝 CP210x 串口轉 USB 驅動,讓設備識別到 ESP32 。
該驅動可以在 https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers 處下載,打開網站後點擊 DOWNLOAD 頁面,選擇對應系統的驅動下載即可:
下載完成驅動後,安裝對應的驅動文件即可,安裝方式就和一般的軟體一致:
接下來需要下載 Flash 燒入工具,用來將 MicroPython 燒入到 ESP32 內。燒入軟體可以選用樂鑫官方提供的 Flash 下載工具,下載地址在 https://www.espressif.com/zh-hans/support/download/other-tools ,或在樂鑫官網找到支持→相關下載→工具:
解壓下載得到的文件夾即可。
最後一步是下載 MicroPython 固件。下載的地址為:https://micropython.org/download/esp32/) ,或在 MicroPython 官網首頁找到 Download→ESP32 :
一般來說,推薦下載第二新的固件版本。註意下載的是 .bin
格式的固件。
接下來就可以準備將 MicroPython 燒入到 ESP32 設備中。
將 ESP32 使用 microusb 線連接到電腦上,如果 ESP32 開發板上的紅色燈亮起,同時電腦的設備檢測到串口信息,則證明連接正常:
打開 ESP32 的 Flash 燒入工具,在第一個下拉菜單晶元類型中選擇 ESP32:
接下來進入到燒入配置界面,其中幾個關鍵的選項已經在圖中標示出來了:
- 燒入的固件文件,可在右側省略號按鈕選取文件
- 燒入地址為
0x1000
- 記得勾上要燒入的文件
- 這些選項保持圖示的預設選項即可
- 波特率以 921600 為佳,上方的埠號註意和 ESP32 的埠號匹配
接下來就可以下載固件了。下載前需要先擦除原有內容,按住開發板上的“BOOT”按鍵,然後點擊下載工具左下角的“ERASE”按鈕。剛點擊時上方綠色矩形里的文字會從“等待/IDLE”變成“等待上電同步/SYNC”,如果文字再次變成“下載中/DOWNLOAD”,那麼便可以鬆開開發板上的“BOOT”按鍵了。等到文字再次變為“完成/FINISH”,則說明擦除成功。
接下來點擊下載工具左下角的“START”按鈕,類似上一步,在開始下載前也需要按住開發板上的“BOOT”按鍵。在下載時,下載工具最下方的進度條將會顯示當前下載進度。
這樣,MicroPython 就燒入完畢了。接下來可以建立第一個MicroPython 工程,同時測試燒入是否正確。
建立第一個工程
這裡使用 Thonny IDE 作為開發環境。首先可以在官網下載該軟體:
也可以在 GitHub 倉庫里找到 Release 版本。這些地址在上文都提到過。
安裝成功 Thonny 後,打開軟體,接下來還需要進行一些初始化配置。
首先,在菜單欄里找到運行→選擇解釋器。之前說過 Thonny 主要用於進行常規 Python 開發,因此如果要將其用於 MicroPython 開發需要修改解釋器選項:
修改解釋器為 MicroPython (ESP32) 。該頁面中同時可以修改埠配置,如果有時發現識別出現問題,不妨檢查一下埠號是否正確。
接下來,將 ESP32 接入電腦,然後點擊功能按鈕欄里的“停止/重啟後端進程(Ctrl+F2)”:
如果此時在下方的終端(Shell)內看到如下所示的 Python 解釋器提示,則說明與 MicroPython 的連接成功:
如果在打開 Thonny 前就維持著 ESP32 與電腦的連接,那麼進入 Thonny 時應該就能看到該提示信息。“停止/重啟後端進程(Ctrl+F2)”用於重新使電腦與 ESP32 里的 MicroPython 連接,在每次插拔 ESP32 後都需要這樣手動使兩者重新連接。
終端(Shell)允許在串口通信中使用 MicroPython 命令行交互視窗。例如:
MicroPython v1.17 on 2021-09-02; ESP32 module with ESP32
Type "help()" for more information.
>>> print('Hello, world!')
Hello, world!
print()
函數可以讓 ESP32 向電腦通過串口發送調試信息。
MicroPython 還支持以文件的形式運行。新建一個文件後,點擊保存(如果 Thonny 成功連接上了 ESP32 的 MicroPython ),那麼此時就會出現兩個選項,可以將 .py
文件保存在電腦上,還可以將其保存在 ESP32 里:
選擇將文件保存在 ESP32 內,此時會發現 ESP32 內已經有一個 boot.py
文件了。這裡,將文件命名為 main.py
保存。boot.py
和 main.py
是 MicroPython 里的兩個比較特殊的文件,將在之後詳細介紹。
在 main.py
內編寫以下代碼後保存:
from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
led.value(0)
time.sleep(0.5)
led.value(1)
time.sleep(0.5)
點擊功能按鈕欄里的“運行當前腳本(F5)”,即可運行以上代碼。運行成功後,可以看到開發板上藍色的 LED 燈以 0.5 秒為間隔閃爍,說明運行成功。
while
迴圈可以通過在互動式控制台內按下 CTRL+C 觸發鍵盤中斷退出。如果再次將 ESP32 接入電腦後重啟後臺進程,一直顯示 ESP32 處於繁忙狀態或無顯示,則可能是由於 ESP32 一直在執行代碼導致的,可以通過鍵盤中斷強制停止 MicroPython 的執行。