来源 | HaaS技术社区
1、开发板简介
HaaS610 开发板是由阿里云、广和通、旗点科技联合推出的一款基于 fibocom 4G Cat.1 产品 L610 openCPU 模组物联网开发板。具备 Arduino 接口, 可以支配 Arduino 接口配件板,搭配 GPS 定位、WiFi、六轴定位传感器、温度传感器、8MB Flash、麦克 风、喇叭、LCD 显示屏、摄像头、2Kb EEPROM、4*4 矩阵按键组使用。
HaaS610 开发板具有以下特点:
- 基于fibocom 4G Cat1 产品 L610 openCPU 模组,无需MCU,减少硬件成本。
- 内置RTOS,提供操作系统能力。
- 内置MQTT、HTTP、mbedtls 等开源库,方便应用开发。
- 丰富的io资源、支持LCD屏幕、摄像头等。
- 集成阿里云轻应用框架,可运行在轻量级嵌入式设备上的JavaScript应用。
- 集成阿里云iot sdk包,可轻松接入阿里云物联网平台。
2、硬件资源介绍
3、开发环境搭建
L610仅支持在windows环境下进行开发。
3.1、连接设备
通过 MicroUSB 线连接 PC 和模组的USB下载口,将拨动开关拨到 V50_USB 丝印侧,通过USB为开发板供电。
3.2、驱动安装
L610模组 USB 驱动
📎FIBOCOM L610 USB Driver_Windows.zip
L610模组正常上电开机 USB 口会虚拟出7个串口
- Port0 口: 发 AT 命令及外置 PPP 拨号;Port1 口: Diag 口,主要用于 NvEditor 以及发 DIAG 指令用;
- Port2 口: MOS 数据输出,用于场测协议栈数据输出;
- Port3 口: 抓 ARMTRACER log,通过 AT^TRACECTRL=0,1,2 设置
- Port4 口:当 debug 跳线调的不支持 debug 口时, 则需要用此 USB 口抓 AP log, 该口无法抓 dump log。
- Port5 口:可用于发 AT 命令;
- Port6 口:可用于客户输出自定义 log;
3.3、日志抓取
HaaS610 usb转串口驱动
连接HaaS610Kit 的 USB2 ,注意不是USB下载口,打开我的电脑——管理——设备管理器,应该两个串口,分别是用于开发板调试的 Debug 串口和 UART1用户串口。一般情况下 Enhanced接口是 Debug 串口,Standard接口为 UART1 用户串口。
日志接收工具
📎cooltools-win32_custom_P3.R2.0.0005.7z
下载软件并解压,双击 coolwatcher_debughost.exe 打开日志工具 CoolWatcher。
lastcomport 填入我们刚才查看的设备管理器中 Enhanced COM 对应的COM号,例如我的电脑是 52,单击OK。
顺利的话应该可以看到左下角有 COM OPEN OK的提示。
选择Activate Tracer
日志抓取的开始、暂停、清除按键
填写要过滤的关键字,HaaS610Kit 的关键字是 AOS,然后按下回车键即可看到我们 AOS 相关的日志。
3.4、热更新
下载解压 amp-clitool 工具,将JS应用代码拷贝到 amp-clitool 工具的目录下,然后用户可以选择任意一种热更新方式(本地或在线)下载应用代码到开发板。
本地更新
运行命令行工具
windows系统 进入 amp-clitool 工具下的 amp-clitool\dist\amp-win 目录,右键选择 powershell
推送脚本到设备
-
. /amp.exe serialput ./app COMXX -m duktape -b 115200
-
-
-
-
/* serialput 是选择本地热更新 */
-
-
/* app 是 JavaScript应用脚本目录 */
-
-
/* COMXX 是日志串口号,此处填写自己的串口号 */
-
-
/* -m duktape HaaS610 选择JS Engine 为 duktape */
-
-
/* -b 115200 HaaS610 串口波特率为 115200 */
执行推送命令的时候需要关闭日志串口
- 复位开发板
- 等待脚本传输完成,打开日志串口观察脚本运行情况
4、示例代码
app.js中的用例逻辑如下:
首先根据uart3的配置创建对应的uart实例,然后启动定时器,周期性的通过uart3 发送字符串。 同时 uart3 把接收到数据通过日志打印,再发送出来,如果收到 'exit' 字符退出本次uart收发测试。
-
var uart = require( 'uart');
-
-
var msgbuf2 = [ 0x41, 0x42, 0x43, 0x44, 0x61, 0x62, 0x63, 0x64, 0x2B, 0X2B];
-
-
-
-
function ArrayToString(fileData){
-
-
var dataString = "";
-
-
for ( var i = 0; i < fileData.length; i++) {
-
-
dataString += String.fromCharCode(fileData[i]);
-
-
}
-
-
return dataString;
-
-
}
-
-
-
-
var serial3 = uart.open({
-
-
id: 'serial3'
-
-
});
-
-
-
-
var cnt = 100;
-
-
-
-
var intervalHandled = setInterval( function(){
-
-
cnt--;
-
-
if(cnt <= 0){
-
-
clearInterval(intervalHandled);
-
-
}
-
-
serial3.write(msgbuf2);
-
-
}, 2000);
-
-
-
-
serial3.on( 'data', function(data) {
-
-
console.log(data);
-
-
console.log(ArrayToString(data));
-
-
serial3.write(data);
-
-
if (ArrayToString(data) === "exit") {
-
-
console.log( 'uart: test finish')
-
-
serial3.close();
-
-
}
-
-
});
-
-
-
-
console.log( 'uart: test start')
uart 对应的 port口在 app.json 如下。
-
{
-
-
"version": "1.0.0",
-
-
"io": {
-
-
"serial1":{
-
-
"type": "UART",
-
-
"port": 0,
-
-
"dataWidth": 8,
-
-
"baudRate": 115200,
-
-
"stopBits": 1,
-
-
"flowControl": "disable",
-
-
"parity": "none"
-
-
},
-
-
"serial2":{
-
-
"type": "UART",
-
-
"port": 1,
-
-
"dataWidth": 8,
-
-
"baudRate": 115200,
-
-
"stopBits": 1,
-
-
"flowControl": "disable",
-
-
"parity": "none"
-
-
},
-
-
"serial3":{
-
-
"type": "UART",
-
-
"port": 2,
-
-
"dataWidth": 8,
-
-
"baudRate": 9600,
-
-
"stopBits": 1,
-
-
"flowControl": "disable",
-
-
"parity": "none"
-
-
}
-
-
},
-
-
"debugLevel": "DEBUG",
-
-
"repl": "enable"
-
-
}
开发者支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。
更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com。