查看: 244|回复: 0
打印 上一主题 下一主题

【Seeed开发板体验】07. 绝对干货!带领BBG走进物联网时代

[复制链接] qrcode

30

主题

39

帖子

117

积分

注册会员

Rank: 2

积分
117
楼主
跳转到指定楼层
发表于 2015-11-28 12:17 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     近期我对物联网比较感兴趣,因此本文将会带领大家来学一学如何使用手机或任何能够使用浏览器上网的装置来控制板子上的四个LED灯。由于BBG的外设跟其他开发板没什么区别,什么串口,I2C之类的,这些教程网上随手都可以找到,没有任何挑战性,也不是本文的重点。因此本文不会涉及到除了BBG开发板本身之外的任何扩展板以及外设,本文只会用到BBG上的自带的四个LED灯,这样可以保证实验的简洁性。当然学会了,你可以再进一步折腾其他的外设了。

      另外由于本文会涉及些网页开发,因此需要大家具备这方面的一些最基本的知识。插句题外话,现在如果你只会埋头研究板子底层,可能会跟不上行业发展,我们不光要研究底层驱动,也要能够进行上位机开发,掌握点数据库,网络编程,如果再会点前端网页开发,那你的发展空间就会大很多。

好了,闲话不多说,我们来看看我们要想完成这个实验,需要搭建的平台。

1. node.js
Node是一个Javascript运行环境(runtime),用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。
官方网站:http://nodejs.org
下载安装,这里就不讲了,实在是太简单,一路next即可。
安装完毕,为了验证是否安装成功,大家可以在cmd窗口敲击以下指令,查看你安装的node.js的版本。

官网上也有有一些教程,大家安装好可以自行练习。

为了完成这个实验,我们需要用到一些Node.js所提供的套件。分别是用来解析URL的Express.js以及用来作服务器与客户端互相传递资料用的Socket.io。

2. Express.js
Express是一个基于Node.js平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
官方网站:http://www.expressjs.com.cn/
安装过程:
首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
$ mkdir myapp
$ cd myapp
通过npm init命令为你的应用创建一个package.json文件。
$ npm init
此命令将要求你输入几个参数,例如此应用的名称和版本。你可以直接按“回车”键接受默认设置即可,下面这个除外:
entry point: (index.js)
键入app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的index.js文件名,只需按“回车”键即可。
接下来安装 Express 并将其保存到依赖列表中:
$ npm install express --save

另外官网也有详细的教程,大家可以自行练习,比如操作最基本的"helloworld"

3. Socket.io

Socket.io 与 Express.js 一样都是属于 Node.js 中的一个套件,但 Socket.io 是让服服器与客户端以通过网络互相传递资料,并且搭配浏览器上的 JavaScript 来做到即时更新。

安装过程只需要一条指令即可,如下:

npm install socket.io 
在使用 Socket.io 时,服务器端与客户端都必须要有它的 JS 档案才有办法运作,而在上一步骤我们已经为务器端装上 Socket.io 的模组了,接下来就是为客户端,也就是网页端装上模组。很简单,只需要在网页的 HTML 页面中的    标签之间加入以下代码

这样网页就可以使用 Socket.io 的功能了。

说到这里,可能还需要大家掌握一些HTML方面的知识,因为我们还要写个HTML的网页,虽然很简单。

至此,开发平台搭建完毕,接下来就是程序开发了,首先开发led.js,代码如下:
var app = require(\'express\')();
var http = require(\'http\').Server(app);
var port = 3636;
var io = require(\'socket.io\')(http);
var b = require(\'bonescript\');
var a = 0;
var t;
b.pinMode(\'USR0\', \'out\');
b.pinMode(\'USR1\', \'out\');
b.pinMode(\'USR2\', \'out\');
b.pinMode(\'USR3\', \'out\');

app.get(\'/index01\', function(req, res){
   res.sendFile(__dirname + \'/index01.html\');
});
var s = function()
    {
      b.digitalWrite(\'USR0\', a);
      b.digitalWrite(\'USR1\', ~a);
      b.digitalWrite(\'USR2\', a);
      b.digitalWrite(\'USR3\', ~a);
      a=~a;
      //setInterval(s(t), t*100 );
    }
    
io.on(\'connection\', function(socket){
  socket.on(\'LED\', function(msg){
    console.log(\'receive message from net: \' + msg);
    io.emit(\'LED\',msg);
    clearInterval(t);
    t = setInterval(s, msg*100 );
  });
});
  

http.listen(port, function(){
  console.log(\'listening on *\' + port);
});


然后开发网页程序,如下:

  
    index
    
    
    
  
  
    

LED TEST



上述是两个主程序,还有一些其他框架程序,这里就不展开了,所有的程序打包好后如下:



游客,如果您要查看本帖隐藏内容请回复



接下来告诉大家如何使用这个程序包

在 Cloud 9 中的,upload上述解压后的程序包,如下


接下来我们就以在 Cloud 9中运行led.js了,点击run,可以看到cloud 9命令窗口中



显示正在监听网页信息,我们打开网页,http://192.168.7.2:3636/index01,通过鼠标滑动来调节LED的闪烁速度,



当我们滑动的时候,我们在 Cloud 9中会监听到网页传来的速度数据,如下:


开发板上的led灯会调节闪烁速度,运行效果如下:



整个过程看似很简单,但是麻雀虽小,五脏俱全,基本涵盖了物联网所有要素,大家可以下载源代码,认真研究下,希望能对你有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表