物联网(IoT)技术方兴未艾,智能手环,智能血压计,智能眼镜甚至智能鞋垫都开始进入我们的生活,各种智能设备层出不穷,世界已经到了一个“人有多大胆,地有多大产”的时代,不玩儿点物联网都不好意思和人打招呼了。
之前玩儿过开源硬件Arduino,这次再找个功能强劲的Beagle Bone Black(BBB)。 大家可能知道名气更大的树莓派,BBB也是类似的单片计算机开发板,就在名片大小的一块板子上集成了计算机的大多数常见功能,在上面可以运行Linix 操作系统,通过HDMI连上显示器,插上USB鼠标键盘就是一台完整计算机了。此外还可以配备一些外设Cape,比如触摸屏、音频扩展、串口扩展板等等。
如果你感兴趣,我大淘宝应该都可以买得到,我这边没有视频线,只能通过SSH连接到上面了。开箱后通过数据线连接到电脑上,如果板子没问题的话,靠近网卡口的小LED灯会闪烁。从右到左一次编号为USR0~3. USR 0 是心跳频率的闪烁,USR 2闪烁表示CPU活动。其他两个 USR1 当访问SD卡时闪烁, 我没有安装SD卡,所以也不会亮。USR 3当访问 eMMC时闪烁。
设置 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.
|
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灯的开关等实例。
为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上跑起来了。
玩儿转物联网IoT - 在Beagle Bone Black上运行node.js 程序的更多相关文章
-
MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制
最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2 ...
-
基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装
最近,物联网的概念比较热门,一大批厂商抢着占领物联网的高低,包括有华为物联网.阿里云物联网.腾讯物联网.AWS物联网等等,无法一一列举,一般物联网包含设备侧开发.平台侧开发.应用侧开发,三个部分构成了 ...
-
基于华为物联网IOT的应用开发 ---界面管理开发
在前面随笔<基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装>介绍过IOT中应用侧SDK的封装,主要就是基于华为IOT的应用侧封装,以便在应用系统中进行调用.应用侧SDK ...
-
Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...
-
用Node.js开发Windows 10物联网应用
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 未来10年内,物联网将会如移动互联网这样深入到我们生活的各方各面.所以微软现在对物联网进行了 ...
-
Node.js | 你的物联网系统,有个管家待认领
很多时候,专业的事情都要交给专业的人来做,才会更放心. 例如买了套房,交房装修完毕,欢天喜地入住后,房子的日常养护和维护之类的事情,都由谁来负责呢? 物业呗~买了房子就自然需要房子所在小区提供的物业服 ...
-
微软Azure IoT驱动数字化变革线上分享会(6月4号)
微软Azure IoT驱动数字化变革线上分享会(6月4号) 微软作为全球范围内IoT领域的领军者,以微软智能云Azure为基础和核心,推动包括物联网.机器学习.微服务.人工智能等在内的新技术的发展 ...
-
玩转OneNET物联网平台之HTTP服务① —— 模拟上传温度(TcpClient)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
-
mbed OS - ARM关于物联网(IoT)的战略布局
关于IoT 在刚刚过去的ARMTECHCON2014(Santa Clara Convention Center)第1天会议,首要的keynote就是ARM针对建立物联网(InternetOf Thi ...
随机推荐
-
Vue.js学习 Item12 – 内部响应式原理探究
深入响应式原理 大部分的基础内容我们已经讲到了,现在讲点底层内容.Vue.js 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图.这让状态管理非常简单且直观,不过理解它的原理也很重 ...
-
ODBC访问不到Server的问题
安装了ODBC-MYSQL的配置以后,发现在测试连接Mysql服务器的时候,一直访问不通, 经过测试发现,安装ODBC的PC(windows 8.1 )上的防火墙阻止了连接,最终确认需要 把虚拟机监控 ...
-
JAVA课程设计-计算器(201521123028 李家俊)
1.团队课程设计博客链接 http://www.cnblogs.com/DevilRay/p/7064482.html 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出 ...
-
python 练习 后台返回当前时间
新建一个 current_time.html 文件, !cur_time! 用来替换 <!DOCTYPE html> <html lang="en"> &l ...
-
LeetCode 575 Distribute Candies 解题报告
题目要求 Given an integer array with even length, where different numbers in this array represent differ ...
-
定时任务Job
package com.cfets.ts.u.limitapi.job; import java.text.SimpleDateFormat; import java.util.Date; impor ...
-
Python3 filter() 函数
Python3 filter() 函数 Python3 内置函数 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转 ...
-
Python学习笔记系列——数据结构相关
Python有4种数据结构:列表(list).字典(dictionary).元组(Tuple).集合(set).从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是 ...
-
ansible之感冒药
Ansible简介安装 Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序,也可以通知指挥这些主机完成不同的任务.查看多台主机的各种信息的状态等,a ...
-
ew做socks5代理
这个工具和之前讲过的xxoo类似.链接:https://www.cnblogs.com/nul1/p/8883271.html https://zhuanlan.zhihu.com/p/3282215 ...