阿里云首页 IoT物联网操作系统 相关技术圈

HaaS EDU K1 开发套件

eduk1-1

HaaS EDU K1说明书

硬件与系统环境

硬件连接与启动

  • USB Type-C供电

  • 电源开关拨到ON

系统环境

Windows

在设备管理器中可以看到以下串口:

eduk1-2

注:不同PC上的串口号不一致

macOS

在dev目录下可以看到以下串口:

crw-rw-rw-  1 root  wheel   18,   4  9 21 16:23 /dev/tty.usbserial-AU03OJU1

获取轻应用固件

  • 直接使用官方标准固件

HaaS EDU K1固件

烧录说明:将固件包解压,进入aos_burn_tool目录,打开cmd或者powershell终端,执行以下命令

python flash_program.py --bin=ota_rtos.bin

HaaS EDU K1和 HaaS100 支持多种固件烧录方式,windows用户也可参考《HaaS100快速开始》使用GUI工具烧录步骤进行固件更新。

  • 自己编译固件

参考《HaaS EDU K1快速开始》第一部分进行搭建开发环境,在2.2 选择解决方案和开发板获取 alios3.3 源码,选择编译 amp_demo。

可通过配置文件 solutions/amp_demo/package.yaml 使能或关闭S轻应用各组件

## 第五部分:配置信息
def_config:                           # 组件的可配置项
    AMP_ADVANCED_ADDON_OTA: 1         #固件OTA功能,
    AMP_CORE_ADDON_BUILDIN: 1         #
    AMP_CORE_ADDON_CHECKSUM: 1        #数据校验
    AMP_CORE_ADDON_SYSTEM: 1          #系统信息及内存统计
    AMP_CORE_ADDON_FS: 1              #文件系统
    AMP_CORE_ADDON_KV: 1              #KV
    AMP_CORE_ADDON_LOG: 1             #日志模块
    AMP_CORE_ADDON_PM: 0              #电源管理,HaaS-EDU-K1 不支持
    AMP_CORE_ADDON_BATTERY: 0         #电池信息获取,HaaS-EDU-K1 不支持
    AMP_CORE_ADDON_CHARGER: 0         #充电管理, HaaS-EDU-K1 不支持
    AMP_CORE_ADDON_SYSTIMER: 1        #软定时器
    AMP_CORE_ADDON_CRYPTO: 0          #数据加密
    AMP_HW_ADDON_ADC: 1               #ADC
    AMP_HW_ADDON_CAN: 0               #CAN,HaaS-EDU-K1 不支持
    AMP_HW_ADDON_DAC: 0               #DAC,HaaS-EDU-K1 不支持
    AMP_HW_ADDON_GPIO: 1              #GPIO
    AMP_HW_ADDON_I2C: 1               #IIC
    AMP_HW_ADDON_SPI: 1               #SPI
    AMP_HW_ADDON_TIMER: 0             #硬件定时器
    AMP_HW_ADDON_PWM: 1               #PWM
    AMP_HW_ADDON_RTC: 0               #RTC
    AMP_HW_ADDON_UART: 1              #UART
    AMP_HW_ADDON_LCD: 0               #LCD
    AMP_HW_ADDON_WDG: 0               #看门狗
    AMP_NET_ADDON_UDP: 0              #UDP
    AMP_NET_ADDON_TCP: 0              #TCP
    AMP_NET_ADDON_MQTT: 0             #MQTT
    AMP_NET_ADDON_HTTP: 1             #HTTP
    AMP_NET_ADDON_NETMGR: 1           #网络管理
    AMP_NET_ADDON_WIFI: 0             #WIFI功能
    AMP_NET_ADDON_CELLULAR: 0         #蜂窝网络,HaaS-EDU-K1 不支持
    AMP_ADVANCED_ADDON_AIOT_DEVICE: 1 #阿里云物联网平台设备连接
    AMP_ADVANCED_ADDON_AIOT_GATEWAY: 0 #阿里云物联网平台网关功能
    AMP_ADVANCED_ADDON_AUDIOPLAYER: 0 #音频播放
    AMP_ADVANCED_ADDON_TTS: 0         #TTS语音播报
    AMP_ADVANCED_ADDON_LOCATION: 0    #定位
    AMP_ADVANCED_ADDON_KEYPAD: 0      #矩阵键盘
    AMP_ADVANCED_ADDON_UND: 0         #
    AMP_WIRELESS_ADDON_BT_HOST: 1     #蓝牙功能
    AMP_UTILS_ADDON_CHECKSUM: 0       #数据校验
    AMP_ADVANCED_ADDON_UI: 0          #UI功能
    AMP_ADVANCED_ADDON_BLECFGNET: 1   #BLE功能

打开示例应用

下载示例应用代码包

这里通过一个简单的LED闪灯的用例来介绍。

下载应用代码包,LED闪灯用例的代码目录如下所示:

app
├── app.json    # 应用与板级配置
└── app.js      # 用户代码

参考硬件资源介绍,在 app.json 中配置好三个LED对应的port口如下。

{
    "version": "1.0.0",
    "io": {
        "L1":{
            "type":"GPIO",
            "port":36,
            "dir":"output",
            "pull":"pulldown"
        },
        "L2":{
            "type":"GPIO",
            "port":35,
            "dir":"output",
            "pull":"pulldown"
        },
        "L3":{
            "type":"GPIO",
            "port":34,
            "dir":"output",
            "pull":"pulldown"
        }
    },
    "debugLevel": "DEBUG"
}

在app.js中的用例逻辑如下:首先根据LED灯的配置创建对应的GPIO实例,然后启动定时器,周期性的通过GPIO读写接口开关LED灯。

import * as gpio from 'gpio'

var Led1 = gpio.open({
  id: 'L1'
});

var Led2 = gpio.open({
  id: 'L2'
});

var Led3 = gpio.open({
  id: 'L3'
});

var vol = 0;

setInterval(function() {
        vol = 1 - vol;
        Led1.writeValue(vol);
        Led2.writeValue(vol);
        Led3.writeValue(vol);
        console.log('gpio: led set value ' + vol);
}, 1000);

应用代码更新到目标硬件

将应用代码拷贝到amp工具的目录下,然后用户可以选择任意一种热更新方式(本地或在线)下载应用代码到开发板。

本地更新

  • 打开命令行工具

参考 命令行工具

  • 推送脚本到设备

  • 执行推送命令

/* app是JavaScript应用脚本目录 */
/* COMXX是日志串口号,此处填写自己的串口号 */
/* -m quickjs HaaS EDU K1选择JS Engine 为 quickjs */
/* -b 1500000 HaaS EDU K1串口波特率为1.5M */

./amp.exe serialput ./app COMXX -m quickjs -b 1500000  

执行推送命令的时候需要关闭日志串口

  • 复位开发板

  • 等待脚本传输完成,打开日志串口观察脚本运行情况

附录:

硬件资源介绍

整机接口

eduk1-2

扩展接口

eduk1-3

更多详细硬件资源请参考《HaaS EDU K1硬件介绍

功能列表(部分)

  • 文件系统 FS

  • 系统信息 SYSTEM

  • 键值对存储 KV

  • 硬件IO

  • UART

  • GPIO

  • I2C

  • SPI

  • ADC

  • PWM

  • UDP

  • TCP

  • MQTT

  • HTTP

  • IoT 阿里云IoT平台连接组件

app.json 参考示例

{
    "version": "1.0.0",
    "io": {
        "KEY1": {
            "type": "GPIO",
            "port": 23,
            "dir": "irq",
            "pull": "pullup",
            "intMode":"falling"
        },
        "KEY2": {
            "type": "GPIO",
            "port": 20,
            "dir": "irq",
            "pull": "pullup",
            "intMode":"falling"
        },
        "KEY3": {
            "type": "GPIO",
            "port": 21,
            "dir": "irq",
            "pull": "pullup",
            "intMode":"falling"
        },
        "KEY4": {
            "type": "GPIO",
            "port": 26,
            "dir": "irq",
            "pull": "pullup",
            "intMode":"falling"
        },
        "L1":{
            "type":"GPIO",
            "port":36,
            "dir":"output",
            "pull":"pulldown"
        },
        "L2":{
            "type":"GPIO",
            "port":35,
            "dir":"output",
            "pull":"pulldown"
        },
        "L3":{
            "type":"GPIO",
            "port":34,
            "dir":"output",
            "pull":"pulldown"
        },
        "P04":{
            "type":"GPIO",
            "port":4,
            "dir":"output",
            "pull":"pulldown"
        },
        "P05":{
            "type":"GPIO",
            "port":5,
            "dir":"output",
            "pull":"pulldown"
        },
        "P06":{
            "type":"GPIO",
            "port":6,
            "dir":"output",
            "pull":"pulldown"
        },
        "P07":{
            "type":"GPIO",
            "port":7,
            "dir":"output",
            "pull":"pulldown"
        },
        "oled_dc": {
            "type": "GPIO",
            "port": 28,
            "dir": "output",
            "pull": "pulldown"
        },
        "oled_res": {
            "type": "GPIO",
            "port": 30,
            "dir": "output",
            "pull": "pulldown"
        },
        "oled_spi": {
            "type": "SPI",
            "port": 1,
            "mode": "mode3",
            "freq": 26000000
        },
        "SPI0":{
            "type": "SPI",
            "port": 0,
            "mode": "mode1",
            "freq": 26000000
        },
        "serial": {
            "type": "UART",
            "port": 2,
            "dataWidth": 8,
            "baudRate": 115200,
            "stopBits": 1,
            "flowControl": "disable",
            "parity": "none"
        },
        "sensor": {
            "type": "I2C",
            "port": 1,
            "addrWidth": 7,
            "freq": 400000,
            "mode": "master",
            "devAddr": 64
        },
        "ADC0":{
            "type": "ADC",
            "port": 0,
            "sampling": 12000000
        },
        "ADC1":{
            "type": "ADC",
            "port": 1,
            "sampling": 12000000
        },
        "ADC2":{
            "type": "ADC",
            "port": 2,
            "sampling": 12000000
        },
        "pwm1": {
            "type": "PWM",
            "port": 1
        },
        "PWM2":{
            "type":"PWM",
            "port":2
        },
        "PWM3":{
            "type":"PWM",
            "port":3
        },
        "timer1": {
            "type": "TIMER",
            "port": 1
        }
    },

    "pages": [
        "data/jsamp/uipages/page/waring"
    ],

    "debugLevel": "DEBUG",
    "repl":"enable"
}