Autor Tema: Decodificar control rf 433 con pic 16f628a  (Leído 2687 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado An3ramirez

  • PIC10
  • *
  • Mensajes: 1
Decodificar control rf 433 con pic 16f628a
« en: 04 de Junio de 2017, 11:18:24 »
Hola amigos alguien me podría ayudar a devodifcar con un pic 16f628a la señal que me emite estos controles chinos que trabajan a 433 en arduino con una librería lo hacen pero para hacer esto mismo en un pic como sería gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #1 en: 04 de Junio de 2017, 14:37:48 »
Hay codigos realizado para PIC de un usuario del foro, realmente no recuerdo donde esta el link

Y la otra es que si tenes la libreria de Arduino podes "copiar" o crear un codigo que haga lo mismo, solo deberias quitarle las clases y reemplazar las funciones de Arduino por unas tuyas.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #2 en: 05 de Junio de 2017, 12:11:10 »
Que tal An3ramirez,

No puedeo ver ninguna imagen debido al firewall en mi trabajo, pero me imagino que estos contienen el integrado EV1527, cierto?
Si es así podrías explicar un poco lo que pretendes realizar.

elreypic.

Desconectado Varcorp

  • PIC10
  • *
  • Mensajes: 5
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #3 en: 08 de Junio de 2017, 17:02:52 »
   An3ramirez

Que deseas hacer con el modulo y el pic. para que nos des una idea al igual que el compilador que utilizas.


Desconectado tobiasmv

  • PIC10
  • *
  • Mensajes: 1
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #4 en: 15 de Junio de 2017, 16:21:34 »
hola  An3ramirez estoy trabajando en algo  como lo que vos buscas ; todavía estoy muy verde con el tema de programación , lo conseguí hacer funcionar con arduino y lo que te puedo decir es que según el circuito que tenga el control rf (el transmisor); en mi caso es un PT2240b ; varia la cantidad de bits de la codificación del control, por lo general es un código de entre 12 y 30 bits  , en mi caso es de 24 bits siendo los primeros 20 correspondientes a la codificación del control y los últimos 4 te dan la tecla pulsada ,
al pulsar un botón el control transmite 24 bits  (Ejemplo) 010001101000110110100001 los últimos 4 bits 0001 indican que se pulso el botón 1 del control en mi caso las pruebas me arrojaron  estos resultados : botón 1 ....0001 , botón 2 ....0010 , y botón 3 .....0100 , encontre informacion en una pagina en portugues y lo hicieron funcionar con pic 12f629  http://blog.larios.tecnologia.ws/iBlog/archives/4704/ autor : CLAUDIO LÁRIOS , mi idea es hacerlo funcionar en un 16f84a para la alarma de mi coche  . saludos 
« Última modificación: 15 de Junio de 2017, 16:26:56 por tobiasmv »

Desconectado VICTOROU

  • PIC10
  • *
  • Mensajes: 2
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #5 en: 03 de Enero de 2023, 15:40:48 »
Hola a todos,

Probaste el código ése?

Estoy retomando lo del receptor.

Desconectado danywes

  • PIC10
  • *
  • Mensajes: 12
Re:Decodificar control rf 433 con pic 16f628a
« Respuesta #6 en: 26 de Febrero de 2023, 10:46:06 »
Hola, yo estoy usando esos modulos de 433mhz para conectar entre si pequeños modulos con pic16f823 y el pic16f884. con el compilador CCS.

Hay que considerar varias cosas. si todo esta bien les pude sacar mas de 50 metros de distancia.

Primero que si usas el puerto serie UART, la linea TX mientras no se usa, que no transmitis, flota a 1. y eso hace que el modulo que
trasmite esta todo el tiempo emitiendo RF. (portadora) eso no es bueno, y si usas mas de un modulo no podes por que se va a pisar entre si.

Eso lo resolví agregando un cable a un pin del pic que apaga el transmisor mientras no se usa. Pero si estas experimentando y solo usas dos modulos no importa.

Segundo usa 1200 baudios ideal, a 2400 todavia funciona, pero idealmente mejor a 1200b. otras velocidades no me dieron buen resultado.

Tercero, el modulo del receptor, al ser receptor regenerativo, mientras no hay uso esta todo el tiempo tirando ruido blanco. o sea vas a recibir basura todo el tiempo.

Lo que fuera que vas a emitir tiene que tener un encabezado, para que el receptor sepa que le esta llegando el dato y pueda discriminarlo de la basura al azar que llega todo el tiempo.

Cuarto, al momento de emitir hay que preparar lo que se llama un preambulo, es para acomodoar el receptor, si no siempre vas a perder los primeros caracteres que recibis.

Lo que yo hago es lo siguiente.

Envio muchos numeros unos y ceros, 10101010 asi para preparar el receptor.
luego hay que hacer una pequeña pausa, ensaye que esa pausa conviene que fuera de 20 milisegundos. ni mas ni menos. y es importantisimo.
poner la pausa o no me cambio de recibir como máximo 5 o 7 metros a funcionar mas de 50 metros de distancia.
la pausa hace que el UART se enganche perfectamente al próximo caracter.

luego de eso mandas un numero que identifica tu paquete, y despues los datos que quieras enviar.
en la rutina del receptor tenes que estar verificando ese numero, y cuando llega empieza a tomar lo que viene a continuacion, que son los dátos útiles.

Te paso la rutina que estoy usando como ejemplo para que saques las primeras lineas en donde manda el preambulo. (hasta el put(0x58) ; )
que es la parte importante para que ande bien.
y luego bueno, segun lo que quieras hacer. cualquier duda avisa.

void emite_paquete (void) {
      output_high (portadora); // enciende el transmisor.
      output_high(led_azul);
      putc(0x55);    // preambulo
      putc(0x55);    // preambulo
      putc(0x55);    // sincronismo
      delay_ms(20);  // en la practica 18ms tomando lo que come el buffer de hardware
      putc(0x58); // 01011000 palabra clave (esto es lo que va a esperar el receptor para empezar a decodificar)
      putc(version_protocolo); // 0x30 versión del protocolo (usar los 4 bits bajos)
      putc(largo_TX); // cantidad de bytes enviados
      putc(largo_TX ^255); // cantidad de bytes enviados
      for (int i=0;i<largo_TX;i++) putc(cu);
      putc(0xff);
      putc(crc_TX);
      delay_ms(40); // tiempo para que se vacíe el buffer UART por hardware.
      output_low (portadora); // apaga el transmisor.
      output_low(led_azul);
      recepcion_enable = true;   // enciende el receptor
      contador_paquetes_enviados++;
}
« Última modificación: 26 de Febrero de 2023, 10:49:21 por danywes »


 

anything