PROIECTE 2011
Proiectele realizate in cadrul Laboratorului de SMP, 2011, le gasiti mai jos, Fiecare echipa are de completat in pagina WIKI corespunzatoare proiectului sau capitolele existente.
Punctaj Proiect
-
2p Pagina Wiki in format HTML cu capitolele create - poze(diferite stadii ale proiectului) + schema hardware + listing software (microcontroller + OpenWatcom la Z3)
-
5p Functionalitate proiect - punctaj in functie de cerintele cerute/realizate
-
1p Calitatea proiectului - cat de organizati ati fost in realizarea acestuia, cod format frumos, optimizari etc...
-
2p Nota individuala - participarea voastra in proiect, raspunsul vostru la intrebarile laborantului la presentarea proiectului
Cerinte general valabile:
- Toate proiectele se vor integra software si/sau hardware cu placa EV/Z3. Pentru integrarea hardware se va folosi portul serial al placii EV/Z3
- Logica software de baza se va regasi pe placa EV/Z3 si va fi realizata în C + inline assembly folosind template-ul OpenWatcom de la laborator
- Pagina de wiki trebuie sa contina o descriere a ce a realizat fiecare student in cadrul proiectului
- Daca nu puneti pe site alta schema de proiectare hardware se va folosi cea cu PIC16F628A pusa la dispozitie
- Wiki-ul trebuie updat ca sa vad stadii intermediare ale proiectului
Elemente de electronica
-
Pentru a vedea/comanda un pret estimativ a componentelor va propun www.conexelectronic.ro . Mi-a fost recomandat si mie de ceilalti laboranti.
-
Pentru conectarea la porturile de I/O trebuie sa izolati galvanic folosind optocuploare, ex LTV817 - puteti sa cautati pe site, si rezistente sa limiteze curentul maxim la 5mA U=R*I si trebuie avut in vedere ca rezistentele sa reziste la puterea la care e proiectat circuitul P=U*I...
-
Pentru alte elemente elecronice puteti folosi diode 1N4007, tranzistori BD139/140 de putere mare. Binenteles ca nu sunteti limitati la folosirea acestora, e doar o propunere.
-
Letconul ar trebui sa aiba cam 40W , nu mai mult de 60 oricum , iar fludorul la 1mm-1.5mm. Sa aveti si un voltmetru cu voi.
-
Va recomand inainte sa alegeti proiectul sa cititi cateva elemente de electronica de AICI.
2011_P12
(Restore this version)
Modified: 7 April 2010, 8:25 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
/****************************************************************************
*
* 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); // se citeste caracterul daca ne afla in starea
//de alarma activata
if(buffer[0]=='l')//'l' indica senzorul neactivat
{
kIo.DisplayString(alt);} // se afiseaza mesajul
if(buffer[0]=='a'){ //daca s-a activat senzorul
alarmactiv=3; //3 -stare de alarma activata
}
}
else if(alarmactiv==0) //daca alarma e oprita starea 1
{
while(alarmactiv==0)
{
kIo.DisplayString(pr); //afiseaza textul corespunzator starii
for(i=0;i<=3;i++)
{key = kIo.ReadKey();
cifru[i]=convert(key);
kIo.DisplayString(cifru);
nr=(cifru[i]-'0')+nr*10;
} //se citeste codul
if(nr==valid) //daca codul este valid
{alarmactiv=1;
nr=0;
}
else
{nr=0;
}
}
}
else if(alarmactiv==2) //daca alarma s-a declansat
{
kIo.DisplayString(buz); //se afiseaza alarma declansata stare 2
while(alarmactiv==2)
{
for(i=0;i<=3;i++) //se citeste codul
{key = kIo.ReadKey();
cifru[i]=convert(key);
kIo.DisplayString(cifru);
nr=(cifru[i]-'0')+nr*10;
}
if(nr==valid) daca este corect se trece in starea de alarma pornita
{alarmactiv=1;
nr=0;
}
else
{nr=0;
}
}
}
else if(alarmactiv==3){
{
kIo.DisplayString(afis);//daca alarma este activata
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) //daca codul este corect alarma se opreste
{alarmactiv=0;
nr=0;
k=0;
aa=1;
}
else{
k++;
}
}
if(k==3) //daca s-a gresit de trei ori se declanseaza alarma
{alarmactiv=2; //alarma delansata
nr=0;
k=0;
}}
}
}
}
Codul microcontrollerului:
#include <16f628A.h>
#include <stdio.h>
#use delay (clock=4M)
#use rs232 (xmit=pin_B2,rcv=pin_B1,baud=9600,PARITY=N,BITS=8,STOP=1)
void main(){
while(TRUE){ //daca se primeste semnal pe portul 18 se //trimite caracterul a-a detectat prezenta daca nu se trimite l-liber
if(input(PIN_A0))putc('a');
else putc('l');
}
}
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
16 Aprilie-am achizitionat piesele
10 Mai-am terminat softwareul pentru EV/Z3
17 Mai-placuta terminata