当Macklemore的《Thrift Shop》在你的party上响起时,你肯定觉得碉堡了;如果是来自邻家party的说(chao)唱(nao),那就不太美妙了。当然我知道您很喜欢您的邻居,想敲门告诉他们把音乐调小些,但是天儿这么冷,即使穿着最暖和的法兰绒斑马纹睡衣(from:Thrift Shop)也无法抵挡寒冷,您还愿意出去敲门吗?为什么不制作一个短信发射器提醒吵闹的邻家呢?或许Intel Edison就是您的利器!
教程中应用node.js实现短信的发送。
那么裹好你的天鹅绒级别的(仿)貂皮大衣,准备动手制作吧。
第一步:设置 Intel Edison
在进行下面的步骤之前,您的Edison应该装好最新的操作系统并连接Wifi。如果还没有,你可以去官网进行配置。
为了制作短信接收器,现在我们需要准备一些东西。
第一个就是Twilio的node程序包。Twilio坐落于旧金山,是一家提供云通信服务的企业,它允许开发者通过API实现语音、短信功能!(万能的云服务)。您可以通过官方网站申请一个免费账号,以便完成我们的项目。打开电脑,连接 Intel Edison。输入下面的代码,并按回车键。
npm install twilio
酷!现在您就可以发短信了。现在我们需要一个程序包,以便电脑关闭后我们仍然可以用我们的App发送短信。注意,正则表达式flag的标志信息”-g” 在这段程序中是非常重要的。
npm install forever -g
好极了。现在我们需要一个文字编辑器。Intel Edison上面有Vim和Vi,但都不太好用,所以我们安装一个简单好用的Nano。
wget <a href="http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz" rel="nofollow">http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz</a> && tar xvf nano-2.2.6.tar.gz && cd nano-2.2.6 && ./configure && make && make install
make clean
rm -r nano*
同时我们需要新建一个文件夹,以便将我们的项目放进去。
cd
makedir mySandbox
makedir partyAlarm
然后重新启动,以便清理内存。
reboot
非常棒!接下来是编译和做电路图。
第二步:编译
在写代码前,请先确认你已经有了 Twilio 的账号,如果没有可以去官网申请免费账号。
我们使用 node.js 写代码,作为 Java 脚本语言,功能妙不可言。我们要做的第一件事情是在Nano里打开我们的代码文件。您可以通过 control+o 保存,control+x退出。
nano partyAlarm.js -$ -i
好的, 现在就可以写代码了。将下面的代码全部录入文本编辑器,保存并退出。因为Nano本身的原因,偶尔会把代码弄乱,不过不要紧,只需要在删掉 <br>,按回车键,另起一行重新开始即可。
// Set up our input pin on pin 5 of the Edison Arduino Board
var mraa = require('mraa');
var buttonPin = new mraa.Gpio(5);
buttonPin.dir(mraa.DIR_IN);//Set up the stuffs for Twilio. You will need to set up an
//account to get your SID and your token/authentication key
var twilio = require('twilio');
var client = new twilio.RestClient('<<twilio sid>>',
'<<twilio token>>');
//Read our button
var buttonPushed = buttonPin.read();
//If our button was pressed, send our message
//You will need to fill in your own twilio number to make this work.
//Note, we are texting 1(555)123-4567 here. This is obviously a
//wrong number. Put your friend's in there instead.
if(buttonPushed){
client.sms.messages.create({
to:'+15551234567',
from: '<<your twilio number>>',
body: 'I can\'t hear my light saber go SWOOSH SWOOSH over your racket.'
}, function(error, message){
if(!error){
console.log("Message sent at " + message.dateCreated);
} else {
console.log("Message wasn't sent...");
}
});
}
//Hold in the program until we release the button.
while (buttonPushed){
setTimeout(emptyFunction, 200); //debounce
buttonPushed = buttonPin.read();
}
//When we use forever.js, it will need to make sure that our program lasts at
//least 1 millisecond each time it runs. So, we wait for 4 milliseconds before
//ending our function
setTimeout(emptyFunction, 4);
//Basically, we use this for our delay. We have to call some flavor of
//function to use the setTimeout function.
function emptyFunction(){
}
第三步:连接电路和启动程序
因为是自制作品,所以遵循一切从简的原则,我们使用简单的电路——1个按钮外加一个10K的下拉电阻。如果您不确定如何接线,您可以到谷歌上搜索“Arduino button circuit”。
现在代码写好了,按钮也接好了,我们需要做的就是执行我们的代码。Foever.js 是一个非常小巧整洁的安装包,它可以无限循环运行您的代码。我们需要手动退出node.js APP,这样 forever.js 就会重新启动代码,并一直循环下去。所以在您的 Intel Edison 上输入下面代码,然后按回车键。
forever start --minUptime 1 partyAlarm.js
哈,伙计,上面的教程已经结束。不过在此笔者还想说几句题外话,您可以用它以每秒2条短信的速度轰炸您的小伙伴。不过,请立即停止这疯狂的行为!如何做到这些呢?在 Intel Edison 上输入下面的代码,然后按回车键。
forever list
这样会显示运行的任务和任务数量( job numbers)。如过任务数为“0”,那么 forever.js 不会运行任何程序。所以我么可以用“0”终止forever.js。输入下面的代码,并按回车键。
forever stop 0
棒极了!现在一切就绪了。现在您已经拥有了一个超级武器,去轰炸您的邻居!