GSM сигнализация

7 октября 2007  |  GSM сигнализация





GSM сигнализация на процессоре предназначена для передачи тревожного СМС сообщения при срабатывании одного из двух датчиков.

Помимо обработки состояния датчиков, микропроцессор формирует сигнал тревоги с помощью сирены.

Питание системы осуществляется от источника напряжения 12В.


GSM сигнализация

Рис.1.

Текст программы микропроцессора приведен ниже.
// Programmname: sms1 .c
// c"2001 by Wendt and KastI, Berlin Jun 2001
// Der Messagetext wird PDU-Codiert.
//lnfos zum PDU-Mode bei www.nobbi.com
// Details zur SMS bei www.etsi.org
// In dieser Form lautet die Nachricht:
//"Achtung Einbruch! Ausgeloest
// wurde(n) Sensor xxx". In Abhaengigkeit
//der ausgeloesten Sensoren wird
//xxx durch "1 ","2 ", oder "1+2" ersetzt.

#include //kompat. m.16F84
#include
#include "villa.h"
#FUSES XT, NOPROTECT
#use DELAY(CLOCK=4000000)
#use RS232 (Baud=2400, Xmit=PIN_17, Rcv=PIN_18)
#BYTE PORT_B=6

int ctrl_z = 26; // Zum Beend.d.SMS

void sendhandy(int sensor)
{
delay_ms(1000);
puts(""); // cr/lf zur Baudratenerkennung
//durch das Handy
delay_ms(2000);
puts("atz"); // Modem zuruecksetzen
delay_ms(2000);
puts("at+cmgf=0"); // benutze d. PDU-Mode
delay_ms(2000);
puts("at+cmgs=57"); // errechnete
//SMS-Laenge -> Modem
delay_ms(2000); // SMS mit SMSC-Nr.
// und Empfaengernr.
printf("0791947101670000"); // Header+
//SMS-Servicecenter +491710760000
printf("1100"); // 11 =Flag, 00=Reference
printf("0D91946190611294F1 ");
//Zieladresse+4916091621491 AENDERN"
//Fuellbyte F
printf("0000A830");//ld=00,Codesche
//ma=00,gueltig 2 Tage=A8, 48 Zeichen=30
printf("C1319A5E779F41 C5B45B2CAF8FD12
150B03E3F97D9E"); //MSG-Text
printf("FF29C0EBAD7E5E432CA9D024DC-
BEEF95BOE"); //MSG-Text

if(sensor==1){
printf("8A8140");
//"1 " }

if (sensor==2){
printf("928140");
//"2 " }

if (sensor==3){
printf("8AAD64");
//"1+2" }

putc(ctrl_z); // Ende der Uebertragung
}

main()
{

int ctrl_z = 26;
int i, j, k,
S, B, l, TX,
z, y, r, sn;
y=o;
TX=0;
r=0;

SET_TRIS_B(79);
SET_TRIS_A(255);
OUTPUT_HIGH(LED);

WD: // Scharfstellen nach 42 s mit Rogerbeep
1=0;
i=0;
j=0;

B = 0; //Signalspeicher. zuruecksetzen
S=0;

OUTPUT_LOW(Piezo);
OUTPUT_LOW(Sirene);

for (i = 0; i <= 7; i++) { delay_ms(5000);}

OUTPUT_HIGH(Piezo);

//Rogerbeep nach Ablauf der 40 s

delay_ms(2000);

OUTPUT_LOW(Piezo);

MRO:

// Sensorabfrage u. Signalspeicherung

if (!INPUT(IR))
&&(!INPUT(Sen2)) {
goto MRO;
}

if (INPUT(IR)) {
B=1;
}

if (INPUT(Sen2)) {
S=1;
}

MR1:

// Piezosummer aktivieren, Abbruch moeglich,
// Signalspeicherung (30 s)

OUTPUT_HIGH(Piezo);

delay_ms(2000);

OUTPUT_LOW(Piezo);

J = ++I;

if (B == 0)
&&(INPUT(IR)) {
B=1;
}

if(S==0)
&&(INPUT(Sen2)) {
S=1;
}

if (!INPUT(Taster)) {
goto MR4;
}

// Alarmabbruch bei Tastendruck > 3s

ifь<=14){
goto MR1;
}

1=0;
k=0;

MR2: // Sirene 1 min aktivieren

OUTPUT_HIGH(Sirene);

delay_ms(5000);

k = ++I;

if(k<= 12) {
goto MR2;}

OUTPUT_LOW(Sirene);

// fuer y>=4 wird keine SMS
//mehr gesendet

if(y>=4){
goto MP;}

l = 0;
k=0;

y = ++r; // Zaehler

if(TX==1)
&&(y <= 3) {
goto WD;
}

// 2. SMS nach 1. SMS u. y=3 senden

OUTPUT_HIGH(LED);

// SMS-LED vor 2. Aussendung ausschalten

delay_ms(1000); // SMS senden

if((B==1)&&(S==0)){
sn=1;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}

if((S==1)&&(B==0)){
sn=2;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}

if((S==1)&&(B==1)){
sn=3;
sendhandy(sn);
OUTPUT_LOW(LED);
// LED-Anzeige fuer gesendete SMS ein
}

TX= 1;

// SMS-Meldespeicher

MP:

// Nach einer 5 Min Pause

delay_ms(10000);

k = ++I;

if (k <= 29) {
goto MP;
}

l=0;
k=0;

goto WD;

// wird die Station erneut gestartet

MR4:

// Programmabbruch mit Rogerbeep

delay_ms(3000);

OUTPUT_HIGH(Piezo);

delay_ms(700);

OUTPUT_LOW(Piezo);

MR5:

OUTPUT_LOW(LEDA); // gelbe LED

blinkt nach Alarmabbruch

delay_ms(70);

OUTPUT_HIGH(LEDA);

delay_ms(2000);

if (!input(Taster)) {
r=0; y=0; TX=0; OUTPUT_HIGH(LED); goto
WD;}

//Programm-Neustart nach Abbruch

goto MR5;

}

// Programmname: Villa.h
// c"2001 by A.Wendt u. R.KastI / Germany /

Berlin-Charlottenburg

#define IR Pin_6

// Bewegungsmelder input aktiv high

#define Sen2 PIN_7

// 2. Sensor input aktiv high

#define Taster PIN_8

// Alarmabbruch input aktiv low

#define Sirene Pin_10

// Sirene Output aktiv high

#define Piezo PIN_11

// Piezosummer Output aktiv high

#define LED PIN_13

// SMS wurde gesendet(rt) Output aktiv low

#defineLEDAPIN_12

// Abbruch (gelb) Output aktiv low

Автор: www.etsi.org


Код для размещения на форумах или блоге

«
»