在这篇文章中,我们将使用Arduino构建一个基于GSM的汽车安全系统,它可以通过你的手机向汽车发送密码短信来锁定和解锁汽车的点火系统和中央锁
通过
偷车可能会让人心碎;感觉就像你深爱的人被绑架了。当一辆你用了多年的旧车被偷时,你会更伤心。旧车和低档车可能经常被偷,因为它们提供的安全功能较低。
随着时代的进步,新的方法被发明来利用汽车,覆盖那些在主流和老汽车的漏洞可以花费大量的钱。
提出的项目可以增加另一层安全到你的车以便宜的价格,这可能会使你的车在某一天免于被偷。
该项目由GSM modem (SIM 800/900)和Arduino板组成,前者是项目的核心,后者是项目的大脑。
与Arduino板连接的继电器很少,可以启动和关闭汽车的点火和中央锁。
您需要一张有效的SIM卡和一个有效的SMS计划来运行这个项目,并尝试利用您的网络供应商提供的SMS服务来减少SMS费用。
下面我们来看看这个基于手机控制Arduino的GSM汽车中锁系统的电路图:
上面的电路很容易复制。GSM modem与Arduino的Tx和Rx pin接口。
Arduino的Tx连接GSM modem的Rx, Arduino的Rx连接GSM modem的Tx,即Tx到Rx, Rx到Tx。
Arduino与GSM modem之间也建立了接地连接。
电路中增加了一个9V的稳压器7809,为GSM modem和arduino板提供固定电压,因为在点火和充电时,电池电压会发生变化,超过12伏可能会损坏板。
Arduino的PIN # 7是中央锁和点火锁机制的输出。
Arduino汽车点火锁示意图:
二极管的连接是为了防止继电器由于反电动势而产生的高电压尖峰。
必须在输入端连接保险丝,因为短路可能会对汽车造成灾难性的损坏。
一个开关可以安装在阀帽内。它可以用来关闭电路,如果你不打算使用汽车超过一个星期,以避免电池耗尽。
注意:如果电路断开(使用开关),中央和点火锁被激活,您的车是安全的。
计划:
//---------------- 项目由R.Girish ------------//
Int temp = 0;
Int I = 0;
Int j = 0;
char str [15];
Boolean state = false;
const int LOCK = 7;
无效的设置()
{
Serial.begin (9600);
pinMode(锁、输出);
digitalWrite(锁、低);
(j = 0;j < 60;j + +)
{
延迟(1000);
}
以“在+ CNMI = 2, 2, 0, 0, 0);
延迟(1000);
以“在+ CMGF = 1”);
延迟(500);
以“在+发生= \”+ 91 xxxxxxxxxx \ " \ r ");//将x替换为手机号码
延迟(1000);
系列。println("Your car is ready to receive SMS commands.");//您要发送的短信文本
延迟(100);
以(char) 26);// CTRL+Z的ASCII码
延迟(1000);
}
无效循环()
{
如果(temp = = 1)
{
检查();
temp = 0;
我= 0;
延迟(1000);
}
}
空白serialEvent ()
{
而(Serial.available ())
{
如果(Serial.find (" / "))
{
延迟(1000);
而(Serial.available ())
{
char inChar = Serial.read();
str (+ +) = inChar;
如果(inChar = = ' / ')
{
temp = 1;
返回;
}
}
}
}
}
空白支票()
{
//--------------------------------------------------------------------------//
if(!(strncmp(str,"qwerty",6))) // (Password Here, Length)
//--------------------------------------------------------------------------//
{
如果(!)
{
digitalWrite(锁、高);
延迟(1000);
以“在+发生= \”+ 91 xxxxxxxxxx \ " \ r ");//将x替换为手机号码
延迟(1000);
系列。println(“中央锁:锁。”);//你想发送的短信
系列。println(“点火锁:锁。”);//你想发送的短信
延迟(100);
以(char) 26);// CTRL+Z的ASCII码
国家= true;
延迟(1000);
}
else if(状态)
{
digitalWrite(锁、低);
延迟(1000);
以“在+发生= \”+ 91 xxxxxxxxxx \ " \ r ");//将x替换为手机号码
延迟(1000);
系列。println(“中央锁:锁。”);//你想发送的短信
系列。println(“点火锁:锁。”);//你想发送的短信
延迟(100);
以(char) 26);// CTRL+Z的ASCII码
国家= false;
延迟(1000);
}
}
else if (! (strncmp (str,“状态”,6)))
{
以“在+发生= \”+ 91 xxxxxxxxxx \ " \ r ");//将x替换为手机号码
延迟(1000);
如果(!)
{
系列。println("系统正常工作");//你想发送的短信
系列。println(“中央锁:锁。”);//你想发送的短信
系列。println(“点火锁:锁。”);//你想发送的短信
}
如果(状态)
{
系列。println("系统正常工作");//你想发送的短信
系列。println(“中央锁:锁。”);//你想发送的短信
系列。println(“点火锁:锁。”);//你想发送的短信
}
延迟(100);
以(char) 26);// CTRL+Z的ASCII码
延迟(1000);
}
}
//---------------- 项目由R.Girish ------------//
注1:
用户上传到Arduino之前需要在代码中输入密码。
//--------------------------------------------------------------------------//
if(!(strncmp(str,"qwerty",6))) // (Password Here, Length)
//--------------------------------------------------------------------------//
将“qwerty”替换为你自己的密码,并将数字6改为你密码的长度。例如:
if(!(strncmp(str,"@rduino",7))) // (Password Here, length)
“@rduino”为密码,长度为7个字母。您可以放置数字、字母、特殊字符和这些字符的组合。密码区分大小写。
注2:
将代码中所有的" xxxxxxxxxxx "替换为车主的10位电话号码:
以“在+发生= \”+ 91 xxxxxxxxxx \ " \ r ");//将x替换为手机号码
如何使用手机短信来运作这个项目:
•向GSM modem发送/status/将向车主的电话号码发送关于当前锁状态的短信。
•发送正确的密码将切换中央和点火锁的状态。
以下是截图:
以上结果来自于测试的原型。
•向GSM modem中插入的SIM卡号发送/状态/,将向车主的电话号码发送关于锁当前状态的确认短信。
•在上述情况下发送正确的GSM modem密码/qwerty/是密码,这将解锁中央和点火锁。它也将发送一个确认短信如上所示。
•再次发送相同的正确密码将锁定中央和点火锁。
注3:密码以“/”开头,也以“/”结尾
注4:电路接通后请稍等一分钟左右。电路会向车主的手机号码发送一条短信,说“您的车已经准备好接受短信命令了”。只有这样你才能发送短信命令。
如果您对这个使用Arduino的GSM汽车点火锁,中央锁电路有任何具体的问题,您可以通过下面给出的评论框发送
默罕默德abubakar说
先生,我怎么能修改这个项目,因为IO想要…
当有人试图开门时,它会给我发信息。
其次,如果点火启动,它会再次发送我一个按摩,你的“汽车已经启动”,然后我将发送一个命令到我的手机,它打破汽车点火系统,停止偷车。于是强盗开始点火…汽车即使点火也不会有任何反应。
当我下次来的时候,我会再次发出开始的命令。所以继电器通电,通过钥匙系统手动启动终端…先生,请帮帮我。在编程和硬件方面
赃物说
穆罕默德,你可以试试下面的概念
//www.addme-blog.com/gsm-water-pump-controller-with-call/
并将继电器信号反馈改为车门开关反馈....而主继电器开关ON/OFF可以集成点火启动,或中央锁
abubakar说
else if (! (strncmp (str,“状态”,6)))
{
以“在+发生= " + 923412124417 " r ");//将x替换为手机号码
延迟(1000);
在这行之后它给出了一个错误(
退出状态1
期望在字符串常量之前有')'
)
赃物说
我又把代码抄了一遍。请现在检查并让我知道....
abubakar说
谢谢你,先生。现在工作正常了
赃物说
好,很好! !