Llave electrónica con PIC

te qudo muy bueno rey felicitaciones!

nano me quede pensando... ya que la tenes clarinete en basic podrias darme una mano con mi cerradura? lo que quiero lograr es esto

Gracias, la verdad me costo un poco pensar la mecánica sin necesidad de estropear mi puerta!!!

Nano24 dijo:
Gracias, la verdad me costo un poco pensar la mecánica sin necesidad de estropear mi puerta!!!

Y chequea mi programacion que ahi esta todo como se debe de hacer, hasta publicada la electronica.

Oie que buen proyecto!! Felicidades!!

Gracias, que bueno que les agrado!!

:aplauso:
muy buen proyecto felicidades

Gracias a ustedes que publican e incitan a mover a otros a hacer aportes en la pagina.
 
Última edición:
yo hice una en lenguaje picbasic con grabado de clave en la eeprom, a queda bien y se la adapte a la puerta de mi cuarte :d funciona genial, el mecanismo para abrir la manilla de la puerta fue un motor servo trucado, pronto subire el video para que la vean.

Aqui les subo el ejemplo simulado en proteus con el archivo hex y el archivo pbp que es lenguaje picbasic, sin mas que decir dentro de la carpeta esta un documento texto que dice leeme ahi explica algunos detalles del funcionamiento. :d

a mi me funciona pero no se visualiza nada en el lcd alguien podria ayudarme ?
 
gracias por el aporte estoy en un proyecto parecido pero con pic 16f88 ,tu programa lo simule pero no me refleja en el lcd pero las salida de a0,a1,a2
funcionan podrias suvir la configuracion del lcd gracias
 
gracias por el aporte estoy en un proyecto parecido pero con pic 16f88 ,tu programa lo simule pero no me refleja en el lcd pero las salida de a0,a1,a2
funcionan podrias suvir la configuracion del lcd gracias

Bueno amigos e mejorado el sistema, lean el archivo LEEME dentro de la carpeta, me avisan cualquier duda.
 

Adjuntos

  • CLAVE ELECTRONICA Y GUARDADO EN LA MEMORIA EEPROM MEJORADA.zip
    88.1 KB · Visitas: 493
Hola, me gusto tu proyecto y quisiera implementarlo pero cuando le pongo la clave de administrador 123 no hace nada ni tampoco me funcionan las teclas c y d. Espero tu respuesta sino alguien me podria responder, me urge demasiado


Lo he probado si funciona amigo, solo debes presionar la clave un poquito abajo del boton hasta que salga en el display algun caracter.
 
@jedilink hola, bueno aca tengo lo que pides pero, el programa esta en basic, espero que ayude

Simulacion:

llave%20electronica+lcd+simulacion.gif



Esquema:
llave%20electronica+lcd-2.png



PHP:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Luis Perez                                 *
'*  Notice  : Copyright (c) 2010 IB-electronic                  *
'*          : All Rights Reserved                               *
'*  Date    : 06/10/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
                                      '****************************************************************
                                      @ device pic16f877a, wdt_off, lvp_off,xt_osc,xt_osc
                                      define osc 4
                                      DEFINE LCD_DREG PORTD
                                      DEFINE LCD_DBIT   4 
                                      DEFINE LCD_RSREG   PORTD 
                                      DEFINE LCD_RSBIT  0 
                                      DEFINE LCD_RWREG  PORTD 
                                      DEFINE LCD_RWBIT  1
                                      DEFINE LCD_EREG  PORTD 
                                      DEFINE LCD_EBIT   2
                                       cmcon=7
                                        TRISA=0:porta=0
                                        trisb=%11111000:portb=0
                                        trisc=%11111100
                                        trisd=0:portb=0
                                        trise=0:porte=0
                                       Numero var byte
                                        nu1 var byte
                                        nu2 var byte
                                        nu3 var byte
                                        nu4 var byte
                                        R var byte
                                        x var byte
                                        x=0
                                       PARLAN VAR PORTC.0
                                        LED VAR PORTC.1
                                        PUERTA VAR PORTC.2
                                        PC var portc.3
                                        PA var portc.7
                                       F1 VAR PORTB.0
                                        F2 VAR PORTB.1
                                        F3 VAR PORTB.2
                                        F4 VAR PORTB.3
                                       C1 VAR PORTB.4
                                        C2 VAR PORTB.5
                                        C3 VAR PORTB.6
                                        C4 VAR PORTB.7
                                       Car1 var byte
                                        Car2 var byte
                                        Car3 var byte
                                        Car4 var byte
                                        dato var byte
                                       Pre: 
                                        lcdout $FE,1:LCDout $FE,$80,"Llave electronic"
                                        pause 500
                                        lcdout $Fe,$C0,"ib-electronic"
                                       INICIO:
                                        HIGH LED : SOUND parlan,[100,50]:high parlan
                                        LOW LED : LOW parlan
                                       '*********************************************
                                        'Claves por defecto=1234:
                                        '*********************************************
                                        eeprom 0,[1,2,3,4]
                                        RESET:
                                        read 0,car1
                                        read 1,car2
                                        read 2,car3
                                        read 3,car4
                                      
                                       goto TEcla1
                                        
                                        TEcla1:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
  
                                        gosub teclado: lcdout $fe,$c0,"X" :gosub pid
                                        gosub espacio
                                        nu1=numero
                                        if numero=car1 then TEcla2
                                        goto false
                                       TEcla2:
                                        gosub teclado : lcdout $fe,$c0,"XX" : gosub pid
                                        gosub espacio
                                        nu2=numero
                                        if numero=car2 then TEcla3
                                        goto false1
                                       Tecla3:
                                        Gosub Teclado : lcdout $fe,$c0,"XXX" : gosub pid
                                        gosub espacio
                                        nu3=numero
                                        if numero=car3 then Tecla4
                                        goto false2
                                       TEcla4:
                                        gosub teclado : lcdout $fe,$c0,"XXXX" : gosub pid
                                        gosub espacio
                                        nu4=numero
                                        if numero=car4 then compara
                                        goto false3
                                       Compara:
                                        if (nu1=car1) and (nu2=car2) and (nu3=car3) and (nu4=car4) then open
                                        goto false3
                                       PID:
                                        SOUND parlan,[100,10] : high led
                                        pause 300
                                        low parlan :low led
                                        return
                                       Espacio:
                                        pause 300
                                        return
                                       False:
                                        goto tecla2
                                       False1:
                                        goto tecla3
                                       False2:
                                        goto tecla4
                                       False3:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
                                        lcdout $FE,$C0,"incorrecta"
  
                                        for r= 1 to 20
                                        high led : SOUND parlan,[100,10] : high pc
                                        pause 50
                                        low led : SOUND parlan,[50,10] : low pc
                                        pause 50
                                        next
                                       high pc
                                        pause 2000
                                        low pc
                                        goto tecla1
                                       OPen:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
                                        lcdout $FE,$C0,"Correcta"
  
                                        for r=0 to 2
                                        high led:SOUND parlan,[100,10];high parlan
                                        pause 100
                                        low led :SOUND parlan,[50,10];low parlan
                                        pause 100
                                        next
  
                                        Menu:
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Bienvenido"
                                        lcdout $fe,$C0,"Luis Perez"
                                        pause 1000
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Menu"
                                        lcdout $fe,$c0,"1-Open 2-Clave"
  
                                        Op:
                                        gosub teclado
                                        if numero=1 then door
                                        if numero=2 then graba1
                                        goto op
  
                                        Door:
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Puerta"
                                        lcdout $fe,$C5,"Abierta"
  
                                        high puerta :high pa
                                        pause 5000
                                        low pa :low puerta
                                        goto tecla1
                                      
                                       Graba1:
                                        lcdout $fe,1 
                                        lcdout $fe,$80,"Cambiar Clave" 
                                        lcdout $fe,$c0,"----" 
  
                                        high led : SOUND parlan,[100,300] : pause 1000 : low led : low parlan
                                        gosub teclado:gosub PID 
  
                                        lcdout $fe,$c0,"X--" 
  
                                        write 0,numero
                                        pause 300
                                       Graba2:
                                        gosub teclado:gosub PID
  
                                        lcdout $fe,$c0,"XX--" 
  
                                        write 1,numero
                                        pause 300
                                       Graba3:
                                        gosub teclado:gosub pid
  
                                        lcdout $fe,$c0,"XXX-" 
  
                                        Write 2,numero
                                        pause 300
                                       Graba4:
                                        gosub teclado:gosub pid
  
                                        lcdout $fe,$c0,"XXXX"
  
                                        write 3,numero
                                        pause 300
  
                                        lcdout $fe,1 
                                        lcdout $fe,$80,"Clave guardada" 
                                        lcdout $fe,$c0,"xxxx" 
                                       for r = 0 to 5
                                        SOUND parlan,[100,10] : high led
                                        pause 100
                                        SOUND parlan,[50,10] : low led
                                        pause 100
                                        next
                                        goto RESET
                                       Teclado:
                                        low f1
                                        if c1=0 then numero=7:return
                                        if c2=0 then numero=8:return
                                        if c3=0 then numero=9:return
                                        high f1
  
                                        low f2
                                        if c1=0 then numero=4:return
                                        if c2=0 then numero=5:return
                                        if c3=0 then numero=6:return
                                        high f2
  
                                        low f3
                                        if c1=0 then numero=1:return
                                        if c2=0 then numero=2:return
                                        if c3=0 then numero=3:return
                                        high f3
  
                                        low f4
                                        if c1=0 then numero=10:return
                                        if c2=0 then numero=0:return
                                        if c3=0 then numero=11:return
                                        high f4
  
                                        pause 10
                                        GOTO teclado
                                     end
Descarga el esquema y programa en http://ib-electronic.com/index-6-llave cerradura electronica con lcd.html




Podrías volver a subirlo, el link de tu página a expirado.
 
Lo que pasa es que cuando le doy click al enlace no me carga nada; me dice la pagina no existe, si alguien puede volverlo a subir los archivos para la simulacion, se los agradecería un monton.
 
Hola! soy nuevo con los pics, he conseguido un trainer y trainer plus, en el trainer tengo el pic16f84A y quiero hacer que funcione este programa de la llave, tengo que cambiar el encabezado a:
#include <16f84A.h> //pic a utilizar
y los fuses tambien cambian como pone en la pagina 1 porque el micro es otro?

lo he cambiado ya y entonces no me compila... me podeis echar una mano?
gracias!!
 
hola que tal, estoy en un proyecto escolar sobre una alarma con un pic 16f887, el problema es qe no tengo idea de guardar la clave en la memoria (mas de una variable),. Alguien podria ayudarme
 
Hola! soy nuevo con los pics, he conseguido un trainer y trainer plus, en el trainer tengo el pic16f84A y quiero hacer que funcione este programa de la llave, tengo que cambiar el encabezado a:
#include <16f84A.h> //pic a utilizar
y los fuses tambien cambian como pone en la pagina 1 porque el micro es otro?

lo he cambiado ya y entonces no me compila... me podeis echar una mano?
gracias!!
No solo con cambiar #include <16f84a> o los fuses lograras que el programa funcione para ese PIC.
Se tienen que modificar varias partes del programa para adaptarlo a otro PIC.



hola que tal, estoy en un proyecto escolar sobre una alarma con un pic 16f887, el problema es qe no tengo idea de guardar la clave en la memoria (mas de una variable),. Alguien podria ayudarme
¿Ya revisaste el programa que se encuentra mas arriba?
se pueden guardar 4 digitos en la EEPROM interna del PIC

CLAVE ELECTRONICA Y GUARDADO EN LA MEMORIA EEPROM MEJORADA

Si requieres de mas digitos puedes agregar el mismo procedimiento para otros.
 
Última edición:
Si lo cheque gracias, el problema es que manejo solo mikroc , pero el problema radica en que qiero una clave de mas de un digito pero no se como guardar esas variables en la memoria
 
Última edición por un moderador:
Si lo cheqe gracias, el problema es qe manejo solo mikroc , pero el problema radica en qe qiero una clave de mas de un digito pero no se como guardar esas variables en la memoria
Ok. En este foro se inicio un tema similar sobre guardar un arreglo en la memoria eeprom en PICC
No sé si llegaron a una solución, porque un tema empieza en una cosa y termina en otra.
Pero posiblemente alguna de las opiniones te pueda servir.
En dado caso puedes consultar tu pregunta dentro de ese post. :apreton:
 
Saludos a todos!

Desde hace mucho llevo siguiendo este tema, hasta que por fin me decidi a trabajarlo y gracias a @Nano24 he conseguido programar mi propio sistema, ademas le hice unas mejores y por supuesto lo personalice un poco.

Las mejoras consisten es lo siguiente:

  1. El sistema utiliza 6 digitos para us contraseña, lo que se resume en un poco mas de seguridad.
  2. El sistema ahora energia, ya que mientras no se haga interaccion con el teclado ni los sensores, el queda en estado "sleep".
  3. Despues de 3 intentos fallidos, sonara una alarma durante 15 segundos.
  4. El leds de "cerrado" permanece encendido hasta que se introduzca la clave correctamente o bien se active el sensor.

ESQUEMA

Cerradura electronica.JPG

Si no es mas, adjunto les dejo lo que hice.
Ver el archivo adjunto Firmware 6DIG + Alarma + Ahorro energia.zip

Exitos!!

PD: Adjunto tambien les dejo un par de tutoriales y guias que me sirvieron de mucho! ;)
Ver el archivo adjunto Documentacion.part1.rar
Ver el archivo adjunto Documentacion.part2.rar
 
Que mas espero estes bien me gusto mucho tu proyecto. Tengo unas cuantas preguntas.
¿El programa como está, funciona en la vida real?
Y ¿por qué cuando uno pulsa una tecla en la fila 2,3,4 toca dejarla presionada?
¿La clave se guarda cuando uno la modifica así se desconecte de la corriente?

Gracias
 
Última edición por un moderador:
Hola @nano24 con respecto a tu cerradura esta genial!... me gustaría que me eches una mano, como podría anardirle? para que a la cuenta de 3 intentos erroneos se visualice en el display "ALARMA".

Gracias de antemano por la ayuda que me puedas brindar.

Alex B.
 
Última edición por un moderador:
Hola Jey1124 me gusto la modificación que hiciste a la cerradura. Me podrías ayudar a ponerle un contador de intentos fallidos; como el tuyo? gracias de antemano, espero tu pronta respuesta.
 
Muy interesante el proyecto.

yo hice el diseño de una cerradura en mikroc. adjunto los esquemas, codigos y archivo de proteus. el programa permite guardar solo una clave, para mas claves hay que hacer unos cambios minimos.
saludos espero sirva.
 

Adjuntos

  • Cerrad16f877.zip
    59.7 KB · Visitas: 209
Última edición:
Atrás
Arriba