前言 原创文章,转载引用务必注明链接。 因为是使用Typora(markdown)写好然后复制到论坛的,推荐直接访问我的网站以获得更好地阅读体验。 Intel XDK IoT 开发环境很久之前就上手了,比较惊艳,现在终于轮到介绍它了。本文初步介绍node.js,根据示例一步步写。当然你也可以去看官方示例。 说到XDK开发环境,就不得不提node.js,从名字就可以看出来和JavaScript密切相关,其主要擅长轻量级网页应用开发,即使存在不足,但是瑕不掩瑜,现在相当热门。群里好几个人安利它了,推荐学习ES6标准。关于它的具体评价可以去知乎看看,本身中文免费学习资料也很多,相信不难上手。 本文你将学到: - Intel XDK 安装配置使用
- Node.JS入门
- 用户空间访问GPIO
- mraa库访问GPIO
- 写一个网页显示传感器数值的示例
1、安装使用Intel XDKelecfans论坛这个的介绍很多啦,我就不再重复,注意:Intel好像把它放在Amazon云(AWS)上的,最好挂代理下载。注册后才能使用html5开发。另外Edison使用的Yocto系统自带node.js。 【1、XDK界面简介】设备选择界面一般都可以自动识别,也可以手动添加,支持有线(MicroUSB)、无线、蓝牙连接;主窗口、SSH、串口集成到一起了,方便开发,功能区最右边有齿轮的按钮可以对开发板进行设置,升级库等操作。另外这个代码编辑器支持非常多的编程语言,默认使用JS。 2、由浅入深node.js示例之Hello World2.1 Hello World!首先新建一个空白项目: 点击左下角START A NEW PROJECT,选择空白项目输入保存位置和项目名称,在代码编辑区输入以下代码:
- console.log("Hello World");
复制代码
我们执行看看: 当然你也可以ssh登录到edison,创建helloworld.js,手动执行
这种方式感觉是不是和Python很像,它们属于解释型语言,和C那种编译型语言不同。 2.2 在网页上显示Hello World如何实现这一功能?是不是要大费周章,安装Web服务器如Apache、Ngnix,经过复杂的配置,然后再写个网页呢?前面讲过,node.js非常适合轻量级网页应用,让我们来看看: 新建一个文件helloworld_on_web.js,代码如下
- var http = require('http');
- http.createServer(function (request, response){
- response.writeHead({'Content-Type' : 'text/plain'});
- response.write("Hello World");
- response.end();
- }).listen(2000);
复制代码
此时在浏览器地址栏中输入[edison_IP地址]:2000,回车后即可看到效果: 代码应该都读得懂,当访问这个页面时,产生的request (请求)会返回相应文本。 3.2 使用Intel XDK + Node.JS访问传感器模块3.2.1 mraa和ump库Intel为我们提供了GPIO使用例程和常用元器件的使用例程,前者叫mraa,者叫ump库,这样就不用那么麻烦去自己控制用户空间进行初始化了。Yocto系统自带,并且可以方便地使用Intel XDK IDE 那个齿轮按钮进行升级。 使用过树莓派 (Raspberry Pi) 的玩家相信很熟悉,因为用过RPi.GPIO和wringPi库。 3.2.2 读取并在网页显示光敏电阻和周围温度光敏电阻其实分为好多种,有那种开关型的也有这种测量亮度型的。在seeed的wiki页面查找这两个传感器的示例用法(Arduino Language),分别如下:Light Sensor、Temperature Sensor,两者都是模拟传感器,接在Analog Input接口。
- // 导入mraa库
- var mraa = require("mraa");
- // 绑定引脚
- var light_sensor_pin = new mraa.Aio(0);
- var temp_sensor_pin = new mraa.Aio(1);
- // 创建web应用服务
- var http = require('http');
- var app = http.createServer(function (req, res) {
- 'use strict';
-
- // 亮度值
- var a = light_sensor_pin.read();
- console.log("Analog Pin (A0) Output: " + a);
- //node.js不区分浮点型和整型变量,所有数值均以浮点型表示
- var light_level = (1023-a)*10/a;
-
- // 温度值
- var b = temp_sensor_pin.read();
- console.log("Analog Pin (A1) Output: " + b);
- var temperature = 1.0/(Math.log(1023.0/b-1.0)/4275+1/298.15)-273.15;
-
- res.writeHead(200, {'Content-Type': 'text/html'});
- res.end('
测量值亮度: ' + light_level + ' K 温度: ' + temperature + ' C ');
- }).listen(3000);
复制代码
结果如图所示: 推荐直接显示英文的了。另外seeed官方示例使用Arduino(C-Like),改为node.js时需要注意,比如浮点变量,比如log函数(Math.log in JavaScript)。
|