微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用旧手机制作gsm远程报警器

用旧手机制作gsm远程报警器

时间:11-30 来源:互联网 点击:
这想法最初是在09年诞生的,后来百度一下,发现已经有人比我更早地想到,而且已经研发出来,看见以后,我顿时失去了兴趣。直到前两个月,某位朋友被小偷光顾,损失惨重。此刻,我意识到防盗器的重要性,尤其年关将至,鼠辈横行的时段,所以又重新点燃了我创造的欲望。今晚,花了几个小时终于制作完成。以下有全套制作教程,包括电路图和代码,希望有动手能力的朋友也尝试一下。同时,由于本人能力有限,设计存在很多缺陷,希望有高人多多指点不足之处,谢谢。

实现功能:当有人进入一定区域内,装置能自动拨打指定号码进行呼叫,当区域内的人持续不离开时,装置能连续呼叫3次,每次2分钟。例如:我外出时,假如有人进入了我的房间,装置就能自动拨打我的电话,我的电话就会响起,然后我就会采取相应的措施。
成品图

1. 原料清单:旧手机一台(能打电话就行),stc89c52单片机一块,5v继电器3个,1n4148二极管3个,1n4007二极管2个,9012三极管3个,8050三极管1个,11.0592晶振1个,20p独石电容2个,104独石电容1个,电解电容1000uf、470uf、0.1uf各一个 10uf两个,LM317三端稳压1个,200Ω、400Ω、1K电阻各一个。洞洞板一块,一个外壳(笔者的是路由器的外壳),一张0月租0低消的手机卡,热释红外感应模块一个。(成本100元以内)
一台旧手机,外壳已经拆掉


一个路由器的外壳


一张0月租0低消的手机卡


热释红外传感器


电子元件若干,详见上面清单。


电路图,单片机的P0口的前3个脚分别控制3个继电器,P1^4用来检测红外模块返回的信号。有的手机可用三极管代替继电器座开关,笔者手上的这台手机的按键设计有点怪,为了稳定起见,所以使用继电器。J1J2J3是手机的 按键。




这是LM317三端稳压电路,输出3.7v,用来给手机供电。手机长时间直接使用5v会烧坏。另外,要在手机正负极并联一个1000uf的电容。因为手机接受发射信号的时候电流峰值能达到2A


下面已经焊接完成,再把程序烧写到单片机中。(程序代码在最后)


再把它连接到手机的按键上。照片中手机按键上的三极管不是关键,可有可无,初衷是为了检车手机是否死机的。


在路由器的外壳是哪个打几个洞,安装铜柱。


铜柱螺丝若干


安装了铜柱的外壳


在路由器的盖子上挖一个洞,把红外传感器的透镜部分外露。然后用热熔胶粘牢。


大功告成


外表是一个路由器,实际上是一台防盗器,呵呵。下面附单片机程序:


笔者指定的电话号码已经保存在手机电话薄的第一个位置,
本例工程文件下载:http://www.51hei.com/f/gsdeng.rar
代码如下:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit D1 = P1^0;
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
uchar callnum;
void delay(uint num) //延时函数
{
uint i,j;
for(i=num;i>0;i--)
for(j=110;j>0;j--);
}
void key1()//按键1 手机的返回、电话薄键
{
D1 = 0; //按下
delay(500);//按下中
D1 = 1; //松开
delay(500); //不能直接按下一个键,所以唯有延时500毫秒
}
void key2()//按键2 手机的挂机、关机、开机键
{
D2 = 0;
delay(500);
D2 = 1;
delay(500);
}
void key3() //按键3 手机的接听键
{
D3 = 0;
delay(500);
D3 = 1;
delay(500);
}
void offon() //开关机
{
D2 = 0;
delay(5000);//按住5秒开机键可开关机
D2 = 1;
delay(10000); //等待进入

}
void call() //呼叫
{
key1(); //重复几次按返回键和挂机键,让未接来电和短信等提示信息消失
key2();
key1();
key2();
key1();
key2();
delay(10000);//延时等待手机提示框消失
key1();
key2();
key1();
key2();
delay(6000);//延时等待手机提示框消失
key1();//打开电话薄
key3();//按下呼叫键
}

void main()
{

callnum = 0; //变量赋初值
offon();
call(); //响一下手机,提示已经进入监控状态
delay(60000); //延时4分钟,红外模块需要1分钟的预启动时间,人走后需要2分钟的冷却时间,为了宽松点,共4分钟
delay(60000);
delay(60000);
delay(60000);

while(1)
{
if(D4 == 0)
{
call();
delay(60000);//每次呼叫两分钟
delay(60000);
callnum++; //每呼叫一次,变量加一
}
if(callnum == 3)
{
while(1);//连续呼叫3次后,就不再呼叫。
}
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top