通过使用结合全双工实时通信的Bluetooth Smart
由XSockets.NET的创始人兼首席执行官(CEO)Uffe Bjorklund 所创。自2009年以来他一直致力于围绕实时通信的开发工作。
来自德州仪器(TI)的SimpleLink™多标准CC2650无线MCU是一种令人惊奇的硬件,该硬件作为中央单元的外设,可通过蓝牙低能耗设备进行通信。基于CC2650的SimpleLink SensorTag拥有很多服务,能在全球任何地方访问套件,真的很棒。
任务
在本文中,我们将看看如何能扩展与CC2650无线MCU的通信(通过在蓝牙低能耗中央设备后面添加全双工通信层),以便我们能在全球任何地方对CC2650进行读取和写入 *** 作。因为这可能让人感觉有点儿抽象,所以提供了下图,或许有助于让我们将要做的事情形象化。
有许多连接到外围Bluetooth Smart设备的方法,但在本文中,我们将用Raspberry Pi 2作为蓝牙低能耗(BLE)中央设备。
该图表明:CC2650无线MCU通过蓝牙低能耗设备与RaspberryPi进行通信。接着该Pi与XSockets(在这个实例中用的是NodeJS)建立TCP/IP连接,以便能采用全双工模式发送/接收数据。然后XSockets将能从任何TCP/IP连接处发送/接收数据,这样我们就可以在任何地方对CC2650进行读取和写入 *** 作了。在上图中,客户端的几个代表是经过挑选的,但实际上客户端可以是具有TCP/IP的任何东西。
物联网(IoT)和实时通信
在物联网(IoT)世界中,实时通信几乎是必不可少的。最流行的IoT协议采用全双工通信,而且有很好的理由。IoT通常涉及以高频率发送数据或在有事发生时接收数据。借助请求响应驱动架构解决这一问题往往并非良策。而采用半双工技术,您要冒这样的风险:得到的解决方案很不正式却开销巨大;收到的信息是在不需要时发来的。
为实时通信建立Raspberry Pi
由于我们用来与Raspberry Pi的SensorTag进行通信的库是基于NodeJS的,因此我们也将使用NodeJS进行实时通信。
安装NodeJS
在Raspberry Pi上安装NodeJS非常容易。
sudo wget
sudo dpkg -i node_latest_armhf.deb
然后,您可通过运行(这可能会输出v0.12.0或更高版本)来验证该版本
节点v
解决方案
本文的任务是展示如何在全球任何地方采用全双工模式对CC2650进行读取/写入 *** 作。为了能做到这一点,我们需要三种部件。
Raspberry Pi上的传感器客户端,该器件可与蓝牙低能耗设备进行通信,并且还能以全双工方式连接到我们的实时服务器。
实时服务器,该器件能向监控传感器的客户端发送信息,还能在监控客户端想要将数据写入到传感器时向传感器客户端发送信息。
监控客户端(可以是多种类型的),该器件可显示传感器数据,并通过实时服务器向传感器客户端发送指令。
这三个实施方案将在下面提及。
传感器客户端
Raspberry Pi上的传感器客户端(NodeJS)很容易建立。
设置
创建一个名为CC2650的文件夹并导航到它。
安装SensorTag库
npm install sensortag
安装xsockets.net库
npm install xsockets.net
代码
用于客户端的完整代码(?70行)可在github库中找到,但重要的部分在这里介绍。只需将app.js文件放在您安装上述程序包的文件夹中即可。
连接到服务器,注意此处的IP和端口只用于开发。当部署到Azure时,该IP和端口将被替换为公共端点。
//连接到XSockets
var conn = new xsockets.TcpClient('192.168.1.3', 4502, ['sensor']);
//获取传感器控制器
//该控制器用来接收数据和发送数据
var sensorcontroller = conn.controller('sensor');
当sensortag上的温度变化时
tagInstance.on('irTemperatureChange', funcTIon (ot, at) {
//call server method 'irTempChange' and pass new value
sensorcontroller.send('irtempchange', { obj: ot, amb: at });
});
当监控客户端启用红外温度服务时
sensorcontroller.on('enableirtemp', self.enableIrTemperature);
当世界某个地方的监控客户端禁用红外温度服务时
sensorcontroller.on('disableirtemp', self.disableIrTemperature);
实时服务器
由于XSockets.NET是有形态的,因此您可连接任何东西,它允许您跨协议等进行对话。建立服务器端通信将非常轻松。
传感器控制器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)