使用 Twilio 在带有 Ubuntu 的 UP Squared 上发送 SMS 消息
本文档演示了如何在 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
- Grove Pi 主板
- 传感器套件
- UP Squared 电源 5V@6A
- 带 HDMI* 接口的显示器
- HDMI线
- 带互联网连接的网络连接,可通过以太网或 UP Squared 的 WiFi 套件
- USB 键盘和鼠标
- 软件 Ubuntu 桌面版
有关 UP Squared 主板的详细组装和开机说明,请参阅 Intel® 开发者区中的 UP Squared 入门指南。
创建 Twilio* 账户
要接收短信和彩信,您需要一个支持短信的 Twilio 电话号码。要获取您自己的专用电话号码,请注册一个 Twilio 试用账户。获得支持短信的 Twilio 访问权限后,请访问 您的账户仪表盘,找到您的 Twilio Account SID 和 Twilio Auth Token。
安装 Ubuntu* 操作系统
在开始之前,应在 UP Squared 平台上安装 Ubuntu* 操作系统。本指南使用的是 Ubuntu 16.04.1 LTS 64 位桌面版。有关如何安装 Ubuntu 操作系统的更多信息,请访问 https://wiki.up-community.org/Ubuntu。
在 UP Squared 主板安装 Ubuntu 桌面版后启动时,会出现一个菜单,其中包含启动 Ubuntu 或其他操作系统的选项。Ubuntu 默认突出显示并将被执行。
安装 Twilio*
-
为确保 Ubuntu 操作系统是最新的并已安装依赖的 Ubuntu 包,请打开命令提示符(终端)并输入
sudo apt-get update
-
安装 Node 版本管理器(NPM)包
sudo apt-get install npm
-
从 NPM 安装 Twilio node 包
npm install twilio
安装 Ubuntu* 内核
Ubuntu Core 中的默认内核无法访问 GPIO 引脚。请安装以下所需的内核以访问 GPIO 引脚。
-
在更新内核之前,请使用以下命令检查您是否拥有适用于 Up Squared 的正确内核。
uname -srv
Up Squared 的内核应如下所示
Linux 4.10.0-42-generic #5000~upboard9-Ubuntu SMP Tue Dec 12 11:46:16 UTC 2017
-
添加仓库
sudo add-apt-repository ppa:ubilinux/up
-
更新仓库列表
sudo apt update
-
删除已安装的通用内核
sudo apt-get autoremove -purge ‘linux-.*generic’
-
安装 Up Squared 的内核
sudo apt-get install linux-image-generic-hwe-16.04-upboard
-
重启
sudo reboot
-
验证内核是否已安装
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® 物联网设备上的不同传感器创建您自己的实验。
参考文献
关于作者
Nancy Le 是 Intel 公司的软件工程师,致力于实现可扩展的物联网项目。