Archivo de la categoría: Plaquetas

Control de relés por enlace de 2,4 GHz – módulos NRF24L01 (Domótica 4)

La función de este artículo es dar ejemplos de comunicación inalámbrica entre dos placas Arduino, utilizando el módulo transceptor basado en el chip NRF24L01.

En la imagen se observa dos formatos de módulo transceptor, ambos con el chip NRF24L01. Este chip utiliza la banda de 2,4 GHz y puede operar con velocidades de transmisión de 250 kbps hasta 2 Mbps. Si se usa en espacios abiertos y, con menor velocidad de transmisión, su alcance puede llegar hasta los 100 metros. Para mayores distancias, hasta 1000 metros, existen módulos provistos con una antena externa en lugar de una antena trazada sobre la misma placa, como se observa en la imagen.

Con este sistema enviaremos comandos de texto que controlen un módulo de relés para manejar artefactos de 220V CA en una instalación de domótica. Para domótica es suficiente el alcance del módulo básico, pero se puede optar por la versión con antena incorporada, si es necesario.

En nuestro artículo Arduino: Comunicación inalámbrica con NRF24L01 están explicados y desarrollados en detalle varios usos del módulo NRF24L01 con un Arduino. Si no está familiarizado con un módulo como este, o si desea profundizar más en sus características y capacidades, recomendamos su lectura, aunque no es imprescindible para utilizar este diseño.

Para el control de las placas NRF24L01 para enlace de RF se utiliza la biblioteca RF24, totalmente compatible con las placas Arduino. En la página enlazada hay una explicación en inglés de cómo instalarla en su IDE de Arduino. Si no, puede leer las instrucciones a continuación (si ya conoce el procedimiento, saltee esta explicación):

Como es una librería obtenida del sitio GitHub, que es un repositorio de código para programadores, deberemos utilizar el método de instalación manual. Lo primero es descargar la librería en formato ZIP dentro de la carpeta que usted elija.

Una vez descargada debemos añadir la librería mediante el menú desplegable Programa >> Incluir Librería >> Añadir biblioteca .ZIP… Se abrirá un panel para buscar el ZIP en su disco rígido.

Una vez seleccionado el archivo éste será incluido. Cerramos el IDE de Arduino y cuando volvamos a abrirlo la librería ya estará disponible.

Circuito básico para el sistema

La biblioteca RF24 utiliza los pines estándar del hardware SPI (MISO, MOSI, SCK) que son, respectivamente, los pines digitales 12, 11 y 13 en la placa Arduino UNO. También se necesitan dos pines adicionales para controlar las funciones de selección del chip (CS) y habilitación del chip (CE).

Estos dos últimos pines pueden ser elegidos y designados por el usuario utilizando la función radio(ce_pin, cs_pin) de la biblioteca RF24; y se puede usar cualquier pin digital disponible.

El diagrama de conexiones de los módulos —que mostramos a continuación— es idéntico para las placas Arduino de ambos lados, transmisor y receptor. Observe con atención que la entrada VCC del módulo transceptor está conectada a la salida 3,3V del Arduino. No se equivoque con la alimentación poniéndola a 5V, porque el módulo resultaría dañado.

A continuación, le agregaremos a uno de los dos Arduino, que funcionará de receptor, un módulo de relés como los que hemos descrito y explicado en detalle en el artículo Módulos de relé y Arduino: Domótica (1). Recomendamos leerlo.

Sistema 1: Control utilizando el teclado de la computadora a través de Monitor Serie

La placa Arduino utilizada como transmisor estará conectada al puerto USB de la PC, o laptop, que utilizamos para programarlo y luego para enviar los comandos. El puerto USB alimentará la placa y el módulo transmisor.

El Arduino receptor puede estar conectado a cualquiera de los modos de alimentación adecuados: un cable USB conectado a un cargador estándar de 5V, o a un Power Bank para celular; una batería de 9V o una fuente regulada de 9V CC conectada al jack de entrada de alimentación de la placa Arduino o a su pin Vin.

El circuito del receptor se cableará de la siguiente manera a los módulos de relé:

Nota: en este circuito se alimentan los led emisores de los optoacoples desde la misma fuente de los relés. Para separar totalmente los circuitos, quitar el jumper entre VCC y JD-VCC y alimentar VCC desde los 5V de la placa Arduino.

Circuito del Sistema 1, con módulo de 2 relés

Criterio de control:

La lista de comandos es como sigue

a – Activa el relé 1 / a apaga el relé 1 al pulsar de nuevo
b – Activa el relé 2 / b apaga el relé 2 al pulsar de nuevo

Programa del transmisor

Programa del receptor:

Con esta disposición, la manera de controlar los relés es como sigue: abrimos el panel de Monitor Serie y tipeamos allí los comandos “a” o “b” para encender y apagar los relés.

La capacidad de control se puede ampliar utilizando módulos de mayor tamaño, por ejemplo de 4, 8 o 16 relés, y agregando las variables y líneas de programa para cada relé. Utilizaremos en esos casos las siguientes letras: “c”, “d” y así sucesivamente.




Sistema 2: Control con pulsadores, sin necesidad de computadora

Con el sistema desarrollado en la primera parte dependemos de una computadora para ingresar los comandos al Arduino transmisor, y esto puede ser impráctico.

Para agregar un nivel más de independencia al control, conectaremos unos pulsadores al circuito transmisor de Arduino que ya presentamos. Para que nos resulte más simple, vamos a utilizar los pulsadores de RESET con cable y conector que es posible rescatar por desarme del panel frontal de cualquier PC de mesa que haya sido descartada. Como este:

Si usted lo desea, puede reemplazar los dos pulsadores por cualquier modelo que usted disponga, como estos (colocados sobre una protoboard y conectados con cables), que además de venir en los kits básicos de Arduino, son muy comunes en electrónica:

Diagrama para el Sistema 2: pulsadores y módulo de 2 relés

Hemos agregado dos pulsadores de panel frontal de computadora de mesa, que ingresan por las entradas digitales 2 y 3. Los pulsadores los hemos nombrado como Puls1 y Puls2.

Con estos pulsadores podremos controlar el módulo de dos relés con el que trabajamos en este artículo hasta ahora, pero podríamos implementar este control con módulos de 8, 16, y hasta 32 relés.

El diagrama para esta parte del proyecto —siempre manteniendo el cableado básico del Arduino con el NRF24L01— es:

Criterio de control:

La lista de comandos es como sigue

Puls1 – Activa el relé 1 / Puls1 apaga el relé 1 al pulsar de nuevo
Puls2 – Activa el relé 2 / Puls2 apaga el relé 2 al pulsar de nuevo

Programa del transmisor:

Programa del receptor:

Presionando el pulsador 1 se activará el relé 1, y con una nueva pulsación se lo desactiva. El funcionamiento es igual para el pulsador 2 en conjunto con el relé 2.

Nota: Si usted halla un error, por favor háganos saber que lo ha encontrado. Gracias.

Artículos relacionados:

Módulos de relé y Arduino: Domótica (1)
Control con relés por interfaz serie: Domótica (2)
Control de relés con control remoto IR: Domótica (3)
Control de relés por enlace de 2,4 GHz – módulos NRF24L01: Domótica (4)
Descripción y funcionamiento del Bus I2C
¿Qué es la comunicación serie?



Control de relés con control remoto IR: Domótica (3)

En este ejemplo probamos el sistema de encendido de lámparas y equipos eléctricos conectados al voltaje de red manejado por un control remoto estándar (IR = Infrarrojo). Los comandaremos con teclas elegidas del control remoto, que primero identificaremos con un simple programa en Arduino.

Si usted desea leer con más detalle sobre control remoto con infrarrojo desde Arduino, le recomendamos el artículo Módulo transmisor de infrarrojo KY-005 (Kit de sensores Keyes 5) en nuestra página.

Para controlar artefactos con voltaje de red, usaremos las salidas normalmente abiertas de un módulo de relé. Si no conoce los módulos de relé que son estándar en la línea Arduino, recomendamos leer el artículo que inició esta serie Módulos de relé y Arduino: Domótica (1).

Utilizamos el mismo circuito armado en el artículo anterior: Control con relés por interfaz serie: Domótica(2). Le agregamos únicamente el sensor de recepción de infrarrojos, un sensor VS1838B proveniente de China, muy común en los kits de Arduino y en el mercado.

Se puede utilizar cualquier receptor de control remoto, incluso uno obtenido de desarme, si se tienen identificados sus pines de conexión.

El sensor no es un tan solo un fototransistor, posee un circuito integrado interno que filtra la señal de 38 KHz que modula el haz de infrarrojo, y es la que contiene los comandos de control. La salida de señal entrega una onda cuadrada de niveles TTL entre 0 y 5V. Existen modelos que entregan señal a niveles de 0 a 3,3V.

Es posible que usted encuentre el kit de la imagen que sigue en los sitios especializados, pero no es necesario. Alcanza con conectar el sensor al Arduino y utilizar un control remoto cualquiera de los que haya en su casa.

El sensor utilizado en este kit es, justamente, el VS1838B.


La que sigue es la manera más básica de conectarlo al Arduino, y es el circuito con el que comenzaremos a trabajar en las pruebas iniciales. La principal de ellas, obtener el listado de los datos que llegan al Arduino al presionar cada tecla.

Advertencia: cuando realiza proyectos que están conectados a la red eléctrica, realmente debe saber lo que está haciendo, de lo contrario, puede producirse un accidente. Este es un tema serio y queremos que esté seguro. Si no está 100% seguro de lo que va a hacer, por favor no toque nada.
¡Pregúntele a alguien que sepa!

El siguiente programa utiliza la biblioteca IRemote (creada por >shirriff). Consiste de un ciclo continuo que espera a que llegue un comando de control remoto, y entonces lo muestra por el Monitor Serie.

Con este programa en el Arduino y la pantalla del monitor serie abierta, pulsar cada tecla del control remoto para conocer sus valores. Es conveniente escribir los valores en un TXT para utilizarlos cada vez que sea necesario. Una lista como la que sigue, que corresponde a un control remoto de Direct TV. Los valores están en decimal.

48799: [guide]
45244: [active]
38057: [list]
33026: [exit]
57063: [back]
4985: [menu]
864: [info]
64187: [rojo]
14499: [verde]
49424: [amar]
59787: [azul]
57375 63414: [vol+]
53295 63414: [vol-]
31762: [guion bl]
16195: [enter]
65001: [prev]
61455: [mute]
6654: [flecha adel]
1579: [flecha atrás]
57094: [flecha derecha]
38068: [flecha izquierda]
22183: [select]
32630: [1]
23217: [2]
28078: [3]
59460: [4]
44135: [5]
37740: [6]
54067: [7]
11155: [8]
45264: [9]
29399: [0]
26583 26583 39270 63414: [on]
26583 26583 39270 63414: [off]
32895 63414: [tv input]

El control remoto del kit de sensor IR Keyes posee los siguientes valores en hexadecimal (puede diferir según el modelo):

0xFFA25D: CH-
0xFF629D: CH
0xFFE21D: CH+
0xFF22DD: PREV
0xFF02FD: NEXT
0xFFC23D: PLAY/PAUSE
0xFFE01F: VOL-
0xFFA857: VOL+
0xFF906F: EQ
0xFF6897: 0
0xFF9867: 100+
0xFFB04F: 200+
0xFF30CF: 1
0xFF18E7: 2
0xFF7A85: 3
0xFF10EF: 4
0xFF38C7: 5
0xFF5AA5: 6
0xFF42BD: 7
0xFF4AB5: 8
0xFF52AD: 9

Circuito para estas pruebas

Nota: en este circuito se alimentan los led emisores de los optoacoples desde la misma fuente de los relés. Para separar totalmente los circuitos, quitar el jumper entre VCC y JD-VCC y alimentar VCC desde los 5V de la placa Arduino.

Criterio de control

En este primer experimento hemos elegido como comandos para encender y apagar las salidas un conjunto de letras a enviar por línea serie. Para el relé 1 enviamos la letra “A” para encender, y la letra “a” para apagar. El relé 2 se enciende con la letra “B” y se apaga con la “b”. Y así sucesivamente si hubiese más relés. Para apagar todo al mismo tiempo elegimos enviar un “0” (cero).

La lista de comandos es como sigue:

Botón 1 – Activa el relé 1 / Botón 2 – Apaga el relé 1
Botón 3 – Activa el relé 2 / Botón 4 – Apaga el relé 2
Botón 0 – Apaga todos los relés

Programa 1 para dos relés

Copie el siguiente código en su IDE de Arduino y súbalo a su placa.

Advertencia: no es conveniente cargar código nuevo cuando su Arduino
está conectado al módulo de relés. Siempre quite la alimentación de 5V a este módulo.

Programa 2

En esta modificación de programa utilizamos una opción que nos permite usar una única letra de comando para encender y apagar. El «truco» consiste en alternar el estado del relé de encendido a apagado en cada recepción de la letra, utilizando una operación lógica NOT, que se representa con el símbolo !




Criterio de control

En este caso la lista de comandos es como sigue:
Botón 1 – Activa el relé 1 / Botón 1 apaga el relé 1 al pulsar de nuevo
Botón 2 – Activa el relé 2 / Botón 2 apaga el relé 2 al pulsar de nuevo

Programa 3:

El que sigue es un ejemplo para ampliar el manejo a 4 relés. Como observarán, sólo es necesario copiar y pegar y usar los códigos correspondientes.

En estos programas, la parte del código donde llega el código de comando está entre dos hileras de asteriscos. Reemplazando ese bloque de código es posible utilizar otros métodos de ingreso de datos para comandar la placa de relés.

Puede ser utilizando caracteres llegados desde una placa bluetooth, por I2C o SPI desde otro microcontrolador, un módulo de interfaz RS-485, o diversos sistemas basados en RF o enlaces de luz infrarroja, láser, etc.

En todos los casos, la comunicación de control se basará en caracteres de control ingresados por TX/RX u otro medio similar, incluyendo un ingreso directo implementado con entradas digitales y pulsadores.

El resto del código será siempre el mismo, la función con la estructura Switch…Case.

Las opciones las desarrollamos en la serie de artículos anteriores y los que siguen a este.

Artículos relacionados:

Módulos de relé y Arduino: Domótica (1)
Control con relés por interfaz serie: Domótica (2)
Control de relés con control remoto IR: Domótica (3)
Control de relés por enlace de 2,4 GHz – módulos NRF24L01: Domótica (4)
Descripción y funcionamiento del Bus I2C
¿Qué es la comunicación serie?



Control con relés por interfaz serie: Domótica (2)

En este ejemplo haremos un sistema de encendido lámparas y equipos eléctricos que funcionan con voltaje de red, y los controlaremos con caracteres enviados por línea serie a través del Monitor Serie del IDE de Arduino. Si usted desea leer con más detalle sobre la comunicación serie, le recomendamos el artículo ¿Qué es la comunicación serie? en nuestra página.

Para controlar artefactos con voltaje de red, usaremos las salidas normalmente abiertas de un módulo de relé. Si no conoce los módulos de relé utilizados usualmente en la línea Arduino, recomendamos leer el artículo previo de esta serie Módulos de relé y Arduino: Domótica (1).

Advertencia de seguridad

Antes de continuar con este proyecto, queremos recordarle que está tratando con la tensión de la red. Lea atentamente la siguiente advertencia de seguridad.

Advertencia: cuando realiza proyectos que están conectados a la red eléctrica, realmente debe saber lo que está haciendo, de lo contrario, puede producirse un accidente. Este es un tema serio y queremos que esté seguro. Si no está 100% seguro de lo que va a hacer, por favor no toque nada.
¡Pregúntele a alguien que sepa!

Partes necesarias

■ Módulo de 8 relés (o menos si lo desea, según la necesidad)
■ Arduino UNO
■ Cable USB
■ Cables, portalámparas, lámparas y tomacorrientes
■ Fuente de 5V 2A para alimentación de los relés

Esquemático

El sistema armado como prototipo se ve aproximadamente como en la foto que sigue:

Criterio de control

En este primer experimento hemos elegido como comandos para encender y apagar las salidas un conjunto de letras a enviar por línea serie. Para el relé 1 enviamos la letra “A” para encender, y la letra “a” para apagar. El relé 2 se enciende con la letra “B” y se apaga con la “b”. Y así sucesivamente para los 8 relés. Para apagar todo al mismo tiempo elegimos envíar un “0” (cero).

La lista de comandos es como sigue:

A – Activa el relé 1 / a – Apaga el relé 1
B – Activa el relé 2 / b – Apaga el relé 2
C – Activa el relé 3 / c – Apaga el relé 3
D – Activa el relé 4 / d – Apaga el relé 4
E – Activa el relé 5 / e – Apaga el relé 5
F – Activa el relé 6 / f – Apaga el relé 6
G – Activa el relé 7 / g – Apaga el relé 7
H – Activa el relé 8 / h – Apaga el relé 8
0 – Apaga todos los relés




Programa 1

Copie el siguiente código en su IDE de Arduino y prográmelo en su placa Arduino utilizando la opción «Subir».

Advertencia: no es conveniente cargar código nuevo cuando su Arduino
está conectado al módulo de relés. Siempre quite la alimentación de 5V a este módulo.

Colocamos entre dos hileras de asteriscos la parte del código donde se obtiene la letra de comando desde la línea serie. Reemplazando ese bloquecito de código es posible utilizar diversos métodos de ingreso de datos para comandar la placa de relés.

Por ejemplo utilizando caracteres llegados desde una placa bluetooth, por I2C o SPI desde otro microcontrolador, un módulo de interfaz RS-485, o diversos sistemas basados en RF (Wi-Fi, 2,4 GHz, etc.) o enlaces de luz infrarroja, láser, etc.

En todos los casos, la comunicación de control se basará en caracteres de control ingresados por TX/RX u otro medio similar de comunicación de caracteres, incluyendo una entrada paralela de 8 bits implementada por un puerto o con el uso de un chip auxiliar, y convertidos en una variable char (cuando es necesario).

El resto del código será siempre el mismo, la función con la estructura Switch…Case.

Por supuesto, usted puede iniciar sus pruebas con un circuito más sencillo, como el que sigue:

Todas las diferentes opciones de control las desarrollamos en detalle en la serie de artículos que siguen en la secuencia de publicación.

Programa 2

En esta modificación de programa utilizamos una opción que nos permite usar una única letra de comando para encender y apagar. El «truco» consiste en alternar el estado del relé de encendido a apagado en cada recepción de la letra, utilizando una operación lógica NOT, que se representa con el símbolo !

Criterio de control

En este caso la lista de comandos es como sigue:

a – Activa el relé 1 / a apaga el relé 1 al pulsar de nuevo
b – Activa el relé 2 / b apaga el relé 2 al pulsar de nuevo
c – Activa el relé 3 / c apaga el relé 3 al pulsar de nuevo
d – Activa el relé 4 / d apaga el relé 4 al pulsar de nuevo
e – Activa el relé 5 / e apaga el relé 5 al pulsar de nuevo
f – Activa el relé 6 / f apaga el relé 6 al pulsar de nuevo
g – Activa el relé 7 / g apaga el relé 7 al pulsar de nuevo
h – Activa el relé 8 / h apaga el relé 8 al pulsar de nuevo
0 – Apaga todos los relés

Artículos relacionados:

Módulos de relé y Arduino: Domótica (1)
Control con relés por interfaz serie: Domótica (2)
Control de relés con control remoto IR: Domótica (3)
Control de relés por enlace de 2,4 GHz – módulos NRF24L01: Domótica (4)
Descripción y funcionamiento del Bus I2C
¿Qué es la comunicación serie?



¿Qué es BeagleBone Blue?


BeagleBone® Blue es una computadora integrada en un sistema compacto en una placa, basada en Linux y pensada para robótica, que consta de una sola plaqueta pequeña (8,9 cm x 5,5 cm).

El microprocesador es Octavo Systems OSD3358, posee wifi/bluetooth, IMU, barómetro, regulación de potencia y estado de LED de carga para una batería LiPo de 2 celdas. Tiene puentes H y conectores para 4 motores de CC + sus codificadores (encoders), para 8 servos y todos los buses comúnmente necesarios para adicionar periféricos en aplicaciones integradas.

De código abierto y con un activo respaldo de una comunidad, su rendimiento en tiempo real, flexibilidad para funcionan en redes y el amplio conjunto de capacidades orientadas a la robótica hacen que construir robots móviles con Blue sea rápida, ágil, asequible y divertida.

Especificaciones

■ Procesador: Octavo Systems OSD3358
■ AM335x 1GHz ARM® Cortex-A8 processor
■ 512MB DDR3 RAM
■ 4GB 8-bit eMMC flash storage
■ Manejo Integrado de alimentación.
■ 2×32-bit 200-MHz unidades programables de tiempo real (programmable real-time units, PRUs)
■ Acelerador NEON de punto-flotante.
■ ARM Cortex-M3
■ USB 2 cliente con alimentación y comunicaciones, USB 2 host
■ Programado con Debian Linux

Connectividad y sensores

■ Soporte para batería LiPo de 2 celdas con carga balanceada y monitor LED del estado de carga
■ Entrada del cargador: 9-18 V
■ Conexión inalámbrica: wifi IEEE 802.11bgn, Bluetooth 4.1 y BLE
■ Control de Motores: 8 salidas para servo 6V, 4 salidas puente-H para motores CC, 4 entradas para encoder de cuadratura
■ Sensores: IMU MPU9250 de 9 ejes (acelerómetros, giroscopios, magnetómetro), BMP280 barómetro y termómetro
■ Interfaz de usuario: 11 LEDs programables por el usuario, 2 botones programables por el usuario
■ Interfaces con conectores JST para agregar buses y periféricos adicionales: GPS, radio DSM2, UARTs, SPI, I2C, 1,8V analog, GPIOs 3,3V

Compatibilidad de Software

ROS (Robot Operating System)
ArduPilot
MATLAB – Simulink
LabVIEW
Cloud9 IDE en Node.js
Python
OpenCV
Copter
■ Y aún más…

Especial para utilizarlo en drones y en robots navegadores autónomos.

Página de BeagleBone
Literatura de respaldo



Diseños de bases y accesorios para robots con impresora 3D

Soporte de motores, por zi3d
https://www.thingiverse.com/thing:750963
Enlaces para archivos de impresión
https://www.thingiverse.com/thing:750963/zip

Este soporte permite fijar los motores estándar de los kits más comunes con más firmeza, sin fijaciones que se rompen con facilidad, y sobre cualquier placa base del material que usted desee, sin necesidad de comprar las cortadas con láser.






DotBot por Dotbot-io
https://www.thingiverse.com/thing:1441937
Enlaces para archivos de impresión
https://www.thingiverse.com/thing:1441937/zip






Chassis para robot por metshein
https://www.thingiverse.com/thing:1011890
Enlaces para archivos de impresión
https://www.thingiverse.com/thing:1011890/zip






Chassis compacto por makerhacks
https://www.thingiverse.com/thing:2320298
Enlaces para los archivos (distintos modelos)
https://www.thingiverse.com/thing:2320298/zip


Montaje para motor con tacómetro por b2vn
https://www.thingiverse.com/thing:1473508
Archivos para impresión 3D
https://www.thingiverse.com/thing:1473508/zip


Montaje para motor, ruedas y orugas por edwardchew
https://www.thingiverse.com/thing:3228395
https://www.thingiverse.com/thing:3228359
Descargar todos los archivos para chassis y ruedas https://www.thingiverse.com/thing:3228395/zip
Descargar todos los archivos para orugas https://www.thingiverse.com/thing:3228359/zip






Chassis para robot por Malathar
https://www.thingiverse.com/thing:1316755
Enlaces de los archivos para impresión 3D
https://www.thingiverse.com/thing:1316755/zip


Seguidor de línea JJ1 por AndrewLinden
https://www.thingiverse.com/thing:2831729
Enlace para los archivos de impresión 3D
https://www.thingiverse.com/thing:2831729/zip

Es un chasis de robot para construir un robot seguidor de línea utilizando los motores amarillos de engranajes y un Arduino.

En lugar de los tres módulos de sensor de línea, también puede usar un conjunto de sensores de 8 canales.

El chasis tiene agujeros para esta placa de sensores también. Esta matriz tiene salida analógica y necesitas un Arduino Nano que posee pines adicionales A6 y A7 usar los 8 canales del sensor, que tiene salida analógica. También puede optar por agregar al Arduino uno un CD74HC4067, multiplexador de 16 canales.

Cuando use paquetes de batería LiPo sin protección, también debe usar un sensor de bateria Lipo con beeper como el de la imagen que sigue, o una protección similar.

Utilice un tornillo de cabeza redonda en uno de los orificios frontales. La parte frontal del robot se deslizará sobre ese tornillo.


Por supuesto, se pueden encontrar varios diseños más en el repositorio de diseños 3D https://www.thingiverse.com/