Mostrando entradas con la etiqueta Comunicaciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta Comunicaciones. Mostrar todas las entradas

sábado, 23 de septiembre de 2017

Arduino Ejemplos: El modulo NRF2401 comunicación bidireccional

Muy buenas a todos los Arduineros!!!

Como vimos en la entrada anterior: Arduino Ejemplos: El modulo NRF2401 comunicación Unidireccional se pueden enviar datos de un módulo nRF2401 a otro. Bien, esta comunicación puede realizarse en los dos sentidos, es decir, cada modulo tiene la capacidad de enviar y recibir datos.

Para ello necesitaremos dos canales, uno para enviar datos y otro para escuchar o recibir los datos.

NRF2401 pinoutEsta comunicación es de tipo Half-Duplex ya que no transmite ni recibe los datos por el mismo canal, si no que abre un canal para enviar y lo cierra para escuchar. Un buen ejemplo de este tipo de comunicación son las emisoras de radio de tipo civil, donde el operador pulsa un botón para hablar y tiene que soltarlo para escuchar.

Con este diagrama se entiende mucho mejor lo que quiero explicar:


jueves, 21 de septiembre de 2017

Arduino Ejemplos: El modulo NRF2401 comunicación Unidireccional

Buenas a todos los Arduineros

Siguiendo con la comunicación inalámbrica le toca el turno a los módulos NRF2401. Estos pequeños módulos comunican con Arduino para poder transmitir y recibir datos en la banda de 2.4GHz.

Esto hace posible una comunicación a una distancia de unos 250 metros, más que considerable si lo comparamos con los módulos HC-06 que solo tiene un alcance de entre 5 y 10 metros.

Como casi todos los componentes para Arduino son módulos con un costo bastante reducido, lo que los hace mucho más atractivos a la hora de decantarse sobre una comunicación de tipo inalámbrica, aunque eso dependerá en gran medida del proyecto que vayamos a realizar.

En mi caso lo usaré para temas relacionados con el radio control, ya que estoy a medio camino de terminar un pequeño transmisor partiendo como base de un mando de Xbox.

Especificaciones técnicas del modulo NRF2401:

  • Fuente de alimentación: 1.9 ~ 3.6V
  • Tasa de transmisión: +7dB.
  • Alcance de la transmisión: 20-30m (100m sin obstáculos/li>
  • Dimensiones: 15x29mm.
  • Funcionamiento en la banda ISM de 2.4GHz, no se necesita licencia y es libre en todo el mundo
  • 3 Velocidades de datos: 250Kbps, 1Mbps y 2Mbps.
  • Consumo eléctrico muy reducido.
  • Precio muy reducido

sábado, 10 de junio de 2017

Arduino ESP8266 servidor web con DHT11 y sensor de humedad en tierra


Buenas a todos!!!
Estamos otra vez por aquí  con nuevos ejemplos. En este caso estoy probando una pequeña estación meteorológica  con Arduino y el módulo ESP8266.
Si bien he tenido que mirar muchas páginas y diferentes ejemplos hasta encontrar el que más a mi modo de ver fácil y con un funcionamiento de notable.

Tuve bastantes problemas con un fallo llamado "busy s..." incluso después de haber actualizado la versión del Firmware a la versión 0.9.2.2 tuve que volver a actualizar a la versión 1.3.0.
Toda la información sobre como actualizar el Firmware del modulo ESP8266 la podéis encontrar aquí.


Para este ejemplo he utilizado los siguientes componentes


  • Arduino Nano
  • Módulo WiFi ESP8266
  • Sensor DHT11 Temperatura y Humedad
  • Sensor SMS  (Soil Moisure Sensor) Sensor de humedad en suelo.

























Una vez abierto el Programa al final del archivo .ino encontrareis una linea llamada:

jueves, 22 de diciembre de 2016

Actualizar el Firmware del ESP8266 con Arduino Nano

Y Felices Fiestas a todos!!!

Ayer tuve un pequeño problema cuando estaba programando un menú configurador para hacer más sencilla la manera de configurar el ESP8266.

Estaba con el menú del Baudrate cuando me equivoque al meter un baudrate que no era valido con los comandos AT y el ESP8266 dejo de funcionar.

Tengo varios módulos más, pero ya que estaba en faena me decidí a solucionarlo en el momento...

Eso pensé en un principio, pero no fue tan sencillo unir las piezas, me explico:

Ante la imposibilidad de comunicarme con él, la solución era evidente, tenia que volver a cargar el firmware del ESP8266.

Buscando información sobre como actualizar el firmware, casi todo lo que encontré era referido al adaptador de FTDI a USB. Hasta que, investigando, en alguna parte leí que uno de esos adaptadores utiliza el chip CH340 y esto me hizo recordar que este es el mismo driver que utiliza en la comunicación serial el Arduino Nano.

Una vez recopilada toda la información este es el circuito no podía ser más sencillo:

Una vez montado solo hay que subir el siguiente Sketch:

jueves, 31 de octubre de 2013

Base oruga Tamiya track & whell (Prueba 2)

Muy buenas a todos!!!

He estado probando diferentes configuraciones para el set de ruedas oruga de Tamiya. y por el momento para hacer las pruebas me quedo con la típica configuración de un tanque. Para la alimentación de los motores voy a utilizar un driver L293D. Utilizare unos de los dos canales HPWM que tiene el 16F876A para controlar la velocidad.

Al driver L293D le he puesto un ventilador que ahora mismo va fijo, pero cuando el proyecto este más avanzado solo se encendera cuando el Driver se caliente, esto lo haré con un Lm35.

Para la transmisión de los datos lo haré con unos módulos de radio frecuencia de 433mhz que compre por Ebay. Aun no se la distancia a la que es capaz de transmitir y recibir...

Todo va controlado con un 16F876A con bootloader que es el que se encarga de recibir los datos a trabes del puerto RC0. El HPWM situado en el RC2 (CCP1). Los 4 movimientos posibles están situados en RB7, RB6, RB5, RB4. Por el momento esos son los únicos pines que voy a utilizar.

Todo el conjunto va alimentado con una batería de 9,6V.

Para enviar los datos al tanque estoy utilizando un convertidor USB-RS232 y un max232 conectado a el transmisor de RF.
Y el software para los movimientos he rescatado un programa que hice hace tiempo llamado Peyutsubot 2.5 al cual le he encontrado un par de fallos y estoy intentando subsanar, además de incluir el control de PWM.

Ire poniendo avances, saludos!!!

martes, 18 de diciembre de 2012

Comunicación MAX485 PIC-PIC 16F876A

PIC 16F876a 20MHz

Bienvenidos a todos y todas!!!

Para la maqueta he decidido cambiar el sistema que utilizo en la comunicación entre PIC‘s.

Antes lo hacia directamente PIC a PIC, pero se me quedaba corto para poder añadir más microcontroladores.

Primero mire si se podía con un MAX232, pero tiene el problema de no ser multipunto, es decir que no se pueden conectar más de 2 microcontroladores así que no servía para mi propósito de poder crear módulo independientes.

Investigando un poco encontré el MAX485, que se adapta mejor al tipo de configuración que se utilizará finalmente.

Después de ver algunos ejemplos de libros y la web, he hecho este pequeño programa de comunicaciones con MAX485. El programa es un bucle que comunica un pic con el otro haciendo que se enciendan la luz verde cuando recibe el dato.

Si bien este programa es para 2 micros, la idea seria ir añadiendo más, (el MAX485 admite hasta 32 dispositivos). El mayor problema que estoy teniendo hasta ahora es el tema de la sincronización, ya que para que funcione, cuando enviamos un dato, tenemos que poner el control bajo, es decir, el pin que hayamos seleccionado tiene que estar en LOW para poder recibir y el HIGH para poder transmitir.

Código para microcontrolador principal:


'PRINCIPAL

define LOADER_USED 1   
DEFINE OSC 4
include "modedefs.bas"   'Activa el modo de comunicación
ADCON1=6 

rojo    var portb.1
verde   var portb.0 
control var portc.0
entrada var portc.6
salida  var portc.7 


dato var byte
repet var byte

'para saber que el pic esta encendido
high rojo : high verde
pause 1000
low rojo : low verde

Estado:
  low control
  serin entrada,T2400,dato
  if dato = "E" then 
    high verde
    pause 250
    low verde
    pause 250
    goto enviando
  endif
goto estado

enviando:
  for repet = 1 to 10
    high control
    serout salida,T2400, ["D"]
  next
  high rojo
  pause 250
  low rojo
goto estado

end

Código para microcontrolador secundario:


define LOADER_USED 1   
DEFINE OSC 4
include "modedefs.bas"   'Activa el modo de comunicación
ADCON1=6 

rojo    var portb.1
verde   var portb.0 
control var portc.0
entrada var portc.7
salida  var portc.6 

cnt var bit 
dato var byte
repet var byte

'para saber que el pic esta encendido
high rojo : high verde
pause 1000
low rojo : low verde


Enviando:
  for repet = 1 to 10
    high control
    serout salida,t2400, ["E"]
  next
  high rojo
  pause 250
  low rojo

Estado:
  low control
  serin entrada,T2400,dato
  if dato = "D" then 
    high verde
    pause 250
    low verde
    pause 250
    goto Enviando
  endif
goto Estado

end


Por otro lado también estoy barajando la posibilidad de utilizar HSERIN y HSEROUT, pero eso sera dentro de un tiempo ya que ahora estoy un poco liado con la navidad y el trabajo.

También me gustaría poder hacer un ejemplo con más microcontroladores, pero como he comentado tendrá que ser un poco más adelante.

Saludos a todos y todas y felices fiestas!!!