HaaS EDUK1

1 淘宝购买

HaaS EDU K1是针对教育场景推出的、集众多传感器于一身的嵌入式教育开发板。淘宝购买链接

2 功能介绍

HaaS EDU K1 是一款专用于教育的开发套件,整体配置的的资源非常丰富。 其内置了高性能MCU-HaaS1000,集成了超大大容量的存储,高达18MB的RAM以及16M的flash,并且支持扩展卡,配备了丰富的外设以及传感器。


haaseduk1介绍

3. 环境搭建

环境搭建有两种方法:基于源码编译烧录和基于官方固件直接烧录。如果没有特殊需求,建议开发者基于官方固件快速搭建 Python 开发环境。


I. 固件下载和烧录

MacOS 电脑烧录需要用到pyserial工具,请输入下面的命令进行安装:

pip3 install pyserial

第一步:下载对应HaaS硬件设备的官方固件包并解压(HaaS EDUK1 不区分电脑系统,MacOS 和Windows 固件均通过 Python 命令行烧录)。

HaaS EDUK1 固件包

HaaS型号

MacOS/Windows 固件下载链接

HaaS EDUK1

HaaS EDUK1 固件

固件包中包含如下文件:

.
├── __init__.py             # 初始化脚本
├── 20210615                # 固件版本信息,会随发布时间变化而变化
├── flash_program_ll.py     # 固件烧录脚本
├── flash_program.py        # 固件烧录脚本
├── littlefs.bin            # 固件文件系统
├── ota_rtos.bin            # 固件镜像文件
└── ymodem.py               # 固件烧录ymodem脚本

第二步:设备通过 USB 串口连接到电脑。

设备上电后, 电脑上会多出来一个串口设备:

  • MacOS 系统:

    执行下面的命令可以查看到设备在当前电脑上注册的串口路径和端口号:

    pyserial-ports
    

    下面示例为某台电脑上连接HaaS设备后执行 pyserial-ports 命令后得到的串口路径和端口号信息, 其中 /dev/cu.usbserial-AU03P0PA 即HaaS设备在当前电脑注册的串口信息。 该串口信息在后面固件烧录的时候会用到。不同 HaaS 设备在电脑上显示的串口信息会有差异。

    /dev/cu.Bluetooth-Incoming-Port
    /dev/cu.usbserial-AU03P0PA
    2 ports found
    
  • Win 系统:

    开发者可以通过控制面板下的设备管理器,查询当前电脑下HaaS设备插入后新增的端口。示例中显示 HaaS 设备连接后新增的串口为 COM7

    serial_port

第三步:更新 HaaS 设备固件。


下载并解压第一步中附带的固件,执行下面的命令行进入到解压后的目录并烧录固件(这里我们假设解压后固件路径为 Downloads/haasEDUK1):

  • MacOS 系统推荐使用 picocom 连接串口

    cd ~/Downloads/haasEDUK1
    python flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000
    
  • Win系统烧录推荐使用 PowerShell

    cd C:\Users\xxx\Downloads\haasEDUK1
    python.exe flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000
    

首次烧录显示如下信息让用户选择设备信息:

  • MacOS 系统:

    binary file is ['./ota_rtos.bin', './littlefs.bin#0xB32000']
    
    --- Available ports:
    ---  1: /dev/cu.Bluetooth-Incoming-Port 'n/a'
    ---  2: /dev/cu.usbserial-AU03P0PA 'FT232R USB UART - FT232R USB UART'
    --- Enter port index or full name:
    
  • Win 系统:

    binary file is ['./ota_rtos.bin', './littlefs.bin#0xB32000']
    
    --- Available ports:
    ---  1: COM7                 'USB Serial Port (COM7)'
    --- Enter port index or full name:
    

选择HaaS设备的串口号(以MAC为例选择 2),开始固件烧录。当看到如下所示的提示后,则表明烧录开始:

--- Enter port index or full name: 2
serial port is /dev/cu.usbserial-AU03P0PA
the settings were restored in the file /Users/xxxxxxxx/Downloads/haasEDUK1/.config_burn

(ash:/data)# reboot
?H???

CHIP_ID=haas1000
KERNEL=
OTA_CODE_OFFSET=0
CRASH_DUMP_SIZE=0

......

Backup part addr:0x2a000
Please input flash addr:
0x2a000
flash addr: 0x2a000

Please start ymodem ... (press ctrl+c to cancel)

CCCC
<<< 0x43
Packet 0 >>>
<<< 0x6
<<< 0x43
Packet 2720 / 2719.0 >>>  <<< ACK
EOF
>>> EOT
<<< 0x15
>>> EOT
<<< 0x6
<<< 0x43
Packet End >>>

如果在烧录的过程中会出现如下提示,请按下板子上复位按钮重启设备并继续烧录。

"Please reboot the board manually"

烧录完成以后,可以通过串口工具连接设备进入命令行,MacOS 推荐使用 picocom 连接, 需要退出串口的时候请先按Ctrl+a, 再按Ctrl+q。

picocom -b 1500000 /dev/cu.usbserial-AU03P0PA

Win 推荐使用 MobaXterm。最终的串口输出信息如下:

picocom v3.1

port is        : /dev/cu.usbserial-AU03P0PA
flowcontrol    : none
baudrate is    : 1500000
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        :
omap is        :
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

Type [C-a] [C-h] to see available commands
Terminal ready

(ash:/data)#

烧录成功后,串口信息会被记录到了烧录文件夹下的 .config_burn 文件中,内容如下:

MacOS为
  {
    "chip_haas1000": {
        "baudrate": "1500000",
        "binfile": [
            "./ota_rtos.bin",
            "./littlefs.bin#0xB32000"
        ],
        "serialport": "/dev/cu.usbserial-AU03P0PA"
    }
  }

Windows为
  {
    "chip_haas1000": {
        "baudrate": "1500000",
        "binfile": [
            "./ota_rtos.bin",
            "./littlefs.bin#0xB32000"
        ],
        "serialport": "COM7"
    }
  }

serialport 字段为HaaS设备在当前电脑上的串口路径,不同设备会有差异。如果串口路径信息发生了改变, 需要手动修改 serialport 字段的值为 实际路径之后再进行烧录。


如果在烧录的过程中出现如下错误,则表明设备的串口信息发生改变。可以按照第二步的操作,在终端输入 pyserial-ports 命令获取有效的串口信息并修改serialport 字段 即可。

python flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000
binary file is ['./ota_rtos.bin', './littlefs.bin#0xB32000']
serial port is /dev/cu.xxxxxxxxxxxxx
the settings were restored in the file /Users/xxxx/Downloads/haas100/.config_burn
Traceback (most recent call last):
  File "flash_program.py", line 228, in <module>
    main()
  File "flash_program.py", line 223, in main
    burn_bin_files(myconfig["serialport"], myconfig['baudrate'], myconfig["binfile"])
  File "flash_program.py", line 154, in burn_bin_files
    raise Exception("Failed to open serial port: %s!" % portnum)
Exception: Failed to open serial port: /dev/cu.xxxxxxxxxxxxx!

II. 固件编译

详细的源码编译环境搭建方法,可以参考 HaaS100快速开始

  • 选择解决方案: micropython示例

  • 选择开发板: haaeduk1

alios-studio插件烧录注意事项

默认情况下,alios-studio 插件只会烧录您当前编译的aos.bin。对于 Python 轻应用而言,需要修改如下代码才能同时烧录littlefs.bin。

取消 hardware/chip/haas1000/package.yaml 文件中以下代码段的注释:

program_data_files:
  - filename: release/write_flash_tool/ota_bin/littlefs.bin
    address: 0xB32000

4. 快速验证

开机默认会启动之前烧录进去的程序,打开串口工具,选择对应的串口设备,设置波特率为 1500000 并连接。


Python轻应用默认支持两种运行模式:交互式 和 文件执行,在串口下输入不同的命令进入不同的模式:

  • 命令行输入 python 进入交互模式,在交互模式输入代码就能看到执行结果。键盘按下ctrl+d 退出交互模式:

    python
    
Python轻应用交互式运行结果

  • 命令行输入python /data/python-apps/driver/led/main.py,执行LED 跑马灯程序

    python /data/python-apps/driver/led/main.py
    
Python跑马灯运行结果

以下是HaaS EDU K1 上跑马灯的代码示例,如果要运行HaaS EDU K1, 请注意用如下代码 替换 第7行。 更多示例请参考 参考案例 界面。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# -*- coding: UTF-8 -*-
import utime
from driver import GPIO
# 初始化GPIO 类
gpio = GPIO()

leds=("led_r", "led_g", "led_b")
for i in range(5):
    for led in leds:
        #open 函数支持的参数列表: led_r, led_g, led_b
        gpio.open(led)
        #点亮led
        gpio.write(0)
        utime.sleep_ms(200)
        #熄灭led
        gpio.write(1)
        utime.sleep_ms(200)
        gpio.close()

同时我们也预置了上述代码到data分区方便开发者直接体验。输入下面的命令即可体验:

python /data/python-apps/driver/led/main.py

如果开发者手上有 Sdcard , 我们也支持直接从 Sdcard 运行Python文件。 拷贝你的 Python 文件(假设为 test.py)到 Sdcard 并重启设备, 输入下面的命令运行 Sdcard 上的文件:

python /sdcard/test.py

5 编程接口能力

HaaS EDUK1 除了支持全量的原生接口外,还提供了丰富的外设及物联网接口。各个接口的详细使用请参考 编程接口

具体支持能力如下:

HaaS EDU K1 基础库支持能力

基础库

支持能力

cmath

支持

math

支持

uarray

支持

ubinascii

支持

ucollections

支持

uerrno

支持

uhashlib

支持

uheapq

支持

uio

支持

ujson

支持

uos

支持

ure

支持

uselect

支持

usocket

支持

ussl

支持

ustruct

支持

usys

支持

utime

支持

uzlib

支持

_thread

支持

HaaS EDU K1 轻应用特定库支持能力

轻应用特定库

支持能力

btree

支持

framebuf

支持

machine

支持

micropython

支持

ucryptolib

支持

urandom

支持

HaaS EDU K1 Driver库支持能力

Driver库

支持能力

BoardConfig

支持

UART

支持

GPIO

支持

ADC

支持

DAC

支持

PWM

支持

I2C

支持

SPI

支持

TIMER

支持

KV

支持

HaaS EDU K1 高级组件库支持能力

高级组件库

支持能力

iot

支持

minicv

支持

OSS

支持

audio

支持

blt_netconfig

支持

http

支持

mqtt

支持

network

支持

modbus

支持

ulog

支持

ota

支持

6. 开机自启动

Python 轻应用支持开机自启动功能, 开发者只需要把相关文件推送到 data 分区或者 SD 卡的 pyamp 路径下,并且提供 main.py 主入口文件,就能实现相关功能。 具体文件推送请参考 Python 轻应用开发工具 HaaS-Studio