电子说
第1步:零件
首先您需要一个Arduino,我用了Diecimila,但任何类型都可以。
我使用的锁是La Gard ENV 1300型锁,我在EBay上花了10美元买了6个这样的锁。
你不能只使用任何类型的锁,像普通的门锁,它必须是电子锁。
它需要在按以下方式进行操作:在此锁内有一个锁舌,现在使锁舌保持闭合的是一个非常简单的电磁体。 通过此电磁体通电时,它可以打开锁。如果内部没有此简单的电磁体,则它将不起作用。一个简单的使用钥匙,大头针和弹子的门锁将不起作用。
我在其中包括锁内部的图片,在其中您可以看到它的工作原理:电源进入电磁体,该电磁体将销子拉回并释放,释放楔子。从理论上讲,您可以创建自己的电磁锁,或者使用简单的电动机或其他工具,但这又是不同的指示。
您还需要一个基本的晶体管:从Radio shack购置的2N2222
现在,如果您想通过其他方式(而不是仅通过计算机)打开它,则是:蓝牙电话,我正在将Touch Pro与Windows Mobile一起使用
条形码扫描仪,我正在使用Symbol CS1504
在上一张图片中看到一个门把手,该门把手的底部粘有一个木制方形旋钮,以适合锁上的方形钉,用于打开锁。
步骤2: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以打开《条形码-访问条形码扫描仪数据并检查特定的代码,如果看到则打开锁。蓝牙-使用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 :条形码
现在在“条形码”选项卡上,该代码首先将条形码扫描器称为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
现在轮到蓝牙了,我为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
全部0条评论
快来发表一下你的评论吧 !