65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Twilio 在带有 Ubuntu 的 UP Squared 上发送 SMS 消息

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2018 年 4 月 26 日

CPOL

4分钟阅读

viewsIcon

7615

本文档演示了如何在 UP Squared 主板上使用 Twilio 电话号码,在光线传感器指示天色变暗时,通过 Ubuntu 向您的手机发送短信(SMS)。

引言

使用 Twilio 发送短信预计适用于任何支持在 Ubuntu 上运行的 Intel 微控制器的物联网设备。

Twilio 允许软件开发人员以编程方式接收发往其 Twilio 电话号码的短信和彩信(MMS)消息,并以短信和彩信进行回复。您可以使用 Twilio 的 REST API 发送短信和彩信,跟踪短信对话,以及在通话期间发送短信。

关于 UP Squared* 主板

UP Squared 主板是一个低功耗、高性能的平台,非常适合物联网(IoT)应用。根据您的性能需求,您可以选择基于 Intel® Celeron® 处理器(N3350)或 Intel® Pentium® 处理器(N4200)的 UP Squared 主板。更多信息,请访问官方 UP Squared 网站

准备您的材料

硬件

此项目中使用的硬件组件如下所示

有关 UP Squared 主板的详细组装和开机说明,请参阅 Intel® 开发者区中的 UP Squared 入门指南

image of UP Squared board hardware

图 1:硬件

创建 Twilio* 账户

要接收短信和彩信,您需要一个支持短信的 Twilio 电话号码。要获取您自己的专用电话号码,请注册一个 Twilio 试用账户。获得支持短信的 Twilio 访问权限后,请访问 您的账户仪表盘,找到您的 Twilio Account SID 和 Twilio Auth Token。

screenshot of Ubuntu dashboard

图 2:来自账户仪表盘的 Twilio 凭据

安装 Ubuntu* 操作系统

在开始之前,应在 UP Squared 平台上安装 Ubuntu* 操作系统。本指南使用的是 Ubuntu 16.04.1 LTS 64 位桌面版。有关如何安装 Ubuntu 操作系统的更多信息,请访问 https://wiki.up-community.org/Ubuntu

在 UP Squared 主板安装 Ubuntu 桌面版后启动时,会出现一个菜单,其中包含启动 Ubuntu 或其他操作系统的选项。Ubuntu 默认突出显示并将被执行。

安装 Twilio*

  1. 为确保 Ubuntu 操作系统是最新的并已安装依赖的 Ubuntu 包,请打开命令提示符(终端)并输入

    sudo apt-get update
  2. 安装 Node 版本管理器(NPM)包

    sudo apt-get install npm
  3. 从 NPM 安装 Twilio node 包

    npm install twilio

安装 Ubuntu* 内核

Ubuntu Core 中的默认内核无法访问 GPIO 引脚。请安装以下所需的内核以访问 GPIO 引脚。

  1. 在更新内核之前,请使用以下命令检查您是否拥有适用于 Up Squared 的正确内核。

    uname -srv

    Up Squared 的内核应如下所示

    Linux 4.10.0-42-generic #5000~upboard9-Ubuntu SMP Tue Dec 12 11:46:16 UTC 2017
  2. 添加仓库

    sudo add-apt-repository ppa:ubilinux/up
  3. 更新仓库列表

    sudo apt update
  4. 删除已安装的通用内核

    sudo apt-get autoremove -purge ‘linux-.*generic’
  5. 安装 Up Squared 的内核

    sudo apt-get install linux-image-generic-hwe-16.04-upboard
  6. 重启

    sudo reboot
  7. 验证内核是否已安装

    uname -srv

安装 MRAA

安装 MRAA 包以管理 IO 通信

sudo npm install -g mraa

读取光线传感器

要与 Grove shield 接口,请将此行添加到您的代码中

mraa.addSubplatform(mraa.GROVEPI, "0 ")

使用 GROVEPI 会将所有引脚编号偏移 512,因此,光线传感器的引脚 A1 将成为引脚 512 + 1

var OFFSET = 512

// Light sensor is connected to the analog A1
var light = new groveSensor.GroveLight(OFFSET + 1);

从模拟引脚读取光线传感器值

// Load Grove module
var groveSensor = require('jsupm_grove');

// Light sensor is connected to the analog A1
var light = new groveSensor.GroveLight(OFFSET + 1);
var lightValue = light.value();

如果光线传感器指示天色变暗,这将打开 LED 并发送短信

if(light.value() < 10) {
        // Turn off the LED
        ledPin.write(1);

        // Send an SMS message
…
}

最后,使用以下代码读取和写入数字引脚 D5 以打开 LED

// LED is connected to the digital D5
var ledPin = new mraa
ledPin.dir(mraa.DIR_OUT);
// Turn on the LED
ledPin.write(1);

发送出站短信

要发送短信,我们需要向 Twilio 发起一个请求,并指定“to”(收件人)、“from”(发件人)和“body”(消息内容)。“to”是您的手机号码,“from”是支持短信的 Twilio 电话号码,“body”是要发送的短信内容。有关 Twilio 客户端错误代码,请参阅 Twilio API 文档。

// Twilio Account SID and Auth token
var ACCOUNT_SID[] = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var ACCOUNT_TOKEN[] = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ";

// SMS-enabled Twilio phone number
var twilio_number = "1480405xxxx";

// Your mobile phone number
var your_number = “1480xxxxxx”;

// Load the Twilio module
var twilio = require('twilio');

// Make authenticated requests
var client = new twilio(ACCOUNT_SID, ACCOUNT_TOKEN);

// Send the request to Twilio
message = client.messages.create({from: TWILIO_NUMBER,
                                                                to: YOUR_NUMBER,
                                                                body: "Hello World!!!"},
    function(error, message) {
        if (!error) {
            console.log(“The request was successful.”);
            console.log(message.Sid);
        } else {
            console.log(“The request was failed. Error code:”);
            console.log(message.ErrorCode);
            console.log(message.sid);
        }
});

示例草图

以下是一个示例,演示了在光线传感器指示天色变暗时向您的手机发送短信。

代码示例:发送出站短信示例(send_sms_msg.js)

// Twilio Account SID and Auth token
var ACCOUNT_SID[] = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var ACCOUNT_TOKEN[] = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ";

// SMS-enabled Twilio phone number
var twilio_number = "1480405xxxx";

// Your mobile phone number
var your_number = “1480xxxxxx”;

// Load the Twilio module
var twilio = require('twilio');

// Make authenticated requests
var client = new twilio(ACCOUNT_SID, ACCOUNT_TOKEN);

// Load MRAA module
var mraa = require('mraa');
mraa.addSubplatform(mraa.GROVEPI, "0");
console.log("MRAA version: " + mraa.getVersion());

// Platform offset for conversion of the IO pins
var OFFSET = 512

// LED is connected to the digital D5
var ledPin = new mraa.Gpio(OFFSET + 5);
var ledState = true;
ledPin.dir(mraa.DIR_OUT);

// Load Grove module
var groveSensor = require('jsupm_grove');
// Light sensor is connected to the analog A1
var light = new groveSensor.GroveLight(OFFSET + 1);

// Load Sleep module
var sleep = require('sleep');

activity();

// if it is dark, turn on the LED and send the an SMS message.
function activity() {
    console.log("Enter activity()");
    console.log("ledState: " + ledState);

    // Check the light sensor whether it is dark
    var lightValue = light.value();
    if(light.value() < 10) {
        // Turn on the LED
        ledPin.write(1);

        // Send an SMS message
        message = client.messages.create({from: twilio_number,
                                  to: your_number,
                                  body: "Hello World!!!"},
            function(error, message) {
            if(!error) {
                console.log(message.Sid);
                console.log(message.ErrorCode);
                } else {
                    console.log("Error!");
                }
            });
    }

    ledState = !ledState;
    sleep.sleep(1);

    // Turn off the LED
    ledPin.write(0);
}

运行 Node 示例

导出 MRAA 依赖模块

export NODE_PATH=/usr/local/lib/node_modules

请注意,您需要以 root 用户身份才能访问 GPIO,因此请务必包含“sudo”。要运行示例,请在终端中键入以下命令

sudo -E node send_sms_msg.js

当光线传感器指示天色变暗时,LED 将闪烁,并发送短信。如果您的手机收到以下消息,则表示短信已成功发送。

Sent from your Twilio trial account - Hello World!!!

摘要

在本文中,我们尝试在 Ubuntu 上的 UP Squared 主板上,在光线传感器指示黑暗条件时,使用 Twilio 账户发送短信。此实验旨在适用于任何支持在 Ubuntu 上运行的 Intel 微控制器的物联网设备,例如 Intel® IoT Gateway GB-BXTB-3825。现在,尝试使用 UP Squared 主板和其他 Intel® 物联网设备上的不同传感器创建您自己的实验。

UP Squared

参考文献

关于作者

Nancy Le 是 Intel 公司的软件工程师,致力于实现可扩展的物联网项目。

有关编译器优化的更完整信息,请参阅我们的优化声明
© . All rights reserved.