HaaS轻应用(JavaScript)快速开始 @ HaaS600 EC600S

简介: HaaS600 Kit 是一款基于 HaaS600系列模组评估的高性价比开发板。可应用于共享控制、金融支付、智能语音、泛工业等场景的智能硬件产品开发。

> 来源 | HaaS技术社区

![image.png](https://ucc.alicdn.com/pic/developer-ecology/bc117460d2954a36b4cd5c417f5e2028.png)



HaaS600 Kit 是一款基于 HaaS600系列模组评估的高性价比开发板。可应用于共享控制、金融支付、智能语音、泛工业等场景的智能硬件产品开发。

HaaS600 Kit 套件包含以下物料:

●开发板 x 1
●micro-USB线缆 x 1
●5V/2A电源适配器  x 1
●4G天线 x 1
●GPS天线 x 1


1、系统环境

1.1、连接设备

将开发电脑跟设备的调试/用户串口通过MicroUSB连接,连接后,将在PC设备管理器中出现两个串口,分别用于调试和用户串口输入输出。

![image.png](https://ucc.alicdn.com/pic/developer-ecology/8250a5e9a2d3423b90322a26327713f8.png)


1.2、安装USB转串口驱动


Windows XP/Vista
Windows7/8/8.1
Windows10
MacOS

安装完成之后,在设备管理器中可以看到以下虚拟串口:

Windows

![image.png](https://ucc.alicdn.com/pic/developer-ecology/5c5bff587c11421499b8ba6962c13fa1.png)


Enhanced COM Port 为日志串口
Standard COM Port 为用户串口


MacOS

![image.png](https://ucc.alicdn.com/pic/developer-ecology/885defb26e4d421fbd1d13df9ad89468.png)


Note:
1不同的电脑生成的串口号和名称不一样,以实际生成的为准。
2生成的两个串口,一个是debug串口(查看运行日志,只读),另一个是用户串口(JavaScript交互式解释器或其他用途)

1.3、开发工具

轻应用开发使用一套命令行工具来管理和推送应用脚本到设备。
下载命令行工具:

📎amp-clitool.zip


将命令行工具解压到工作目录,如图所示对应文件

  1. ├── amp             # 命令行工具

  2. ├── app             # 示例代码(hello world)

  3. │   ├── app.json

  4. │   └── app.js

  5. └── bindings.node   # 本地更新库


2、第一个轻应用示例


●查看设备连接状态
在命令行工具下使用该命令查看设备连接状态

  1. ./amp.exe seriallist

  2. COM194

  3. COM195

如果返回值跟设备管理器中生成的串口号一致,说明设备连接和命令行工具运行正常

命令行工具默认示例代码运行hello world程序,此处使用LED Blink来作为第一个轻应用示例来介绍。
使用下面的app.js 和 app.json文件替换命令行工具示例代码目录下的同名文件,如下:
LED Blink app.json

  1. {

  2. "version": "1.0.0",

  3. "io": {

  4. "D13": {

  5. "type": "GPIO",

  6. "port": 33,

  7. "dir": "output",

  8. "pull": "pulldown"

  9.        }

  10.    },

  11. "debugLevel": "DEBUG"

  12. }


LED Blink app.js:

  1. var gpio = require('gpio');

  2. var led = gpio.open({

  3. id: 'D13'

  4. });

  5. var vol = 0;

  6. setInterval(function() {

  7.  vol = 1 - vol;

  8.  led.writeValue(vol);

  9. console.log('gpio: led set value ' + vol);

  10.  vol = led.readValue();

  11. console.log('gpio: led get value ' + vol);

  12. }, 1000);


本地更新


●打开命令行工具
●推送脚本到设备
○执行推送命令

  1. /* app是JavaScript应用脚本目录 */

  2. /* COMXX是用户串口号,此处填写Standard COM Port对应的端口号 */

  3. /* -b 115200 HaaS600串口波特率为115200 */

  4. ./amp.exe seriallist

  5. COM194

  6. COM195

  7. ./amp.exe serialput ./app COM194 -b 115200

一般情况下,应用下载串口是Silicon Labs Dual CP2105 USB to UART Bridge:Standard COM Port
○复位开发板
○等待脚本传输完成,打开日志串口观察脚本运行情况

●运行效果如图:


附录


硬件资源介绍

![image.png](https://ucc.alicdn.com/pic/developer-ecology/b0789b59e01440a3aadce8344702d996.png)


硬件资源映射表

功能/接口

PIN/IO/资源映射

轻应用 port 配置

I2C0

SDA(IO50) SCL(IO49)

0

ADC0

A0

0

ADC1

A1

1

UART0

默认板级log打印

0

UART1

TXD(IO54)
RXD(IO53)

1

UART2

TXD(IO52)  
RXD(IO51)

2

GPIO

IO51
IO52
IO17
IO16
IO59
IO121
IO54
IO53
IO124
IO122
IO34
IO36
IO35
IO33
IO57
IO0
IO1

D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
D16

SPI0

MISO(IO35)
MOSI(IO36)
SCK(IO33)

0


app.json 参考示例

  1. {

  2. "io": {

  3. "I2C0": {

  4. "type": "I2C",

  5. "port": 0,

  6. "addrWidth": 7,

  7. "freq": 100000,

  8. "mode": "master",

  9. "devAddr": 118

  10.    },

  11. "ADC0": {

  12. "type": "ADC",

  13. "port": 0,

  14. "sampling": 12000000

  15.    },

  16. "ADC1": {

  17. "type": "ADC",

  18. "port": 1,

  19. "sampling": 12000000

  20.    },

  21. "UART1":{

  22. "type":"UART",

  23. "port":1,

  24. "dataWidth":8,

  25. "baudRate":115200,

  26. "stopBits":1,

  27. "flowControl":"disable",

  28. "parity":"none"

  29.    },

  30. "UART2":{

  31. "type":"UART",

  32. "port":2,

  33. "dataWidth":8,

  34. "baudRate":115200,

  35. "stopBits":1,

  36. "flowControl":"disable",

  37. "parity":"none"

  38.    },

  39. "SPI0":{

  40. "type":"SPI",

  41. "port":0,

  42. "mode":"master",

  43. "freq":3250000

  44.    },

  45. "D0": {

  46. "type": "GPIO",

  47. "port": 51,

  48. "dir": "output",

  49. "pull": "pulldown"

  50.    },

  51. "D1": {

  52. "type": "GPIO",

  53. "port": 52,

  54. "dir": "output",

  55. "pull": "pulldown"

  56.    },

  57. "D2": {

  58. "type": "GPIO",

  59. "port": 17,

  60. "dir": "output",

  61. "pull": "pulldown"

  62.    },

  63. "D3": {

  64. "type": "GPIO",

  65. "port": 16,

  66. "dir": "output",

  67. "pull": "pulldown"

  68.    },

  69. "D4": {

  70. "type": "GPIO",

  71. "port": 59,

  72. "dir": "output",

  73. "pull": "pulldown"

  74.    },

  75. "D5": {

  76. "type": "GPIO",

  77. "port": 121,

  78. "dir": "output",

  79. "pull": "pulldown"

  80.    },

  81. "D6": {

  82. "type": "GPIO",

  83. "port": 54,

  84. "dir": "output",

  85. "pull": "pulldown"

  86.    },

  87. "D7": {

  88. "type": "GPIO",

  89. "port": 53,

  90. "dir": "output",

  91. "pull": "pulldown"

  92.    },

  93. "D8": {

  94. "type": "GPIO",

  95. "port": 124,

  96. "dir": "output",

  97. "pull": "pulldown"

  98.    },

  99. "D9": {

  100. "type": "GPIO",

  101. "port": 122,

  102. "dir": "output",

  103. "pull": "pulldown"

  104.    },

  105. "D10": {

  106. "type": "GPIO",

  107. "port": 34,

  108. "dir": "output",

  109. "pull": "pulldown"

  110.    },

  111. "D11": {

  112. "type": "GPIO",

  113. "port": 36,

  114. "dir": "output",

  115. "pull": "pulldown"

  116.    },

  117. "D12": {

  118. "type": "GPIO",

  119. "port": 35,

  120. "dir": "output",

  121. "pull": "pulldown"

  122.    },

  123. "D13": {

  124. "type": "GPIO",

  125. "port": 33,

  126. "dir": "output",

  127. "pull": "pulldown"

  128.    },

  129. "D14": {

  130. "type": "GPIO",

  131. "port": 57,

  132. "dir": "output",

  133. "pull": "pulldown"

  134.    },

  135. "D15": {

  136. "type": "GPIO",

  137. "port": 0,

  138. "dir": "output",

  139. "pull": "pulldown"

  140.    },

  141. "D16": {

  142. "type": "GPIO",

  143. "port": 1,

  144. "dir": "output",

  145. "pull": "pulldown"

  146.    },

  147.  },

  148. "debugLevel": "DEBUG"

  149. }


更多示例代码

打包下载:https://gitee.com/alios-things/amp-examples/repository/archive/master.zip

开发者支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。

![image.png](https://ucc.alicdn.com/pic/developer-ecology/bbb78fc066a3499bba143ff14847d4b0.png)

更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com

相关文章
|
5天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
|
11天前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
49 2
|
1月前
|
JavaScript 前端开发 API
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
该文章详细讲解了队列数据结构在前端开发中的应用,并深入探讨了JavaScript的事件循环机制,区分了宏任务和微任务的执行顺序及其对前端性能的影响。
|
12天前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
30 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
17天前
|
前端开发 JavaScript 关系型数据库
前端的全栈之路:基于 Vue3 + Nest.js 全栈开发的后台应用
这篇文章介绍了一个名为Vue3Admin的全栈后台应用,前端基于SoybeanAdmin二次开发,后端基于Nest.js。主要使用了Vue3.5、AntDesignVue、UnoCSS、Pinia等前端技术栈,以及Nest.js、PostgreSQL、Prisma等后端技术栈。文章详细描述了系统的功能设计,包括动态国际化语言配置、登录用户操作日志、用户和角色权限映射、动态路由菜单、消息公告发布及前端业务功能等。同时,也提供了项目运行所需的环境和依赖,以及如何拉取代码、安装依赖和启动项目的方法。最后,文章展示了项目的演示图,并对项目进行了总结,指出项目未经严格测试,仅供学习交流使用。
前端的全栈之路:基于 Vue3 + Nest.js 全栈开发的后台应用
|
8天前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
11 2
|
8天前
|
设计模式 JavaScript 前端开发
探索JavaScript中的闭包:从基础概念到实际应用
在本文中,我们将深入探讨JavaScript中的一个重要概念——闭包。闭包是一种强大的编程工具,它允许函数记住并访问其所在作用域的变量,即使该函数在其作用域之外被调用。通过详细解析闭包的定义、创建方法以及实际应用场景,本文旨在帮助读者不仅理解闭包的理论概念,还能在实际开发中灵活运用这一技巧。
|
9天前
|
缓存 JavaScript 前端开发
深入了解JavaScript的闭包:概念与应用
【10月更文挑战第8天】深入了解JavaScript的闭包:概念与应用
|
16天前
|
存储 JavaScript 前端开发
如何使用Vue.js实现一个简单的待办事项应用
【10月更文挑战第1天】如何使用Vue.js实现一个简单的待办事项应用
19 5
|
5天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理、应用与代码演示
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理、应用与代码演示