第1步:零件
首先您需要一個Arduino,我用了Diecimila,但任何類型都可以。
我使用的鎖是La Gard ENV 1300型鎖,我在EBay上花了10美元買了6個這樣的鎖。
你不能只使用任何類型的鎖,像普通的門鎖,它必須是電子鎖。
它需要在按以下方式進行操作:在此鎖內有一個鎖舌,現(xiàn)在使鎖舌保持閉合的是一個非常簡單的電磁體。 通過此電磁體通電時,它可以打開鎖。如果內部沒有此簡單的電磁體,則它將不起作用。一個簡單的使用鑰匙,大頭針和彈子的門鎖將不起作用。
我在其中包括鎖內部的圖片,在其中您可以看到它的工作原理:電源進入電磁體,該電磁體將銷子拉回并釋放,釋放楔子。從理論上講,您可以創(chuàng)建自己的電磁鎖,或者使用簡單的電動機或其他工具,但這又是不同的指示。
您還需要一個基本的晶體管:從Radio shack購置的2N2222
現(xiàn)在,如果您想通過其他方式(而不是僅通過計算機)打開它,則是:藍牙電話,我正在將Touch Pro與Windows Mobile一起使用
條形碼掃描儀,我正在使用Symbol CS1504
在上一張圖片中看到一個門把手,該門把手的底部粘有一個木制方形旋鈕,以適合鎖上的方形釘,用于打開鎖。
步驟2:Arduino
Arduino的接線非常簡單。
這只是一個非常簡單的晶體管設置。來自Radio shack的2N2222
現(xiàn)在我用幾個電阻器嘗試了一下,遇到了一些問題,所以我就沒有了。
請隨時對此進行糾正。
晶體管已這樣連接:
》來自數(shù)字端口的信號連接到晶體管的基極。
Arduino的電源通過鎖回并流到晶體管的集電極
,然后它的發(fā)射極從接地端流出。 Arduino
代碼非常簡單,它可以從串行端口獲取任何數(shù)據(jù)并將信號發(fā)送到端口,延遲然后結束信號。再次,非常簡單:
/*
測試到使用串行端口打開/關閉鎖
*/
int inByte = 0;
void setup()
{
//啟動serial
Serial.begin(9600);
pinMode(3,OUTPUT);
}
void循環(huán)()
{
//檢查是否連接
if(Serial.available()》 0)
{
inByte = Serial.read();
digitalWrite(3,HIGH);
delay(1000);
digitalWrite(3,LOW);
}
}
它看起來就像它選擇的任何串行數(shù)據(jù)在該端口上打開鎖的時間為1000毫秒。
非常簡單
步驟3:LockApp
現(xiàn)在我創(chuàng)建了一個應用程序并將其拆分為多個部分:
按鈕-按下按鈕,它將數(shù)據(jù)發(fā)送到Arduino以打開《條形碼-訪問條形碼掃描儀數(shù)據(jù)并檢查特定的代碼,如果看到則打開鎖。藍牙-使用WinMo手機,它通過藍牙串行連接獲取正確的數(shù)據(jù)。它會打開鎖
設置-您可以在其中告訴每個設備正在使用哪些COM端口。
每個設備都以相同的方式將數(shù)據(jù)發(fā)送到Arduino,
從設置菜單中拉出COM端口,
》打開連接,
發(fā)送數(shù)據(jù),
關閉端口
更新狀態(tài)
像這樣:
C#:
infoLabel1.Text =“ OPENING”;
嘗試
{
SerialPort port2 =新的SerialPort(lockCom.Text,9600);
port2.Open();
port2.Write(“ open”);
port2.Close();
為(int i = 0;我《100; i ++)
{
infoLabel1.Text =“ OPEN”;
}
infoLabel1.Text =“ LOCKED”;
}
catch(System.Exception exp)
{
infoLabel1.Text =“連接問題”;
}
因此在按鈕Tab上,如果您單擊“打開”,請運行上面的代碼。
步驟4 :條形碼
現(xiàn)在在“條形碼”選項卡上,該代碼首先將條形碼掃描器稱為Symbol CS1504
Motorola為此模型提供了c ++ SDK,但我沒有感覺像是要轉換或處理它,因此我查找了已經完成的C#庫,我發(fā)現(xiàn):http://boss.bekk.no/display/BOSS/BarcodeLibrary
該庫使用起來非常簡單:
try
{
BarcodeLibrary.BarcodeFunctions條碼=新的BarcodeLibrary.BarcodeFunctions(barscanCom.Text);
條碼。Interrogate();
列表scandCodes =新List();
ScanningCodes =條碼.GetBarcodes();
如果(scannedCodes.Count!= 0)
{
TESTCODE = ScandCodes [0] .Code;
條碼.ClearBarcodes();
如果(CODE = = TESTCODE)
{
bsLabel.Text =“ ACCEPTE D“;
SerialPort端口=新的SerialPort(lockCom.Text,9600);
port.Open();
port.Write(” open“);
port.Close();
for(int i = 0;我《100; i ++)
{
infoLabel2.Text =“ OPEN”;
}
infoLabel2.Text =“ LOCKED”;
}
else
{
bsLabel.Text =“ DENIED”;
}
}
else
{
bsLabel.Text =“未檢測到代碼”;
}
}
catch(System.Exception exp)
{
bsLabel.Text =“條形碼掃描儀問題”;
}
它調用掃描儀并檢索保存在掃描儀上的JUSTTHEFIRST CODE(我懶惰地搜索它們)一旦找到它,它就會刪除所有保存的代碼。
然后進行比較,如果它是有效的,它將使用前面解釋的代碼(懶惰地使其變成函數(shù))來打開鎖。
非常容易。
步驟5:藍牙和BlueLock
現(xiàn)在輪到藍牙了,我為Windows Mobile創(chuàng)建了一個非常簡單的程序當您點擊send時,它會要求COM端口提供藍牙并向其發(fā)送數(shù)據(jù)。
一旦您點擊了名為blueLock
的此代碼的send,您便會在PC上點擊“掃描并打開”,它將掃描數(shù)據(jù)從設備中打開
blueLock Windows Mobile代碼:
公共Form1()
{
InitializeComponent();
字符串[]端口= SerialPort.GetPortNames();
comboBox1.Items。 Add(“未選擇端口”);
for(int i = 0;我 comboBox1.Items.Add(端口[i]);
comboBox2.Items.Add(“未選擇端口”);
for(int i = 0; i comboBox2.Items.Add(ports [i]);
}
私有void button1_Click(對象發(fā)送方,EventArgs e)
{
SerialPort端口=新的SerialPort(comboBox1.SelectedItem。 ToString(),9600);
port.ReadTimeout = 1000;
port.Open();
port.Write(“ Test”);
port.Close();
}
lockApp的藍牙代碼:
私有無效btButton_Click(對象發(fā)送者,EventArgs e)
{
btLabel.Text =“掃描”;
嘗試{
SerialPort端口=新的SerialPort (btInputCom.Text,9600);
port.Open();
藍色= port.ReadByte();
port.Close();
如果(藍色!= 0)
{
btLabel.Text =“成功!”;
SerialPort端口2 =新的SerialPort(lockCom.Text,9600);
port2.Open();
port2.Write(“ open”);
port2.Close();
}
else
{
btLabel.Text =“ ERROR”;
}
}
catch(System.Exception exp)
{
btLabel.Text =“條形碼掃描儀問題”;
}
}
步驟6:結束
這背后的想法是簡單,正如您希望的那樣更好地了解Arduino,藍牙,條形碼,串行連接和硬件通信
責任編輯:wv
-
電子鎖
+關注
關注
3文章
115瀏覽量
24048 -
Arduino
+關注
關注
187文章
6461瀏覽量
186534
發(fā)布評論請先 登錄
相關推薦
評論