日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Node.js、Twilio實現(xiàn)手機控制門鎖

試想一下,如果你忘了帶鑰匙,但你帶手機了,你就可以打開門鎖?;蛘?,你還在往家趕,可你的朋友已經(jīng)到你家門口,你通過手機遠程把家門打開,讓朋友先自己進去看會兒電視。這不是科幻,也不需要多設(shè)備,而是自己動手開發(fā)出來的。

成都創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元韶山做網(wǎng)站,已為上家服務(wù),為韶山各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108

本文是基于我在波蘭的Makerland大會上的一次研討演講。這篇文章將會指導(dǎo)你如何通過手機控制你家的門鎖,而且是在不需要弄壞或改造門鎖的情況下實現(xiàn)。我們需要使用一個微控制器(Arduino Uno),一個電機,和Node.js,用它們來實現(xiàn)通過短信遠程開鎖和關(guān)鎖。我是受到了Twilio-powered Lockitron的啟發(fā)。

步驟1:設(shè)備

部件

1. 一把門鎖

2. 膠帶,紙板

3. 電機(我使用的是HS-322HD)

4. 微控制器(Arduino Uno) + 轉(zhuǎn)接線

準備

1. 從http://arduino.cc/en/Main/Software下載和安裝Arduino IDE。

2. 從http://nodejs.org/獲取并安裝

3. 從https://ngrok.com/download下載并安裝 ngrok (一個內(nèi)網(wǎng)穿透程序)

我將使用Arduino IDE寫代碼并上傳到往微控制器里。我使用node.js腳本語言來和Arduino微處理器進行通信,利用Express web框架發(fā)送請求和相應(yīng)請求。最后,我們使用ngrok將這個Express web Server暴露到外網(wǎng),這樣我們就可以通過短信讓Twilio通信給你的微控制器。

現(xiàn)在,我們可以開始動手了,將我的微控制器跟門鎖鏈接上。

步驟2:裝配

我們將使用一個伺服電機控制門鎖。它就是一個馬達,動力軸需要能旋轉(zhuǎn)180度的那種,這樣我們才能讓門鎖轉(zhuǎn)開和閉合。

這個伺服馬達有三根線—火線(紅),零線(黑),控制線(通常是黃色或白色)。微處理器上有很多口,將馬達的火線連接5v電力口,零線接入GND地線口,控制線接入Digital Pin 12口,如下圖:

就這樣,我的馬達和微控制器連接到了一起,我們再將它和門鎖裝配到一起。

我喜歡用家里常用的東西來開發(fā)這些設(shè)備,但如果你能連接上一個3D打印機,你可以設(shè)計和打印出自己的鎖扣裝置。

因為是示范,我使用了紙板和膠帶來將電機和門鎖固定到一起。

將兩個金屬棍(或其它堅固的細棍)幫到馬達上,用東西墊一下

使用紙板(或其它比較硬的東西)當(dāng)做門鎖和電機之間的連接填充物:

用膠帶將電機和門鎖綁到一起,確保是綁在正確的一面,讓電機轉(zhuǎn)動的方向是開鎖或關(guān)鎖的方向:

最后,我們將電動機軸固定到鎖鈕上:

現(xiàn)在我們已經(jīng)將電機和門鎖死死的固定到一起了:

#p#

步驟3:編寫控制程序

電機和微控制器已經(jīng)連接,Node.js和Arduino等軟件也已經(jīng)安裝了,現(xiàn)在我們需要運行下面的命令來安裝必要的node.js模塊。注意,如果你使用的是Windows,你需要按照node-serialportWindows安裝指令。

 
 
  1. npm install serialport twilio express

Node-Serialport能夠讓你輕松的通過Arduino微控制器串口跟Node.js程序交互。我們將要使用它從Twilio里接受短信請求,并傳遞指令給Arduino微控制器讓它關(guān)鎖或開鎖。

Express是一個簡單的node.js web框架。而twilio模塊能讓我們輕松的和Twilio API交互。

首先,我們打開Arduino IDE,建立一個新的Arduino開發(fā)框架。第一步我們需要打開一個9600波特的串口連接,跟伺服馬達接通(12口)。

 
 
  1. #include 
  2. Servo myservo;
  3. int servoPin = 12;
  4. int lock = 0;
  5. int unlock = 180;
  6. void setup() {
  7.   // initialize serial:
  8.   Serial.begin(9600);
  9.   myservo.attach(servoPin);
  10.   myservo.write(lock);
  11. }

我們告訴微處理器,伺服馬達的0位置是“鎖住”,180位置是“解鎖”。跟據(jù)你是如何將馬達跟門鎖捆綁的,也許需要交換調(diào)整這個位置。當(dāng)微控制器啟動時,它會告訴馬達移動到“鎖住”位置。

接下來,我們將從串口連接上讀取一個字符,來判定是否應(yīng)該調(diào)動馬達運行。

 
 
  1. void loop() {
  2.    // Recieve data from Node and write it to a String
  3.    while (Serial.available()) {
  4.     char inChar = (char)Serial.read();
  5.     if(inChar == 'V'){ // end character for locking
  6.      if (myservo.read() >= 90) {
  7.        Serial.println("L");
  8.        myservo.write(lock);
  9.        delay(3000);
  10.      }
  11.      else {
  12.        Serial.println("U");
  13.        myservo.write(unlock);
  14.        delay(3000);
  15.      }
  16.     }
  17.   }  
  18. }

Arduino用來分析的串口輸入是來自node.js腳本的輸出,下面我們會介紹這個腳本。

在Arduino IDE開發(fā)環(huán)境外,我們用一個文本編輯器創(chuàng)建一個新文件,叫做nodelock.js,文件的開頭是導(dǎo)入前面我們用npm安裝的模塊:

 
 
  1. var twilio = require('twilio'),
  2.    SerialPort = require("serialport").SerialPort,
  3.    express = require('express');

下面我們將建立新express web server和serialPort連接:

 
 
  1. var app = express();
  2. var serialPort = new SerialPort("/dev/tty.usbmodem1411", {
  3.  baudrate: 9600
  4. });

注意,我們指定了要連接的USB端口和波特率。你可能需要根據(jù)你的計算機的情況修改這個USB端口。你可以在Arduino->Tools->Port菜單上找到你的可用的USB端口號。

下面我們要設(shè)定HTTP相關(guān)信息,調(diào)用/sms:

 
 
  1. app.use(express.bodyParser());
  2. app.post('/sms', twilio.webhook('your auth token', { host:'foo.herokuapp.com', protocol:'https' }), function(req, res){
  3. });

我們需要告訴express服務(wù)器通過/sms地址接受POST請求,使用bodyParser分析請求內(nèi)容,獲取來自Twilio的短信信息。我們使用twilio的webhook方法來驗證請求來源的可靠性。

現(xiàn)在,我們有了接收短信的地址,在試一下之前,我們應(yīng)該檢查一下發(fā)短信的號碼是否是我們用來控制鎖的號碼。

 
 
  1. app.post('/sms', twilio.webhook('your auth token', { host:'foo.herokuapp.com', protocol:'https' }), function(req, res){
  2.  if (req.body.From == "+12128675309") {
  3.    console.log("verified number!");
  4.  } else {
  5.    console.log("Wrong number!");
  6.    sendMessage(res, "Invalid number!");
  7.  }
  8. });

在驗證號碼的代碼段里,我們可以加入一個處理發(fā)送和相應(yīng)Arduino微控制器上串口連接的功能。

 
 
  1. serialPort.once('data', function(data) {
  2.      if (data.toString().indexOf('U') > -1) { //check if the Arduino returned a U for unlocking
  3.        sendMessage(res, 'Unlocking!');
  4.      }
  5.      else if (data.toString().indexOf('L') > -1) {
  6.        sendMessage(res, 'Locking!');
  7.      }
  8.      else {
  9.        sendMessage(res, 'ERROR');
  10.      }
  11.      console.log('data received: ' + data);
  12.    });
  13.    serialPort.write("V", function(err, results) {
  14.      if (err) {
  15.        console.log('err ' + err);
  16.      }
  17.      console.log('results ' + results);
  18.    });

這代碼看起來很雜亂,但這是相當(dāng)直接的寫法。我們設(shè)定了事件處理器從微控制器里接受數(shù)據(jù)。這個事件處理器會檢查Arduino微控制器發(fā)送的是 “U” 還是 “L” ,我們獲取這個值,并用sendMessage函數(shù)將信息反饋給用戶。

設(shè)定了事件處理器后,我們向Arduino微控制器里寫入“V”字符,告訴它接收到了短信,它現(xiàn)在應(yīng)該打開/關(guān)閉門鎖。

我們現(xiàn)在往文件中加入sendMessage函數(shù),它有2個參數(shù):res和message。

 
 
  1. function sendMessage(res, message) {
  2.  var resp = new twilio.TwimlResponse();
  3.  resp.message(message);
  4.  res.type('text/xml');
  5.  res.send(resp.toString());
  6. }

調(diào)用sendMessage函數(shù)會給用戶發(fā)送TwiML響應(yīng)信息。TwiML是XML的子集,Twilio用它來傳遞短消息指令。在我們這里,我們用它告訴Twilio響應(yīng)我發(fā)送的SMS信息。用戶也許會發(fā)送“unlock”,程序會通過Twilio SMS回復(fù) “Unlocking!”

我們已經(jīng)配置了SMS處理器,最后只需要打開SerialPort,啟動Express web server,我們的應(yīng)用就開發(fā)完了:

 
 
  1. serialPort.open( function () {
  2.  app.listen(3000);
  3.  console.log('Listening on port 3000');
  4. });

這就是所有我們需要的代碼?,F(xiàn)在,如果你上傳我們之前寫的Arduino代碼,運行nodelock.js,方法是在終端里執(zhí)行node nodelock.js,程序就啟動了。

如果你在開發(fā)的過程中遇到了錯誤,可跟這些代碼對比一下看是什么問題。

在創(chuàng)建并登陸你的Twilio帳號后,到 Twilio控制臺,點擊號碼標簽,選擇你希望用來控制鎖的號碼。你會看到兩個框,語音請求地址(Voice Request URL)和消息請求地址(Messaging Request URL)。我們使用Messaging Request URL來傳遞我們的短信文本信息。

因為Twilio是通過HTTP請求通信的,我們需要有一個能從公網(wǎng)上訪問的地址,當(dāng)有消息到達時,Twilio會將信息傳遞跟這個地址。于是我們之前安裝的ngrok就起作用了。

等你的node.js服務(wù)器起來,開一個終端窗口,在你安裝ngrok的目錄下輸入./ngrok 3000,這里你需要指定一個地址,通過它,外部服務(wù)能訪問你的本地服務(wù)器。在這個地址后面跟上/sms,填入Twilio Messaging Request URL欄里,保存設(shè)置,試著發(fā)送一個短信!你的門鎖應(yīng)該隨著短信自動打開或關(guān)閉。

祝大家玩的愉快,編程開心!

英文原文:Build Your Own Lockitron With Twilio, Arduino, and Node.js

譯文鏈接:http://www.vaikan.com/lockitron-with-twilio-arduino-and-node-js/


當(dāng)前文章:使用Node.js、Twilio實現(xiàn)手機控制門鎖
文章URL:http://www.dlmjj.cn/article/djepcsh.html