Introducere


Proiectul consta in realizarea unui sistem de securitate destinat locuintelor personale. Am ales acest proiect datorita cererii din ce in ce mai mari de sisteme de securitate ieftine si usor de utilizat. Initial ne-am gandit la avertizarea proprietarului prin SMS, dar datorita unei eventuale congestii, am ales sa folosim protocolul TCP tinand cont si de faptul ca majoritatea locuintelor sunt conectate la Internet.
Capturarea de informatii din mediu privind orice miscare ce poate constitui un pericol se va realiza prin intermediul unui senzor PIR. In momentul detectiei, se trimite un mesaj de alarma cu ajutorul unui modul Ethernet catre un alt computer, a carui adresa IP se configureaza la pornirea sistemului cu ajutorul unei tastaturi. Mesajul va contine si ora la care s-a produs miscarea si va fi trimis sub forma unui pachet TCP.
Pe viitor dorim sa imbunatatim sistemul prin adaugarea unei camere video si a unui dispozitiv audio pentru monitorizare in timp real si folosirea a doua module Ethernet pentru o comunicatie duplex intre doua asemenea sisteme.

Descriere generală

Schema bloc de interactiune a modulelor hardware:
Module Descriere module si interactiunea dintre acestea:

Intregul sistem este bazat pe protocolul TCP, functionand atat ca un server, cat si ca un client.
De asemenea, prin intermediul LCD-ului si Keypad-ului se pot face configurarile initiale detaliate mai jos. La pornire, sistemul functioneaza ca un server TCP, asteptand comenzi de la utilizator. Conectarea prin retea la sistem se face prin parola. Cand este detectat un pericol de catre PIR, sistemul trece in modul client si incepe sa trimita mesaje de alarma.
Se construiesc pachete TCP (descrise mai jos) care vor contine mesajul de alarma, precum si ora exacta la care s-a declansat alarma (aceasta valoare este returnata de catre timekeeper). Ele sunt trimise cu ajutorul modulului Ethernet catre computerul cu adresa IP destinatie configurata initial. Aceste pachete vor fi trimise pentru 5 minute. Dupa acest interval de timp, sistemul revine in modul Server si asteapta blocarea alarmei. Daca dupa 10 minute nu s-au primit comenzi de pe computerul destinatie sau nu s-a oprit alarma din sistem se reia procesul de trimitere mesaje. Altfel, sistemul ramane in modul server si asculta modulul PIR pentru detectarea unei alte alarme.

Microcontroller (ATMega16)
Reprezinta piesa centrala a sistemului avand rol de gestiune a celorlalte componente si prin acesta se vor primi/trimite comenzi catre celelalte module.

Modul Ethernet (WIZ810MJ)
Asigura comunicatia cu Internetul, in cazul nostru comunicatia cu computerul prin care se supravegheaza locuinta. Acesta are implementata stiva TCP/IP si permite o programare usoara datorita suportului pentru socketi. In cazul in care nu se va putea procura acest modul (nu exista in tara) vom folosi modulul ENC28J60.

Senzor PIR
Acesta este folosit pentru a detecta o miscare si se bazeaza pe caldura emanata de corpul uman.

Timekeeper
Este folosit pentru a cunoaste ora la care s-a detectat miscare in mediul supravegheat.
Configurarea acestuia (ora si data) se realizeaza la pornirea sistemului.

LCD & Tastatura
Prin intermediul interfetei LCD si a tastaturii se fac configurarile initiale:

  • Introducere parola
  • Introducere ora si data curente
  • Configurare IP: adresa IP, masca de retea, default gateway,adresa MAC si adresa IP destinatie (adresa la care se trimit semnalele de alarma)

Diagrama de functionare a sistemului:
Diagrama

Hardware Design

Lista de piese:

  • Modul Ethernet: WIZ810MJ (in cazul imposibilitatii procurarii acestei piese se va folosi ENC28J60)
  • Microcontroller: ATmega16
  • Senzor PIR
  • Timekeeper: DS1302
  • 2 x Condensator 22pF (dar pana la urma s-a folosit montajul pentru oscilator de pe placuta de programare)
  • Oscilator 7.3728MHz
  • Oscilator pentru timekeeper 32.768kHz
  • LCD 2×16
  • Tastatura 16 keys


Schema electrica:
Schema bloc

Simulare Proteus:
Datorita complexitatii realizarii unei simulari a sistemului (necesitatea folosirii mai multor masini virtuale) si a lipsei tuturor pieselor componente in librariile Proteus, simularea nu a putut fi realizata.

Software Design


  • Limbaj de programare: C
  • Mediu de dezvoltare si compilare: CodeVisionAVR

Comunicarea intre sistem si computerul care gestioneaza sistemul prin retea se face prin pachete TCP cu urmatoarea structura:

 TCP format

Dupa cum s-a precizat anterior, sistemul va avea doua moduri de functionare:

  • Modul Server

In acest mod utilizatorul se poate conecta la sistem in urma introducerii unei parole. Se poate seta IP-ul utilizatorului, acest feature fiind necesar pentru cazul in care utilizatorul isi schimba locatia. Tot in acest mod, utilizatorul poate opri alarma si poate da o comanda de aprindere lumini pentru initimidarea intrusului. Aceasta facilitate permite conectarea instalatiei de iluminat a locuintei la sistem.

  • Modul Client

Trecerea in acest mod se face la detectarea unei miscari in mediul supravegheat. Sistemul se conecteaza la adresa IP setata initial si trimite mesaje TCP de alerta.

Pe sistemul remote, utilizatorul poate vizualiza si trimite pachete TCP sistemului prin intermediul unui soft de monitorizare trafic in retea: Hercules, Ethereal, Wireshark.
Vom folosi Hercules deoarece poate functiona atat ca server cat si ca un client TCP si este facil de utilizat. In limita timpului disponibil, vom realiza un soft care in momentul primirii unei anumit pachet TCP pe sistemul remote, va trimite un email de avertizare utilizatorului. Acest lucru poate fi util in momentul in care nu exista un supraveghetor permanent.

Se vor implementa functii pentru:

  • comunicarea TCP
  • formare pachete TCP cu mesaje predefinite folosite in comandarea sistemului de la distanta si trimiterea mesajelor de alarma
  • lucrul cu interfata SPI
  • comunicarea cu dispozitivul LCD
  • preluarea datelor de la Keypad

Surse şi funcţii implementate:
Implementarea s-a realizat in CodeVisionAVR datorita existentei unor biblioteci pentru componentele utilizate in proiect (ds1302.h), interfatarea cu lcd-ul se face mult mai usor(Lcd.h).
Functii implementate:

  • void initialize() : se seteaza parametrii de comunicatie: 8 Data, 1 Stop, No parity ; Pinii I/0
  • void setGAR (unsigned char * addr): setare default gateway placuta
  • void setSUBR(unsigned char * addr): setarea masca de retea
  • void setSHAR(unsigned char * addr): setarea adresa MAC
  • void setSIPR(unsigned char * addr): setare IP placuta
  • void wiz_wr(unsigned int address, unsigned int targetValue): scrie in registrii modulului Wiznet folosind functia spi_tranfer
  • unsigned char wiz_rd(unsigned int address): citeste din reg Wiznet folosind spi_transfer
  • unsigned char spi_transfer(volatile unsigned char data) : incepe o transmisie SPI, asteapta terminarea ei si returneaza datele citite
  • functii de comunicatie TCP: open_socket(), listen_tcp, connect_tcp, transmit(), disconnect, receive() etc
  • void store(unsigned char *src,unsigned char *dest,unsigned char size) : copiaza datele dintr-un buffer in altul (folosita pentru memorarea datelor introduse prin keypad : ora si data, parola, setari IP etc)
  • void main(): este implementata diagrama de functionare descrisa mai sus, facandu-se trecerea prin starile mentionate

Rezultate Obţinute (etapa 3)


VIDEO proiect:

IMAGINI proiect: Hardware
Hardware2
Hardware_wiz
Hardware_wiz
Aplicatia Hercules:
TCP_client
TCP_server

Din fericire, proiectul a fost realizat in totalitate 8-). Dificultati intalnite:

  • piesele necesare proiectului au fost greu de procurat (timekeeper, PIR, modulul Wiznet a fost comandat din Germania)
  • nu am reusit sa gasim PIR cu output TTL, dar am scos semnalul din circuitul unui PIR cu legare la releu (de pe pinul led-ului montat pe PIR si am inversat in cod valoarea pinului pe care este montat PIR-ul)
  • interfatarea cu keypadul a trebuit ajustata prin cod (tastele erau shiftate)
  • singurul timekeeper gasit a fost in varianta SMD ( greu de lipit :p ; a trebuit sa imprimam un circuit special pentru acesta )
  • modulul Wiznet avea un header de dimensiuni mai mici si de a aceea a trebuit sa improvizam cu sloturi speciale pentru a putea sa il montam pe placuta de test
  • am incercat sa facem o schema de convertire tensiune de la 5v la 3.3v pentru Wiznet alimentand de la USB, dar pana la urma am folosit un stabilizator 5v → 3.3v TS1085

Concluzii (etapa 3)

In ciuda problemelor intalnite si a timpului destul de mare alocat proiectului, in cele din urma s-a dovedit a fi o experienta placuta din care am invatat multe lucruri.

Imbunatatiri ulterioare ale proiectului:

  • realizarea unei aplicatii Linux care sa trimita mail sau sms in momentul primirii unui mesaj TCP de informare a activarii alarmei
  • dezvoltarea proiectului astfel incat sa poata fi conectati mai multi senzori de miscare
  • adaugarea unei camere web pentru a putea prelua imaginii in momentul activarii alarmei
  • probabil partea hardware va fi refacuta daca vom gasi sloturi si pini “mama” corespunzatori pentru un aspect mai placut al proiectului.

Pentru detalii legate de codul sursa, mail la una din adresele de mai jos.

CONTACT:

  • octavian_sima@yahoo.com
  • eholobiuc@gmail.com

Bibliografie/Resurse

pm/pm/prj2009/cb/ethernet_secure_system.txt · Last modified: 2020/02/14 00:57 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0