返回 登录
4

如何轻松搭建一个 IoT 通知设备

阅读3907

原文:Build an IoT Notification Device
作者:Don Wilcher
译者:安翔
审校:屠敏,关注物联网、移动开发领域,寻求报道或投稿请发邮件tumin@csdn.net


在物联网世界中,各种电子设备通过无线电通信。比如基于802.11 b/g/n的WiFi协议和BLE(低功耗蓝牙)允许这些电子设备使用其通信方案共享数据。像ESP8266和ESP32这样的无线芯片使得厂商和工程师能够轻松进行物联网产品开发和试验。在本项目系列中,你将使用无线平台监控和控制各种电子电路以及配件,借此你将加深对 IoT 概念的理解。

作为该系列的启动项目,首先你将构建一个 IoT 通知设备,当被外部设备触发时,它会发送邮件到你的桌面电脑、笔记本电脑或者移动设备(手机或者平板)。为了构建这套系统,你需要一个Arduino Uno开发板、 littleBits cloudBit、物联网移动设备应用程序以及一些常用的电子元器件。

零件清单

  • 触觉按钮开关
  • Arduino UNO 开发板
  • LED 灯
  • 330欧、1/4瓦电阻
  • 1千欧、1/4瓦电阻,
  • littleBits cloudBit
  • littleBits proto-modules,2个
  • littleBits USB电源(参见 littleBits cloudBit 链接)
  • littleBits 安装板(参见 littleBits proto-modules 链接)
  • 无焊面包板
  • littleBits电源适配器(参见 littleBits cloudBit 链接)
  • 跳线帽
  • IFTTT (IF This Then That) Applet

图1 物联网通知设备系统框图

littleBits cloudBit 模块介绍

在正式构建项目之前,你需要先了解一下 littleBits 这个很有意思的 WiFi 模块。cloudBit模块使得各种电子设备和器件能够轻松连接到家庭WiFi网络。这个模块非常小巧,依靠它 PCB 板上的 IC 技术可轻松实现联网,从而监控和控制其他的 littleBits 模块。

此外,硬件开发套件(HDK)也为 littleBits 以外的模块提供电路接口。cloudBit模块的系统架构由9个子电路组成。

图2 littleBits cloudBit:用于IoT原型开发的WiFi模块

littleBits 系统架构包含如下内容:

  • 电源
  • Setup 按键
  • WiFi无线网卡(USB HOST)
  • 模拟输入
  • 模拟输出
  • micro SD 卡(用于安装Linux软件)
  • RGB LED
  • 512M DDR
  • i.MX23 处理器


图3 9个子电路构成了 cloudBit 系统架构

cloudBit 模块的 WiFi 无线收发器封装在一个 USB 适配器中,生产厂商是 Dynamode,其部件号为 WL-700N-XS, 它是符合802.11n / g标准的 WiFi 设备。其工作频率范围从2.4到2.4835GHz, 该范围使得这款模块能够运用于ISM(工业、科技和医疗)领域。此外,这款由 Dynamode 打造的 USB 接口的WiFi适配器仅需5V DC电源即可供电,非常方便,同时它的功耗极低,只有0.6W。


图4 cloudBit WiFi 芯片组高度封装在一个 USB 适配器中

基于 Linux 的 WiFi 软件存储在 microSD 卡中,其接口在 cloudBit PCB 板的右下角。RGB LED 灯用来指示 cloudBit 处于运行还是设置状态。cloudBit 的 Setup 按键是一个非常小巧的瞬时开关,cloudBit 通过它开启对家庭网络的检测和连接。cloudBit 模块中最核心的部件是 NXP 的 i.MX23 处理器。

除了处理外部 IO 信号以外,i.MX23 处理器的内部电路提供无线(WiFi)控制功能。cloudBit 模块通过外扩一个 512M DDR SDRAM 芯片,来帮助 i.MX23处理器更好地处理大量的 WiFi 数据。DDR SDRAM 的 WiFi 数据传输速率需要 16条地址线、15条数据线和13条控制线的支持。 cloudBit模块通过模拟 IO 口和其他 littleBit 模块以及开发者自研的电路建立连接,从而实现信号传输和调制。


图5 cloudBit WiFi 模块的组件

如你所见,cloudBit 模块尺寸小巧,提供的无线功能却不失强大。通过上文你应当已经大致了解了 cloudBit 的架构,那么接下来就可以开始动手构建 IoT 硬件了。

构建 IoT 通知设备

我们将使用 Arduino 搭配简单的外围电路来实现一个激活 cloudBit 的触发器。对触觉开关进行编程,可以使其触发 cloudBit 发送邮件、短信或者执行其他更加丰富的动作。当 cloudBit 接收到触发信号时,它将通过你的家庭网络执行发送邮件的动作。

因此,该项目的第一步就是搭建触发电路(很简单,你可以使用面包板,如下图所示)。


图6 Arduino触发电路连线图。需要注意加入切换开关

这是 Arduino 触发电路的原理图:


图7 Arduino 触发电路原理图

Arduino 触发电路搭建完毕,就可以添加 cloudBit 模块了。使用 littleBits 组件提供连接 Arduino 触发电路和 cloudBit 模块的电气接口。proto-module 是主要使用的组件,它有三个引脚:接地(gnd)、信号(sig)和Vcc。


图8 proto-module 的信号引脚图

下图展示了构建 IoT 通知设备所需的所有连线情况。


图9 IoT 通知设备的完整电气连线图

基于这个原型可以搭建出多种连接方式的系统。我通过给这个原型附加一个智能逻辑探针,搭建了下图所示的系统,用于测试整套 IoT 通知设备的运转,其中 cloudBit 由littleBits 电源适配器供电。


图10 作者搭建的 IoT 通知设备原型。安装板用于支持 littleBits 模块,智能逻辑探针用于原型测试。

至此,你已经完成了 IoT 通知设备的电路搭建,下一步需要通过添加 Arduino 代码以实现触发功能。

添加 Arduino 代码

在本小节中,你需要将代码上传到 Arudino 以使 IoT 通知设备能够运转。代码主要修改了 Arduino IDE 中的“Button” 部分,添加了一个数字电平输出用于触发 cloudBit。按下按钮将打开 LED 并将 D6 引脚设置为高电平。

修改的代码片段如下:

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 5;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
const int trig_out = 6;      // output pin to trigger cloudBit

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  // initialize the cloudBit trigger pin as an output:
  pinMode(trig_out, OUTPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on and trigger outpin:
    digitalWrite(ledPin, HIGH);
    digitalWrite(trig_out, HIGH);
  } else {
    // turn LED off and trigger outpin:
    digitalWrite(ledPin, LOW);
    digitalWrite(trig_out,LOW);
  }
}

把代码上传到 Arduino 后,你需要把 IFTTT applet 添加到你的 IoT 通知设备原型中来。

添加 IFTTT Applet

借助Facebook、Gmail、Instagram和Twitter网络服务,搭配必要的物理设备(如微控制器),可以预先为 cloudBit 构建 IFTTT applets 的触发器。IFTTT applets 是免费的,它使用条件语句作为目标服务的操作基础。比如在项目中,当 Arduino 触发 cloudBit 时,littleBit applet 得到触发的条件语句将执行发送邮件的操作。


图11 Arduino 触发 cloudBit 发送邮件

只有正确地设置 cloudBit ,它才能被你的家庭无线网络检测到。关于 cloudBit 的设置方法, littleBits website 提供了详细说明。此外,你需要在 IFTTT applet service website 创建一个免费的账户,以便使用 littleBits 触发你的 cloud 模块发送电子邮件。在注册帐户时,务必提供你要用于该项目的邮件地址。注册之后,你可以使用设置功能修改 applet。在本例中,我修改了 applet 中 cloudBit 无线传输事件,我把我的别名 MrD 添加在了邮件正文中。


图12 通过 cloudBit applet 提供的设置方法,很方便就把邮件正文中设备名称改为”MrD”

applet 配置正确之后,就可以测试你的 IoT 通知设备了。

最终测试

按下面包板上的按钮将促使你的 IoT 通知设备向你发送电子邮件,邮件内容将由主题和你在 applet 中设置的正文组成。


图13 IoT 通知设备原型测试

以下是 cloudBit 发送到我邮箱的消息内容:


图14 cloudBit 发送的邮件

至此,你拥有了一个带有通知功能的 IoT 设备。回想一下,这个项目通过使用一个Arduino、littleBits cloudBit 、其他的littleBits 模块以及一些现成的电子元器件,实现了一个 IoT 应用。你还可以尝试设置 applet 来显示新的邮件信息,同时把新的观察结果记录下来。在下一个项目中,你将构建一个能够控制各种电路和外设的 WiFi 设备。同时介绍 littleBits 云平台的使用,它可以帮助你监控和控制你的 IoT 原型设备。

2017年7月1日(星期六),「【在线峰会】一天掌握物联网全栈开发之道」将在 CSDN 学院召开,集结来自阿里、中国科学院、WRTnode、Ruff、ThoughtWorks、叶帆科技等一线物联网领域的技术专家,基于 JavaScript、Python,从整体架构、技术栈、应用开发平台到实战经验与安全方案,希望通过一天的时间,帮助开发者快速掌握物联网全栈开发之道,也为所有对物联网感兴趣的软件开发者、嵌入式开发人员以及希望从互联网技术背景转入物联网的开发人员提供一个良好的学习晋升平台。目前在线峰会九折倒计时,火热报名中,详情点击注册参会

评论