Back

2011_P12

Viewing page version #9
(Restore this version) 

Modified: 6 April 2010, 12:21 PM   User: Florin Ilarion Miertoiu  → FM

Sistem de securitate

Project Description

In cadrul acestui proiect se doreste implementarea unui sistem de alarma.

Acest sistem se activeaza atunci cand detecteaza miscare,si daca se introduce de 3 ori gresit parola alarma se declanseaza.In aceast proiect senzorul de miscare trimite un semnal catre un microcontroler.In functie de semnalul primit  microcontrolerul va trimite pe seriala catre placa EV/Z3 un caracter.

Placa va procesa acest caracter printr-ujn program incarcat in aceasta si il va trece in starea de alarma activata daca se detecteaza miscare.Pentru acest proiect se va folosi un senzor de miscare,un microcontroler si placuta EV/Z3.

Project Requirements

Se foloseste o placa cu un microcontroler PIC16F628A. La ea se conecteaza  senzorul de miscare.

Placa EV/Z3 are un cod intern pentru activarea alarmei. Va trimite un caracter prin seriala PIC-ului informand daca alarma a fost activata sau nu.

In caz ca senzorul e activat, PIC-ul va trimite inapoi un caracter placii EV/Z3 determinand activarea alarmei. Placa va afisa pe LCD: "Alarma activata".

Pentru dezactivarea alarmei se va apasa acelasi cod de 4 cifre.

Daca se gresete codul de trei ori alrma se activeaza si va afisa "Alarma declansata".

User Flow

Alarma este implementata ca un automat finit de stari.Are 4 stari:

Alarma oprita

Alarma pornita

Alarma activata

Alarma declansata

Alarma se porneste prin introducerea codului de 4 cifre si trece in starea de alarma pornita.Cand detecteaza miscare aceta trece in starea de alarma activata.Daca se introduce parola corect alarma trece in starea de alarma pornita.Daca se introduce parola gresit de 3 ori alarma se declanseaza.Din aceasta stare alarma trece in starea de alarma oprita prin introducerea corecta a codului.Utilizatirul poate introduce parola de la tastatura placii,iar pe display se va vede starea alarmei.

 

Required components

Componentele pe care le-ati folosit:

Lista componente:

Cod Schema Cod Piesa (de cumparat)
R1-R3 3x RW25CF 4.7K (250 mW)
R4 1x RW25CF 100R (250 mW)
R5-R6 2x RW25CF 100K (250 mW)
C1-C2 2x CML 22pF 50V C0G
C3-C7 5x CE 1.0uF 63V 105C Fujicon
C8-C9 2x CML 47nF 50V Y5V P2.5
B1 1x TS-06E (TS-3) (tact switch)
X1 1x Q20.000 MHz HC-49S
PIC16F628A 1x PIC16F628A-I/P
MAX232 1x MAX232N
LM7805 1x 7805
soclu 18 pini pt PIC+MAX 2x LC18
placa test 50x100 pastile, sau mai mica 1x placa test 50x100
2 mufe DB9(corect e DE9) TATA 2x DB9PF

 

 

 

 

 

 

 

 

La aceste componente se adauga senzorul de miscare ce se conecteaza la un pin al microcontrollerului.


Pe schema senzorul este reprezentat ca un buton,insa modeul de conectare este asemanator pentru senzor.

Piesele necesare:

Din platform.h se folosesc functiile :

kIo.DisplayString - pentru afisarea sirului de caractere pe display-ul placutei.

kIo.SerialRead -pentru a citi de pe seriala un caracter.Caracterul se citeste in starea de alarma pornita.

kIo.ReadKey - citeste un caracter de la tastatura placutei.

 

Software Design

Se va folosi OpenWatcom pentru crearea programului ce se va introduce pe placuta:


/****************************************************************************
*
*               Laborator SMP - 80386EX Z3/EV Real Mode
*
*    Portions Copyright (c) 2010 Mihai Matei. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Apache License,
*    Version 2.0 (the "License"). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at http://www.apache.org/licenses/LICENSE-2.0
/>*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  Entry point for SMP z3/EV Project
llll*
****************************************************************************/

#include "platform_io.h"

const char *pr = "Proiect Alarma   ";
const char *afis ="Alarma Activata";
const char *alt="Alarma Pornita";
const char *buz="Alarma Declansata";
char convert(int key){
static char cod[19]={'0','2','4','6','8','A','C','E','~','<','1','3','5','7','9','B','D','F','>'};
return cod[key];
};

static SerialConfig serialConf;

unsigned char buffer[1];

int main()
{
int aa;
int alarmactiv;

int k;
char cifru[4];
int nr=0;
int valid=8675;
int i;
char key;
buffer[0]='l';
alarmactiv=0;



serialConf.baudRate   = b9600;
serialConf.parity     = none;
serialConf.stopBits   = one;
serialConf.wordLength = eight;

kIo.SerialInit(&serialConf);

while (1){
if(alarmactiv==1){
kIo.DisplayString(alt);
kIo.SerialRead(COM1, buffer, 1);
if(buffer[0]=='l')
{
kIo.DisplayString(alt);}

if(buffer[0]=='a'){
alarmactiv=3;
}
}

else if(alarmactiv==0)
{         
while(alarmactiv==0)
{
kIo.DisplayString(pr);
for(i=0;i<=3;i++)
{key = kIo.ReadKey();

cifru[i]=convert(key);
kIo.DisplayString(cifru);
nr=(cifru[i]-'0')+nr*10;
}
if(nr==valid)
{alarmactiv=1;
nr=0;
}
else
{nr=0;
}
}  
}
else if(alarmactiv==2)
{
kIo.DisplayString(buz);
while(alarmactiv==2)
{
for(i=0;i<=3;i++)
{key = kIo.ReadKey();

cifru[i]=convert(key);
kIo.DisplayString(cifru);
nr=(cifru[i]-'0')+nr*10;
}
if(nr==valid)
{alarmactiv=1;
nr=0;
}
else
{nr=0;
}
}

}
else if(alarmactiv==3){
{
kIo.DisplayString(afis);
aa=0;
while((k<3) && (aa==0)){

for(i=0;i<=3;i++)
{key = kIo.ReadKey();

cifru[i]=convert(key);

kIo.DisplayString(cifru);
nr=(cifru[i]-'0')+nr*10;
}
if(nr==valid)
{alarmactiv=0;
nr=0;
k=0;
aa=1;
}


else{
k++;
}
}
if(k==3)
{alarmactiv=2;
nr=0;
k=0;

}}
}




}
}

Results

O imagine de ansamblu a cum functioneaza proiectul, screenshoturi, filmulete cu proiectul functionand. Alte detalii care le credeti importante.

Download

Arhiva cu schema hardware + cod microcontroller + tot proiectul OpenWatcom.

Arhiva va contine 2 directoare (1 singur pentru proiecte doar software)

Hardware design - schema uC + codul folosit pentru a genera fisierul .HEX

Software design - template-ul Open Watcom folosit

Status

O pagina in care sa updatati saptamanal cum stati cu proiectul. Sa spuneti ziua in care ati realizat diferite componente

Eg

1 Mai - board finaly done

15 Mai - board working - starting to write EV/Z3 software part