基于PIR传感器的SMS报警防盗。

本课题是一种基于PIR传感器的SMS报警防盗系统。该电路使用PIR传感器感知入侵,并在入侵发生时向给定的手机号码发送短信。发生的入侵数量也显示在LCD显示屏上。采用8051单片机对PIR传感器进行监控,并通过GSM模块发送告警信息。当入侵发生时也会发出警报。

PIR传感器。

PIR传感器是被动红外传感器。它用于探测和测量从一个源发出的红外辐射。PIR传感器是由氮化镓等热释电材料制成的传感器核心。它们只是根据落在上面的红外辐射的强度产生一种输出。在大多数情况下,一组这样的传感器核心被用来提高检测。众多的菲涅耳透镜以圆顶的形式排列在传感器表面,以聚焦传感器表面上的红外辐射。当PIR传感器前面发生移动时,落在PIR传感器上的IR辐射强度就会发生变化,传感器外的电传感器也会发生变化。传感器内部的电子电路检测到这种变化,并将PIR传感器的输出引脚拉出一段时间。通常输出引脚被拉高3到4秒。读这篇文章接口PIR传感器到8051

GSM模块。

GSM (Global Systems for Mobile communication)模块是一种可以接受SIM卡并在GSM网络中运行的设备。GSM模块可以在网络中执行各种任务,如发送消息、接受消息、拨打电话号码、接听电话、发送和接收语音信息、发送数字媒体等。简言之,GSM模块可以执行任何由模块本身和网络服务提供商支持的任务。网络实际上看到GSM模块就像一个移动电话。GSM模块的常用应用有家电交换设备、短信系统、语音邮件系统、传真系统等。

GSM模块–买家指南-你想买GSM模块吗?GSM模块有少量的产品变体,如SIM900, SIM300, SIM800等。我们创建了这个买家指南,以帮助您选择合适的GSM模块为您的项目需求。

带sms警报的防盗报警器-电路图

我们这里使用的GSM模块是基于SIM900 GSM芯片。读这篇文章GSM模块与8051接口

线路图。

带有短信警报的防盗报警器

GSM模块使用串行通信与8051通信。GSM模块的Tx引脚连接到微控制器的Rx引脚(引脚10),GSM模块的Rx引脚连接到微控制器的Tx引脚。PIR传感器的输出引脚连接到微控制器的P3.5。LCD模块的数据引脚(D0到D7)连接到微控制器的端口0。端口0的每个引脚使用10K x 8电阻网络上拉。8051的端口0为开漏,没有内部上拉电阻器。因此,我们需要外部上拉电阻器,以使其作为输出引脚正常工作。LCD模块的控制引脚(RS、RW和E)分别连接到微控制器的P2.7、P2.6和P2.5。我们在这里使用的LCD模块是JHD162A。读这篇文章,,接口LCD模块到8051.电阻R4用于设置显示的对比度。电阻R5限制通过显示屏背光LED的电流。

按钮开关S2、电容C11、电阻R6与复位电路相关联。使用电容C11来去除按钮开关的弹跳。C11实际上绕过了按下按钮开关时产生的振动。如果不使用C11,微控制器将读取按键时的所有振动,系统将执行多次复位。晶体X1和电容器C8, C10与时钟电路有关。本项目中串行通信使用的波特率为9600。所以晶体需要准确的11.0592 MHz来获得这个波特率。

微控制器2.0端口用于控制告警。P2.0通过电阻R7连接到晶体管Q1。R7限制Q1的基极电流。电阻R0 (10K)用于拉起P2.0引脚。继电器连接在Q1的收集器上。D5是一个自由流动二极管。它绕过继电器开关时产生的反电动势。如果不自由操纵,反电动势可能破坏晶体管甚至微控制器。12V蜂鸣器通过继电器常开触点连接。

程序。

PIR EQU P3.5//将P3.5等同于PIR RS EQU P2.7//将P2.7等同于RS RW EQU P2.6//将P2.6等同于RW E EQU P2.5//将P2.5等同于ORG 00H//原点MOV TMOD,定时器R1=Mode2定时器&定时器0=Mode1定时器MOV TH1,253D//将TH1加载为253D(9600波特)MOV SCON,#50H//将串行端口设置为模式1,且接收器启用的SETB TR1//启动定时器1 MOV DPTR,#LUT//加载具有LUT SETB P3.5起始地址的DPTR//将P3.5设置为PIR传感器CLR P2.0的输入端口//将2.0设置为报警MOV R7的输出端口,#00D//使用00D MAIN加载R7:ACALL DINT//调用DINT子例程ACALL TEXT1//调用TEXT1子例程ACALL LINE2//调用LINE2子例程ACALL TEXT2//调用TEXT2子例程ACALL TEXT3//调用TEXT3子例程ACALL SPLIT//调用SPLIT子例程ACALL NUM//调用NUM子例程此处:JNB PIR,此处//在此循环,直到PIR输出为高SETB P2.0//设置P2.0(报警开启)INC R7//增加R7(无:侵入)ACALL DINT//调用DINT子例程ACALL TEXT1//调用TEXT1子例程ACALL LINE2//调用LINE2子例程ACALL TEXT4//调用TEXT4子例程ACALL TEXT3//调用TEXT3子例程ACALL SPLIT//调用SPLIT子例程ACALL NUM//调用NUM子例程ACALL SMS//调用SMS子例程1:JB PIR,此处1//循环此处PIR输出为低CLR P2.0//清除P2.0(报警关闭)SJMP MAIN//跳转至主循环SMS:MOV A,#“A”//ascii的ACALL发送//将ascii码发送至GSM MOV A,#“T”//ascii的T ACALL发送//将ascii码发送至GSM MOV A,#0DH//ascii的/r ACALL发送//将ascii码发送至GSM ACALL DELAY1//调用DELAY1(1S)MOV A,#“A”//ACALL SEND的ascii//将ascii码发送到GSM MOV A,#“T”//ascii of T ACALL SEND//将ascii码发送到GSM MOV A,#“+”//ascii of+ACALL SEND//将ascii码发送到GSM MOV A,#“C”//ascii of C ACALL SEND//将ascii码发送到GSM MOV A,#GSM#“M”//ascii of M ACALL SEND//将ascii码发送到MOV A,#“G”//ascii of G ACALL SEND//将ascii码发送到GSM MOV A,#“F”//ascii of F ACALL SEND//将ascii码发送到GSM MOV A,#“=”///ascii of=ACALL SEND//将ascii码发送到GSM MOV A,#“1”//ascii of 1 ACALL SEND//将ascii码发送到GSM MOV A,#0DH//ascii of/r ACALL SEND//将ascii码发送到GSM ACALL DELAY1//调用DELAY1(1S)MOV A,#“A”//ascii的呼叫发送//将ascii码发送到GSM MOV A,#“T”//ascii的呼叫发送//将ascii码发送到GSM MOV A,#“+”///ascii的+ACALL发送//将ascii码发送到GSM MOV A,#“C”//ascii的呼叫发送//将ascii码发送到GSM MOV A,#“M”//ascii的呼叫发送//将ascii码发送到GSM MOV A,#“G”//ascii of G ACALL SEND//将ascii码发送到GSM MOV A,#“S”//ascii of S ACALL SEND//将ascii码发送到GSM MOV A,#“=”//ascii of=ACALL SEND//将ascii码发送到GSM MOV A,#34D//ascii of“ACALL SEND//将ascii码发送到GSM MOV A,#“+”//ascii of+ACALL SEND//将ascii码发送到GSM MOV A,#”9“//9 ACALL SEND的ascii/将ascii码发送到GSM MOV A,#”1/ascii of 1 ACALL SEND//将ascii码发送到GSM MOV A,#“9/ascii of 9 ACALL SEND//将ascii码发送到GSM MOV A,#”5/ascii of 5 ACALL SEND//将ascii码发送到GSM MOV A,#”4/ascii of 4 ACALL SEND//将ascii码发送到GSM MOV A,#”4”//ascii of 4 ACALL SEND//将ascii码发送到GSM MOV A,#“7”//ascii of 7 ACALL SEND//将ascii码发送到GSM MOV A,#“9”//ascii of 9 ACALL SEND//将ascii码发送到GSM MOV A,#“0”//ascii of 0 ACALL SEND//将ascii码发送到GSM MOV A,#GSM#“7”//ascii of 7 ACALL SEND//将ascii码发送到MOV A,#“9”//ascii of 9 ACALL SEND//将ascii码发送到GSM MOV A,#“3”//ascii of 3 ACALL SEND//将ascii码发送到GSM MOV A,#34D//ascii of“ACALL SEND//将ascii码发送到GSM MOV A,#0DH//ascii of/r ACALL SEND//将ascii码发送到GSM ACALL DELAY1//调用DELAY1(1S)MOV A,#//ascii of I ACALL SEND//将ascii码发送到GSM MOV A,#“n”//ascii of n ACALL SEND//将ascii码发送到GSM MOV A,#“t”//ascii of t ACALL SEND//将ascii码发送到GSM MOV A,#“r”//ascii of r ACALL SEND//将ascii码发送到GSM MOV A,#“u”//ascii of u ACALL SEND//将ascii码发送到GSM MOV A,#“d”//ascii of d ACALL SEND//将ascii码发送到GSM MOV A,#“e”//ascii of e ACALL SEND//将ascii码发送到GSM MOV A,#“r”//ascii of r ACALL SEND//将ascii码发送到GSM MOV A,#”!“//ascii of!ACALL SEND//将ascii码发送到GSM MOV A,#“!”//ascii of!ACALL SEND//将ascii码发送到GSM ACALL DELAY1//调用DELAY1(1S)MOV A,#1AH//CTRL+Z ACALL SEND//将ascii码发送到GSM ACALL DELAY1//调用DELAY1(1S)RET//从子程序发送返回:CLR TI//清除SCON MOV SBUF的TI标志,A//将A中的值移动到SBUF寄存器WAIT:JNB TI,WAIT//在此处等待,直到设置了TI标志。RET//从子程序SPLIT返回:MOV A,R7//将R7中的值移动到MOV B,#10D//用10D DIV AB加载B//用B除以A MOV R6,B//将余数移动到R6 MOV B,#10D//用10D DIV AB//除以A加载Bwith B MOV R5,B //moves the remainder to R5 MOV R4,B //moves the quotient to R4 RET //returns from subroutine TEXT1: MOV A,#"I" //ascii of I ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"N" //ascii of N ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"T" //ascii of T ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"R" //ascii of R ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"U" //ascii of U ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"D" //ascii of D ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"E" //ascii of E ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"R" //ascii of R ACALL DISPLAY //calls DISPLAY subroutine MOV A,#" " //ascii of SPACE ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"A" //ascii of A ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"L" //ascii of L ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"A" //ascii of A ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"R" //ascii of R ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"M" //ascii of M ACALL DISPLAY //calls DISPLAY subroutine RET //return from subroutine TEXT2: MOV A,#"S" //ascii of S ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"C" //ascii of C ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"A" //ascii of A ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"N" //ascii of N ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"I" //ascii of I ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"N" //ascii of N ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"G" //ascii of G ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"." //ascii of . ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"." //ascii of . ACALL DISPLAY //calls DISPLAY subroutine RET //return from subroutine TEXT3: MOV A,#"I" //ascii of I ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"N" //ascii of N ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"T" //ascii of T ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"R" //ascii of R ACALL DISPLAY //calls DISPLAY subroutine RET //return from subroutine TEXT4: MOV A,#"A" //ascii of A ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"L" //ascii of L ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"E" //ascii of E ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"R" //ascii of R ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"T" //ascii of T ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"!" //ascii of ! ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"!" //ascii of ! ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"!" //ascii of ! ACALL DISPLAY //calls DISPLAY subroutine MOV A,#"!" //ascii of ! ACALL DISPLAY //calls DISPLAY subroutine RET //return from subroutine NUM:MOV A,R4 //moves 1st digit to A ACALL ASCII //calls ASCII subroutine ACALL DISPLAY //calls DISPLAY subroutine MOV A,R5 //moves 2nd digit to A ACALL ASCII //calls ASCII subroutine ACALL DISPLAY //calls DISPLAY subroutine MOV A,R6 //moves last digit to A ACALL ASCII //calls ASCII subroutine ACALL DISPLAY //calls DISPLAY subroutine RET //return subroutine DINT:MOV A,#0FH //loads a with 0FH ACALL CMD //calls CMD subroutine MOV A,#01H //loads a with 01H ACALL CMD //calls CMD subroutine MOV A,#06H //loads a with 06H ACALL CMD //calls CMD subroutine MOV A,#81H //loads a with 81H ACALL CMD //calls CMD subroutine MOV A,#3CH //loads a with 3CH ACALL CMD //calls CMD subroutine RET //return from subroutine LINE2:MOV A,#0C0H //loads a with 0C0H ACALL CMD //calls CMD subroutine RET //return from subroutine CMD: MOV P0,A //loads P0 with A CLR RS //clears RS pin CLR RW //clears RW pin SETB E //sets E pin CLR E //clears E pin ACALL DELAY //calls DELAY subroutine RET //return from subroutine DISPLAY:MOV P0,A //loads P0 with A SETB RS //sets RS pin CLR RW //clears RW pin SETB E //sets E pin CLR E //clears E pin ACALL DELAY //calls DELAY subroutine RET //return from subroutine DELAY1:MOV R6,#15D //loads R6 with 15D BACK: MOV TH0,#00000000B //loads TH0 with 00B MOV TL0,#00000000B //loads TH0 with 00B SETB TR0 //starts Timer 0 HERE2: JNB TF0,HERE2 //loops here until TF0 is set (roll over) CLR TR0 //stops Timer 0 CLR TF0 //clears TF0 DJNZ R6,BACK //jumps to BACK label (loops 15 times) RET //return from subroutine DELAY: CLR E //clears E CLR RS //clears RS SETB RW //sets RW MOV P0,#0FFh //writes P0 with all 1's SETB E //sets E MOV A,P0 //moves P0 to A JB ACC.7,DELAY //jumps to label DELAY when ACC.7 is set CLR E //clears E CLR RW //clears RW RET //return from subroutine ASCII: MOVC A,@A+DPTR //overwrites A with ascii of data in A RET //return from subroutine LUT: DB 48D //ascii of 0 DB 49D //ascii of 1 DB 50D //ascii of 2 DB 51D //ascii of 3 DB 52D //ascii of 4 DB 53D //ascii of 5 DB 54D //ascii of 6 DB 55D //ascii of 7 DB 56D //ascii of 8 DB 57D //ascii of 9 END //END statement

笔记。

  • 市场上GSM模块有不同的电源电压,如12V, 9V, 5V等。我在这里使用的模块在12V DC上运行。因此,请确保您的GSM模块在正确的电源电压下运行。
  • 确保(GSM模块)的所有接地线。PIR传感器模块和其余电路)一起短路。

作者

1议论

  1. Garud

    谢谢Praveen,今天我学到了很多关于PIR传感器的知识。我对这个领域感到很困惑,但现在疑虑已经清楚了。

Baidu