HaaS EDU K1

1 淘宝购买

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

2 功能介绍

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


haas100介绍

3. 环境搭建

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


I. 固件下载和烧录

  • MacOS 环境搭建

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

    pip3 install pyserial
    

    第一步:下载对应HaaS硬件设备的官方固件包并解压。

    MacOS HaaS 固件包

    HaaS型号

    MacOS 固件下载链接

    HaaS EDU K1

    HaaS EDU K1 Mac 固件

    固件包中包含如下文件:

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

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

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

    pyserial-ports
    

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

    /dev/cu.Bluetooth-Incoming-Port
    /dev/cu.usbserial-AU03P0PA
    2 ports found
    

    第三步:更新 HaaS 设备固件

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

    cd ~/Downloads/haasedu
    

    切换到固件路径后,执行下面的命令进行固件烧录:

    python flash_program.py --bin=./aos.bin --bin=./littlefs.bin#0xB32000
    

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

    binary file is ['./aos.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:
    

    选择HaaS设备的串口号(这里我们选择 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/haas100/.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)
    CCCCC
    <<< 0x43
    Packet 0 >>>
    
    <<< 0x6
    <<< 0x43
    Packet 1 >>>
    <<< ACK
    Packet 2 >>>
    <<< ACK
    Packet 3 >>>
    <<< ACK
    Packet 4 >>>
    
    ......
    

    如果在烧录的过程中会出现如下提示,请按下板子上复位按钮(最外侧远离电源的黑色按钮)重启设备并继续烧录。

    "Please reboot the board manually"
    

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

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

    串口输出信息如下:

    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 文件中,内容如下:

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

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


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

    python flash_program.py --bin=./aos.bin --bin=./littlefs.bin#0xB32000
    binary file is ['./aos.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!
    
  • Windows环境搭建

    第一步:下载对应HaaS硬件设备的官方固件包并解压。

    Windows HaaS 固件包

    HaaS型号

    Windows 固件下载链接

    HaaS EDU K1

    HaaS EDU K1 Win 固件

    刷机包解压后,文件信息如下。其中20210615为版本发布信息,会随发布时间变化:

    .
    ├── 20210615                          # 固件版本信息,会随发布时间变化而变化
    ├── CheckComfirm.ui
    ├── Warning.ui
    ├── Wifi_Download.ui
    ├── dld_cfg
    ├── dld_main
    ├── haas1000_dld_cfg.yaml
    ├── haas1000_write_flash_main.exe
    ├── images
    ├── ota_bin                           # 固件版本信息,会随发布时间变化而变化
    ├── productline_cfg.xml
    ├── productline_config.ui
    ├── productline_config_en.ui
    ├── programmer2001.bin
    ├── qt.conf
    ├── qt4_plugins
    ├── setportdlg.ui
    ├── setportdlg_en.ui
    └── setupdlg.ui
    

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

    第三步:进入解压文件目录,双击运行 haas1000_write_flash_main.exe ,出现如下烧录软件的主界面:

    win烧录界面

    第四步:第四步:点击 设置串口 按钮获取串口信息, 选择 HaaS 开发板对应的串口设备后点击开始按钮, 按键复位设备 后即开始烧录。

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 函数支持的参数列表: led1, led2, led3, led4, led5
        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 (HaaS700定制版)