简易Arduino电子锁DIY图解

第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,蓝牙,条形码,串行连接和硬件通信


佰维存储荣膺“2023年度中国物联领航企业”
C语言实现见缝插圆游戏!零基础代码思路+源码分享
TOP224P构成的12V、20W开关直流稳压电源电路
性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
聚合物锂电池作为无人机的电池的优势分析
简易Arduino电子锁DIY图解
电梯门锁、检修、抱闸线圈、运行继电器回路原理解析
银行网点用智能微型断路器介绍
Vishay推出了业界首款获得AECQ101标准认证的穿透式光传感器
PCB油墨最为普遍使用的三个类型
5G商用来临之前还将面临哪些安全问题?
2023中国国际计量展部分参展商名单抢先看
台积电5纳米EUV芯片已开始生产 全球仅两家能做到
歌尔股份牵头制定全球首个近耳声学技术标准
陕西移动联合国内产业链数家单位成立“5G+智慧矿山产业联盟”
10大统计事实:排名前20的科学家大多从事人工智能
风力涡轮机正在走向数字化
苹果下调2019财年一财季营收预期 股价暴跌超8%
iQOO 11 Pro评测:骁龙8+200W闪充
LED防爆灯的安装需要注意什么