阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来

摘要:能让JavaScript应用运行在haas100开发板上,这实在是太酷了,这种方式被阿里云称之为“轻应用”。本文带各位从零开始,先了解啥是轻应用,然后搭建环境,再一步步将一个最简单的“轻应用”运行在haas100开发板上。实现的效果就是将js代码下载到开发板之后,指定的小灯闪烁。

目录

实验目的

1 操作步骤

1.1 搭建编程环境

1.2 了解一下轻应用运行模式

1.3 编译轻应用运行固件

1.4 烧录

1.5 准备编写轻应用程序的环境

1.6 连接USB串口模块

1.7 准备js程序

2.编程效果

3.结论

4.扩展阅读:嵌入式设备的javascript引擎

初学者入门阿里云Haas100开发板基本步骤

阿里云haas100开发板源代码适配python3.7版本的方法

阿里云HaaS100物联网开发板学习笔记(一)硬件资源介绍

阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来


硬件:HaaS100物联网开发板

软件:amp-win(命令行版),a0s-cube(命令行版),win7 x64系统

实验目的

使用“轻应用”方式编程实现一个单独的LED灯闪烁。

1 操作步骤

1.1 搭建编程环境

详细步骤请参考下面连接,如果已经成功编译并下载过helloworld_demo,证明您已经掌握了基本操作,请忽略搭建编程环境这一步。

初学者入门阿里云Haas100开发板基本步骤

1.2 了解一下轻应用运行模式

为什么把运行模式知识作为一个步骤来写?

是因为这个知识太重要了,不了解真的影响后面步骤的操作。

在阿里云的帮助文档中,用下图描述了一下轻应用的运行原理。对于基础知识略弱的同学理解起来可能有些吃力。

我用下图来描述一下轻应用。轻应用实质上就是在开发板中烧录一个java script运行环境。这个环境对上可以承接js程序,对下可以直接操作硬件。从而用简单的代码实现复杂的功能。

1.3 编译轻应用运行固件

固件的名字叫做amp_app,amp这三字字母是那几个单词的缩写还不太确定,我猜是什么什么运行环境,或者支持固件之类的。


2020年11月12日,从C:\Users\Administrator\AliOS-Things\components\amp文件夹下的readme文件查到了什么是amp

AliOS Things Mini Program (AMP)是一套运行在资源受限设备上的轻量级应用软件框架。


位于C:\Users\Administrator\AliOS-Things\application\example\amp_app文件夹下。

像编译helloworld程序一样编译这个程序。这个程序烧写进入开发板之后,并不是直接开始执行硬件操作了,而是开始解析js程序。也就是说,js让它干啥,它才开始有动作。

首先打开命令行。

然后通过cd 命令到alios-things目录下

cd alios-things

然后运行配置命令

aos make amp-app@haas100 -c config

然后编译

aos make

界面是下图这样的,如果编译不成功,请参考初学者入门阿里云Haas100开发板基本步骤

1.4 烧录

首先确保开发板供电,并连接Micro USB线缆到电脑,并保证USB驱动安装成功。

进入目录C:\Users\Administrator\AliOS-Things\platform\mcu\haas1000\release\write_flash_gui

找到烧录工具

双击打开

设置串口号

选择烧录

可以按下复位键(短键柄那个)之后开始烧录。烧录成功之后就完成了轻应用固件的准备工作。

1.5 准备编写轻应用程序的环境

其实就是一个运行在windows命令行的工具。

请点击下方蓝色字体下载。或者通过阿里云官方文档点击下载。

阿里云官方推荐轻应用命令行工具

解压之后的文件夹内容是

这个工具叫做“命令行”工具,它是运行在命令行下的,如果双击绿色图标的amp,会有命令行窗口弹出一下,然后闪退

使用之前,建议将这个目录复制到我的文档目录下,也就是cmd命令行打开后直接进入的目录。

例如我复制的位置是C:\Users\Administrator\amp-win

通过cd命令进入amp-win目录之后,输入下面的指令。

amp device list

注意,不是阿里云帮助文档中的带点和斜杠的命令,也不用带exe后缀。

运行的结果是下面的这样。这时开发板只连接了调试信息USB线,并没有连接USB 串口模块。尽管提示红色信息,但是起码证明这个工具运行起来了。

1.6 连接USB串口模块

我使用的模块是下图这样的。向外连接了两根数据线:TXD和RXD,分别提供发送和接收功能。其他的不用连接,因为串口信息线已经于电脑连接了,GND已经处于同一个电平。

按照USB串口收发和HAAS100开发板收发对调连接的方式进行连接。并且将GPIO47通过杜邦线连接到3.3V上。

连接实物图如下图所示。上拉到3.3V是为了让开发板准备好接收电脑发送过来的js程序。使用USB串口模块的目的,是为了不与信息串口冲突。

按下复位键,如果红色标识的LED间歇性双闪,证明固件运行成功。

1.7 准备js程序

打开amp-win目录下的app文件夹

分别修改app.js和app.json文件

app.js代码如下

var gpio = require('gpio');

var led3 = gpio.open({
  id: 'LED3',
  success: function() {
      console.log('gpio: open led success')
  },
  fail: function() {
      console.log('gpio: open led failed')
  }
});

var vol = 0;

setInterval(function() {
  vol = 1 - vol;
  led3.writeValue(vol);
  console.log('led set value ' + vol);
}, 1000);

app.json代码如下

{
    "version": "1.0.0",
    "io": {
	 "LED3": {
            "type": "GPIO",
            "port": 36,
            "dir": "output",
            "pull": "pulldown"
			}
	},
    "debugLevel": "DEBUG"
}

修改完毕后,一定点击保存。

1.8 使用amp命令行工具传输程序到开发板

用到的两条指令分别是:

第一条指令是显示当前的串口号

amp seriallist

第二条指令是用USB串口对应的串口号进行烧录

amp serialput app com14

当出现如下的界面时,就证明烧录成功了。

2.编程效果

如下图所示,红框选中的LED闪烁。

3.结论

采用轻应用的方式开发haas100,具有多个优势:第一,不用反复对底层代码进行修改,直接修改js程序即可;第二,代码非常简单;第三,一次烧录硬件固件即可;第四,具有在线热更新功能,为成熟产品研制奠定了基础。掌握了基本环境搭建和轻应用操作基本步骤之后,采用这种开发方式将大大提高开发效率。

4.扩展阅读:嵌入式设备的javascript引擎

为什么选择javascript搞IOT开发?

一个比较好的解释是:IOT缺少一个关键的系统---应用。

IoT(Internet of Things)是大家公认的未来。但让人尴尬的是,这些代表未来的炫酷产品似乎只存在于业内人士的 PPT 中。真正走进普通人生活的,大多只是一些“带有 Wi-Fi 的普通硬件”。和大多数生态普及过程中遇到的问题相同,IoT 缺少一个关键的系统——应用。应用缺失,自然难以营造用户生态。然而这并不完全是开发者的责任,大多数情况下,开发者都处在臣妾做不到的状态,因为涉及硬件的“嵌入式开发”需要非常多的底层硬件代码基础,这让广大的软件程序猿望而却步。(参见链接https://www.sohu.com/a/71527621_114877)。

以前嵌入式处理器的性能比较弱,不足以支持javascript引擎的运行,毕竟JavaScript(简称“JS”) 是一种解释型或即时编译型的高级编程语言,这种边解释边执行的特性对CPU要求较高。

现在的CPU已经越来越强,所以javascript便捷的开发特性肯定会越来越流行(开发工具的图形化会加速这个过程)。

从网络上搜索javascript引擎,发现有不少。比如下图这个

还有下面这个,duktape在gitee上是开源的,有兴趣的同学可以下载研究一下。

链接是https://gitee.com/mirrors/duktape/tree/66287cfb4f6afc1db0e647bc423e64f79c4b90f4

其他辅助文档请参阅

初学者入门阿里云Haas100开发板基本步骤

阿里云haas100开发板源代码适配python3.7版本的方法

阿里云HaaS100物联网开发板学习笔记(一)硬件资源介绍

阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

猜你喜欢

转载自blog.csdn.net/youngwah292/article/details/109540717