Archivo de la categoría: Arduino

Arduino anunció Portenta X8, un sistema 2 en 1 en un módulo para AI local y trabajo industrial en tiempo real

Con un total de nueve núcleos, el Portenta X8 viene con Linux precargado aunque se puede programar con el IDE estándar. Es como un Arduino y una Raspberry Pi en un solo módulo compacto de grado industrial.

Arduino, como parte de las celebraciones de la Semana Arduino 2022, ha anunciado el sistema en módulo (SOM) Portenta X8 de alto rendimiento que ejecuta un sistema operativo basado en Linux precargado y que incluye un total de nueve núcleos de cómputo en microprocesadores y microcontroladores para obtener IA de borde (procesamiento local, o casi local, en lugar de ejecución en algún lugar de la nube), y cargas de trabajo en tiempo real.


El último lanzamiento en la creciente familia Portenta de dispositivos Arduino Pro, la placa Portenta X8 es, con mucho, la más poderosa y compacta. Combina el enfoque tradicional de Arduino de capacidades de microcontrolador en tiempo real con un potente procesador Arm de cuatro núcleos, compatible con Linux, más o menos equivalente en rendimiento a una Raspberry Pi.

El corazón de la placa es un NXP i.MX 8M Mini, un sistema en chip compatible con Linux con cuatro procesadores Arm Cortex-A53 que funcionan hasta 1,8 GHz, más un único núcleo Arm Cortex-M4 en tiempo real que funciona hasta 400MHz. Además de esto, Arduino ha agregado un microcontrolador STMicro STM32H747XI con dos núcleos Cortex-M7 que funcionan hasta 480MHz y un solo núcleo Cortex-M4 que funciona hasta 240MHz. Así que, en total, la placa compacta cuenta con nueve núcleos de cómputo, más 2 GB de memoria LPDDR4, 16 GB de almacenamiento eMMC y una conectividad gigabit Ethernet PHY más Wi-Fi y Bluetooth Low Energy (BLE).

Diseñado para su uso con la plataforma de operaciones de desarrollador basada en la nube (DevOps) de Foundries.io, el Portenta X8 viene precargado con un sistema operativo Linux microPlatform de código abierto que ofrece un sistema de virtualización, que separa las aplicaciones que se ejecutan en contenedores sobre una capa de virtualización del sistema operativo seguro subyacente.

Especificaciones de Arduino Portenta X8:

  • SoC: NXP i.MX 8M Mini Cortex-A53 de cuatro núcleos hasta 1,8 GHz, 1 núcleo Cortex-M4 en tiempo real hasta 400 MHz.
  • Microcontrolador: STMicro STM32H747AII6 Cortex-M7 @ 480 MHz + M4 @ 240 MHz MCU con 2 MB de memoria flash de doble banco, 1 MB de RAM, acelerador de hardware de gráficos Chrom-ART
  • Memoria del sistema: 2 GB LPDDR4
  • Almacenamiento: flash eMMC de 16 GB
  • conectividad
    •      Interfaz Gigabit Ethernet
    •      802.11 b/g/n Wi-Fi 4 y Bluetooth 4.1 (Infineon CYW4343W)
    •      Interfaz de Video: interfaces MIPI DSI y CSI a través de un conector de expansión de 80 pines, DisplayPort a través del puerto USB-C
    •      USB: 1 puerto USB 2.0 tipo C para alimentación (PD), programación y salida DisplayPort
    •      E/S: 2 conectores de alta densidad de 80 pines con CAN, PCIe, SAI, MIPI, DSI, SPI, I2S, I2C, UART, PDM
  • Seguridad – elemento seguro NXP SE0502, PSA by Arm
  • Fuente de alimentación: 5 V a través del puerto USB-C
  • Dimensiones – 66,04 x 25,4 mm
  • Rango de temperatura – -40°C a +85°C

Arduino espera una amplia adopción de la industria para esta nueva placa. La compañía ha incluido un elemento de seguridad de hardware NXP SE050C2 y ha obtenido la certificación PSA, la certificación Arm SystemReady, y ha integrado los servicios de Parsec, lo que lo convierte en uno de los primeros dispositivos disponibles que cumplen con los especificaciones de Arm’s Project Cassini.

Si bien Arduino ya hizo el lanzamiento de la placa, no está del todo lista para la distribución: la compañía espera que las primeras unidades Portenta X8 estén disponibles a mediados de abril, a un precio de u$s 239.
________________________________________
Fuentes: https://www.hackster.io/ y https://www.arduino.cc/

Medición de temperatura y humedad con DHT11

El sensor integrado DHT11 permite obtener datos de la temperatura y humedad ambiente con facilidad. Es utilizable perfectamente en estaciones meteorológicas, locales o remotas, sistemas de control ambiental en el hogar, y equipos de monitoreo de invernaderos, cultivos o jardines.

Una de las ventajas de este sensor es que, a diferencia de otros sensores analógicos, como el LM35, nos envía la información en serie, de modo que se puede conectar a una entrada digital del microcontrolador. Así se evitan los problemas de ruido inherentes a las líneas que conducen señales analógicas.



Rangos de medición y precisión del DHT11:

  • Rango de humedad: 20-90% HR (Humedad Relativa)
  • Precisión de humedad: ±5% HR (Humedad Relativa)
  • Rango de temperatura: 0-50 °C
  • Precisión de temperatura: ±2% °C
  • Voltaje de funcionamiento: 3 V a 5,5 V.

Veremos primero un poco sobre la Humedad. Luego estudiaremos cómo mide la humedad el DHT11. Después explicaremos cómo conectarlo a un Arduino y mostraremos un código de ejemplo para utilizar el DHT11 en tus proyectos.

¿Qué es la Humedad Relativa?

El DHT11 mide humedad relativa. La humedad relativa es la cantidad de vapor de agua en el aire ( e, o «presión de vapor real» ) respecto al punto de saturación de vapor de agua en el aire ( es , o «presión de vapor estándar», que es el valor correspondiente a 100%). En ese punto de saturación ( es ), el vapor de agua comienza a condensarse y acumularse en las superficies formando rocío.

El punto de saturación cambia con la temperatura del aire. El aire frío puede contener menos vapor de agua al saturarse, y el aire caliente puede contener más vapor de agua al saturarse.

La fórmula para calcular la humedad relativa es:



DHT11, un sensor integrado para la temperatura y humedad

El DHT11 se puede comprar en dos presentaciones: el sensor individual, que es una cápsula plástica integrada como la que se ve en la foto inicial de este artículo, o el mismo módulo básico DHT11 pero soldado en una placa de circuito impreso de base.

Hay una diferencia de precio que, a nuestro entender, no es justificada. La versión con plaqueta base (Printed Circuit Board) viene con un resistor de polarización a VCC (pull-up) y en ocasiones un LED que indica que está alimentado. La versión  sin plaqueta base tiene 4 pines y la versión con plaqueta base tenemos 3 pines.

Las conexiones son levemente diferentes, y en cada modelo hay que leer los rótulos en el borde de la plaqueta para identificar bien dónde hacer las conexiones. Lo más importante es determinar cuál es la alimentacion, VCC, generalmente +5V, y cuál es tierra o negativo. El pin de señal, identificado con S, OUT, DOUT, DATA, como es obvio queda determinado por descarte.



DHT11 sin plaqueta base

Los pines de la versión sin PCB del DHT11 son:

  • VCC: alimentación
  • I/O: transmisión de datos
  • NC: no conecta, pin al aire
  • GND: conexión a tierra



DHT11 sobre plaquetas

Los pines de la versión con PCB del DHT11 son:

  • GND: conexión con tierra
  • DATA: transmisión de datos
  • VCC: alimentación

Características técnicas del DHT11

Siempre es aconsejable dar una mirada a la hoja de características técnicas para ver detalles de funcionamiento el DHT11.

Hoja de datos del DHT11

Modelo DHT11
Alimentación de 3,5 V a 5 V
Consumo 2,5 mA
Señal de salida Digital
Temperatura  
Rango de 0°C a 50°C
Precisión a 25°C ± 2°C
Resolución 1°C (8-bit)
Humedad  
Rango de 20% RH a 90% RH
Precisión entre 0°C y 50°C ± 5% RH
Resolución 1% RH

¿Cómo envía datos el DHT11?

La señal de salida es digital, enviada en serie por una sola línea.

Hay al menos dos versiones del sensor de temperatura y humedad DHT11, veremos cómo tendríamos que conectarlo a un Arduino. En cualquiera de los casos, ingresamos a un pin digital.

La alimentación puede ser de 3,5V a 5V. No es problema al conectarlo a un Arduino estándar, ya que tenemos salida de 5V. No funcionará alimentándolo con la salida de 3,3 V, ya que el valor está por debajo de las especificación de alimentación del módulo.

Antes de conectar el sensor es conveniente ver estas consideraciones:

  • La hoja de datos recomienda un resistor de polarización (pull-up) de 5 kΩ para un cable de longitud de hasta 20 metros. No es un valor que se consiga fácil, por lo que utilizaremos un valor estándar de 4.7KΩ, o mejor 5.6KΩ.
  • Se recomienda tomar mediciones cada 5 segundos. Un periodo menor puede ocasionar que los datos no sean precisos.

Una vez leídas y entendidas las consideraciones, veremos los diagramas para los dos modelos.

Conexionado para el DHT11

Para conectar el circuito de una aplicación típica con un DHT11, debemos poner un resistor de polarización (pull-up) conectado a la salida digital.

El sensor tiene 4 pines: VCC (de 3,5V a 5V), la entrada/salida digital, un pin sin uso (NC, no conectado), y la toma de tierra GND.




El diagrama de conexión es el siguiente:



Conexionado para el DHT11 sobre una plaqueta base

El DHT11 ya soldado en un PCB posee el resistor pull-up. Puede resultar muy útil en ocasiones, pero si añadimos un cable de más de 20 metros, deberemos tener en cuenta este factor.

Este módulo con DHT11 dispone de 3 pines: la toma de tierra GND, DATA para los datos, y la alimentación VCC (de 3,5V a 5V). En la siguiente imagen se puede ver el esquema de conexión con Arduino.



Diferentes versiones del módulo DHT11 montado sobre una plaqueta

Debido a la amplia variedad de montajes que se encuentran en el mercado, todas ellas con diferentes disposiciones de señales al exterior, es importante leer la indicación impresa en la plaqueta. Por lo general se observa un signo +, un signo -, y la señal marcada como S, OUT, DOUT o DATA. Es recomendable mirar muy bien las indicaciones antes de conectar, en especial dónde se debe aplicar la alimentación: GND o tierra y VCC o 3,5 a 5V



Programando el DHT11 desde el IDE de Arduino

Mostrar Humedad y Temperatura en el Monitor Serie

Para trabajar con el DHT11 en el Arduino, lo más práctico es instalar la biblioteca DHTlib, que ya viene con todas las funciones necesarias para obtener las lecturas de humedad y temperatura del sensor.

Es fácil de instalar, simplemente descargue el archivo DHTlib.zip en el enlace a continuación y abra el IDE de Arduino. Luego vaya a Sketch > Include Library > Add .ZIP Library y seleccione el archivo DHTlib.zip

DHTlib

Una vez que se ha instalado, cargue este programa de ejemplo en Arduino y abra el monitor serie:

#include <dht.h>
dht DHT;
#define DHT11_PIN 7

void setup(){
  Serial.begin(9600);
}

void loop(){
  int chk = DHT.read11(DHT11_PIN);
  Serial.print("Temperatura = ");
  Serial.println(DHT.temperature);
  Serial.print("Humedad = ");
  Serial.println(DHT.humidity);
  delay(5000);
}

Si todo funciona correctamente, debería ver las lecturas de humedad y temperatura a intervalos de 5 segundos.

Si no desea utilizar el pin 7 para la señal de datos, puede cambiar el número de pin en la línea 5 donde dice #define DHT11_PIN 7.

Uso de los datos en otros programas

¿Qué sucede si no desea solo tomar las lecturas reales de Humedad y Temperatura, pero las necesita para calcular o controlar otras cosas? El siguiente código es el mínimo necesario para inicializar el sensor. Puede agregar esto a los programas existentes y usar DHT.humedad y DHT.temperatura como variables en cualquier función.

#include <dht.h>
dht DHT;
#define DHT11_PIN 7

void setup(){
// sin contenido
}

void loop(){
  int lectura = DHT.read11(DHT11_PIN);

// aquí líneas de código para utilizar los datos en la variable 'lectura'

  delay(1000);
}

Artículos Relacionados:



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?