首页 > IoT > 用 Atmel 和 PubNub 打造一个实时温度传感器
用 Atmel 和 PubNub 打造一个实时温度传感器
来源:Atmel  时间:2015-06-12
  PubNub 公司的 Bhavana Srinivas 为我们展示了如何用 PubNub 和 Atmel 打造一个实时温度传感器
        随着物联网(IoT)成 为时下最为时髦的一个词汇,PubNub 公司已经为自己制定了一个新的目标,那就是制作出某种简单但是功能非常强大的设备,并能够将其推广到黑客空间之外的领域,应用到现实世界当中。这个设备必 须能够将软件和硬件结合在一起,人们在家里就能够制作出来并自己进行测试。
        他们首先想到的是 Arduino 平台,但是考虑到他们的团队已经使用 Arduino 线路板撰写了大量的实时教程,现在应该尝试一下稍微有所不同的东西了。所以这一次他们决定采用 Atmel | SMART SAM D21 Xplained Pro 和 PubNub 来设计一种实时的温度传感器。
项目概述
        Atmel 温度传感器对温度进行监测,并将数据以实时的方式传递到一个随时保持更新状态的界面上,这个界面的位置可以是世界上任何一个地点。温度传感器测量的是环境 温度,将其以数据流的方式通过 PubNub Data Stream Network 发布到渠道中。任何一个订阅了这个频道信息的网络浏览器都可以将数据流以实况转播的方式呈现在一个可视化的界面上。
概念
  
        Atmel I/O1 Xplained Pro 传感器测量环境温度。
        传感器通过 ATWINC1500 模块与 Wi-Fi 连接。
        Atmel 芯片上运行的是 PubNub 代码,使设计团队可以将数据流发布到一个频道中,任何订阅了这个频道信息的人都能够以实时方式获得温度数据。
        通过 PubNub Developer Console你可以实时方式接收到来自任意数量传感器中传递过来的信息流。
你需要什么材料?
硬件
  
        ATSAMD21-XPRO MCU 主板
        OLED 1 Xplained Pro 用于提供芯片上的显示
        I/O1 Xplained Pro 用于传感器和 SD-卡向 MCU 主板的输入
        ATWINC1500 模块。这是一个 Wi-Fi 黑匣子,含有 Wi-Fi 堆栈、TCP 堆栈、TLS 堆栈。
 软件
Windows PC
        若想获得自己独有的发布/订阅密钥,你首先需要注册一个 PubNub 账户。一旦账户注册完毕,你就可以从 PubNub Developer Dashboard 处获得你独有的 PubNub 密钥了。PubNub 免费的 Sandbox 层应向你提供你所需的所有带宽,以供你利用网页信息传送应用程序界面(API)编译自己的信息传送程序并对其加以测试。
        安装 Atmel Studio 6.2。
        在安装过程中根据提示对 Atmel Studio 进行更新。
        安装终端软件,如 putty 或 terater。
        在运行这个演示之前必须要满足一个条件,那就是首先要使用与 PubNub Atmel 范例一起提供的.bat 文件对 SAMD21 的固件进行升级。一定不要让其他的软件如 putty 或 teraterm 使用通讯端口。关闭 Atmel Studio 和 putty 终端。如果你在运行了程序后在终端上发现一个 PASS 就证明固件已经成功完成了升级。
       按照正确的方法将硬件连接起来
  
        将 WINC1500 XPRO 板与 SAMD21 XPRO 上的连接头 EXT1 连接在一起
        将 I/O1 XPRO 板与 SAMD21 XPRO 上的连接头 EXT2 连接在一起
        将 OLED1 XPRO 板与 SAMD21 XPRO 上的连接头 EXT3 连接在一起
        将 SAMD21 XPRO 连接到你的 PC 机上未被占用的一个 USB 端口上(并且确保其他的USB 端口也不会被占用)
        将电源线与标有“DEBUG USB”的端口连接在一起
软件
        在 Atmel Studio 中打开 PubNub 范例:pubnubAtmel/PubNub_EXAMPLE.atsln (包含在下载的编码中),你会看到下面的一个页面。一定要按照下图中所示选择调试工具/编程工具和接口。
  
        在 pubnubAtmel/src/main.h 中加入下列代码:
        123#define TEST_MODE_SSID “Enter-your-SSID” (choose THE Wi-Fi access point you want the chip to connect to)
#define TEST_MODE_PASSWORD “Enter-the password-for-the-SSID” (enter the password for the same Wi-Fi connection)
#define TEST_MODE_WITHOUT_PROVISION
         在 pubnubAtmel/src/main.c 中填写渠道名称和发布、订阅密钥。
  
         编译 (F7 / Build -> build solution), 运行 (continue/ green arrow/ F5/ debug -> continue).
  
         打开 PubNub Developer Console,使用与代码中相同的频道名称和发布、订阅密钥,然后 SUBSCRIBE。如果一切顺利的话,你应该看到一个以下列格式出现的连续不断的信息流:{“columns”:[[“temperature”,”55.00″]]}
  
        从这里开始,PubNub 的设计团队就能够实时收集温度数据并以数据流的方式向外发布了。但是也许你会问,下一步呢?好吧,他们需要对数据做一些加工,对不对?就是可视化!
将数据流可视化
  
        Bhavana 和 PubNub 这样的人群不会甘心于仅仅将来自传感器的原始数据作为实时更新的数据简单地显示出来,他们的小伙伴 Tomomi 负责将温度数据以漂亮的形式呈现出来,有点像温室或花房中的监视器形式(实时温度传感器在现实世界中的一个典型的应用实例)。
        界面在浏览器中运行,而其背后的技术却非常简单,用 PubNub JavaScript API 订阅从 Atmel 芯片中传递出来的数据。整个系统简单、轻便、完全用 JavaScript 编写、可从世界的任何一个角落通过任何一种设备 - 移动电话、平板电脑、其他的智能终端等 - 进行访问,只要具备网络浏览器就可以了。这个设计背后的主要目的是,以最为有效的方式将数据展示出来,而且无须降低数据的准确性。
        在这个应用实例中,用户界面上用一条简单的线条来显示当前的温度情况,保持实时更新,让你可以看出温度的相对变化,即上升或者下降。这里的数据本身是非常简单的,但是当你想要提供更多也更加复杂的数据时,数据的可视化就会扮演一个非常关键的角色了。
征服物联网世界
        这个演示是只读形式的,提供的也只是环境温度,但是在现实世界中,你要开发的产品应该能够让用户完成监测和控制的目的,即应该能够在设备之间完成双向通讯。例如,如果是一台智能空调,那么你所要做的就不仅是对房间的温度进行监测,而且还要有能力用设备对空调进行远程控制。
        Bhavana 最后说道:“借助于PubNub API 的力量你可以毫不费力地实现这一目标。我希望你们在自己动手完成了这个范例后能够有一种喜出望外的感觉,并且能够自己设计出更好的东西来。”
点击阅读英文原文