Documente Academic
Documente Profesional
Documente Cultură
monitoreo y registr a
distancia mediante una pgina web para los laboratorios de la UNEXPO. Con
el cual se espera dar una respuesta efectiva a la problemtica actual. Dicha
propuesta est basada en la investigacin y diseo de un sistema; el cual
est compuesto de un cdigo de apertura, monitoreo y registr a distancia en
un circuito de control.
Con el presente desarrollo se espera contribuir, en la solucin de los
problemas que actualmente padecen las universidades pblicas, que buscan
mejorar el resguardo de los equipos, bienes y servicios, mediante un control
seguro y efectivo. Por otro lado explicamos los objetivos planteados para las
mejoras del sistema en el transcurso del semestre. Las tareas, actividades
cumplidas, los elementos que se encuentran presente en todo trabajo
cientfico tecnolgico como planteamiento del problema, alcances,
limitaciones, delimitaciones, justificacin, entre otros aspectos importantes.
La investigacin est basada en un sistema informtico operativo,
manejado a distancia, controles y registros para promover la proteccin y
asegurar una alta confiabilidad en el manejo operativo, utilizando circuitos
electrnicos propios. Adems en este trabajo se encuentran las aplicaciones
de otras metodologas como el marco lgico y las experiencias para lograr el
financiamiento del proyecto que se presentaran a continuacin.
CAPITULO I
OBJETIVOS ESPECIFICOS
para
obtener
observaciones
del
DELIMITACIONES Y ALCANCE
monitoreo y registro a
CAPITULO II
Garca
(2009),
present
un
trabajo
que
todos
los
dispositivos
que
se
conectan
al
bus
tipos
de
componentes:
mdulos
de alimentacin de
la
red,
sistema
(operacin
de
un
interruptor,
movimientos, cambio de
FUNDAMENTOS TERICOS
Arduino
Es una plataforma de hardware libre, basada en una placa con
un microcontrolador y un entorno de desarrollo, diseada para facilitar el uso
de la electrnica en proyectos multidisciplinares. Arduino puede tomar
informacin del entorno a travs de sus entradas analgicas y digitales,
puede controlar luces, motores y otros actuadores. El microcontrolador en la
placa Arduino se programa mediante el lenguaje de programacin Arduino
(basado en Wiring) y el entorno de desarrollo Arduino (basado en
Processing). Los proyectos hechos con Arduino pueden ejecutarse sin
necesidad de conectar a un computador.
Control de Acceso
Son la tecnologa con ms demanda en el mercado actual,
en informtica y telecomunicaciones, el control de acceso al medio es el
conjunto de mecanismos y protocolos a travs de los cuales varios
"interlocutores" (dispositivos en una red, como ordenadores, telfonos
mviles, etc.) se ponen de acuerdo para compartir un medio de
transmisin comn (por lo general, un cable elctrico u ptico o, en
comunicaciones inalmbricas, el rango de frecuencias asignado a su
sistema). No es el mismo concepto que la multiplexacin aunque sta es una
tcnica que pueden utilizar los mecanismos de control de acceso al medio.
Sistema de seguridad
Para
aquellos
que
pretenden
una
definicin
tcnica
nos
avisarn
cuando
el
sistema
fue
violado
mediante
Sistema de monitoreo
cumplan
es
fundamental
que
los proyectos o
10
que generas un campo magntico que hace saltar la alarma cuando alguien
intenta abrir la ventana.
BASE LEGAL
11
Gaceta Oficial de
la
Repblica
Bolivariana
de
Venezuela Nmero
37.313 de fecha 30
de octubre del ao
2001
Caracas, Diciembre
Incorporar
12
en
sus
Promover el acceso,
Nacional
de
Tecnologa
de
Informaci
n
2001
Decreto
3390
Gaceta Oficial N.
38095
de
la
Repblica
Bolivariana
de
Venezuela
Diciembre del ao
2004
Lineamientos, Polticas y
Estrategias, el conjunto de
elementos que faciliten el
despliegue
de
una
Plataforma
Nacional
de
Tecnologas de Informacin
(PNTI), que democratice el
acceso a la informacin y el
conocimiento, con el apoyo
de las tecnologas de
comunicacin
y
las
posibilidades que brinda la
Internet.
La Administracin Pblica
Nacional
emplear
prioritariamente
Software
Libre
desarrollado
con
Estndares Abiertos, en sus
sistemas,
proyectos
y
servicios informticos. A
tales
fines,
todos
los
rganos y entes de la
Administracin
Pblica
Nacional
iniciarn
los
procesos
de
migracin
gradual y progresiva de
stos hacia el Software Libre
desarrollado con Estndares
Abiertos."
uso
efectivo
y
apropiacin masiva
de las TIC, a travs
de
politizas
y
programas
para
mejorar la calidad
para
con
cada
individuo.
Publicacin
Objetivos
Anlisis
Ley
Orgnica
de Ciencia
Tecnologa
e
Innovacin
.
Gaceta Oficial N
39.575 de fecha
16 de Diciembre
del 2010
desarrollar
los
principios
orientadores que en materia de
ciencia, tecnologa e innovacin
y sus aplicaciones, establece la
Constitucin de la Repblica
Bolivariana
de
Venezuela,
organizar el Sistema Nacional
de Ciencia, Tecnologa e
Innovacin,
definir
los
lineamientos que orientarn las
polticas y estrategias para la
actividad cientfica, tecnolgica,
de
innovacin
y
sus
aplicaciones,
con
la
implantacin de mecanismos
institucionales y operativos
Promover, estimular
y
fomentar
la
investigacin
cientfica,
la
apropiacin
social
del conocimiento y
la transferencia e
innovacin
tecnolgica, a fin de
fomentar
la
capacidad para las
generaciones, uso y
circulacin
del
conocimiento
e
impulsar
el
desarrollo nacional.
13
de
Sealizacin,
Alarma,
Control
Remoto
control remoto y
14
Conexiones
Equipotenciales.
La
continuidad
elctrica
de
la
15
503.12
Sistemas
de
Sealizacin,
Alarma,
Control
Remoto
16
Funcionamie
nto
Cantoner
a gato
Huella
digital
Cantonera
elctrica
ideal para
puertas con
cerraduras
cilndricas,
tubulares o
cerrojos de
seguridad.
Huella
digital o
contrasea
Capacidad
de 120
Huellas
digitales.
Teclado
control de
acceso
Cerradura
de
identificaci
n
Tarjeta de
proximidad
MIFARE
estndar ISO
14443
17
Cerradura
CE
Cerradura
electrnica antiatraco, modelo CE
de embutir
normalmente
abierta (NA).
Dimensin
Universal
Material
Aluminio
72mmx34mm
x118mm
Fabricado
en Acero
inoxidable
disponible
en Colores
Plata/dorad
o.
Ancho de
puerta
requerido: 38
65 mm
Acero
inoxidable
Colores: Cromo
satinado /
Cromo satinado
con borde
dorado.
Acero inoxidable
Instalacin
Perfiles con
perforacin
de una
cantonera
elctrica
previamente
instalada
Perforacin
de
cerradura
adaptada a
sus
dimensione
s, con
instalacin
elctrica
para cdigo
de acceso
Manejo del
pulsador de
salida.
Entrada para
sensor
de
puerta
abierta.
Programaci
n
de
funciones
desde
teclado.
La instalacin
es
ms
compleja
ya
que incluye una
serie
de
componente
como: Pasador,
Codificador,
Software,
Tarjeta MIFARE
y Tarjeta de
Consulta.
Elementos
Solo consta
de la
hembrilla
Llave
mecnica
para
emergencia
.
Relevo de
10Amp/28V
DC
programabl
e de 01 a 99
segundos.
Salida
auxiliar de
pnico de
100mA
Programaci
n de hasta
100
18
Tiempo de
apertura:
1-2
segundos
Mtodos
de
apertura
de
emergenci
a: Llave
mecnica.
La
cerradura y
el
cerradero
deben
tener
el
sentido de
lectura de
los
anagramas
, dejando
entre
ambos una
distancia
mnima,
que nunca
ha de ser
superior a
8
mm.
Llevan
incorporad
os 2 micro
interruptore
s,
para
sealizaci
n,
accionamie
nto.
La puerta,
debe tener
un
buen
muelle
hidrulico
de
cierre
para
su
correcto
posicionam
iento.
Lleva interruptores
magnticos,
en
lugar
de
los
mecnicos
convencionales.
Alimentacin
Mantenimient
o
usuarios
con cdigo
de 6 dgitos.
Programaci
n de hasta
100
usuarios
con cdigo
de 6 dgitos.
Diferentes
opciones de
voltaje
y
especificaci
ones que se
ajustan
a
cada de sus
necesidades
.
Bateras
AA
Voltaje de
operacin de 10V
a 15V DC.
4 bateras AA
(6V)
Fcil
Fcil
Fcil
Compleja
39.000,00
85.800,00
27.800,00
Cerradura
Normalmente
Abierta (fail safe),
bloquea
bajo
tensin de 12 Vdc,
consumiendo
durante los cinco
primeros segundos
2,5A,
con
un
consumo de 0,3A.
Ventaja adicional
que les dota de
larga vida, permite
alta frecuencia de
maniobras
Presentacin
Costo Bs.
3.658,00
3.000,00
CAPITULO III
19
MARCO METODOLGICO
TIPO DE INVESTIGACIN
cuando
meticulosamente
manipuladas
DISEO DE LA INVESTIGACIN
20
elementos
para
modernizar
el
objetivo:
Implementar
la
automatizacin
control
en
el
21
CAPITULO IV
FASE DIAGNOSTICO
MARCO LGICO
ANLISIS DE LOS INVOLUCRADOS
Este anlisis se hace para identificar los grupos que estn directa o
indirectamente involucrados en el problema, ante la inexistencia de un
control de seguridad que resguarde los equipos en los laboratorios de la
UNEXPO ncleo Charallave, en el cual se encuentran involucrados los
siguientes sectores:
Grupo N 1: Estudiantes.
22
realizar.
Disear y elaborar medios de accesos a los laboratorios.
Implementar la automatizacin y control en el funcionamiento de los
laboratorios.
Diseo y elaboracin de un software para el monitoreo y registro del
acceso de apertura de puerta.
Evaluacin de las pruebas para la correccin de los errores y fallas
detectadas.
ANLISIS DE ALTERNATIVAS
Se identifican varias estrategias que si son ejecutadas, podran promover
el cambio de la situacin actual a la situacin deseada:
Sistemas de alarmas.
Circuitos cerrados.
Aplicacin de cdigos de barras a los equipos del laboratorio.
23
Sensores de presencia.
Llave Maestra.
Sistema de control de apertura por clave y monitoreado a distancia.
Adquisicin de un sistema de seguridad, ya existente.
Nivel de Objetivo
Indicadores
FIN
Proteccin
los
Prevenir
hurto
de
Medios de verificacin
el
los
bienes universitarios.
equipos en el
Realizar un sistema de
primer
control.
despus
Reducir perdidas de
haber
equipos e inseguridad.
finalizado
proyecto.
encaminadas
ao
Informe
de
Bienes
Nacionales.
de
Registro
del
sistema
de
monitoreo por
el
medio
de
pagina Web.
la
Evaluacin
supervisin y control
semestral
de
de
los
de
cumplidos.
cumplimiento
medidas
la
de
objetivos
seguridad.
Disear el monitoreo y
registro de control de
apertura de puerta.
PROPOSITOS
Resguardar
equipos,
los
bienes
servicios
de
y
los
laboratorios.
Registro
de
conteo
de
los
equipos.
Registro
Inventarios de
laboratorios.
de
siniestros.
Informes
semestrales de
siniestros.
MATRIZ LGICA
Tabla N2: Nivel de objetivos.
24
Supuestos
COMPONENTES
Manual y Normativas
semestral de
dispuestos a
elaborado al
operaciones y
aportar
contribuir con la
inicio de la
control.
fondos para
seguridad de equipos,
implementacin
Disponibilidad
elaborar y
bienes y servicio.
del proyecto.
del
divulgar
Elementos fsicos
Elementos
Normativas y
normativas,
fsicos de cada
creacin de
manual y
equipos.
laboratorio
manual para
capacitar en
Vigilancia para el
(Ventanas,
capacitacione
el mismo.
cumplimiento del
puertas y rejas).
s.
Normativas internas
Anlisis de
costos.
Normativas
Contar con el
internas
presupuesto
elaboradas.
estipulado para
Informes
el desarrollo de
Desarrollo de
financieros,
monitoreo y registro
registro,
actividades.
de un control de
capacitacin,
acceso y apertura.
compras y
Desarrollar
mantenimiento.
equipos.
Cooperantes
manual
de uso de los
Informe
internas para
propsito.
ACTIVIDADES
Normativas y
Contenido.
Solicitud de
presupuesto.
25
RBOL DE PROBLEMAS
26
las herramientas
debien
trabajo
los
estudiantes
Garantizar
undocentes
sistema yde
monitoreo y registro
Los estudiantes seFIN
sentirn motivadosGarantizar
para proyecta
su ideas en
de de
la universidad
PROPOSITO
COMPONENTES
ACTIVIDADES
FASE DE DISEO
PROGRAMACION DE ARDUINOS
28
Arduino mega R3: se incluye la biblioteca < Keypad.h > para controlar
el teclado matricial, con el fin de hacer un control manual sobre el equipo se
incluye la biblioteca <dataTime>para mandar fechas en tiempo real y hora al
servidor web se incluyen la biblioteca <spi> para la comunicacin arduino
pagina web se incluye la biblioteca <sd> para el almacenamiento de la
pagina web y guardar en ella registro. Esto tiene como fin realizar el acceso
de apertura de puerta. Biblioteca <LiquidCrystal.h>, controla la pantalla LCD
para dar opciones al usuario y <EEPROM.h> controla E/S EEPROM, con el
fin de hacer memoria para situaciones adversas.
Arduino Ethernet Shield: permite a la placa Arduino conectarse a
internet. Est basada en el chip ethernet Wiznet W5100. Se realiza una
librera Ethernet para escribir programas que se conecten a internet usando
la shield. La ethernet shield dispone de unos conectores que permiten
conectar a su vez otras placas encima y apilarlas sobre la placa Arduino. El
dispositivo ser capaz de responder a una peticin HTTP con su Ethernet
Shield. Despus de abrir un navegador web e ingresar la direccin IP
asignada al Arduino Ethernet Shield, su Arduino responder mostrando los
valores del estado de su entrada anloga (A0) y su entrada digital.
Nota: Sketch ajunto al cd.
SIMULACION EN PROTEUS
29
En una
respectiva compilacin,
de
ingresar
como
administrador
tocando
la
tecla
30
DECLARACIN VARIABLES
(Entradas y Salidas Prototipo Funcional)
ENTRADAS
31
SALIDAS
Alarmas (Alternativa).
Hembrilla.
Leds indicadores.
Pantalla LCD.
Pagina Web.
Circuito Cerrado CCTV (Alternativa).
Sirenas (Alternativa).
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<!DOCTYPE HTML>
<html>
<head>
<title>UNEXPO</title>
</head>
<style>
body
{
font-family:Arial, Helvetica, sans-serif;
margin:auto;
padding:0px;
overflow:auto;
min-width:1024px;
padding-left:20px;
padding-top:20px;
}
h1
{
padding:0px;
32
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
margin:auto;
font-size:24px;
color:#33F;
border-bottom:1px solid #333;
margin-bottom:10px;
}
div
{
padding-left:50px;
margin-bottom:5px;
}
</style>
<script>
function GenerateForm(num,arg)
{
try
{
var obj = document.getElementById("DinamicForm");
for(var i=0; i<num; i++)
{
obj.innerHTML += "<input type=\"checkbox\" onclick=\"document.location='/?u="+(i+1)+"'\" "+
((arg[i])?"checked":"")+" /> Usuario:"+(i+1)+"<br>";
}
}catch(e)
{
alert(e);
}
}
</script>
<body>
<h1>Acceso permitido a los usuarios:</h1>
<div id="DinamicForm"></div>
<h1>Registro de Accesos al laboratorio</h1>
modelado 2D y
33
34
35
Pantalla interactiva.
Ms de 120 usuarios.
Cambios de claves personalizados para cada usuario por teclado.
Men para administrador.
Apertura con clave o llave.
Cierre automtico electrnico.
Pagina web con base de datos de entrada y salidas de los usuarios.
Control de apertura por la pgina web para decidir quin entra ese da
al rea.
MATERIALES A UTILIZAR
36
Bs. 420,00
Bs. 60,00
Triac.
Bs. 30,00
Cable multifilares.
Bs. 100,00
Bs. 20,00
Bs. 4.000,00
Bs. 1200,00
Bs. 12,00
Pulsador.
Bs. 50,00
Bs. 30,00
Bs. 18,00
Baquelita Universal.
Bs. 476,00
Transistor Bc 548.
Bs. 30,00
Bs. 70,00
Bs. 1000,00
Bs. 2.948,00
Bs. 10.914,00
37
CUADRO COMPARATIVO
Resort Lock
RL2000NS
Schlage
FE575 CAPA
626
Prototipo
Funcional
Alimentacin
9V
9V
9V
9V
Biomtrico
NO
SI
NO
NO
Teclado
SI
NO
SI
SI
Tarjetas
iButton
NO
NO
NO
Cerradura
mecnica
SI
SI
SI
SI
Control por
pagina web
NO
NO
NO
Si
Residencial
Residencial
Residencial
Residencial
NO
SI
NO
SI
Clave de
programacin para
iButton
99 usuarios
127 usuarios,
4 cdigos.
282
215
nico cdigo
de
programacin
6 cdigos
103.50
47.940,00 bs
36.550,00 bs
15.450,00 bs
10.914,00 bs
3.348,00 bs
2580
1236bs
909bs
Diseo
Uso
Base de datos
Usuarios
Costo dlares
Costo
bolvares
Costo
bolvares
Sicad
64.50
38
CAPITULO V
ESTRUCTURACIN
Funcionamiento
El proyecto consiste en el montaje de un sistema de seguridad para
puertas por medio del ingreso de un cdigo de acceso previamente guardado
en el microcontrolador de nuestro arduino. A continuacin se describe el
funcionamiento de cada uno de las partes del proyecto:
Control de acceso
El equipo ira controlado por un Arduino programable R3 2560 y
Ethernet, el cual activara o Desactivara los distintos elementos. Si le llega
una seal procedente del teclado matricial, el ACCESSCONTROL JV 1.0
mandara la seal de apertura a la cerradura electrnica, cuando esta abra la
puerta activara la iluminacin del Interior de la caja con un led verde, si el
acceso es denegado se activara un led rojo. De igual forma ser monitoreado
y registrando por medio de una pgina web debido a que cada usuario tiene
una clave independiente y con la posibilidad de modifica infinita veces la
clave para el ingreso al laboratorio.
39
Cierre automtico
Cuando
la
puerta
cierre,
el
sistema
enviara
una
seal
al
40
Montaje
Las operaciones de montaje, por la gran precisin y habilidad que
normalmente exigen, presentan grandes dificultades para su automatizacin.
Sin embargo, el hecho de que estas operaciones representen una buena
parte de los costos totales del producto, ha propiciado las investigaciones y
desarrollos en esta rea, consiguindose importantes avances.
Muchos procesos de ensamblado se han automatizado empleando
maquinas especiales que funcionan con gran precisin y rapidez. Sin
embargo, el mercado actual precisa de sistemas muy flexibles, que permitan
introducir frecuentes modificaciones en los productos con unos costes
mnimos.
Fuente de alimentacin.
La fuente de alimentacin es un dispositivo muy importante para un
sistema, ya que de ah se toma la energa necesaria para la alimentacin del
mismo. Esta es un subsistema que convierte la corriente alterna en otro tipo
de corriente elctrica adecuado para nuestra cerradura. VER IMAGEN N6.0.
Este otro tipo de corriente ser de tipo continua, ya que nosotros queremos
41
42
Montaje mecnico
Para efectuar el montaje mecnico se recomienda instalar junto a la
puerta, la placa que contiene el teclado y los indicadores, situando en el
interior de la dependencia la caja que contiene el resto del circuito y las
conexiones, con el fin de evitar posibles sabotajes. Aunque si no se requiere
una seguridad extrema, puede instalarse el dispositivo completo fuera de la
dependencia.
Montaje elctrico
En este montaje es preciso tener un cuidado especial a la hora de
efectuar las conexiones, sobre todo si se cambian o se manipulan los
conectores del cable que une el teclado y los indicadores con el resto del
circuito.
43
CONCLUSIONES
44
De
manera
muy
similar
se
desglosaron
las
actividades
RECOMENDACIONES
Las recomendaciones son una serie de pasos a seguir, para que sea
satisfactorio, a continuacin resaltamos las recomendaciones a cada uno de
los factores que intervienen en el proyecto.
45
EXPERIENCIA EN EQUIPO
46
DEFINICIN DE TRMINOS
47
48
49
APENDICES
APENDICES A
50
51
APENDICE B
Ensamblaje de prototipo ACCESSCONTROL JV 1.0
52
APENDICE C
ESCENARIO DE PROTOTIPO FUNCIONAL ACCESSCONTROL JV 1.0
53
APENDICE D
PROTOTIPO FUNCIONAL ACCESSCONTROL JV 1.0 CULMINADO
54
55
Metodologa
Actividade
s
S
e
Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem
m
ana ana ana ana ana ana ana ana ana ana ana
an
2
3
4
5
6
7
8
9
10
11
12
a
1
Semana de
inicio
Presentaci
n
de
la
propuesta
Consultar
pginas
web sobre
control de
acceso de
puertas
existentes
Consultar
bibliografa
Investigar
sobre
los
software de
monitoreo y
registro
para
la
apertura de
puerta
Entrevistar
a
profesores
de la rama
de circuitos
Entrevistar
a alumnos
cursante de
la rama de
circuitos,
mecnica,
electrnica
y
automatizac
in.
Seleccionar
los circuitos
electrnicos
para
la
apertura de
puerta.
Comparar la
informacin
recolectada.
Seleccionar
resultados
de
la
investigaci
n
Definicin
del diseo
del prototipo
funcional.
APENDICE E
56
Se
ma
na
13
Sem
ana
14
Sem
ana
15
Proyecto de
Ingeniera
Mecatrnica I
Actividades
Sem Se Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem
ana man ana ana ana ana ana ana ana ana ana ana ana ana ana
1
a2
3
4
5
6
7
8
9
10
11
12
13
14
15
Semana de
inicio
Diseo los
circuitos
elctricos
clsicos.
Diseo
tarjeta
de
adquisicin
de datos.
Diseo de
panel
de
control.
Diseo de
modelo
mecnico y
electrnico
del
prototipo
funcional.
Diseo de
software
monitoreo
y registro
para
la
apertura de
puerta.
Definicin
de
la
construcci
n
del
prototipo
funcional.
57
Proyecto de
Ingeniera
Mecatrnica II
Actividad
es
Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem Sem
ana ana ana ana ana ana ana ana ana ana ana ana ana ana ana
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Semana
de inicio
Implemen
tar la
automatiz
acin y
control en
el
funciona
miento de
los
laboratori
os.
Evaluaci
n el
desempe
o del
prototipo
funcional
Evaluaci
n del
prototipo
funcional
del
sistema
de
apertura.
Correcci
n de los
errores y
fallas
detectada
s.
Ajustes
finales
Presentac
in final
58
2014
Objetivos
Marzo
Abril
Mayo
Juni
o
Julio
Agosto
Septiembre
59
Octubre
Noviembre
APENDICE F
Bs. 2.950,00
Bs. 1.850,00
Total
Bs. 4.809,00
1
1
1
1
Cableado
Cable UTP y/o Tel 2 pares (aprox)
Tubera elctrica pvc por unidad (sin
empotrar)
Tubera Metlica 1 1/2 para cableado
(metro lineal sin empotrar)
Tubera Metlica 3/4 para cableado (metro
lineal sin empotrar)
Total
Bs. 65,00
Bs. 145,00
Bs. 295,00
Bs. 225,00
Bs. 730,00
Bs. 37.500,00
Bs. 19.500,00
Bs. 42.900,00
Cerradura electromagntica
Bs. 5.350,00
Bs. 29.200,00
Lectora de proximidad
Bs. 14.350,00
Bs. 5.900,00
Tarjeta proximidad
Total
Bs. 250,00
Bs. 154.950,00
Detectores
1
Bs. 2.990,00
Bs. 2.350,00
Bs. 3.960,00
1
1
1
Bs. 1.850,00
Bs. 24.200,00
Circuito Cerrado
1
Bs. 3.480,00
Bs. 9.000,00
Cmara Ip 3Mp
Bs. 16.600,00
Bs. 4.200,00
Conectores BNC
Bs. 2.200,00
Bs. 4.100,00
Bs. 7.850,00
Hora tcnica
Bs. 1.500,00
Bs. 1.450,00
Mantenimiento CCTV
Bs. 500,00
Bs. 650,00
1
1
Bs. 85,00
Bs. 450,00
Bs. 120.435,00
1
1
1
Fuentes
Fuente auxiliar de energa batera sellada
240 A.
Fuente de alimentacin adicional 12 v,
transformador y caja
Transformador 110 a 16 v
Bs. 18.500,00
Bs. 7.650,00
Bs. 725,00
Total
Bs. 26.875,00
Inalmbrico
1
1
1
Bs. 2.900,00
Bs. 7.780,00
Total
Bs. 14.930,00
Sirena
Bs. 1.480,00
Bs. 960,00
Bs. 1.350,00
Total
Bs. 3.790,00
Bs. 32.500,00
Bs. 4.250,00
Bs. 36.750,00
APENDICE G
PROGRAMACIN DEL ARDUINO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
#include <DateTime.h>
// Macros y definiciones
#define MAX_USERS 128
#define USERNAMES_ADDRESS MAX_USERS*2
#define KP_R 4
#define KP_C 4
// Variables Globales
char key=NO_KEY;
LiquidCrystal lcd(22 , 23, 24, 25, 26, 27, 28);
byte pinsFilas[KP_R]= {30,31,32,33};
byte pinsColumnas[KP_C] = {5,6,7,8};
char teclas[KP_R][KP_C] = {
{'1','2','3','A'},
// Declaracin del teclado
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
};
Keypad teclado = Keypad(makeKeymap(teclas), pinsFilas,pinsColumnas, KP_R, KP_C);
unsigned int USER_ID = 0;
unsigned int USER_PWD = 0;
unsigned int PWD = 0;
boolean Admin=false;
char UsuarioActivo[30] = { 0 };
boolean AccesoPermitido[MAX_USERS] = {false};
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char IpHttp[] = "Refresh: 10; url=/";
IPAddress ip(192, 168, 0, 2); // IP address, may need to change depending on network
EthernetServer server(80); // create a server at port 80
byte MaxUserSaved=128;
//File webFile;
// the web page file on the SD card
char clr[]="
";
void FlushLine(int line)
{
lcd.setCursor(0,line);
clr[20]=0;
lcd.print(clr);
lcd.setCursor(0,line);
}
void ClearLCD()
{
clr[20]=0;
lcd.setCursor(0,1);
lcd.print(clr);
lcd.setCursor(0,1);
if(Admin)
lcd.print(" Admin Mode");
lcd.setCursor(0,2);
//lcd.print(clr);
//lcd.print(" U.N.E.X.P.O ");
lcd.print(" Laboratorio de ");
lcd.setCursor(0,3);
//lcd.print(clr);
lcd.print("
Idiomas
");
}
//Leer Usuarios
void InicializarAdministrador()
63. {
64. //Passwords[ADMINISTRATOR]=0;
65. ReadUser(0);
66. while(USER_PWD==0)
67. {
68. lcd.setCursor(0,1);
69. lcd.print("Creacion de");
70. lcd.setCursor(0,2);
71. lcd.print("administracion:");
72. char lcdoutput[5] = {'-','-','-','-',0};
73. for(int i=0; i<4;)
74. {
75. lcd.setCursor(0,3);
76. lcd.print(lcdoutput);
77. while(
78. (key=teclado.getKey())==NO_KEY ||
79. ((key<'0'||key>'9')&&key!='#')
80. );
81. if(key!='#')
82. {
83. USER_PWD *= 10;
84. USER_PWD += key-'0';
85. lcdoutput[i]='*';
86. i++;
87. }else
88. {
89. USER_PWD /= 10;
90. i--;
91. lcdoutput[i]='-';
92. }
93. }
94. }
95. lcd.setCursor(0,3);
96. lcd.print("****");
97. delay(250);
98. lcd.setCursor(0,3);
99. lcd.print("Guardando...");
100.SaveUser(0,USER_PWD,"ADMIN");
101.delay(250);
102.ClearLCD();
103.}
104.void SaveUser(byte user, unsigned int pwd, char * lpUser)
105.{
106.if(user>=128) return;
107.if(MaxUserSaved<=user) MaxUserSaved = user+1;
108.byte * pEEPROM = (byte*)&pwd;
109.for(int i=0; i<2; i++)
110. {
111. EEPROM.write(user*2+i,pEEPROM[i]);
112. }
113. if(lpUser==0) return;
114. for(int i=0; i<30; i++)
115. {
116. EEPROM.write(USERNAMES_ADDRESS+user*30+i,lpUser[i]);
117. if(lpUser[i]==0) break;
118. }
119. }
120.void ReadUser(byte user)
121.{
181.FlushLine(1);
182.if(key>='0'&&key<='9')
183.{
184.temp *= 10;
185.temp += key-'0';
186.switch(pos++)
187.{
188.case 0://Dia
189.Dia = temp;
190.break;
191.case 1:
192.Dia = temp;
193.temp = 0;
194.break;
195.case 2://Mes
196.Mes = temp;
197.break;
198.case 3:
199.Mes = temp;
200.temp = 0;
201.break;
202.case 4://Anio
203.Anio = temp;
204.break;
205.case 5:
206.Anio = temp;
207.break;
208.case 6:
209.Anio = temp;
210.break;
211. case 7:
212.Anio = temp;
213.temp = 0;
214.break;
215.}
216.pos %= 8;
217.lcd.print(Dia);
218.lcd.print("/");
219.lcd.print(Mes);
220.lcd.print("/");
221.lcd.print(Anio);
222.}
223.else if(key=='A')
224.{
225.break;
226.}
227.}
228.FlushLine(0);
229.lcd.print("Set Time (HH:MM)");
230.pos = 0;
231.temp = 0;
232.while( true )
233.{
234.key=teclado.getKey();
235.if(key==NO_KEY) continue;
236.FlushLine(1);
237.if(key>='0'&&key<='9')
238.{
239.temp *= 10;
240.temp += key-'0';
241.switch(pos++)
242.{
243.case 0://Hora
244.Hora = temp;
245.break;
246.case 1:
247.Hora = temp;
248.temp = 0;
249.break;
250.case 2://Minuto
251.Minuto = temp;
252.break;
253.case 3:
254.Minuto = temp;
255.temp = 0;
256.break;
257.}
258.pos %= 4;
259.lcd.print(Hora);
260.lcd.print(":");
261.lcd.print(Minuto);
262.}
263.else if(key=='A')
264.{
265.break;
266.}
267.}
268.tm = DateTime.makeTime(0,Minuto,Hora,Dia,Mes,Anio);
269.DateTime.sync(tm);
270.}
271.void Menu()
272.{
273.key=teclado.getKey();
274.if(key==NO_KEY&&Wait) return;
275.//Serial.write(key);
276.if(key=='C')
277.{
278.if(USER_ID<0) return;
279.File webFileW = SD.open(webHtml, O_CREAT | O_APPEND | O_WRITE);
280.if(webFileW)
281.{
282.DateTime.available();
283.webFileW.print("<div>");
284.webFileW.print(DateTime.Year+1900);
285.webFileW.print("/");
286.webFileW.print(DateTime.Month);
287.webFileW.print("/");
288.webFileW.print(DateTime.Day);
289.webFileW.print(" ");
290.webFileW.print(DateTime.Hour);
291.webFileW.print(":");
292.webFileW.print(DateTime.Minute);
293.webFileW.print(":");
294.webFileW.print(DateTime.Second);
295.webFileW.print(" ");
296.webFileW.print(USER_ID);
297.webFileW.print("- Cerrado por: ");
298.webFileW.print(UsuarioActivo);
299.webFileW.print("</div>\r\n");
300.webFileW.close();
301.memset(UsuarioActivo, 0, 30);
302.USER_ID = -1;
303.}
304.menu_status = 0;
305.memset(pswd,'-',4);
306.pswd[4]=0;
307.Admin = false;
308.ClearLCD();
309.USER_PWD=0;
310.FlushLine(0);
311. lcd.print(" U.N.E.X.P.O ");
312.PowerOf();
313.return;
314.}
315.digitalWrite(18,HIGH);
316.if(Wait) bScreen=false;
317.Wait = true;
318.switch(menu_status)
319.{
320.case 0:
321.if(key=='A'&&Admin)
322.{
323.menu_status=4;
324.Wait = false;
325.}else
326.if(key=='A')
327.{
328.menu_status=1;
329.USER_ID = 0;
330.Wait = false;
331.}
332.else if(key=='*')
333.{
334.menu_status=3;
335.Wait = false;
336.memset(pswd,'-',4);
337.pswd[4]=0;
338.character = 0;
339.}
340.break;
341.case 1:// Seleccion de usuario
342.FlushLine(1);
343.lcd.print("ID de Usuario");
344.FlushLine(2);
345.USER_ID=ProcessKey(key,USER_ID);// Procesar el Teclado
346.lcd.print(USER_ID);
347.FlushLine(3);
348.lcd.print(AC);
349.if(key == 'A' && USER_ID>0)//
350.{
351.menu_status=2;
352.memset(pswd,'-',4);
353.pswd[4]=0;
354.character = 0;
355.ReadUser(USER_ID);
356.FlushLine(1);
357.lcd.print(UsuarioActivo);
358.if(AccesoPermitido[USER_ID])
359.{
360.menu_status=0;
361.FlushLine(2);
362.lcd.print("Acceso denegado.");
363.FlushLine(3);
364.lcd.print("(C)ancelar.");
365.break;
366.}
367.FlushLine(2);
368.lcd.print(pswd);
369.}
370.break;
371.case 3:
372.ReadUser(0);
373.case 2:// Introduccion de Password
374.FlushLine(1);
375.lcd.print(UsuarioActivo);
376.PWD = ProcessKey(key,PWD);
377.FlushLine(2);
378.lcd.print(pswd);
379.FlushLine(3);
380.lcd.print(AC);
381.if(key=='A' || key=='B')
382.{
383.if(PWD==USER_PWD)
384.{
385.if(key=='B')
386.{
387.menu_status = 8;
388.Wait=false;
389.USER_PWD = 0;
390.return;
391.}
392.FlushLine(3);
393.lcd.print("Bienvenido!");
394.if(menu_status==3)Admin=true;
395.File webFileW = SD.open(webHtml, O_CREAT | O_APPEND | O_WRITE);
396.bDoor=true;
397.Door = millis()+3000;
398.if(webFileW)
399.{
400.DateTime.available();
401.webFileW.print("<div>");
402.webFileW.print(DateTime.Year+1900);
403.webFileW.print("/");
404.webFileW.print(DateTime.Month);
405.webFileW.print("/");
406.webFileW.print(DateTime.Day);
407.webFileW.print(" ");
408.webFileW.print(DateTime.Hour);
409.webFileW.print(":");
410.webFileW.print(DateTime.Minute);
411. webFileW.print(":");
412.webFileW.print(DateTime.Second);
413.webFileW.print(" ");
414.webFileW.print(USER_ID);
415.webFileW.print("-");
416.webFileW.print(UsuarioActivo);
417.webFileW.print("</div>\r\n");
418.webFileW.close();
419.}
420.ErrCount = 0;
421.menu_status=0;
422.USER_PWD = 0;
423.PWD = 0;
424.PowerOf();
425.}else
426.{
427.PWD=0;
428.memset(pswd,'-',4);
429.pswd[4]=0;
430.character = 0;
431.FlushLine(3);
432.lcd.print("Error de Password");
433.ErrCount++;
434.if(ErrCount>=3)
435.{
436.ErrCount = 0;
437.FlushLine(3);
438.lcd.print("3 intentos erroneos");
439.File webFileW = SD.open(webHtml, O_CREAT | O_APPEND | O_WRITE);
440.if(webFileW)
441.{
442.webFileW.print("<div> 3 Intentos fallidos: ");
443.webFileW.print(USER_ID);
444.webFileW.print("-");
445.webFileW.print(UsuarioActivo);
446.webFileW.print("</div>");
447.webFileW.close();
448.}
449.}
450.}
451.}
452.break;
453.// Admin Section
454.case 4:
455.FlushLine(2);
456.FlushLine(1);
457.lcd.print("1 Cambiar PWD");
458.FlushLine(3);
459.lcd.print("C Salir");
460.switch(key)
461.{
462.case '1':
463.menu_status = 6;
464.Wait = false;
465.break;
466.case '2':
467.menu_status = 7;
468.Wait = false;
469.memset(pswd,'-',4);
470.pswd[4]=0;
471.character = 0;
472.break;
473.case '3':
474.//menu_status=5;
475.break;
476.}
477.break;
478.case 5:// reservado
479.break;
480.case 6:
481.FlushLine(1);
482.lcd.print("ID Usuario");
483.FlushLine(2);
484.USER_ID=ProcessKey(key,USER_ID);// Procesar el Teclado
485.lcd.print(USER_ID);
486.FlushLine(3);
487.lcd.print(AC);
488.if(key=='A')
489.{
490.menu_status=8;
491.Wait=false;
492.memset(pswd,'-',4);
493.pswd[4]=0;
494.character = 0;
495.ReadUser(USER_ID);
496.USER_PWD = 0;
497.}
498.break;
499.case 8:
500.FlushLine(0);
501.lcd.print(UsuarioActivo);
502.FlushLine(1);
503.lcd.print("Password Nueva");
504.FlushLine(2);
505.USER_PWD=ProcessKey(key,USER_PWD);// Procesar el Teclado
506.lcd.print(USER_PWD);
507.FlushLine(3);
508.lcd.print(AC);
509.if(key=='A')
510.{
511. if(USER_PWD>9999||USER_PWD==0)
512.{
513.Wait=false;
514.return;
515.}
516.SaveUser(USER_ID,USER_PWD,0);
517.USER_PWD=0;
518.PWD=0;
519.menu_status=(Admin)?4:0;
520.PowerOf();
521.Wait=false;
522.ClearLCD();
523.FlushLine(0);
524.lcd.print(" U.N.E.X.P.O ");
525.}
526.break;
527.}
528.}
529.String httpHead = "";
530.void AbrirISR()
531.{
532.bDoor=true;
533.Door=millis()+3000;
534.}
535.// Bucles y Configuraciones
536.void setup() {
537.// put your setup code here, to run once:
538.pinMode(13,OUTPUT);
539.pinMode(18,OUTPUT);
540.pinMode(19,OUTPUT);
541.lcd.begin(20,4);
542.InicializarFechaHora();
543.lcd.setCursor(0,0);
544.lcd.print(" U.N.E.X.P.O ");
545.digitalWrite(13,LOW);
546.digitalWrite(13,HIGH);
547.InicializarAdministrador();
548.Ethernet.begin(mac, ip); // initialize Ethernet device
549.server.begin();
// start to listen for clients
550.Serial.begin(9600);
551.//while(!Serial);
552.//SaveUser(0,1234,"ADMIN");
553.//SaveUser(1,1234,"Galea Vanessa");
554.//SaveUser(2,1234,"Paez Jose");
555.//SaveUser(3,1234,"Perez Jesus");
556.//SaveUser(4,1234,"Pea Francisco");
557.httpHead.reserve(200);
558.attachInterrupt(1,AbrirISR,FALLING);
559.if(!SD.begin(4))
560.{
561.//Serial.println("Error SD");
562.return;
563.}
564.}
565.void loop() {
566.// put your main code here, to run repeatedly:
567.Menu();
568.if(bDoor)
569.if(Door>millis())
570.{
571.digitalWrite(19,HIGH);
572.}else
573.{
574.digitalWrite(19,LOW);
575.bDoor=false;
576.ClearLCD();
577.USER_PWD=0;
578.}
579.if(bScreen)
580.if(Screen>millis())
581.{
582.digitalWrite(18,HIGH);
583.}
584.else
585.{
586.digitalWrite(18,LOW);
587.bScreen = false;
588.}
589.EthernetClient client = server.available(); // try to get client
590.boolean currentLineIsBlank = true;
591.httpHead = "";
592.while (client.connected()) {
593.if (client.available()) { // client data available to read
594.char c = client.read();
595.httpHead += c;
596.Serial.print(c);
597.if (c == '\n' && currentLineIsBlank) {
598.// send a standard http response header
599.client.println("HTTP/1.1 200 OK");
600.client.println("Content-Type: text/html");
601.client.println("Connection: close"); // the connection will be closed after completion of the response
602.client.println("Refresh: 30; url=/");
603.client.println();
604.File webFile = SD.open(webHtml,FILE_READ);
605.while(webFile.available()) {
i. client.write(webFile.read()); // send web page to client
ii. }
606.webFile.close();
607.client.print("<script>var UP = [");
608.for(int n = 0; n<5; n++)
609.{
610.client.print(AccesoPermitido[n+1]?0:1);
611. client.print(", ");
612.}
613.client.println("]; GenerateForm(5,UP);</script>");
614.client.println("</body></html>");
615.break;
616.}
617.if (c == '\n') {
618.// you're starting a new line
619.if(httpHead.indexOf("GET /?u=")!=-1)
620.{
621.int uid = httpHead.substring(8).toInt();
622.Serial.print(uid);
623.AccesoPermitido[uid] = (AccesoPermitido[uid]==true)?false:true;
624.}
625.httpHead = "";
626.currentLineIsBlank = true;
627.}
628.else if (c != '\r') {
629.// you've gotten a character on the current line
630.currentLineIsBlank = false;
631.}
632.}
633.}
634.client.stop();
635.}
APENDICE H
Prof.:
Autores:
los
usuarios
ACCESSCONTROL JV 1.0.
en
la
programacin
del
Arduino
de
5-
6-
advertencia.
7- Al terminar de usar el producto y salir del rea, se deber pulsar la tecla C
para registrar la salida.
10- Si el sistema no reconoce la clave, usted puede abrir la puerta con la llave
mecnica o con la contrasea del Administrador.
Nota: Se sugiere grabar para los usuarios una clave independiente y un administrado, de manera
que al olvidar la contrasea se pueda modificar infinidades de veces.
PROTOCOLO DE COMUNICACIONES
El protocolo entre el Arduino Ethernet Shield permite a una placa Arduino
conectarse a internet. La Ethernet shield dispone de unos conectores que
permiten enlazar a su vez otras placas encima y apilarlas sobre la placa Arduino.
La shield provee un conector Ethernet estndar RJ-45. Al conectar la Ethernet
Shield
un
Router
se
deber
utilizar
un
cable
Ethernet
standard
Especificaciones de hembrilla
INSTALACIN
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<!DOCTYPE HTML>
<html>
<head>
<title>UNEXPO</title>
</head>
<style>
body
{
font-family:Arial, Helvetica, sans-serif;
margin:auto;
padding:0px;
overflow:auto;
min-width:1024px;
padding-left:20px;
padding-top:20px;
}
h1
{
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
padding:0px;
margin:auto;
font-size:24px;
color:#33F;
border-bottom:1px solid #333;
margin-bottom:10px;
}
div
{
padding-left:50px;
margin-bottom:5px;
}
</style>
<script>
function GenerateForm(num,arg)
{
try
{
var obj = document.getElementById("DinamicForm");
for(var i=0; i<num; i++)
{
obj.innerHTML += "<input type=\"checkbox\" onclick=\"document.location='/?u="+(i+1)+"'\"
"+((arg[i])?"checked":"")+" /> Usuario:"+(i+1)+"<br>";
}
}catch(e)
{
alert(e);
}
}
</script>
<body>
<h1>Acceso permitido a los usuarios:</h1>
<div id="DinamicForm"></div>
<h1>Registro de Accesos al laboratorio</h1>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
char key=NO_KEY;
LiquidCrystal lcd(22 , 23, 24, 25, 26, 27, 28);
byte pinsFilas[KP_R]= {30,31,32,33};
byte pinsColumnas[KP_C] = {5,6,7,8};
char teclas[KP_R][KP_C] = {
{'1','2','3','A'},
// Declaracin del teclado
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
};
Keypad teclado = Keypad(makeKeymap(teclas), pinsFilas,pinsColumnas, KP_R, KP_C);
unsigned int USER_ID = 0;
unsigned int USER_PWD = 0;
unsigned int PWD = 0;
boolean Admin=false;
char UsuarioActivo[30] = { 0 };
boolean AccesoPermitido[MAX_USERS] = {false};
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char IpHttp[] = "Refresh: 10; url=/";
IPAddress ip(192, 168, 0, 2); // IP address, may need to change depending on network
EthernetServer server(80); // create a server at port 80
byte MaxUserSaved=128;
//File webFile;
// the web page file on the SD card
char clr[]="
";
void FlushLine(int line)
{
lcd.setCursor(0,line);
clr[20]=0;
lcd.print(clr);
lcd.setCursor(0,line);
}
void ClearLCD()
{
clr[20]=0;
lcd.setCursor(0,1);
lcd.print(clr);
lcd.setCursor(0,1);
if(Admin)
lcd.print(" Admin Mode");
lcd.setCursor(0,2);
//lcd.print(clr);
//lcd.print(" U.N.E.X.P.O ");
lcd.print(" Laboratorio de ");
lcd.setCursor(0,3);
//lcd.print(clr);
lcd.print("
Idiomas
");
}
//Leer Usuarios
void InicializarAdministrador()
{
//Passwords[ADMINISTRATOR]=0;
ReadUser(0);
while(USER_PWD==0)
67. {
68. lcd.setCursor(0,1);
69. lcd.print("Creacion de");
70. lcd.setCursor(0,2);
71. lcd.print("administracion:");
72. char lcdoutput[5] = {'-','-','-','-',0};
73. for(int i=0; i<4;)
74. {
75. lcd.setCursor(0,3);
76. lcd.print(lcdoutput);
77. while(
78. (key=teclado.getKey())==NO_KEY ||
79. ((key<'0'||key>'9')&&key!='#')
80. );
81. if(key!='#')
82. {
83. USER_PWD *= 10;
84. USER_PWD += key-'0';
85. lcdoutput[i]='*';
86. i++;
87. }else
88. {
89. USER_PWD /= 10;
90. i--;
91. lcdoutput[i]='-';
92. }
93. }
94. }
95. lcd.setCursor(0,3);
96. lcd.print("****");
97. delay(250);
98. lcd.setCursor(0,3);
99. lcd.print("Guardando...");
100.
SaveUser(0,USER_PWD,"ADMIN");
101.
delay(250);
102.
ClearLCD();
103.
}
104.
void SaveUser(byte user, unsigned int pwd, char * lpUser)
105.
{
106.
if(user>=128) return;
107.
if(MaxUserSaved<=user) MaxUserSaved = user+1;
108.
byte * pEEPROM = (byte*)&pwd;
109.
for(int i=0; i<2; i++)
110.
{
111.EEPROM.write(user*2+i,pEEPROM[i]);
112.
}
113.
if(lpUser==0) return;
114.
for(int i=0; i<30; i++)
115.
{
116.
EEPROM.write(USERNAMES_ADDRESS+user*30+i,lpUser[i]);
117.
if(lpUser[i]==0) break;
118.
}
119.
}
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
}
}
FlushLine(0);
lcd.print("Set Time (HH:MM)");
pos = 0;
temp = 0;
while( true )
{
key=teclado.getKey();
if(key==NO_KEY) continue;
FlushLine(1);
if(key>='0'&&key<='9')
{
temp *= 10;
temp += key-'0';
switch(pos++)
{
case 0://Hora
Hora = temp;
break;
case 1:
Hora = temp;
temp = 0;
break;
case 2://Minuto
Minuto = temp;
break;
case 3:
Minuto = temp;
temp = 0;
break;
}
pos %= 4;
lcd.print(Hora);
lcd.print(":");
lcd.print(Minuto);
}
else if(key=='A')
{
break;
}
}
tm = DateTime.makeTime(0,Minuto,Hora,Dia,Mes,Anio);
DateTime.sync(tm);
}
void Menu()
{
key=teclado.getKey();
if(key==NO_KEY&&Wait) return;
//Serial.write(key);
if(key=='C')
{
if(USER_ID<0) return;
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
else if(key=='*')
{
menu_status=3;
Wait = false;
memset(pswd,'-',4);
pswd[4]=0;
character = 0;
}
break;
case 1:// Seleccion de usuario
FlushLine(1);
lcd.print("ID de Usuario");
FlushLine(2);
USER_ID=ProcessKey(key,USER_ID);// Procesar el Teclado
lcd.print(USER_ID);
FlushLine(3);
lcd.print(AC);
if(key == 'A' && USER_ID>0)//
{
menu_status=2;
memset(pswd,'-',4);
pswd[4]=0;
character = 0;
ReadUser(USER_ID);
FlushLine(1);
lcd.print(UsuarioActivo);
if(AccesoPermitido[USER_ID])
{
menu_status=0;
FlushLine(2);
lcd.print("Acceso denegado.");
FlushLine(3);
lcd.print("(C)ancelar.");
break;
}
FlushLine(2);
lcd.print(pswd);
}
break;
case 3:
ReadUser(0);
case 2:// Introduccion de Password
FlushLine(1);
lcd.print(UsuarioActivo);
PWD = ProcessKey(key,PWD);
FlushLine(2);
lcd.print(pswd);
FlushLine(3);
lcd.print(AC);
if(key=='A' || key=='B')
{
if(PWD==USER_PWD)
{
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
if(key=='B')
{
menu_status = 8;
Wait=false;
USER_PWD = 0;
return;
}
FlushLine(3);
lcd.print("Bienvenido!");
if(menu_status==3)Admin=true;
File webFileW = SD.open(webHtml, O_CREAT | O_APPEND | O_WRITE);
bDoor=true;
Door = millis()+3000;
if(webFileW)
{
DateTime.available();
webFileW.print("<div>");
webFileW.print(DateTime.Year+1900);
webFileW.print("/");
webFileW.print(DateTime.Month);
webFileW.print("/");
webFileW.print(DateTime.Day);
webFileW.print(" ");
webFileW.print(DateTime.Hour);
webFileW.print(":");
webFileW.print(DateTime.Minute);
webFileW.print(":");
webFileW.print(DateTime.Second);
webFileW.print(" ");
webFileW.print(USER_ID);
webFileW.print("-");
webFileW.print(UsuarioActivo);
webFileW.print("</div>\r\n");
webFileW.close();
}
ErrCount = 0;
menu_status=0;
USER_PWD = 0;
PWD = 0;
PowerOf();
}else
{
PWD=0;
memset(pswd,'-',4);
pswd[4]=0;
character = 0;
FlushLine(3);
lcd.print("Error de Password");
ErrCount++;
if(ErrCount>=3)
{
ErrCount = 0;
FlushLine(3);
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
Wait=false;
memset(pswd,'-',4);
pswd[4]=0;
character = 0;
ReadUser(USER_ID);
USER_PWD = 0;
}
break;
case 8:
FlushLine(0);
lcd.print(UsuarioActivo);
FlushLine(1);
lcd.print("Password Nueva");
FlushLine(2);
USER_PWD=ProcessKey(key,USER_PWD);// Procesar el Teclado
lcd.print(USER_PWD);
FlushLine(3);
lcd.print(AC);
if(key=='A')
{
if(USER_PWD>9999||USER_PWD==0)
{
Wait=false;
return;
}
SaveUser(USER_ID,USER_PWD,0);
USER_PWD=0;
PWD=0;
menu_status=(Admin)?4:0;
PowerOf();
Wait=false;
ClearLCD();
FlushLine(0);
lcd.print(" U.N.E.X.P.O ");
}
break;
}
}
String httpHead = "";
void AbrirISR()
{
bDoor=true;
Door=millis()+3000;
}
// Bucles y Configuraciones
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
pinMode(18,OUTPUT);
pinMode(19,OUTPUT);
lcd.begin(20,4);
InicializarFechaHora();
lcd.setCursor(0,0);
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
if (c == '\n' && currentLineIsBlank) {
598.
// send a standard http response header
599.
client.println("HTTP/1.1 200 OK");
600.
client.println("Content-Type: text/html");
601.
client.println("Connection: close"); // the connection will be closed after completion
of the response
602.
client.println("Refresh: 30; url=/");
603.
client.println();
604.
File webFile = SD.open(webHtml,FILE_READ);
605.
while(webFile.available()) {
i. client.write(webFile.read()); // send web page to client
ii. }
606.
webFile.close();
607.
client.print("<script>var UP = [");
608.
for(int n = 0; n<5; n++)
609.
{
610.
client.print(AccesoPermitido[n+1]?0:1);
611.
client.print(", ");
612.
}
613.
client.println("]; GenerateForm(5,UP);</script>");
614.
client.println("</body></html>");
615.
break;
616.
}
617.
if (c == '\n') {
618.
// you're starting a new line
619.
if(httpHead.indexOf("GET /?u=")!=-1)
620.
{
621.
int uid = httpHead.substring(8).toInt();
622.
Serial.print(uid);
623.
AccesoPermitido[uid] = (AccesoPermitido[uid]==true)?false:true;
624.
}
625.
httpHead = "";
626.
currentLineIsBlank = true;
627.
}
628.
else if (c != '\r') {
629.
// you've gotten a character on the current line
630.
currentLineIsBlank = false;
631.
}
632.
}
633.
} client.stop();
634.
}
Para aumentar los usuarios en la pagina web variamos tanto en n<1 hasta
n<127 de igual manera en GenerateForm(1 hasta 127,UP).
REFERENCIAS BIBLIOGRAFICAS
DE
de Ingeniera Elctrica
DE
ELECTRIFICACIN
Departamento
de
Catalunya (UPC).
4. CEDOM (2007); Revista N de abril del 2005 de la revista de la asociacin
domtica espaola (CEDOM).
5. Charles Belove, ENCICLOPEDIA DE LA ELECTRONICA INGENIERIA Y
TECNICAS, OCEANOCENTRUM.
6. Garca, R. (2009). INSTALACIN
UNIFAMILIAR
CON
EL
DOMTICA DE
SISTEMA
superior.
UNA VIVIENDA
EIB. Universidad
Departamento
de
Carlos
III
ingeniera
elctrica.
7. H.S. Marjorie, CONTROL DE APERTURA Y ACCESO A BOVEDAS DE
ALTA
SEGURIDAD,
MEDIANTE
CLAVES
DISPOSITIVOS
Coordinacin
de
Publicaciones
10. Fidia
DE
Digitales.
DGSCA-
INVESTIGACION
CON