Ameba MicroPython: Getting Started with BW16
介紹
Realtek RTL8720DN 是一款 Wi-Fi 和藍牙 IC,支持用於 Wi-Fi 通信的 2.4GHz 和 5GHz 雙頻段,以及低功耗藍牙 (BLE) 5.0。 BW16模組由B&T生產,該模組是一款以RTL8720DN為主要SoC(System on Chip)的高度集成的Wi-Fi和藍牙模組,可以看成是典型的SBC用於Wi-Fi和藍牙應用的SoC . BW16板子是模塊集成的開發板。 BW16板子有2塊,分別是BW16和BW6-TypeC。 BW16 板子使用 Micro USB 連接器。
BW16 開發板
電路板尺寸為50.4*25.4(±0.2)mm。 它使用Micro USB供電,這在許多智能設備中很常見。
引腳圖及功能請參考下圖及表格。
BW16 引腳圖
GPIO pin | GPIO INT | ADC | PWM | UART | SPI | I2C | RGB LED | |
0 | PA7 | ✓ | LOG_TX | |||||
1 | PA8 | ✓ | LOG_RX | |||||
2 | PA27 | ✓ | ||||||
3 | PA30 | ✓ | ✓ | |||||
4 | PB1 | ✓ | SERIAL1_TX | |||||
5 | PB2 | ✓ | SERIAL1_RX | |||||
6 | PB3 | ✓ | A2 | |||||
7 | PA25 | ✓ | ✓ | I2C_SCL | ||||
8 | PA26 | ✓ | ✓ | I2C_SDA | ||||
9 | PA15 | ✓ | SPI_SS | |||||
10 | PA14 | ✓ | SPI_SCLK | LED_G | ||||
11 | PA13 | ✓ | ✓ | SPI_MISO | LED_B | |||
12 | PA12 | ✓ | ✓ | SPI_MOSI | LED_R |
除 USB 連接器外還有 2 個按鈕。 如上圖所示,左側為“RST”按鈕,右側為“Burn”按鈕。 按鍵功能見下表。
Button Functions | Button Process |
Reset board | 1. Press then release “RST” |
Enter upload mode | 1. Press and hold “Burn” 2. Press then release “RST” 3. Release “Burn” |
上傳模式需要依靠開發板上的擦除快閃或上傳固件。
BW16 MicroPython 端口介紹
基本介紹
根據定義,MicroPython是專門為微控制器設計的精簡高效的Python3編譯器。
MicroPython 透過內建功能-REPL與Microcontroller進行即時交互的方法,將其與其他基於編譯的平台(Arduino等)區分開來。
REPL代表Read-Evaluation-Print-Loop,它是一個交互式提示,可用於存取和控制微控制器。
REPL具有其他強大的特色,例如tab處理,行編輯,自動縮排,輸入歷史記錄等。 它的基本功能類似於標準的Python IDE,但是運行在微控制器上。
要使用REPL,只需在PC上打開任何串行終端軟件(最常用的工具是teraterm,putty等),然後連接到微控制器的串行端口,然後將baudrate設置為115200,然後手動重置開發板,即可看到>>> MicroPython提示符出現在終端畫面上。 您就可以在REPL上輸入任何Python腳本。
建議多嘗試使用 “help()” 函數以獲得更多資訊。 例如,微控制器上電並顯示REPL後,只需鍵入help(),您將看到一個幫助頁面,為您提供有關的更多詳細信息。 如果您輸入help(modules),它將列出所有可用的內建模塊供您使用。
此外,如果您想了解有關模塊的更多資訊,例如可用的API和CONSTANT,只需鍵入以下代碼help(您感興趣的模塊)來獲取該模塊的詳細信息。
讓我們以Pin模塊(GPIO)為例:
>>> help(Pin) object <class 'Pin'> is of type type id -- init -- value -- off -- on -- low -- high -- toggle -- irq -- board -- <class 'board'> IN -- 0 OUT -- 1 PULL_NONE -- 0 PULL_UP -- 1 PULL_DOWN -- 2 IRQ_RISING -- 1 IRQ_FALLING – 2
REPL Hotkeys
• Ctrl + d :
MicroPython將執行軟件重啟,這在您的微控制器表現異常時非常有用。並且將再次執行 “boot.py” 中的腳本。請注意,這只會重置MicroPython 直譯器而不重置硬件,所有先前配置的硬件將保持原樣,直到您手動重置開發板為止。
• Ctrl + e :
Paste mode 可以一次將一大部分的代碼粘貼到REPL中,而無需一行一行地執行代碼。 適合當您找到MicroPython庫並希望通過複製和貼上立即對其進行測試時。
• Ctrl + b :
此熱鍵會將REPL設置回Normal mode。 當你卡在某些模式下,可以利用這個解決。
• Ctrl + c :
此熱鍵可幫助您快速取消任何輸入並另起一行。
設置開發環境
步驟1: OS環境
BW16 (RTL8720DN) 開發板目前支持 Windows 操作系統 32 位元或 64 位元、Linux 操作系統 (Ubuntu) 和 macOS。 為獲得最佳體驗,請使用最新版本的操作系統。
步驟2: 安裝驅動程序
首先,通過Micro USB將此開發板連接到電腦:
參考上面的引腳圖和表格,D0和D1引腳用於程序上傳。 但是板載USB-to-UART模塊連接到D4和D5,不能直接用於程序上傳。 為了上傳固件,建議添加一個連接到 D0 和 D1 的外部 USB 轉 UART 模塊,如下圖的引腳連接所示:
或者,將下面指示的引腳短接以使用板載 USB:
D1 ––– D5
D0 ––– D4
連接後會自動安裝USB驅動。 如果您有連接開發板到到的驅動程序問題,請到 http://www.wch-ic.com/downloads/CH341SER_ZIP.html 。 你可以在你的電腦的裝置管理員中檢查COM端口號:
步驟3: 安裝相關工具
Windows環境
對於Windows用戶,請安裝串行終端軟件。 最常見的串行終端是Tera Term和Putty,在這裡我們建議使用Tera Term,可以從網路下載。
對於希望從頭開始編譯 MicroPython 的用戶,請務必安裝 WSL 和 Ubuntu。 注意請安裝版本 1 的 WSL。 有關如何安裝 WSL 的教程。 請參考這個網站:https://learn.microsoft.com/en-us/windows/wsl/install 。
另外,在固件編譯過程中需要Python3,因此請確保從其官方網站下載最新的Python3,並在安裝過程中要求時將其添加為環境變量。
Linux環境
對於Linux用戶,請使用apt-get install命令安裝您選擇的串行終端軟件。 在這裡,我們建議使用picocom。
對於有興趣在C語言中開發MicroPython模塊的用戶,請確保安裝了至少3.82或更高版本的GNU make軟件以及Python3。
將固件上傳到Ameba
步驟1: 找到“Firmware_and_DownloadTool.zip”文件夾
從 https://github.com/ambiot/micropython 在 Releases 選項中,您將能夠找到如下圖所示的資料夾。
解壓縮資料夾,根據所使用的操作系統,找到名為“Double-Click-Me-to-Upload”或“Run_Me_in_Terminal.sh”的文件。
步驟2: 進入UART下載模式
按住“Burn”按鈕,按下然後鬆開“RST”按鈕並鬆開“Burn”按鈕。
步驟3: 上傳固件
按照屏幕上或“Readme.md”中打印的說明進行操作,以便上傳成功。 有一個 5 秒倒計時設置作為進入上傳模式的提醒。 上傳成功後,您會看到屏幕上打印一行 – “All images are sent successfully”。
嘗試第一個範例
步驟1: 打開 REPL
REPL代表讀取,評估,打印和循環,它是MicroPython的終端,供用戶控制微控制器。 REPL在LOG UART上運行,因此我們需要打開串行終端軟件,在本例中為Tera Term,用以查看REPL。
打開Tera Term後,如上圖所示選擇“Serial”,然後使用下拉列表選擇ameba的串行端口,然後單擊“OK”。 如果您的串行終端未配置為115200 baudrate,建議將115200設定為默認設置。
現在已經連接了串行端口,在ameba上按一下RESET按鈕,如下所示會看到MicroPython的歡迎頁面。
過程為Ameba首先檢查其校準數據,然後啟動MicroPython的固件,接著再運行“_boot.py”python腳本和導入的內建python庫。
現在試著輸入help()查看更多信息,然後輸入help(modules)檢查所有現成可用的python庫。
步驟2: 執行WiFi掃描範例
由於大多數外圍設備的範例都需要額外的硬件才能顯示該範例是否正常運行,因此我們將僅以WiFi掃描範例為例,來了解使用MicroPython控制WiFi是十分容易的。
現在,請複制並粘貼以下代碼或手動將其輸入 Tera Term 並點擊“Enter”。
from wireless import WLAN wifi = WLAN(mode = WLAN.STA) wifi.scan()
能夠看到返回的結果顯示周圍所有發現的無線網絡。
這樣我們可以確定 MicroPython 固件被正確編譯和安裝。