Ameba MicroPython: Getting Started with RTL8722

工作环境

AmebaD RTL8722CSM/RTL8722DM MicroPython SDK 目前支持 Windows 10 以及 Linux 作业系统。

AmebaD RTL8722CSM/RTL8722DM介绍

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

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

get-start-1

AmebaD和Arduino Uno的尺寸类似,如上图所示,并且AmebaD上的引脚与Arduino Uno兼容。

AmebaD使用Micro USB来供电,这在许多智能设备中很常见。
AmebaD的引脚图和功能请参考下图和表格。

get-start-2

 PIN nameGPIO INTADCPWMUARTSPII2C
D00GPIOB_2ADC5 UART3_RX(b)  
D01GPIOB_1ADC4 UART3_TX(b)  
D02GPIOB_3ADC6    
D03GPIOB_31     
D04GPIOB_30     
D05GPIOB_28     
D06GPIOB_29     
D07NC      
D08GPIOB_22 PWM14   
D09GPIOB_23 PWM15   
D10GPIOB_21 PWM13UART0_RTS(b)SPI0_CS 
D11GPIOB_18 PWM10UART0_RX(b)SPI0_MOSI 
D12GPIOB_19 PWM11UART0_TX(b)SPI0_MISO 
D13GPIOB_20 PWM12UART0_CTS(b)SPI0_CLK 
D14GPIOA_7  UART2_TX(log)  
D15GPIOA_8  UART2_RX(log)  
D16GPIOA_25 PWM4UART3_RX(a) I2C0_SCL
D17GPIOA_26 PWM5UART3_TX(a) I2C0_SDA
D18GPIOB_7ADC3PWM17 SPI1_CS 
D19GPIOB_6ADC2  SPI1_CLK 
D20GPIOB_5ADC1PWM9 SPI1_MISO 
D21GPIOB_4ADC0PWM8 SPI1_MOSI 
D22GPIOA_28     
D23GPIOA_24 PWM3UART0_CTS(a) I2C1_SDA
D24GPIOA_23 PWM2UART0_RTS(a) I2C1_SCL
D25GPIOA_22  UART0_RX(a)  
D26GPIOA_21  UART0_TX(a)  
D27GPIOA_20     
D28GPIOA_19     

get-start-3

注意:上图/表中显示的并非所有外围设备都可以在MicroPython上使用,请参阅“ Examples and API”部分以获取更多资讯。

RTL8722 MicroPython 移植简介

基本背景

根据定义,MicroPython是专门为微控制器设计的精简高效的Python3编译器。

MicroPython 透过内建功能-REPL与Microcontroller进行即时交互的方法,将其与其他基于编译的平台(Arduino等)区分开来。

REPL代表Read-Evaluation-Print-Loop,它是一个交互式提示,可用于存取和控制微控制器。

REPL具有其他强大的特色,例如tab处理,行编辑,自动缩排,输入历史记录等。它的基本功能类似于标准的Python IDLE,但是运行在微控制器上。

要使用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 --  
  toggle -- 
  board -- <class 'board'>
  IN -- 0
  OUT -- 1
  PULL_NONE -- 0
  PULL_UP -- 1
  PULL_DOWN -- 2

REPL Hotkeys

• Ctrl + d :
MicroPython将执行软件重启,这在您的微控制器表现异常时非常有用。并且将再次执行 “boot.py” 中的脚本。请注意,这只会重置MicroPython interpreter 而不重置硬件,所有先前配置的硬件将保持原样,直到您手动重置开发板为止。

• Ctrl + e :
Paste mode 可以一次将一大部分的代码粘贴到REPL中,而无需一行一行地执行代码。适合当您找到MicroPython库并希望通过复制和贴上立即对其进行测试时。

• Ctrl + b :
此热键会将REPL设置回Normal mode。当你卡在某些模式下,可以利用这个解决。

• Ctrl + c :
此热键可帮助您快速取消任何输入并另起一行

设置开发环境

步骤1: 安装驱动程序

首先,通过Micro USB将AmebaD连接到电脑:

get-start-4

如果这是您第一次将AmebaD连接到您的电脑,那么AmebaD的USB驱动程序将自动安装。
你可以在你的电脑的装置管理员中检查COM端口号:

get-start-5

步骤2: 安装相关工具

Windows环境:

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

对于希望从头开始编译MicroPython的用户,请确保安装Cygwin,这是在Windows系统上运行的类似Linux的环境。选择Cygwin安装程序时,我们建议使用Cygwin 32位元版本。在Cygwin安装期间,安装程序将提示用户是否安装其他软件,请确保从“Devel”类别中选择make的GNU版本(请参见下图),然后选择最新版本。

get-start-6

另外,在固件编译过程中需要Python3,因此请确保从其官方网站下载最新的Python3,并在安装过程中要求时将其添加为环境变量。

Linux环境:

对于Linux用户,请使用apt-get install命令安装您选择的串行终端软件。在这里,我们建议使用picocom。

对于有兴趣在C语言中开发MicroPython模块的用户,请确保安装了至少3.82或更高版本的GNU make软件以及Python3。

将固件上传到Ameba

步骤1: 找到“Release”文件夹

Github下载MicroPython repository 后,会在根目录中看到一个“Release”文件夹,并且在该路径下找到一个名为“Double-Click-Me-to-Upload”的工具。

步骤2: 进入UART下载模式

请先按住UART_DOWNLOAD按钮,然后按RESET按钮。如果成功,您应该在ameba上看到绿色的LED闪烁。

get-start-6

步骤3: 运行 “Double-Click-Me-to-Upload”

顾名思义,双击该文件以运行它,然后按照屏幕上显示的说明更新ameba的串行COM端口,这样上传就可以成功进行。上传成功后,您将在屏幕上看到一行日志–“All images are sent successfully”。

尝试第一个范例

步骤1: 打开 REPL

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

get-start-7

打开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

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