Ameba MicroPython: Getting Started with BW16 Type C
介绍
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 Type C板子是模块集成的开发板。 BW16板子有2块,分别是BW16和BW6-TypeC。 BW16 Type C板采用USB Type C连接器,且具有自动上传电路功能。
BW16 Type C 开发板
电路板尺寸为50.4*25.4(±0.2)mm。它使用Type C USB供电,这在许多智能设备中很常见。
引脚图及功能请参考下图及表格。
BW16 Type C 引脚图
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 Type C 有自动上传电路。它可以跳过手动进入上传模式。
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 Type C (RTL8720DN) 开发板目前支持 Windows 操作系统 32 位元或 64 位元、Linux 操作系统 (Ubuntu) 和 macOS。为获得最佳体验,请使用最新版本的操作系统。
步骤2: 安装驱动程序
首先,通过USB将此开发板连接到电脑:
连接后会自动安装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 固件被正确编译和安装。