Go Down

Topic: Ayuda para Proyecto Alarma Casera. (Read 10825 times) previous topic - next topic

Imagina

Hola de nuevo,

Al principio da la sensacion que en este codigo no exista ningun protocolo de comunicacion, como dije en un post anterior dicho protocolo es tremendamente sencillo. Si tienes problemas con el te lo explico...

Por cierto, a este codigo le falta una especie de filtro, por lo menos en mi caso, me explico...  Al cablear la casa tuve que pasar los cables cerca de unos de luz, como veras este codigo se limita a recoger los datos que entran por dos cables y cada 26 bits chequea si es correcto o no, da la casualidad que si enciendo una de las luces de la casa un numero de veces, las interferencias producidas son recogidas por este codigo, y logicamente no coinciden con ninguna llave registrada, por lo tanto se escuchan unos BIP, BIP, BIIIP por toda la casa!!!  jajaja...  solución, controlar que los 26 bits sean recibidos en un periodo de tiempo, por ejemplo medio segundo, si no es así, se descartan como basura...


comeollas

me llego el lector RFID de la web que comentaste imagina, he puesto el codigo en el arduino y veo que tengo un problemilla...

Los llaberos tienen 10 digitos en lugar de 8 y el arduino si pongo los 10 digitos y tienen un numero superior al 7 me dice que "invalid digit "9" in octal constant" nueve por ejemplo es el ultimo numero de uno de los llaberos que quiera ponerlo de master.

Alguna idea de como podria usarlos estos llaberos?

de paso alguien tiene el codigo mas sencillo posible que solo sirva para leer con el RDM630 Wiegand los llaberos y que lo muestre por serial lo leido, solo que lea que no haga nada de nada mas, para yo comprender como funciona, con el codigo completo me vuelvo loco xDDDD

Imagina

#17
Mar 10, 2011, 04:59 pm Last Edit: Mar 10, 2011, 06:21 pm by Imagina Reason: 1
Te explico un poco, el código que llevan los llaveros por detrás hay que calcularlo partiendo del código binario (el que nosotros recibimos) quitandole el numero de fabricante, el código de inicio y final de transmisión, etc...  vamos que en principio no nos interesa, por lo menos a mi lo único que me interesa es que el código de cada llave sea UNICO (Ni siquiera necesito saber que código es).


Este programita lee el código RFID y lo imprime por puerto Serie... ( el código que necesitas para el otro programa "Código Maestro")

No lo he probado pero en principio tiene que funcionar... ;-)


Code: [Select]
volatile long Cod_Bin = 0;
volatile int Num_bit = 0;

void Cod_Bin_1() {
 Num_bit++;
 Cod_Bin = Cod_Bin << 1;
 Cod_Bin |= 1;
}

void Cod_Bin_0() {
 Num_bit++;
 Cod_Bin = Cod_Bin << 1;
}

void setup(){
  Serial.begin(9600);
 attachInterrupt(0, Cod_Bin_0, FALLING);                    // DATA0 - pin 2
 attachInterrupt(1, Cod_Bin_1, FALLING);                    // DATA1 - pin 3
}

void loop() {
 if(Num_bit >= 26){
  Serial.println(Cod_Bin);
  Cod_Bin = 0;
  Num_bit = 0;
 }  
}

comeollas

Probe el codigo para leer el codigo , siempre me da 0.

Amph que rabia no entiendo ni por donde empiezas jajajaja

flico

Comeollas, te dejo este enlace del proyecto de los chicos de tronixstuff. Creo que había una función para comparar los tags que te vendra bien para tu casita domotica.


Enlace.
http://tronixstuff.wordpress.com/2010/12/16/project-the-kid-e-log/

Saludos.
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

flico

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

comeollas

Gracias Flico voy a mirarmelos por la mañana, haber si consigo entender el "porque", esque de los codigos que he visto tan siquiera entiendo las variables del principio :P se me hace duro jejejej

comeollas

#22
Mar 11, 2011, 12:36 am Last Edit: Mar 11, 2011, 12:56 am by comeollas Reason: 1
Acabo de ver un fallo gordo mio tenia un cable suelto en la proto y el pin 3 no hacia buen contacto, ahora me acepta la que uso de master y me dice, registrado!! xD

Me pongo a indagar haber jejeje

Perdonaddddd si os aveis roto la cabeza mirando el porque fallaba   :smiley-red:

Imagina

yo he repasado el codigo una y otra vez...  y no encontraba nada!!!   

Te ha funcionado el segundo codigo??

Imagina

Te explico un poco como funciona el codigo sencillo...

El protocolo Wiegand, es muy simple, si entra un dato (5v.) por el Pin 2 (Data0) añade un 0 a Cod_Bin, si el dato entra por el Pin 3 (Data1) añade un 1 a Cod_Bin.

La forma sencilla de hacer esto es con Interrupciones (las dos lineas que ves en el "setup()") que llaman a las dos funciones que tienes justo encima de dicho "setup()". Te recomiendo que te informes un poco del uso de las interrupciones.

La otra "cosa rara" que puedes ver en este codigo es el uso de "bitshift  (<<)" es una forma muy sencilla, una vez sabes como funciona, de añadir bits a una cadena, en este caso es la forma más sencilla de ir acumulando los datos que nos entran por Data0 y Data1. Busca informacion de este tambien "bitshift left (<<)".

Y aquí de forma más visual, lo que hacen las interrupciones, y como van almacenando los datos que entran por Data0 y Data1

01 --- Data0 ---->  Cod_Bin<<1;      // binario: 00000000000000000000000000
02 --- Data1 ---->  Cod_Bin<<1;      // binario: 00000000000000000000000001
03 --- Data1 ---->  Cod_Bin<<1;      // binario: 00000000000000000000000011
04 --- Data0 ---->  Cod_Bin<<1;      // binario: 00000000000000000000000110
05 --- Data1 ---->  Cod_Bin<<1;      // binario: 00000000000000000000001101
06 --- Data0 ---->  Cod_Bin<<1;      // binario: 00000000000000000000011010
07 --- Data1 ---->  Cod_Bin<<1;      // binario: 00000000000000000000110101
08 --- Data0 ---->  Cod_Bin<<1;      // binario: 00000000000000000001101010
------
------
25 --- Data0 ---->  Cod_Bin<<1;      // binario: 00110101000111001011010010
26 --- Data1 ---->  Cod_Bin<<1;      // binario: 01101010001110010110100101  // decimal: 27846053

Una Vez tenemos los 26 bits este es el codigo utilizado como identificador, para que resulte más sencillo de ver, recordar o guardar lo represento en decimal.

Espero que de esta forma te resulte más sencillo de entender...   ;)

comeollas

ha esto le llamo una classe magistral jajaja

Ya entiendo ahora como funcina un RFID Wiegand!!! claro mi problema es que creia que funcionava como el UART/TTL y este no funciona asi necesitando usar los dos data (en el datasheet vi que el uart ponia pin 1 TX pin RX y en el wie data0 y data1 pero yo me dije a mi mismo... "es lo mismo!!" xDDD

Ahora me liare a integrarlo con el maximo de cosas posibles que tengo preparadas (meter en un solo arduino control de persianas, puertas, Lm35's, humos, visualizacion en LCD y Led matrix 8x32, LDR's para saber si es de dia o noche, webserver para control remoto, simulacion de presecia con leds...)

Por ahora todo esto lo tengo todo por separado echo y algunos ya estan juntados, ahora a intentar usar el minimo de arduinos UNO/Mega possibles jejejej

GRACIAS A TODOS!!!

Imagina

De nada...   y animo que para implementar todo eso en un codigo te vas a divertir un rato!!!  jajaja...

Jose Francisco

Los cacharros estos son ideales para puertas, ventanas y persianas. Y nada caros.

http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0333192&cm_vc=av_es
http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0333158&cm_vc=av_es

También busco un interruptor económico para monitorizar si alguien tensa o corta el alambre de espino de la alambrada.
¿Alguna idea?

Un saludo.

flico

Quote
También busco un interruptor económico para monitorizar si alguien tensa o corta el alambre de espino de la alambrada.
¿Alguna idea?


Los equipos que electrifican las vallas cuentan con una funcion que es detectar intruso sin descarga electrica o manipulación del vallado. No tengo ni idea como funcionan estos equipos.

saludos,
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Imagina

Es solo una suposición, pero al igual que las vallas electricas dan las descargas al tocar dos puntos de la misma, es muy posible que la detección sea algo similar, al tocar dos puntos lo que se hace es, con una pequeña corriente, cerrar un circuito... 

Imagina que metes 6v. por una de las lineas, la otra linea es la que "lees", si en algún momento recibes algo de voltaje por esa segunda linea, es porque algo o alguien está intentando acceder.

Go Up