Documentación
INICIOLAB I4.0CURSOSTIENDA
ES
ES
  • 📖Docs
  • ↘️PLATAFORMA XIDE IoT
    • X-NODEs
      • XC01 - Controlador WiFi & Bluetooth
        • R4
          • X-NODE / XC01 – ESP32 WROOM Controlador WiFi & Bluetooth R4
        • R5
          • X-NODE / XC01 – ESP32-S3 Controlador WiFi & Bluetooth
      • X-NODE / XC03 – SIM7080G Red celular LTE y GNSS
      • X-NODE / XC04 - BG95 M2 Red celular LTE y GNSS
      • X-NODE / XC09 – IN100 NanoBeacon Bluetooth
      • XN01 - Entradas Digitales
        • R1
          • X-NODE/XN01 - Entradas Digitales A-R1
        • R2
          • X-NODE / XN01 - Entradas Digitales
      • XN02 - Salidas Digitales
        • R1
          • X-NODE / XN02 - Salidas Digitales A-R1
        • R2
          • X-NODE / XN02 - Salidas Digitales
      • XN03 - Entradas/Salidas Analógicas
        • R1
          • X-NODE / XN03 - Entradas/Salidas Analógicas A-R1
        • R2
          • X-NODE / XN03 - Entradas/Salidas Analógicas
      • XN04 - Sensores Temperatura/Humedad/Luminosidad
        • R1
          • X-NODE / XN04 – Sensores Temperatura/Humedad/Luminosidad/Proximidad A-R1
        • R2
          • X-NODE / XN04 – Sensores Temperatura/Humedad/Luminosidad
      • X-NODE / XN09 – BME688 Sensor Ambiental con IA
      • X-NODE / XN11 - 2 Relevadores
      • X-NODE / XN13 - 1 Relevador 10A
      • X-NODE / XN14 - Fuente de Alimentación 24V DC
      • X-NODE / XN15 - Fuente de Alimentación 110-220V AC
      • X-NODE / XN19 - Adaptador de señales
      • X-NODE / XN26 - 4 x Entradas 24V DC
      • X-NODE / XN27 - 4 x Salidas 24V DC
      • X-NODE / XN29 - 4 Relevadores 1A
      • X-NODE / XN30 - 2 x Entradas 4-20 mA
      • X-NODE / XN31 - 3 x Entradas Corriente AC
    • X-BOARDs
      • X-BOARD / XB01 - IoTrainer
      • X-BOARD / XB02 - Arduino Nano 33
      • X-BOARD / XB03 - Raspberry Pi Pico
      • X-BOARD / XB04 - Raspberry Pi
      • X-BOARD / XB05 - Curiosity Nano
      • X-BOARD / XB06 - Arduino MKR
      • X-BOARD / XB07 - ToSix
      • X-BOARD / XB08 - Thing Plus
      • X-BOARD / XB09 - Click to Qwiic
      • X-BOARD / XB10 - Feather
      • X-BOARD / XB15 - XIAO
      • X-BOARD / XBI01 - IIoTrainer
      • X-BOARD / XBI06 - Arduino MKR IIoT
      • IoT Traffic - Tarjeta Controladora de Semáforos
    • Red Celular IoT
      • SIMs
        • SIM Card – Multicarrier
      • Antenas
        • Antena LTE YE0004AA
        • Antena LTE YF0006AA
        • Antena LTE YMLR001
        • Antena Activa GPS
        • Antena Activa GPS YG0015AA
        • Antena Pasiva GPS YEGT001AA
    • Accesorios
      • Caja estanca IP65
  • Acerca de...
    • Plataforma XIDE
    • Estándar mikroBUS™
    • Estándar Qwiic®
  • ↘️TARJETAS DE DESARROLLO PICs
    • X-TRAINER
      • X-TRAINER LITE M
        • R3
          • X-TRAINER LITE M R3 PIC18F45K50
          • X-TRAINER LITE M R3 PIC18F4550
          • X-TRAINER LITE M R3 PIC16F877A
          • X-TRAINER LITE M R3 PIC16F887
        • R2
          • X-TRAINER LITE M R2 PIC18F45K50
          • X-TRAINER LITE M R2 PIC18F4550
          • X-TRAINER LITE M R2 PIC16F877A
          • X-TRAINER LITE M R2 PIC16F887
      • X-TRAINER LITE F
        • R1
          • X-TRAINER LITE F R1 PIC18F45K50
          • X-TRAINER LITE F R1 PIC18F4550
          • X-TRAINER LITE F R1 PIC16F877A
          • X-TRAINER LITE F R1 PIC16F887
      • X-TRAINER DIP
        • R3
          • X-TRAINER DIP R3 PIC18F45K50
          • X-TRAINER DIP R3 PIC18F4550
        • R2
          • X-TRAINER DIP R2
      • X-TRAINER PRO
        • R4
          • X-TRAINER PRO R4 PIC18F45K50
          • X-TRAINER PRO R4 PIC18F4550
          • X-TRAINER PRO R4 PIC16F877A
          • X-TRAINER PRO R4 PIC16F887
        • R3
          • X-TRAINER PRO R3 PIC18F45K50
          • X-TRAINER PRO R3 PIC18F4550
          • X-TRAINER PRO R3 PIC16F877A
          • X-TRAINER PRO R3 PIC16F887
        • R2
          • X-TRAINER PRO R2
    • Probador lógico
    • Software MICROSIDE v1.0
      • Instalación
      • X-TRAINER - PIC18F4550/45K50
      • Terminal Serial COM/TCP
      • XCU / XCU LT - Programador PICs
      • XCU / XCU LT - Programador AVRs
      • Descarga
    • Software X-TRAINER Suite
      • Instalación
      • PIC18F4550/45K50
      • PIC16F877A/887
      • Configuración de bootloader
        • PIC C Compiler CCS
        • mikroC PRO for PIC
        • MPLAB X IDE
          • XC8 Compiler
          • PIC-AS Compiler
          • MPASM Compiler
      • Descarga
  • Programadores PICs & AVRs
    • PIC & AVR
      • PROGRAMADOR PIC & AVR - XCU
      • PROGRAMADOR PIC & AVR - XCU LT
    • PIC
      • PROGRAMADOR PIC - K150 PRO
    • Software K150 PRO Suite
      • Instalación
      • Programador PICs
      • Descarga
    • Software XCU & XCU LT
      • Instalación
      • XCU / XCU LT - Programador PICs
      • XCU / XCU LT - Programador AVRs
      • Descarga
    • Preguntas frecuentes
      • ¿Windows no reconoce XCU como puerto serial COM?
      • ¿Cómo programar con el módulo XCU a través del IDE Microchip Studio for AVR?
  • 🥽PRÁCTICAS
    • Compiladores
    • PIC C Compiler CCS
      • PIC18F4550 | PIC18F45K50
        • 1 - Blink LED
        • 2 - Push Button
        • 3 - Corrimiento de Bits
        • 4 - Contador Binario
        • 5 - ADC
        • 6 - ADC Set Point
        • 7 - USB CDC
        • 8 - PWM
        • 9 - LED RGB
        • 10 - Teclado Matricial
        • 11 - LCD
        • 12 - DAC
        • 13 - Motor DC + Driver L298N
        • 14 - Motor DC + Sensor IR Sharp GP2Y0A21
        • 15 - Servomotor
        • 16 - Servomotor + Potenciómetro
        • 17 - Sensor de Temperatura LM35
        • 18 - Sensor de Temperatura DS18B20
        • 19 - Sensor Ultrasónico HC-SR04
        • 20 - Bluetooth HC-05
        • 21 - Bluetooth HM-10
        • 22 - Comunicación Serial UART
      • PIC16F887 | PIC16F877A
        • 1 - Blink LED
        • 2 - Push Button
        • 3 - Corrimiento de Bits
        • 4 - Contador Binario
        • 5 - ADC
        • 6 - ADC Set Point
        • 7 - PWM
        • 8 - LED RGB
        • 9 - Teclado Matricial
        • 10 - LCD
        • 11 - Motor DC + Driver L298N
        • 12 - Motor DC + Sensor IR Sharp GP2Y0A21
        • 13 - Servomotor
        • 14 - Servomotor + Potenciómetro
        • 15 - Sensor de Temperatura LM35
        • 16- Sensor de Temperatura DS18B20
        • 17 - Sensor Ultrasónico HC-SR04
        • 18 - Bluetooth HC-05
        • 19 - Bluetooth HM-10
        • 20 - Comunicación Serial UART
    • mikroC PRO for PIC
      • PIC18F4550 | PIC18F45K50
        • 1 - Blink LED
        • 2 - Push Button
        • 3 - Corrimiento de Bits
        • 4 - Contador Binario
        • 5 - ADC
        • 6 - ADC Set Point
        • 7 - PWM
        • 8 - LED RGB
        • 9 - Teclado Matricial
        • 10 - LCD
        • 11 - DAC
        • 12 - Motor DC + Driver L298N
        • 13 - Motor DC + Sensor IR Sharp GP2Y0A21
        • 14 - Servomotor
        • 15 - Servomotor + Potenciómetro
        • 16 - Sensor de Temperatura LM35
        • 17 - Sensor de Temperatura DS18B20
        • 18 - Sensor Ultrasónico HC-SR04
        • 19 - Bluetooth HC-05
        • 20 - Bluetooth HM-10
        • 21 - Comunicación Serial UART
    • MPLAB X IDE
      • XC8 COMPILER
        • PIC18F4550 | PIC18F45K50
          • 1 - Blink LED
          • 2 - Push Button
          • 3 - Corrimiento de Bits
          • 4 - Contador Binario
          • 5 - ADC
          • 6 - ADC Set Point
          • 7 – USB CDC
          • 8 - PWM
          • 9 - LED RGB
          • 10 - Teclado Matricial
          • 11 - LCD
          • 12 - DAC
          • 13 - Motor DC + Driver L298N
          • 14 - Motor DC + Sensor IR Sharp GP2Y0A21
          • 15 - Servomotor
          • 16 - Servomotor + Potenciómetro
          • 17 - Sensor de Temperatura LM35
          • 18 - Sensor de Temperatura DS18B20
          • 19 - Sensor Ultrasónico HC-SR04
          • 20 - Bluetooth HC-05
          • 21 - Bluetooth HM-10
          • 22 - Comunicación Serial UART
      • PIC-AS Compiler
        • PIC18F4550 | PIC18F45K50
          • 1 - Blink LED
          • 2 - Push Button
          • 3 - Corrimiento de Bits
          • 4 - Contador Binario
          • 5 - ADC
          • 6 - ADC Set Point
      • MPASM Compiler
        • PIC18F4550 | PIC18F45K50
          • 1 - Blink LED
          • 2 - Push Button
          • 3 - Corrimiento de Bits
          • 4 - Contador Binario
          • 5 - ADC
          • 6 - PWM
    • Arduino IDE
      • 1 - Blink LED
      • 2 - Push Button
      • 3 - Corrimiento de bits
      • 4 - Contador binario
      • 5 - ADC
      • 6 - ADC Set Point
      • 7 - Comunicación UART
      • 8 - PWM
      • 9 - LED RGB
      • 10 - Teclado matricial
      • 11 - LCD
      • 12 - Motor DC + Driver L298N
      • 13 - Motor DC + Sensor IR Sharp GP2Y0A21
      • 14 - Servomotor
      • 15 - Servomotor + Potenciómetro
      • 16 - Sensor LM35
      • 17 - Sensor DS18B20
      • 18 - Sensor ultrasónico HC-SR04
      • 19 - Bluetooth HC-05
      • 20 - Bluetooth HM-10
  • Ambientes de programación IDEs
    • PlatformIO IDE / Visual Studio Code
    • PIC C Compiler CCS
    • mikroC PRO for PIC
    • MPLAB Code Configurator MCC - MPLAB X IDE
    • Librería USB - MPLAB X IDE
    • Arduino® IDE
    • Instalar una Librería en Arduino
  • Workshops
    • Taller Introductorio XIDE - IoT en 24 hrs
    • 👋Acerca de MICROSIDE
Con tecnología de GitBook
En esta página
  • TABLA DE CONTENIDO
  • I. ¿Cómo funciona?
  • II. Descripción del hardware
  • III. Especificaciones
  • IV. Pinout
  • V. Modo de uso
  • Protocolo UART
  • Protocolo I2C
  • VI. Descargas

¿Te fue útil?

  1. PLATAFORMA XIDE IoT
  2. X-NODEs
  3. XN03 - Entradas/Salidas Analógicas
  4. R1

X-NODE / XN03 - Entradas/Salidas Analógicas A-R1

AnteriorR1SiguienteR2

Última actualización hace 3 días

¿Te fue útil?

Este producto ya no se encuentra a la venta. Revisa nuestra versión actualizada:

El X-NODE Analog Inputs-Outputs es un módulo que permite generar hasta 3 señales analógicas/PWM y leer hasta 4 señales analógicas (3 entradas + 1 potenciómetro). La generación de señales analógicas puede utilizarse para controlar sistemas proporcionales, las señales PWM para controlar drivers de luces LED, drivers de motores de escobillas (brushed), etc. La lectura de señales analógicas puede utilizarse para crear sistemas de control proporcionales, medir voltaje de baterías y reguladores. Todo a través de una interfaz digital (UART/I2C) que es configurable lo que permite conectar múltiples X-NODE Analog Inputs-Outputs simultáneamente, expandiendo la cantidad de salidas analógicas/PWM que puede generar un sistema desde 3 hasta 381 , entradas analógicas desde 3 hasta 381, y 1 hasta 127 potenciómetros.

El X-NODE Analog Inputs-Outputs es un dispositivo que trabaja a 3.3V, antes de conectarlo a una fuente de voltaje asegúrese que el voltaje no exceda 3.3V.

TABLA DE CONTENIDO

I. ¿Cómo funciona?

El X-NODE Analog Inputs-Outputs es un módulo que integra un potenciómetro de vuelta simple, un LED RGB, 3 orificios con acceso a señales PWM y un puerto de conexión con 3 entradas y 3 salidas analógicas, 3.3V y GND. El potenciómetro cuenta con un valor de resistencia de 5 kΩ, una tolerancia de ± 20% y una potencia de 5 mW. El LED RGB es capaz de generar hasta una combinación de 16 millones de colores configurando los parámetros de intensidad de los colores primarios (Rojo, Verde y Azul), con un consumo promedio de 20 mA y funcionamiento en un rango de temperatura de 0 °C hasta 80 °C. Las salidas PWM comparten el canal con las salidas analógicas, esto debe considerarse al utilizar estas salidas, la resolución es de 8 bits y la frecuencia, en el caso de las señales PWM, es de 1.2 kHz. Las entradas analógicas tienen una resolución de 7 bits, la lectura utiliza un multiplexor por lo que la frecuencia máxima de muestreo es de hasta ~37 ksps para cada canal.

II. Descripción del hardware

  1. Puerto serigrafiado con pines macho y orificios para entradas y salidas analógicas

  2. Potenciómetro

  3. Indicador LED RGB

  4. Orificios de acceso a señales PWM

  5. Controlador en hardware

  6. Puertos de comunicación UART <> I2C

  7. Modelo de X-NODE

  8. Tipo de X-NODE

  9. Versión del hardware: R1

  10. Característica principal en el X-NODE

III. Especificaciones

Tipo

Entradas y salidas analógicas

Aplicaciones

Integración en proyectos de IoT con uso de propósito general como en lectura de señales y cambios de estado o secuencias con actuadores y motores. Potenciómetro útil para control de movimiento, activación de sistemas o calibración de componentes con precisión. LED RGB ideal para alertas visuales, ambientación de espacios mediante luz en hogares inteligentes, así como indicador de estado en diferentes componentes, alarmas y secuencias.

Características

Potenciómetro de vuelta simple con ángulo ajustable, valor de resistencia de 5 kΩ con tolerancia de ± 20% y una potencia de 5 mW. LED RGB capaz de generar hasta 16 millones de colores a partir de una señal PWM, con un consumo promedio de 20 mA y funcionamiento en un rango de temperatura de 0 hasta 80 °C. Puerto de conexión con pines macho y orificios para 3 entradas y 3 salidas analógicas externas, 3.3V y GND. Orificios de acceso para señales PWM.

Interfaz

UART, I2C

Compatibilidad

Tamaño

65.1 x 25.38 x 26.98 mm

Voltaje

3.3 V

IV. Pinout

V. Modo de uso

Para un uso fácil y rápido del X-NODE se puede hacer a través de los comandos en formato ASCII que proporciona el controlador en hardware integrado mediante una comunicación serial UART o de forma más avanzada a través del protocolo I2C.

Protocolo UART

La comunicación UART utiliza la siguiente configuración:

  • Velocidad de comunicación: 115,200 bps

  • Paridad: Ninguna

  • Bits de datos: 8

  • Bits de paro: 1

Sintaxis

El protocolo UART permite enviar instrucciones en texto plano ASCII, cada instrucción se compone del identificador del X-NODE, un comando y un final de línea.

Identificador

El identificador ID, se conforma por el modelo del X-NODE, que puede localizar en el punto 6 del apartado Descripción de hardware y se complementa con un índice, que puede ser una letra del abecedario, por defecto es la letra A, siendo posible configurarlo hasta la letra Z. Para poder conectar más de un módulo del mismo modelo en un sistema, deberá configurar un identificador único para cada módulo, brindando la posibilidad de conectar hasta 26 módulos del mismo modelo a través del protocolo UART.

Nota: A partir de este punto se usará el índice predeterminado del X-NODE XN03 - Analog Inputs-Outputs para el resto del manual: XN03A.

Lista de comandos

XN03A?

Verifica si se estableció una comunicación con éxito. Respuesta: OK

XN03A+V

Obtiene la versión del firmware actual que integra el X-NODE. Respuesta: XN03A=Versión Ejemplo: XN03A=0.1

XN03A+ID=(A-Z)

Cambia el índice del ID por una letra diferente del abecedario de la A a la Z, la nueva letra debe ser en mayúscula. Una vez modificado, para volver a cambiarlo es necesario colocar el ID con el nuevo índice. Respuesta: OK Ejemplo de envío: XN03C+ID=H

XN03A+TW=(1-126)

Cambia la dirección I2C que viene de fábrica por uno diferente. La nueva dirección se escribe en decimal seleccionando un valor de 1 a 126. Respuesta: OK Ejemplo de envío: XN03A+TW=28

XN03A+GP

Obtiene el valor del potenciómetro dado por su posición. Retorna con un valor relativo de 0 a 100. Respuesta: XN03A=VAL Ejemplo: XN03A=67

XN03A+S=(Out1/PWM1/Rojo),(Out2/PWM2/Verde),(Out3/PWM3/Azul)

Cambia el estado de cada una de las 3 salidas, sea directamente en el puerto de salidas analógicas, en los orificios de acceso PWM o en los colores del indicador LED RGB, con valores entre 0 a 255. Respuesta: OK<CR+LF> Ejemplo de envío: XN03A+S=0,25,100<CR+LF>

Final de línea

El X-NODE solo responderá a un comando cuando se envíe un conjunto de caracteres finalizadores de línea, cada comando debe terminar con estos caracteres: <CR+LF>

  • CR significa retorno de carro (carriage return), este carácter se utiliza para indicar a un sistema que la entrada de texto debe moverse al principio.

  • LF significa alimentación de línea (line feed), este carácter le indica a un sistema que la entrada de texto corresponde a una nueva línea.

La combinación de ambos caracteres es una manera común con el que las computadoras representan una nueva línea, por ejemplo, en un procesador de texto para separar párrafos.

En el caso del X-NODE los caracteres <CR+LF>, se utilizan para identificar cuando se ha terminado de enviar un comando. Si el identificador corresponde al nodo, si el comando existe y si se finalizó inmediatamente con los caracteres <CR+LF>, entonces el nodo enviará una respuesta.

Dependiendo del sistema, deberá configurar el envío de estos caracteres de maneras diferentes.

Ejemplo UART Arduino Framework

#include "Arduino.h"

// Configura este valor para cambiar el color RGB
const uint8_t rgb_color[] = { 227, 235, 23 };

// Calcula el valor PWM para un color RGB con un brillo específico
void intensity(int brightness) {
  uint8_t red, green, blue;
  if (brightness > 100)
    brightness = 100;
  if (brightness < 0)
    brightness = 0;

  red = (rgb_color[0] * brightness) / 100;
  green = (rgb_color[1] * brightness) / 100;
  blue = (rgb_color[2] * brightness) / 100;

  Serial2.print(red);
  Serial2.print(",");
  Serial2.print(green);
  Serial2.print(",");
  Serial2.println(blue);
}

void setup() {
  // Inicializa el monitor serial
  Serial.begin(115200);

  // Inicializa la comunicación UART en el puerto MikroBUS
  Serial2.begin(115200, SERIAL_8N1, 16, 17);
}

void loop() {
  // Controla la intensidad del led RGB con el potenciómetro del XN03

  // Limpiamos el buffer
  if (Serial2.available()) {
    Serial2.read();
  }

  // Envía el comando para obtener la posición del potenciómetro
  // Los caracteres \r\n representan los caracteres
  // <CR+LF> en en lenguaje de programación C/C++
  Serial2.print("XN03A+GP\r\n");

  // Espera hasta recibir una respuesta
  String pot_value = Serial2.readStringUntil('\n');

  // Si la respuesta comienza por el ID
  // entonces la comunicación fue exitosa
  if (!pot_value.startsWith("XN03A=")) {
    Serial.println("Error");
    delay(1000);
    return;
  }

  // Convierte el valor en ASCII a un valor decimal
  int brightness = pot_value.substring(pot_value.indexOf('=') + 1).toInt();

  // Limpiamos el buffer
  if (Serial2.available()) {
    Serial2.read();
  }

  // Envía el comando para cambiar el valor de las salidas
  Serial2.print("XN03A+S=");
  intensity(brightness);

  // Espera hasta recibir una respuesta
  String success = Serial2.readStringUntil('\n');

  // Si la respuesta es "OK"
  // entonces la comunicación fue exitosa
  if (!success.startsWith("OK")) {
    Serial.println("Error");
    delay(1000);
    return;
  }

  delay(100);
}

Protocolo I2C

Para poder establecer comunicación se debe conocer la dirección I2C del X-NODE, el valor de fábrica se conforma por los dos últimos dígitos del modelo después de “XN”. Las direcciones I2C suelen representarse en sistema hexadecimal, mientras que el modelo del X-NODE está en sistema decimal, asegúrese de utilizar el sistema numérico adecuado.

Configuración

  • Velocidad de comunicación: 100 kHz

  • Address: 7 bits

Nota: Verifica que no cuentes con otro dispositivo con la misma dirección (Address) en el BUS I2C, de ser así recuerda que el X-NODE puede cambiar su dirección I2C con el comando XN03A+TW=(1-126).

Lista de registros

En un dispositivo I2C los registros son direcciones de memoria que permiten configurar u obtener datos del dispositivo. Existen dos tipos de operaciones: de lectura (R) y de escritura (W).

Registros de lectura

En el X-NODE Analog Inputs-Outputs existen 4 registros de lectura: potenciómetro, entrada analógica (1-3). Para leer un registro el dispositivo maestro I2C debe generar las siguientes operaciones:

  1. Enviar una condición de inicio: El dispositivo maestro genera un lógico bajo (0) en el pin SDA, mientras SCL permanece en alto (1).

  2. Enviar la dirección del X-NODE: El dispositivo maestro envía la dirección de 7 bits.

  3. Enviar el tipo de operación escritura: El dispositivo maestro indica que la operación es de escritura (1).

  4. Esperar una señal de reconocimiento (ACK): El dispositivo maestro espera a recibir un lógico bajo (0), como confirmación (Acknowledgment) que exista un dispositivo con la dirección enviada previamente en el BUS I2C. Si no se recibe respuesta (1), significa que hubo un error en la comunicación o la dirección es incorrecta.

  5. Escribe la dirección del registro (1 byte): El dispositivo maestro enviará 1 byte indicando el registro a leer:

    • 0x1E: Potenciómetro

    • 0x1F: Entrada 1

    • 0x20: Entrada 2

    • 0x15: Entrada 3

  6. Esperar una señal de reconocimiento (ACK): El dispositivo enviará una señal de reconocimiento (Acknowledgment) al maestro, indicando que ha recibido la dirección del registro.

  7. Enviar una condición de paro: El dispositivo maestro debe liberar el BUS I2C generando un lógico alto (1) en el pin SDA mientras que SCL se encuentra en un lógico alto (1).

  1. Enviar una condición de inicio: El dispositivo maestro genera un lógico bajo (0) en el pin SDA, mientras SCL permanece en alto (1).

  2. Enviar la dirección del X-NODE: El dispositivo maestro envía la dirección de 7 bits.

  3. Enviar el tipo de operación escritura: El dispositivo maestro indica que la operación es de lectura (0).

  4. Esperar una señal de reconocimiento (ACK): El dispositivo maestro espera a recibir un lógico bajo (0), como confirmación (Acknowledgment) que exista un dispositivo con la dirección enviada previamente en el BUS I2C. Si no se recibe respuesta (1), significa que hubo un error en la comunicación o la dirección es incorrecta.

  5. Recibir 1 byte de datos: El dispositivo enviará al maestro 8 bits (1 byte), donde el bit más significativo (el que se recibe primero) debe ignorarse, los 7 bits restantes representan el valor de las entradas de 0 a 100.

  6. Esperar una señal de no reconocimiento (NACK): El dispositivo enviará una señal de no reconocimiento (Not Acknowledgment) al maestro, indicando que ha terminado de enviar información.

  7. Enviar una condición de paro: El dispositivo maestro debe liberar el BUS I2C generando un lógico alto (1) en el pin SDA mientras que SCL se encuentra en un lógico alto (1).

Registros de escritura

En el X-NODE Analog Inputs-Outputs existen 3 registros de escritura para cada uno de los canales PWM/Analógicos. Para escribir en los registros el dispositivo maestro I2C debe generar las siguientes operaciones:

  1. Enviar una condición de inicio: El dispositivo maestro genera un lógico bajo (0) en el pin SDA, mientras SCL permanece en alto (1).

  2. Enviar la dirección del X-NODE: El dispositivo maestro envía la dirección de 7 bits.

  3. Enviar el tipo de operación: El dispositivo maestro indica que es una operación de escritura (1).

  4. Esperar una señal de reconocimiento (ACK): El dispositivo maestro espera a recibir un lógico bajo (0), como confirmación (Acknowledgment) que exista un dispositivo con la dirección enviada previamente en el BUS I2C. Si no se recibe respuesta (1), significa que hubo un error en la comunicación o la dirección es incorrecta.

  5. Escribir la dirección del registro (1 byte): El dispositivo maestro debe envíar la dirección del registro del canal PWM/analógico a escribir.

  6. Escribir el valor del registro (1 hasta 3 bytes): El dispositivo maestro debe escribir un valor de 0 a 255 (8 bits) para el canal PWM/analógico del registro seleccionado. Escribir más de un byte moverá la dirección del registro al siguiente: canal 1->canal 2->canal 3. Escribir más valores no tendrá ningún efecto.

  7. Esperar una señal de reconocimiento (ACK): El dispositivo enviará una señal de no reconocimiento (Acknowledgment) al maestro, indicando que ha terminado de enviar información.

  8. Enviar una condición de paro: El dispositivo maestro debe liberar el BUS I2C generando un lógico alto (1) en el pin SDA mientras que SCL se encuentra en un lógico alto (1).

Ejemplo I2C Arduino Framework

#include <Arduino.h>
#include <Wire.h>

// Configura este valor para cambiar el color RGB
const uint8_t rgb_color[] = { 227, 235, 23 };

// Calcula el valor PWM para un color RGB con un brillo específico
bool intensity(int brightness) {
  uint8_t red, green, blue;
  if (brightness > 100)
    brightness = 100;
  if (brightness < 0)
    brightness = 0;

  red = (rgb_color[0] * brightness) / 100;
  green = (rgb_color[1] * brightness) / 100;
  blue = (rgb_color[2] * brightness) / 100;

  // Enviar condición de inicio + dirección
  // + tipo operación
  Wire.beginTransmission(0x03);

  // Escribe la dirección del registro del canal 1 (0x23)
  Wire.write(0x23);
  // Escribir el valor del canal 1 (color rojo)
  Wire.write(red);
  // Escribir de forma secuencial asigna el valor del canal 2 (verde)
  Wire.write(green);
  // Y el canal 3 (azul)
  Wire.write(blue);

  return (Wire.endTransmission() == 0);
}

void setup() {
  // Inicializa el monitor serial
  Serial.begin(115200);

  // Inicializa la comunicación I2C
  Wire.begin();
}

void loop() {
  // Controla la intensidad del led RGB con el potenciómetro del XN03

  uint8_t bytes_recv = 0;
  uint8_t pot = 0;

  // Enviar condición de inicio + dirección
  // + tipo operación
  Wire.beginTransmission(0x03);
  // Escribe la dirección del registro del potenciómetro (0x1E)
  Wire.write(0x1E);

  // Verificar si la operación fue exitosa
  if (Wire.endTransmission() != 0) {
    Serial.println("Error al solicitar el registro");
    delay(1000);
    return;
  }

  // Enviar condición de inicio + dirección
  // + tipo operación + cantidad de bytes a leer
  bytes_recv = Wire.requestFrom(0x03, 1);

  // Confirmar que se recibió 1 byte
  if (bytes_recv != 1) {
    Serial.println("Error al leer el registro");
    delay(1000);
    return;
  }

  pot = Wire.read();

  // Enviar el comando para cambiar el valor de las salidas
  if (!intensity(pot)) {
    Serial.println("Error al escribir el valor RGB");
    delay(1000);
    return;
  }

  delay(100);
}

VI. Descargas

X-NODE Analog Inputs-Outputs es compatible con el estándar de para un uso fácil con un gran ecosistema de kits para desarrollo de hardware, también posee conectores JST compatibles con el estándar de para una comunicación entre diversos módulos y tarjetas de desarrollo por medio del protocolo I2C de manera rápida y sencilla.

Conectores JST compatibles con

Conectores estándar

Estándar y estándar

La siguiente tabla muestra el pinout del X-NODE Analog Inputs-Outputs con respecto al estándar (este último se encuentra en las dos columnas del centro).

Código de ejemplo para el , revisa el manual para utilizar nuestro

Código de ejemplo para el , revisa el manual para utilizar nuestro

↘️

Esquemático

Dimensiones

¿Cómo funciona?
Descripción del hardware
Especificaciones
Pinout
Modo de uso
Protocolo UART
Ejemplo UART Arduino Framework
Protocolo I2C
Ejemplo I2C Arduino Framework
Descargas
Esquemático
Dimensiones
mikroBUS™
Mikroe®
Qwiic®
SparkFun®
Qwiic®
mikroBUS™
mikroBUS™
XC01 - R4
XC01 - R4 en Arduino IDE/PlatformIO
XC01 - R4
XC01 - R4 en Arduino IDE/PlatformIO
mikroBUS™
Qwiic®
XN03 - R2