Ameba MicroPython: Getting Started with AMB21/AMB22 (RTL8722DM)

介绍 AMB21/AMB22 (RTL8722DM)

Ameba 是一个易于编程的平台,用于开发各种物联网应用程序。 AMB21/AMB22配备了丰富的外围接口,包括WiFi、GPIO INT、I2C、UART、SPI、PWM、ADC。通过这些接口,AMB21/AMB22可以连接LED、开关、压力计、湿度计、PM2.5粉尘传感器等电子元器件。

收集到的数据可以通过WiFi无线上传,并供智能设备上的应用程序使用,实现物联网的应用。

get-start-1

AMB21/AMB22和Arduino Uno尺寸相似,如上图所示,AMB21/AMB22上的引脚与Arduino Uno兼容。
AMB21/AMB22使用Micro USB来供电,这在许多智能设备中很常见。
引脚图及功能请参考下图及表格。

注意:并非上图/表格中显示的所有外围设备组都可在 MicroPython 上使用。

get-start-1

(https://www.amebaiot.com/wp-content/uploads/2020/05/get-start-3.html)

 GPIO pinGPIO INTADCPWMUARTSPII2C
0PB2A5 SERIAL2_RX (b)*  
1PB1ADC4 SERIAL2_TX (b)*  
2PB3A6    
3PB31     
4PB30     
5PB28     
6PB29     
7NC      
8PB22    
9PB23    
10PB21  SPI_SS 
11PB18 SERIAL1_RX (b)*SPI_MOSI 
12PB19 SERIAL1_TX (b)*SPI_MISO 
13PB20  SPI_SCLK 
14PA7  LOG_TX  
15PA8  LOG_RX  
16PA25 SERIAL2_RX (a) I2C_SCL (a)
17PA26 SERIAL2_TX (a) I2C_SDA (a)
18PB7A3 SPI1_SS 
19PB6A2  SPI1_SCLKI2C_SDA (b)*
20PB5A1 SPI1_MISOI2C_SCL (b)*
21PB4A0 SPI1_MOSI 
22PA28     
23PA24   I2C1_SDA*
24PA23   I2C1_SCL*
25PA22  SERIAL1_RX (a)  
26PA21  SERIAL1_TX (a)  
27PA20     
28PA19     

*: 这些函数在 MicroPython 上不可用。

AMB21/AMB22 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环境

AMB21/AMB22 (RTL8722CSM/RTL8722DM) 开发板目前支持 Windows 操作系统 32 位元或 64 位元、Linux 操作系统 (Ubuntu) 和 macOS。为获得最佳体验,请使用最新版本的操作系统。

步骤2: 安装驱动程序

首先,通过Micro USB将AMB21/AMB22连接到电脑:

get-start-1

如果这是您第一次将AMB21/AMB22连接到您的电脑,那么AMB21/AMB22的USB驱动程序将自动安装。

如果您有连接开发板到到的驱动程序问题,请到 https://ftdichip.com/drivers/

你可以在你的电脑的装置管理员中检查COM端口号:

get-start-1

步骤3: 安装相关工具

Windows环境

对于Windows用户,请安装串行终端软件。最常见的串行终端是Tera Term和Putty,在这里我们建议使用Tera Term,可以从网路下载。

对于希望从头开始编译 MicroPython 的用户,请务必安装 WSL 和 Ubuntu。注意请安装版本 1 的 WSL。有关如何安装 WSL 的教程。请参考这个网站:https://learn.microsoft.com/en-us/windows/wsl/install

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 选项中,您将能够找到如下图所示的资料夹。

get-start-1

解压缩资料夹,根据所使用的操作系统,找到名为“Double-Click-Me-to-Upload”或“Run_Me_in_Terminal.sh”的文件。

步骤2: 进入UART下载模式

要进入上传模式,首先按住 UART_DOWNLOAD 按钮,然后按下并释放 RESET 按钮,最后释放 UART_DOWNLOAD 按钮。

get-start-6

步骤3: 上传固件

按照屏幕上或“Readme.md”中打印的说明进行操作,以便上传成功。有一个 5 秒倒计时设置作为进入上传模式的提醒。上传成功后,您会看到屏幕上打印一行 – “All images are sent successfully”。

get-start-6

尝试第一个范例

步骤1: 打开 REPL

REPL代表读取,评估,打印和循环,它是MicroPython的终端,供用户控制微控制器。 REPL在LOG UART上运行,因此我们需要打开串行终端软件,在本例中为Tera Term,用以查看REPL。

打开Tera Term后,如上图所示选择“Serial”,然后使用下拉列表选择ameba的串行端口,然后单击“OK”。如果您的串行终端未配置为115200 baudrate,建议将115200设定为默认设置。

现在已经连接了串行端口,在ameba上按一下RESET按钮,如下所示会看到MicroPython的欢迎页面。

get-start-7

过程为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()

能够看到返回的结果显示周围所有发现的无线网络。

get-start-7

这样我们可以确定 MicroPython 固件被正确编译和安装。

请先确认已安装QQ通讯软体