玩儿转物联网IoT - 在Beagle Bone Black上运行node.js 程序

简介:


物联网(IoT)技术方兴未艾,智能手环,智能血压计,智能眼镜甚至智能鞋垫都开始进入我们的生活,各种智能设备层出不穷,世界已经到了一个“人有多大胆,地有多大产”的时代,不玩儿点物联网都不好意思和人打招呼了。

之前玩儿过开源硬件Arduino,这次再找个功能强劲的Beagle Bone Black(BBB)。 大家可能知道名气更大的树莓派,BBB也是类似的单片计算机开发板,就在名片大小的一块板子上集成了计算机的大多数常见功能,在上面可以运行Linix 操作系统,通过HDMI连上显示器,插上USB鼠标键盘就是一台完整计算机了。此外还可以配备一些外设Cape,比如触摸屏、音频扩展、串口扩展板等等。


1096742727.jpg

如果你感兴趣,我大淘宝应该都可以买得到,我这边没有视频线,只能通过SSH连接到上面了。开箱后通过数据线连接到电脑上,如果板子没问题的话,靠近网卡口的小LED灯会闪烁。从右到左一次编号为USR0~3. USR 0 是心跳频率的闪烁,USR 2闪烁表示CPU活动。其他两个 USR1 当访问SD卡时闪烁, 我没有安装SD卡,所以也不会亮。USR 3当访问 eMMC时闪烁。


526334993.jpg  

设置 Beagle Bone Black

首先在本机上安装相关驱动, 下面是驱动列表,我用的是Macbook Pro,安装下表中下载安装Max OS X对应的那两个就行了,安装很快,需要重启一下。



Operating System USB Drivers Comments
Windows (64-bit) 64-bit installer

If in doubt, try the 64-bit installer first.

  • Note #1: Windows Driver Certification warning may pop up two or three times. Click “Ignore”, “Install” or “Run”
  • Note #2: To check if you're running 32 or 64-bit Windows see this: https://support.microsoft.com/kb/827218.
  • Note #3: On systems without the latest service release, you may get an error (0xc000007b). In that case, please install the following and retry: https://www.microsoft.com/en-us/download/confirmation.aspx?id=13523.
  • Note #4: You may need to reboot Windows.
  • Note #5: These drivers have been tested to work up to Windows 10
Windows (32-bit) 32-bit installer
Mac OS X Network
Serial
Install both sets of drivers.
Linux mkudevrule.sh Driver installation isn't required, but you might find a few udev rules helpful.

驱动安装完毕并重启机器后,就可以通过浏览器链接到BBB了。 BBB已经内置了Linux操作系统并且安装了Node.JS,还提供了BoneScript库,所以我们可以直接用Javascript来操纵硬件。JavaScript还能干这事?是的,我们可以打开Chrome浏览器(IE不行的),打开地址 http://192.168.7.2, 就会进入到运行在BBB上的网站,其中介绍了BoneScript,也有简单的例子直接可以运行,立刻就可以体验通过JavaScript来实现前面提到的LED灯的开关等实例。

Screen Shot 2016-03-09 at 5.10.55 PM.png

为Beagle Bone Black启动WIFI

下面我想在BBB上运行一个我自己的node.js程序,一般都需要下载一些npm包,所以需要先让BBB连接互联网。BBB上已经带了网卡接口,不过插网线还是有些麻烦,用WIFI应该会更方便些。要放BBB访问WIFI需要一个小硬件,我手头刚好有一个,就是前些年炒的很火的360随身WIFI,上图中BBB上插的那个白色的就是。哈哈,想不到这东西当钥匙链当摆设很多年,今天排上了用场。

BBB的系统默认没没有启用WIFI功能,需要SSH登录上去更改一下。首先在Mac 的终端窗口中通过SSH登录到BBB。 BBB的IP地址的192.168.7.2, 其中默认安装了Debian Linux系统,用户名和密码是 debian/temppwd

Restored session: Wed Mar 9 15:13:18 CST 2016

daniels-MacBook-Pro:webglbim danieldu$ ssh debian@192.168.7.2

The authenticity of host '192.168.7.2 (192.168.7.2)' can't be established.

ECDSA key fingerprint is SHA256:426KRGxj0OmPAef1WAl/7nVaM26q6HXd1OM6mXJA9mw.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.7.2' (ECDSA) to the list of known hosts.

Debian GNU/Linux 7


BeagleBoard.org Debian Image 2015-03-01


Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian


default username:password is [debian:temppwd]


debian@192.168.7.2's password:

debian@beaglebone:~$

查看网络接口,并没有WIFI:

debian@beaglebone:~$ ip -4 a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

inet 127.0.0.1/8 scope host lo

3: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 192.168.7.2/30 brd 192.168.7.3 scope global usb0


那需要编辑 /etc/network/interface 文件, 如WIFI Example中写的那样,把前面的注释去掉,填写我家的WIFI SSID和密码,Ctrl+O保持后Ctrl+X退出。

debian@beaglebone:~$ sudo nano /etc/network/interfaces


# WiFi Example

auto wlan0

iface wlan0 inet dhcp

wpa-ssid “242”

wpa-psk “pwdpwd”




然后重启服务后再看一下,WIFI已经启用了

debian@beaglebone:~$ sudo /etc/init.d/networking restart

ok ] Restarting networking (via systemctl): networking.service.

debian@beaglebone:~$ ip -4 a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

inet 127.0.0.1/8 scope host lo

3: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 192.168.7.2/30 brd 192.168.7.3 scope global usb0

6: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

inet 192.168.0.17/24 brd 192.168.0.255 scope global wlan0

测试一下,看看baidu能不能通,哈哈,果然可以上网了 :)

debian@beaglebone:~$ wget http://www.baidu.com

2016-03-09 07:47:14 http://www.baidu.com/

Resolving www.baidu.com (www.baidu.com)… 14.215.177.38, 14.215.177.37

Connecting to www.baidu.com (www.baidu.com)|14.215.177.38|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: unspecified [text/html]

Saving to: `index.html'


[ <=> ] 98,181 1.67K/s in 11s


2016-03-09 07:47:26 (8.92 KB/s) - `index.html' saved [98181]

运行node.js 程序

下来可以在创建一个简单的node.js 应用程序,让它运行在BBB上。BBB上默认的node.js版本是0.10

debian@beaglebone:~$ node —version

v0.10.29

debian@beaglebone:~$ npm —version

1.4.21


下面先创建一个最简单的node.js程序试试看:

debian@beaglebone:~$ mkdir helloBBB

debian@beaglebone:~$ cd helloBBB/


debian@beaglebone:~/helloBBB$ npm init

This utility will walk you through creating a package.json file.

It only covers the most common items, and tries to guess sane defaults.


See `npm help json` for definitive documentation on these fields

and exactly what they do.


Use `npm install <pkg> —save` afterwards to install a package and

save it as a dependency in the package.json file.


Press ^C at any time to quit.

name: (helloBBB)

version: (0.0.0)

description: simple node.js app

entry point: (index.js)

test command:

git repository:

keywords:

author: Daniel Du

license: (ISC) MIT

About to write to /home/debian/helloBBB/package.json:


{

“name”: “helloBBB”,

“version”: “0.0.0”,

“description”: “simple node.js app “,

“main”: “index.js”,

“dependencies”: {

“express”: “^4.13.4”

},

“devDependencies”: {},

“scripts”: {

“test”: “echo "Error: no test specified" && exit 1”

},

“author”: “Daniel Du”,

“license”: “MIT”

}



Is this ok? (yes)

debian@beaglebone:~/helloBBB$ ls

node_modules package.json

debian@beaglebone:~/helloBBB$ nano index.js


用nano 编辑器创建index.js, 文件,建立一个最简单的express web应用。为了防止冲突,我把端口改成了8000:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World! This node.js application running from Beagle Bone Black!');
});

app.listen(8000, function () {
  console.log('Example app listening on port 8000!');
});

然后运行它:

debian@beaglebone:~/helloBBB$ ls

index.js  node_modules  package.son

debian@beaglebone:~/helloBBB$ npm install

debian@beaglebone:~/helloBBB$ node index.js

回到Mac上,打开浏览器,输入 http://192.168.7.2:8000, 哈哈, 成功! 第一个简单的node.js 程序就在BBB上跑起来了。

Screen Shot 2016-03-09 at 4.33.14 PM.png

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/p/5259115.html ,如需转载请自行联系原作者
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
18天前
|
JavaScript Java Serverless
函数计算产品使用问题之如何使用Node.js编写程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
25天前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
39 1
|
10天前
|
存储 物联网 关系型数据库
PolarDB在物联网(IoT)数据存储中的应用探索
【9月更文挑战第6天】随着物联网技术的发展,海量设备数据对实时存储和处理提出了更高要求。传统数据库在扩展性、性能及实时性方面面临挑战。阿里云推出的PolarDB具备高性能、高可靠及高扩展性特点,能有效应对这些挑战。它采用分布式存储架构,支持多副本写入优化、并行查询等技术,确保数据实时写入与查询;多副本存储架构和数据持久化存储机制保证了数据安全;支持动态调整数据库规模,适应设备和数据增长。通过API或SDK接入IoT设备,实现数据实时写入、分布式存储与高效查询,展现出在IoT数据存储领域的巨大潜力。
21 1
|
18天前
|
监控 JavaScript Linux
[译] 在生产环境运行 PM2 & Node.js
[译] 在生产环境运行 PM2 & Node.js
|
19天前
|
消息中间件 存储 传感器
RabbitMQ 在物联网 (IoT) 项目中的应用案例
【8月更文第28天】随着物联网技术的发展,越来越多的设备被连接到互联网上以收集和传输数据。这些设备可以是传感器、执行器或其他类型的硬件。为了有效地管理这些设备并处理它们产生的大量数据,需要一个可靠的消息传递系统。RabbitMQ 是一个流行的开源消息中间件,它提供了一种灵活的方式来处理和转发消息,非常适合用于物联网环境。
41 1
|
12天前
|
机器学习/深度学习 人工智能 算法
物联网(IoT)就像是一个大型派对,无数的设备都在欢快地交流着信息
【9月更文挑战第4天】在这个万物互联的时代,物联网(IoT)犹如一场盛大的派对,各类设备欢聚一堂。然而,如何让这些设备互相理解并协同工作呢?这就需要机器学习与人工智能的助力。例如,智能空调通过学习你的使用习惯来调节温度,使你更加舒适;智能安防系统则能识别异常行为并及时报警,保障家庭安全。此外,智能农业、交通等领域也因机器学习和人工智能的应用变得更加高效。下面通过一个简单的温度预测代码示例,展示机器学习在物联网中的实际应用,让我们一起感受其强大潜力。
16 0
|
1月前
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。
|
1月前
|
存储 物联网 关系型数据库
PolarDB在物联网(IoT)数据存储中的应用探索
随着物联网技术的发展,海量设备数据对数据库提出实时高效存储处理的新要求。PolarDB作为阿里云的高性能云数据库,展现了其在IoT数据存储领域的潜力。面对IoT数据的规模、实时性和多样性挑战,PolarDB凭借分布式架构,实现了高性能、高可靠性和高扩展性,支持动态扩展和冷热数据分层存储,满足IoT数据实时写入、查询及管理需求,展现出广阔的应用前景。
50 1
|
18天前
|
消息中间件 传感器 物联网
Producer 在物联网 (IoT) 中的应用
【8月更文第29天】在物联网 (IoT) 领域,设备和传感器不断生成大量的数据。为了有效地收集、处理和分析这些数据,通常会采用消息队列技术。消息队列允许设备将数据发送给后端系统进行进一步处理。在这个过程中,消息生产者(Producer)扮演着关键角色,负责将数据从设备发送到消息队列。本文将详细介绍如何使用消息生产者来收集来自各种传感器和其他 IoT 设备的数据,并提供一个基于 Python 和 Kafka 的示例代码。
25 0
|
19天前
|
消息中间件 传感器 监控
AMQP 与物联网 (IoT) 应用的结合
【8月更文第28天】高级消息队列协议 (AMQP) 是一种开放标准的应用层协议,特别适合于物联网 (IoT) 场景中的消息传递。AMQP 提供了可靠的、可扩展的消息传输机制,能够处理来自大量设备的数据流。本文将探讨 AMQP 在 IoT 应用中的优势,并提供使用不同编程语言构建 AMQP 客户端的具体示例。
17 0

相关产品

  • 物联网平台