在本文中,将探讨如何利用Twilio服务和UP Squared开发板在Ubuntu操作系统上发送短信。这包括硬件的准备、软件的安装、编程示例以及如何运行程序。
Twilio是一个允许软件开发者通过编程方式接收和发送短信(SMS)及多媒体消息服务(MMS)的平台。可以使用Twilio的REST API发送短信和MMS消息,跟踪短信对话,甚至在电话通话中发送短信。
UP Squared开发板是一个低功耗、高性能的平台,非常适合物联网(IoT)应用。根据性能需求,可以选择基于Intel® Celeron®处理器(N3350)或Intel® Pentium®处理器(N4200)的UP Squared开发板。更多信息,请访问官方UP Squared网站。
以下是本项目所需的硬件组件列表:
软件方面,需要安装Ubuntu桌面操作系统。
要接收短信和MMS消息,需要一个启用了短信功能的Twilio电话号码。要获取自己的专用电话号码,请注册Twilio试用账户。一旦获得短信功能的Twilio访问权限,就可以访问账户仪表板,找到Twilio账户SID和Twilio认证令牌。
在开始之前,应该在UP Squared平台上安装Ubuntu操作系统。本指南使用了Ubuntu 16.04.1 LTS 64位桌面版本。有关如何在UP Squared上安装Ubuntu操作系统的更多信息,请访问。
为确保Ubuntu操作系统是最新的,并且相关的Ubuntu软件包已安装,请打开命令提示符(终端)并输入以下命令:
sudo apt-get update
安装Node版本管理器(NPM)软件包:
sudo apt-get install npm
从NPM安装Twilio节点软件包:
npm install twilio
Ubuntu核心默认情况下不提供对GPIO引脚的访问。安装所需的内核以访问GPIO引脚。
在更新内核之前,使用以下命令检查是否拥有正确的UP Squared内核:
uname -srv
UP Squared的内核应该如下所示:
Linux 4.10.0-42-generic #5000~upboard9-UbuntuSMP 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软件包以管理IO通信:
sudo npm install -g mraa
要与Grove盾连接,请在代码中添加以下行:
mraa.addSubplatform(mraa.GROVEPI, "0")
使用GROVEPI会将所有引脚号偏移512,因此光传感器连接到模拟A1的引脚将是引脚512+1:
var OFFSET = 512; var light = new groveSensor.GroveLight(OFFSET + 1);
从模拟引脚读取光传感器值:
var lightValue = light.value();
如果光传感器指示变暗,这将打开LED并发送短信消息:
if (light.value() < 10) { ledPin.write(1); }
最后,使用以下代码读取并写入数字引脚D5以打开LED:
var ledPin = new mraa.Gpio(OFFSET + 5); ledPin.dir(mraa.DIR_OUT); ledPin.write(1);
要发送短信消息,向Twilio发出请求,并指定“to”、“from”和“body”。其中“to”是手机号码,“from”是启用短信功能的Twilio电话号码,“body”是正在发送的短信消息。有关详细信息,请参见Twilio API文档中的。
以下是发送短信的代码示例:
var ACCOUNT_SID = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var ACCOUNT_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var twilio_number = '1480405xxxx';
var your_number = '1480xxxxxx';
var twilio = require('twilio');
var client = new twilio(ACCOUNT_SID, ACCOUNT_TOKEN);
var 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)
var ACCOUNT_SID = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var ACCOUNT_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var twilio_number = '1480405xxxx';
var your_number = '1480xxxxxx';
var twilio = require('twilio');
var client = new twilio(ACCOUNT_SID, ACCOUNT_TOKEN);
var mraa = require('mraa');
mraa.addSubplatform(mraa.GROVEPI, "0");
console.log("MRAA version: " + mraa.getVersion());
var OFFSET = 512;
var ledPin = new mraa.Gpio(OFFSET + 5);
var ledState = true;
ledPin.dir(mraa.DIR_OUT);
var groveSensor = require('jsupm_grove');
var light = new groveSensor.GroveLight(OFFSET + 1);
var sleep = require('sleep');
function activity() {
console.log("Enter activity()");
console.log("ledState: " + ledState);
var lightValue = light.value();
if (light.value() < 10) {
ledPin.write(1);
var 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);
ledPin.write(0);
}
导出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上使用Twilio账户和UP Squared开发板在暗条件下发送短信进行了实验。这个实验设计得可以在任何支持Intel微控制器并运行Ubuntu的物联网设备上工作,例如Intel®IoTGateway GB-BXTB-3825。现在尝试在UP Squared开发板和其他Intel®物联网设备上使用不同的传感器创建自己的实验。