19
jul 2012
32

Módulos de radio frecuencia a 433Mhz para Arduino

Una de las funcionalidades que quiero que tenga la estación de información es que sea capaz de mostrarme la temperatura, tanto la de la habitación como la del exterior.

Para ello es necesario varios componentes, el primero de ellos son los sensores de temperatura de los cuales hay infinidad de modelos diferentes y cada uno con sus peculiaridades, para no extenderme hablare de ellos en otra entrada. También necesitaremos solventar el problema de conectar el Arduino al sensor de exterior, separado por varios metros, podemos hacerlo por cable o como en este caso con unos módulos inalámbricos.

Dichos módulos nos van a permitir conectar dos Arduinos y que estos puedan comunicarse unidireccionalmente de modo que el Arduino (o Attiny) que este en la terraza leerá la temperatura del sensor y la enviara inalámbricamente al Arduino de la EIE que se encargara de mostrar el dato por pantalla.

También hay distintos módulos RF, yo me he decantado por estos que necesitan muy pocos pines para funcionar, no usan el puerto serie si no los pines 11 y 12, y encima tan solo cuestan 2€ con envió incluido. Los módulos trabajan a 433Mhz, el emisor puede funcionar con una tensión de entre  3 y 12V, y el receptor funciona a 5V.

Para hacerlos funcionar necesitamos la librería  VirtualWire que podemos descargar del repositorio oficial o de aquí la versión 1.9. También es recomendable bajarse este pdf con mas documentación sobre la librería.

En esta foto, parte superior emisor, parte inferior receptor.

Adjunto el código del ejemplo del vídeo:

 


Entrada con 32 Respuestas

  1. 26 julio 2012 a las 16:15 pm

    interesante..
    que alcance tienen los modulos rf?
    si necesitas mas velocidad y precision te recomiendo los apc220 ademas de que son mucho mas faciles de usar.
    un saludo!

    • 26 julio 2012 a las 16:47 pm

      Unos 4 metros con un alambre como antena.
      Esos módulos tiene buena pinta pero de 30€ no bajan…

    • 26 julio 2012 a las 17:16 pm

      la verdad es que si.. 90€ me gaste yo en 3 pares.. pero vamos.. 1km de alcance, comunicacion serial.. lo usado en varios proyectos y van muy bien.
      echale un vistazo a mi blog si quieres!
      http://xapus.blogspot.com.es

    • 26 julio 2012 a las 18:53 pm

      En tu caso es perfecto para el coche teledirigido, necesitas mucho alcance y enviar muchos datos, además haciéndolo por serial es mas sencillo.

      En mi caso no me sirve porque el chip que uso no tiene salida serial, y con menos alcance me sirve igual ;)

    • 26 julio 2012 a las 21:30 pm

      hombre.. valer si que te valdria, el arduino mini tiene serial XD

    • 26 julio 2012 a las 22:14 pm

      No no, lo de esta entrada es un ejemplo. Su uso va a ser con un Attiny85 para montar un sensor de temperatura inalámbrico montado en la terraza.
      Como ese chip no tiene conexión serial esta es una de las mejores alternativas, además con 2€ que cuesta me hace la faena perfectamente ;)

  2. 12 enero 2013 a las 2:21 am

    Muchas gracia explicarlo todo tan bien, me acaban de llegar los módulos y no sabia por donde empezar con ellos, ahora ya he entendido un poco mejor como funciona.

    En la linea 54 del código del receptor he tenido que cambiar la linea porque sino me imprimía los caracteres como numeros, este es el cambio:

    lcd.write(buf[i]);

    • 12 enero 2013 a las 3:25 am

      Hola rulicos,

      Me alegro de que te sirviera la información y de tu comentario.

      La linea que comentas si que es cierto que puede que haga lo que dices, ya no lo recuerdo, quizás modifique el código en el IDE pero no puse aquí la ultima versión…
      Puedes probar también a poner esto:

      lcd.print((char)buf[i]);
      o
      lcd.print(buf[i], BYTE);

      Creo que funcionaran ambas.

      Saludos!

  3. 8 febrero 2013 a las 20:05 pm

    Buenas tardes, me maree un poco al ver que en el video tienes conectado el receptor al arduino nano y el emisor al otro y en las fotos alrevez…

    • 8 febrero 2013 a las 20:29 pm

      Son dos pruebas distintas, cualquiera de los dos Arduinos puede usar cualquiera de los dos módulos. Solo hay que grabarles el código que corresponda y funcionaran perfectamente.

      Saludos!

  4. 18 febrero 2013 a las 3:50 am

    Hola, muy interesante tu proyecto, como se haría para transmitir mediante RF unicamente una señal de abierto/cerrado desde un arduino, tendría que haber necesariamente otro arduino como receptor o se podría hacer directamente sobre el circuito?

    • 18 febrero 2013 a las 10:16 am

      Hola,

      A través de los módulos se envían bytes, eso hace que sea necesario un Arduino o cualquier otro microcontrolador para obtener esos datos y hacer lo que se desee según lo leído.

      En ebay tienes módulos RF ya preparados para activar relés con un mando a distancia, así te ahorras ambos Arduinos.

      Saludos!

  5. 18 marzo 2013 a las 16:59 pm

    Estimado, solo tengo una duda, cómo lograste enviar el dato de temperatura, sensado con tu arduino?? El valor lo trasnformaste a string??

    • 18 marzo 2013 a las 20:18 pm

      Hola,

      Tienes que pasarlo a un array de caracteres y después enviarlo.

  6. 19 marzo 2013 a las 1:08 am

    Muchas Gracias por tu ayuda !!!!

  7. 19 marzo 2013 a las 1:11 am

    Utilizaste el comando “dtostrf” para hacer el cambio?

  8. 11 abril 2013 a las 20:10 pm

    Buena información estoy buscando el control de un motor dc con los módulos tlp434 y rlp434 algún tutoríal me podrías ayudar gracias tengo un arduino uno

    • 11 abril 2013 a las 21:34 pm

      Hola,
      Pásate por este hilo de forocoches donde se esta hablando mucho sobre montar coches robot inalámbricos, creo que querían hacerlo para que fuera con varios módulos inalámbricos…

      Saludos!

  9. 27 mayo 2013 a las 10:50 am

    Hola,
    Cómo has realizado el programa para que te funcione con un attiny85 el transmisor? llevo ya días intentandolo y nada, muchas gracias

    • 27 mayo 2013 a las 11:00 am

      Son dos Arduinos, no lo hice funcionar con los Attiny85.

      Saludos!

  10. 5 octubre 2013 a las 11:40 am

    Hola
    Muy interesante, tengo una duda necesitaria dos modulos de RF (TX y RX) para que el segundo no fuera un mero actuador sino que enviara el estado de las acciones solicitadas, o existen modulos de RF que hacen funciones de TX/RX a la vez en modo Duplex/Semi-Duplex/Simplex

    Salu2

    • 5 octubre 2013 a las 12:16 pm

      Hola,

      Si, puedes usar los módulos NRF24L01, esos te permiten enviar y recibir datos y ademas tienen mas alcance.

      Saludos!

  11. 23 noviembre 2013 a las 17:36 pm

    Buenas tardes!!

    Me parece muy interesante tu entrada, estoy intentando hacer lo mismo pero con un aTTINY85, lo conseguiste al final?? yo aun no….

    • 23 noviembre 2013 a las 17:42 pm

      Hola,

      No, al final lo deje estar para ese proyecto, y seguramente también para el resto de proyectos, no me gusta como funcionan.

      Un código simple que solo regula el brillo por PWM de unos leds y los apaga tras pasar 10 minutos funciona perfectamente en Arduino durante muchos días seguidos, y con attiny hay días que funciona y otros días que no, a parte que los leds hacen pequeños parpadeos como si el PWM fuese inestable.

      Y respecto a los módulos RF tampoco me gustaron, son baratos pero dan muchos problemas a la hora de elegir las antenas. He probado también los NRF24L01 y son mucho mejores, solo les veo de pega que usan muchos mas cables para funcionar.

      Saludos!

  12. 3 diciembre 2013 a las 2:41 am

    Muy buenas tardes amigo, oye estoy intentando enviar los datos que obtengo de un DHT11, sensor de temperatura y humedad, pero como paso los datos a un array de caracteres?, pordrias ayudarme?, porfa

    • 5 diciembre 2013 a las 13:31 pm

      Hola,

      Pues puedes usar estructuras de datos entre ambos Arduinos y así te ahorras el tener que convertir las variables de un tipo a otro.

      O puedes, como dices, pasar los números double a arrays de caracteres, y luego en el otro arduino realizar de nuevo la misma operación pero a la inversa.

      http://dereenigne.org/arduino/arduino-float-to-string

      Yo sin duda te recomiendo lo primero, tienes algunos ejemplos en el blog, busca STRUCT y UNION

      Saludos.

  13. 7 febrero 2014 a las 6:24 am

    Disculpa amigo me gustaría saber que tipo de seguridad le puedo incorporar a estas transmisiones o son vulnerables a cualquier escucha?
    Gracias

  14. 3 junio 2014 a las 20:18 pm

    buenas tardes amigo, ese modulo puede transmitir un video de forma inalambrica? y a que distancia? espero tu pronta respuesta, gracias

    • 3 junio 2014 a las 20:41 pm

      Hola,

      Transmite los datos que quieras, pero tendrás que buscarte la vida para enviarlos y recibirlos correctamente.

      Quizás sea preferible algún modulo a 2.4Ghz ya que el ancho de banda es mayor, aunque pierdes algo de alcance.

      Saludos.

  15. 22 junio 2014 a las 4:56 am

    Sabes como acoplar un lm35 con un módulo fm o rf, quiero enviarselo a un arduino y de ahí lo visualice a mi pc, o sea al revés, de sensor a arduino.

    • 22 junio 2014 a las 12:10 pm

      Tendrás que conectar el LM35 a un Arduino y este a un modulo RF. Ese circuito se conectara a otro compuesto de un RF y un Arduino conectado por USB al PC y podrás leer los datos.

      Estos módulos RF no cuentan con su propio microcontrolador así que no pueden funcionar de forma independiente, siempre necesitan a alguien que los controle.

Escriba aquí su comentario