PIC12F675 y módulo de R.F, no recibe datos

D@rkbytes!

Basandome en el link que me dejaste realice estos códigos, la unica diferencia que tiene es que utilizo KBHIT() ya que mi rs232 es por software, y aun asi no logro conexion rf, ahora si lo conecto de pic a pic la funcion se ejecuta correctamente (blink led)... De ahi nace la idea de hacer algo un poco mas complicado :(

TX
PHP:
#include <12F675.h>
#fuses NOMCLR
#use delay(internal = 4MHz)
#use rs232(baud=1200, xmit=PIN_A2, bits=8, parity=N)

void main()
{
   putc(0x00);
   delay_ms(100);
   while (true)
   {
      puts("e");
      delay_ms(100);
   }
}

RX
PHP:
#include <12F675.h>
#fuses NOMCLR
#use delay(internal = 4MHz)
#use rs232(baud=1200, rcv=PIN_A2, bits=8, parity=N)

void main()
{
   byte c;
   output_low(PIN_A5);
   
   while (true)
   {
      if (kbhit())
      {
         c = getc();      
         switch (c)
         {
            case 'e':
            output_toggle(PIN_A5);          
         }         
      }
   }
}

No logro entender cual es mi error ya que como me decis vi que muchos lo hacen con el rs232, ¿el error será hacerlo por rs232 por soft? ¿alguien alguna vez tuvo el mismo problema que el mio?

Saludos, AlanB!

EDITADO:
Es posible enviar estos mismos datos a través de un encode/decoder um3750? Es decir, PIC TX -> UM3750 (Encoder) -> RF TX <-> RF RX -> UM3750 (Decoder) -> PIC RX, alguien lo probó de esta forma? En el datasheet del ic no especifica esto...
 
Última edición:
Basándome en el link que me dejaste realice éstos códigos.
La única diferencia que tiene es que utilizo KBHIT() ya que mi RS-232 es por software, y aún así no logro conexión R.F.
Ahora, si lo conecto de PIC a PIC, la función se ejecuta correctamente (blink led)
De ahí nace la idea de hacer algo un poco mas complicado :(
Primero debes lograr que funcione con algo sencillo y después ya pasar a lo complicado.
Si con RS-232 por software no logras comunicación, con algo complicado será peor.

¿Ya verificaste la compatibilidad entre tus módulos?
Tienes el RWS-371 como receptor y el TWS-433 como transmisor, y viendo sus hojas de datos, son algo diferentes.
Datos del RWS-371
Datos RWS-371.jpg

Datos del TWS-433
Datos TWS-433.jpg

Según veo, para el TWS-433 la velocidad típica es de 2400 Bps.

Desconozco si ésta pueda variar desde un mínimo X hasta un máximo de 3 Kbps.
Pero... ¿Por qué no haces una prueba con Tx y Rx a 2400 Bps.?
 
Última edición:
D@rkbytes, los tengo configurados a 2400bps, los monte sobre una placa pequeña soldados para evitar un poco de ruido, coloque un capa de 10nf entre los pines de alimentacion de estos (lo lei en un foro que tocaban el tema y tenian el mismo error) y nada aun... Según lei tambien, para que estos modulos funcionen correctamente es necesario utilizar codificacion manchester y estuve leyendo sobre el tema pero la verdad aun no se me ocurre como realizarla, manualmente es facil codificar pero el tema es hacer la funcion que lo haga XD

Encontre este articulo que habla y ejemplifica sobre codificacion manchester, pero mi ingles es un poco nulo y me cuesta entender los ejemplos, me ayudas?

EDITADO:
Encontre un link de youtube donde una persona utiliza dos 16f84 mediante codificacion manchester...

 

Adjuntos

  • Manchester_encoding_using_RS232.pdf
    111.8 KB · Visitas: 78
Última edición:
Encontré este articulo que habla y ejemplifica sobre codificación Manchester, pero mi inglés es un poco nulo y me cuesta entender los ejemplos. ¿Me ayudas?
OK. Tomando como base el documento que adjuntas y realizando algunos cambios, hice los programas.
Realicé las pruebas con dos 12F629 porque ya nada más tengo un 12F675.
Prácticamente son iguales, pero con la diferencia de que el 12F675 tiene ADC.

Ambos programas Tx y Rx funcionan físicamente conectados directamente.
Ya nos contarás que resultados obtienes con los módulos de R.F.

Adjunto el proyecto completo realizado con PIC C Compiler v5.044 y Proteus 7.10

Suerte.
 

Adjuntos

  • 12F629-675 Manchester Coder-Decoder.rar
    53.2 KB · Visitas: 125
Última edición:
D@rkbytes sos un GENIOOO!!! :D

Ya no se mete ruido en el receptor y además enciende y apaga el led cuando quiero, la verdad sos un genio, ahora lo voy a retocar para que quede con las funciones que queria :) Ni bien lo tenga terminado y funcionando subo el código por si a alguien le sirve!

Saludos, AlanB! :)

PD: Si tenes tiempo, solo si tenes tiempo, me gustaria comprender bien el codigo realizado, o sea me gustaria que me lo expliques asi comprendo bien ;)
 
Última edición:
Me gustaría comprender la codificación como la hace y bueno después es que las decodifica, todo el código sería jajajaja porque me intereso muchísimo el sistema de codificación
 
OK. Para entender mejor la codificación y decodificación Manchester de los programas, lee el documento que adjuntaste.

Si no sabes inglés, puedes usar por ejemplo, el Traductor de Google de tu región.
Copia y pega en el traductor las partes de texto que no comprendas. :cool:

Leer también: Codificación Manchester
4851ed30472eece72fd6267ececdbc6d_3259.gif
Wikipedia.


Aquí están los programas comentados y con algunos cambios para su mejor comprensión.

Saludos.
 

Adjuntos

  • Programas Manchester comentados.rar
    2.4 KB · Visitas: 89
D@rkbytes como va!

Increiblemente, el codigo no funciona, tenia mis modulos rf defectuosos y lo que parecia que tomaba mis funciones no era mas que puro ruido en el receptor, hoy compre unos modulos nuevos y ademas me compre unos ht12e/d para hacer unas pruebas con los modulos y es ahi cuando me doy cuenta que los modulos no funcionaban, inmediatamente reemplace los modulos defectuosos por los nuevos y me doy con que el codigo no funciona :(

Mañana probare reprogramar nuevamente los pics para ver si el error es de programacion y sino nuevamente a ponerme con el codigo...

Saludos!
 
Hace unos días compré unos módulos de R.F pero no había tenido tiempo de hacer pruebas.
Y efectivamente comprobé que los programas no funcionaban correctamente.
Realicé algunos cambios y ahora ya funcionan perfectamente.

Éstos son los módulos que compré: Módulos R.F.jpg Muy económicos, por cierto.

Y estas son las características del emisor: (Del receptor XY-MK-5V no encontré información)
FS1000A 433Mhz TX Module

  • Wide input supply (2.5 V to 12V)
  • Easy to integrate (V+, GND and Data)
  • Device in deep sleep mode when Data pin is grounded
  • Very small dimension
Características.jpg

También compré un HT-12E y un HT12D para experimentar un poco. :)

Adjunto los programas con los cambios y funcionando perfectamente.

Nota:
Los programas fueron probados con 2 PIC12F629 y también con 2 PIC12F675
El baudrate lo dejé en 2400 aunque los módulos que usé soportan hasta 9600 Bps.
 

Adjuntos

  • 12F629-675 Manchester Coder-Decoder II.rar
    29.9 KB · Visitas: 154
Gracias D@rkbytes, tuve unos problemas personales razones por la cual me ausenté en estos días... Ya lo descargué para mañana hacer pruebas ;)

Muchas gracias como siempre, vi que comentaste todo el code ;) muchas gracias por eso tambien!

Saludos, AlanB!
 
Amigo D@rkbytes quedó funcionando a la perfección, al principio tuve problemas pero al reemplazar mis módulos rf nuevamente quedo totalmente funcional, seguramente se me dañaron con las pruebas o a lo mejor ya vinieron mal...

Gracias, AlanB!

PD: La verdad aprendí mucho con este proyecto ;)
 
hola para todos
Amigo D@rkbytes quisiera saber si me puedes ayudar para la comunicación entre el pic12f675 como RX
y un arduino mega 2560 con TX, a través de modulos RF, aprovechando que a proteus se le puede agregar esta libreria nueva
 
Saludos.
Sobre este mismo tema se encuentra toda la información que necesitas.
No uso arduino, así que no me será posible ayudarte en ese aspecto.
 
ok gracias, otra duda con respecto al pic 12f675, y modificando tu ultimo programa no puedo programar el pic para que me de salida en el pin_a3 o GP3 con el

"set_tris_a(0xC7);" // 11000111 GP3, GP4 y GP5 como salidas.

ni tampoco #use rs232(baud = 2400, rcv = pin_a2
con otro que no sea el pin_a2... no funciona

port_a_pullups(0x04); // activa pull-up del bit 2, "00000100" = 4 en decimal.
 
En el transmisor no hay problema si se usa cualquier pin como Tx, menos GP3 que es únicamente entrada.
Y el receptor no va a funcionar con otro pin, porque se está usando la interrupción externa por GP2.
En ambos casos esto vendría siendo usando el oscilador interno para poder usar GP4 y GP5 (OSC2, OSC1)

Si quieres que la recepción sea por otro pin, tienes que hacerlo por poleo usando "kbhit()" dentro del bucle principal.
 
Yo hice ese proyecto y funciona muy bien. Use pic 12f675 TX y un entrenador con PIC16F88 como RX, aunque se puede usar también otro 12f675 como RX. El lenguaje es PROTON , pero no utilice ninguna interrupción.

Le puse antena de 16cm a los modulos de RF y el alcance a campo abierto es de unos 80 mts. Ahora intento enviar datos flotantes para hacer un termómetro inalambrico.

Saludos.
 
Hola D@arkbytes, me he quedado gratamente sorprendido de lo bien que manejas la programación y lo claro y acertado que eres en tus respuestas.

He estado revisando la info de este proyecto del PIC12f675 para comunicación serial, pero la verdad me perdí en la ultima parte en la que envías el código con comentarios, la pregunta es porque en el modulo del transmisor usas 2 pines Pin_A4 y Pin_A5. Si para el Modulo solo necesitas 1 pin de entrada de datos.
 
Saludos.
GP4 y GP5 (PIN_A4 y PIN_A5) respectivamente, son las entradas de los pulsadores.
Uno manda la instrucción para encender el LED (GP5) y el otro para apagarlo. (GP4)
 
D@rkbytes, gracias por la respuesta ahora me queda claro, yo venia con la mente pensando en mi propio proyecto en el cual yo solo empleaba una entrada y envío de diferentes códigos ..:)

Yo, aun cuando he programado en "C", estoy empleando Para PIC, AVR y otros, el compilador de OshonSoft Compilador en Basic, el cual me parece muy poderoso y amigable, que genera codigo muy compacto.
Cuando termine mi proyecto lo compartiré en el foro..
UNa vez mas gracias..
 
Atrás
Arriba