简易Arduino电子锁DIY图解

电子说

1.3w人已加入

描述

第1步:零件

首先您需要一个Arduino,我用了Diecimila,但任何类型都可以。

我使用的锁是La Gard ENV 1300型锁,我在EBay上花了10美元买了6个这样的锁。

你不能只使用任何类型的锁,像普通的门锁,它必须是电子锁。

它需要在按以下方式进行操作:在此锁内有一个锁舌,现在使锁舌保持闭合的是一个非常简单的电磁体。 通过此电磁体通电时,它可以打开锁。如果内部没有此简单的电磁体,则它将不起作用。一个简单的使用钥匙,大头针和弹子的门锁将不起作用。

我在其中包括锁内部的图片,在其中您可以看到它的工作原理:电源进入电磁体,该电磁体将销子拉回并释放,释放楔子。从理论上讲,您可以创建自己的电磁锁,或者使用简单的电动机或其他工具,但这又是不同的指示。

您还需要一个基本的晶体管:从Radio shack购置的2N2222

现在,如果您想通过其他方式(而不是仅通过计算机)打开它,则是:蓝牙电话,我正在将Touch Pro与Windows Mobile一起使用

条形码扫描仪,我正在使用Symbol CS1504

在上一张图片中看到一个门把手,该门把手的底部粘有一个木制方形旋钮,以适合锁上的方形钉,用于打开锁。

步骤2:Arduino

Arduino

Arduino

Arduino的接线非常简单。

这只是一个非常简单的晶体管设置。来自Radio shack的2N2222

现在我用几个电阻器尝试了一下,遇到了一些问题,所以我就没有了。

请随时对此进行纠正。

晶体管已这样连接:

》来自数字端口的信号连接到晶体管的基极。

Arduino的电源通过锁回并流到晶体管的集电极

,然后它的发射极从接地端流出。 Arduino

代码非常简单,它可以从串行端口获取任何数据并将信号发送到端口,延迟然后结束信号。再次,非常简单:

/*

测试到使用串行端口打开/关闭锁

*/

int inByte = 0;

void setup()

{

//启动serial

Serial.begin(9600);

pinMode(3,OUTPUT);

}

void循环()

{

//检查是否连接

if(Serial.available()》 0)

{

inByte = Serial.read();

digitalWrite(3,HIGH);

delay(1000);

digitalWrite(3,LOW);

}

}

它看起来就像它选择的任何串行数据在该端口上打开锁的时间为1000毫秒。

非常简单

步骤3:LockApp

Arduino

Arduino

Arduino

Arduino

现在我创建了一个应用程序并将其拆分为多个部分:

按钮-按下按钮,它将数据发送到Arduino以打开《条形码-访问条形码扫描仪数据并检查特定的代码,如果看到则打开锁。蓝牙-使用WinMo手机,它通过蓝牙串行连接获取正确的数据。它会打开锁

设置-您可以在其中告诉每个设备正在使用哪些COM端口。

每个设备都以相同的方式将数据发送到Arduino,

从设置菜单中拉出COM端口,

》打开连接,

发送数据,

关闭端口

更新状态

像这样:

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 :条形码

Arduino

现在在“条形码”选项卡上,该代码首先将条形码扫描器称为Symbol CS1504

Motorola为此模型提供了c ++ SDK,但我没有感觉像是要转换或处理它,因此我查找了已经完成的C#库,我发现: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(我懒惰地搜索它们)一旦找到它,它就会删除所有保存的代码。

然后进行比较,如果它是有效的,它将使用前面解释的代码(懒惰地使其变成函数)来打开锁。

非常容易。

步骤5:蓝牙和BlueLock

Arduino

现在轮到蓝牙了,我为Windows Mobile创建了一个非常简单的程序当您点击send时,它会要求COM端口提供蓝牙并向其发送数据。

一旦您点击了名为blueLock

的此代码的send,您便会在PC上点击“扫描并打开”,它将扫描数据从设备中打开

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(对象发送方,EventArgs e)

{

SerialPort端口=新的SerialPort(comboBox1.SelectedItem。 ToString(),9600);

port.ReadTimeout = 1000;

port.Open();

port.Write(“ Test”);

port.Close();

}

lockApp的蓝牙代码:

私有无效btButton_Click(对象发送者,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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分