CSDN物联网学习2 IoT应用开发平台巡礼

郑晔@Ruff
端上IoT平台,非云上IoT平台

一、IoT平台简介

1. 平台

分类项目
嵌入式操作系统VxWorks、FreeRTOS、LiteOS、mbed
极客硬件平台树莓派、Arduino
JavaScript IoT 开发平台Ruff、Tessel、JerryScript、Johnny-Five

2. 嵌入式操作系统的困境

  • 入门门槛 门槛极高,开发者需要学习大量软硬件相关的知识,因此,嵌入式领域的人才数量受到了限制
  • 工程方法 大幅度落后于行业水平,敏捷软件开发方法以及精益创业的理念,在嵌入式领域极少得到应用,该领域在工程方法上发展缓慢
  • 知识共享 编程概念属于专用领域,知识很难在行业中共享,开发者在行业中流动也相对困难,嵌入式领域对于现代软件开发理念的理解也整体上落后于软件行业

原型机投入生产比较困难

二、JavaScript IoT应用开发平台

分类项目
在硬件上运行 JavaScriptJerryScript、Espruino 等
面向应用的硬件抽象Tessel、Johnny-Five、Cylon.js 等
提供生产支持Ruff

1. 在硬件上运行JavaScript

espruino
  • 网站 https://www.espruino.com/
  • 目标 在单片机上运行 JavaScript
  • 代码风格 类似于 C
  • 其它 解释器、操作系统、程序库混为一谈

示例:灯不断亮灭

function toggle() {
   on = !on;
   digitalWrite(LED1, on);
   digitalWrite(LED2, !on);
}

espruino本身不支持的硬件很难移植上去。

jerryscript(三星)

网站:http://jerryscript.net/

  • JerryScript 是三星打造的一款 JavaScript 引擎,它可以运行在 64K 的 MCU 上
  • 对于 JavaScript 标准支持得比较好
  • 完整支持 ECMAScript 5.1
  • 只是一个独立的JavaScript解释器
  • -
IoT.js
  • 网站 http://iotjs.net/
  • 目标 基于JerryScript 的 Node.js
  • 代码风格 符合今天主流的代码风格
  • 模块 支持 Buffer、net、timer 等标准模块

一段IoT.js示例

var i2c = require('i2c');
var wire = new i2c(0x23, {device: '/dev/i2c-1'});

wire.scan(function(err, data) {
  ...
});

2. 面向应用的抽象

名称项目网站开发板JS 引擎使用领域
Tesselhttps://tessel.io/自己的开发板Node.jsIoT、机器人
Jonny-Fivehttp://johnny-five.io/适配多种开发板Node.jsIoT、机器人
Cylon.jshttps://cylonjs.com/适配多种开发板Node.jsIoT、机器人、物理计算

在PC上运行Nodejs引擎。

Tessel

示例:

var tessel = require('tessel');
var ambientlib = require('ambient-attx4');
var WebSocket = require('ws');

var ambient = ambientlib.use(tessel.port['A']);

var ws = new WebSocket('ws://awesome-app.com/ambient');
ws.on('open', function () {
  setInterval(function () {
    ambient.getSoundLevel(function(err, sdata) {
      if (err) throw err;
      sdata.pipe(ws);
    })
  }, 500);
});

通过getSoundLevel屏蔽了底层接口。

Jonny-Five
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var led = new five.Led(13);
  led.blink(500);
});
Cylon.js
var Cylon = require("cylon");

Cylon.robot({
  connections: {
    arduino: { adaptor: 'firmata', port: '/dev/ttyACM0' }
  },

  devices: {
    led: { driver: 'led', pin: 13 }
  },

  work: function(my) {
    every((1).second(), function() {
      my.led.toggle();
    });
  }
}).start();

3. Ruff

'use strict';
$.ready(function(error){
   if(error){
       console.log(error);
       return;
   }
   $('#led-r').turnOn();
});
$.end(function(){
   $('#led-r').turnOff();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值