fbpixel
Los distintos protocolos de comunicación

Los distintos protocolos de comunicación

Sea cual sea tu proyecto de electrónica, programación o domótica, seguro que utilizas un protocolo de comunicación. Ya sea para programar el microcontrolador o para comunicarse con un sensor. Este artículo presenta varios protocolos de comunicación comúnmente utilizados en Arduino, Raspberry Pi y ESP8266/ESP32.

Bus de comunicación serie

Puerto serie

USB

USB (Universal Serial Bus) es un estándar de bus de comunicación utilizado para intercambiar datos entre periféricos informáticos. La particularidad de este estándar es que permite conectar dispositivos mientras están en funcionamiento y posibilita el reconocimiento automático del periférico).

UART

UART (Universal Asynchronous Receiver Transmitter) es el estándar que especifica cómo se envían los datos a través del puerto serie.

RS-232

El protocolo RS-232 es un protocolo de comunicación que define la conectividad y permite la comunicación asíncrona y dúplex entre dos equipos. La particularidad de este protocolo es que utiliza tensiones de 3 a 25 V para transmitir datos, lo que lo convierte en un bus menos sensible a las interferencias y al ruido.

(RS232/RS422/RS485)

I2C

El bus de comunicación I2C es un protocolo que permite conectar varios dispositivos “Maestros” a varios dispositivos “Esclavos”, posibilitando la comunicación de hasta 128 dispositivos. Permite conexiones asíncronas entre varios componentes para compartir información a través de un “bus común”. Este protocolo se utiliza generalmente para intercambios de placa a placa, pero puede utilizarse en distancias más largas.

SPI

SPI (Serial Peripheral Interface) es un bus de datos serie que funciona en modo full-duplex, lo que significa que puede transmitir y recibir datos al mismo tiempo. Utiliza una arquitectura maestro-esclavo y el esclavo se selecciona mediante una línea dedicada.

CAN

El bus CAN (Controller Area Network) es un bus de comunicación en serie muy utilizado en la industria del automóvil. Permite multiplexar distintos dispositivos para que se comuniquen a través del mismo bus. Esto reduce la cantidad y la complejidad del cableado.

Ethernet

Ethernet es un protocolo de comunicaciones por cable que intercambia datos en paquetes a alta velocidad.

(I2S)

MIDI

MIDI (Musical Instrument Digital Interface) es un protocolo de comunicación entre instrumentos electrónicos, controladores y software musical. Consiste en enviar una serie de bytes para especificar el tipo de mensaje y la información asociada (nota, duración de la nota, instrumento, etc.).

Protocolos de comunicación inalámbrica

Bluetooth

BLE

La red BLE (Bluetooth Low Energy) es una red Bluetooth de bajo consumo energético.

Wifi

ESP-NOW

Protocolo de comunicación de bajo consumo desarrollado por Espressif que utiliza ondas de 2,4 GHz.

RF 433 MHz

RF 2,4 GHz

(Zigbee)

LoRaWAN

La red Lora (Long Range Wide-area network) es una red de radio que permite a los dispositivos de bajo consumo comunicarse a baja velocidad. Esto hace posible disponer de objetos conectados con una importante autonomía.

Ahora tiene una visión completa de los protocolos de comunicación por cable e inalámbricos más utilizados en electrónica e informática.

Visión general del microcontrolador Arduino Due

Visión general del microcontrolador Arduino Due

Arduino Due es la primera placa Arduino basada en un microcontrolador ARM de 32 bits. Por tanto, es más potente que el Arduino Mega. Tiene una gran capacidad de cálculo y memoria y un gran número de entradas.

Características del microcontrolador

El microcontrolador Arduino Due utiliza el microprocesador Atmel SAM3X8E ARM Cortex-M3. Este procesador funciona a una frecuencia de reloj de 84 MHz y dispone de 96 kB de RAM, nc kB de EEPROM y 512 kB de memoria Flash (para programación y almacenamiento de datos).

  • CPU Atmel SAM3X8E ARM Cortex-M3
  • Voltage : 3.3V
  • Flash : 512 kB
  • RAM : 96 kB
  • EEPROM : nc kB
  • Clock speed : 84MHz
  • WiFi : No
  • Bluetooth : No
  • SD : No

Alimentación

El microcontrolador Arduino Due funciona en un rango de tensión de 7-12V gracias a su regulador de tensión integrado, mientras que el microprocesador funciona con una tensión de 3,3V. En funcionamiento normal, el microcontrolador consume hasta 70mA (si no recibe alimentación) y puede aceptar una corriente máxima de 3-15mA en cada uno de sus pines IO.

Precaución: Aplicar una tensión superior a 3,3V puede dañar el microcontrolador. También observará que la corriente permitida en cada pin es muy baja. Compruebe las características y la compatibilidad de los módulos utilizados.

Pinout

  • Analógico I
  • Digital I
  • Broches PWM : 14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
  • Comunicación Serial: 4 ((0, 1), (19, 18), (17, 16), (15, 14))
  • Software de comunicaciónSerial: 12 (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
  • Comunicación I2C: 1 ((20, 21))
  • Comunicación SPI: 1 ((10, 110, 108, 109))
  • Interrupción : 54 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)

Resumen de características

Microcontrôleur
Nom: ArduinoDUE
Marque: Arduino
Caractéristiques
CPU: Atmel SAM3X8E ARM Cortex-M3
Tension d’alimentation : 7-12V
Tension logique: 3.3V
E/S digitales: 54
Entrées analogiques: 12
Flash: 512kB
SRAM: 96kB
EEPROM: nckB
Fréquence d’horloge: 84 MHz
Wifi: No
Bluetooth: No
SD card: No
Touch: No
UART/SPI/I2C/I2S: Yes/Yes/Yes/No

Librería específica

Fuentes

Visión general del microcontrolador Arduino MEGA

Visión general del microcontrolador Arduino MEGA

La placa Arduino Mega 2560 es una versión mejorada del Arduino UNO. Tiene una gran capacidad de memoria y un gran número de entradas.

Características del microcontrolador

El microcontrolador Arduino MEGA utiliza el microprocesador ATmega2560, que funciona a una frecuencia de reloj de 16 MHz y dispone de 8 kB de RAM, 4 kB de EEPROM y 256 kB de memoria Flash (para programación y almacenamiento de datos).

  • CPU ATmega2560
  • Voltage : 5V
  • Flash : 256 kB
  • RAM : 8 kB
  • EEPROM : 4 kB
  • Clock speed : 16MHz
  • WiFi : No
  • Bluetooth : No
  • SD : No

Alimentación

El microcontrolador Arduino MEGA funciona en un rango de tensión de 7-12V gracias a su regulador de tensión integrado, mientras que el microprocesador funciona con una tensión de 5V. En funcionamiento normal, el microcontrolador consume hasta 45mA (si no recibe alimentación) y puede aceptar una corriente máxima de 40mA en cada uno de sus pines IO.

Pinout

  • Analógico I
  • Digital I
  • Broches PWM : 17 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46)
  • Comunicación serie: 10 (10, 11, 12, 13, 14, 15, 50, 51, 52, 53)
  • Comunicación I2C: 1 ((20, 21))
  • Comunicación SPI: 1 ((53, 52, 50, 51))
  • Interrupción : 1 (2)

Resumen de características

Microcontrôleur
Nom: ArduinoMEGA
Marque: Arduino
Caractéristiques
CPU: ATmega2560
Tension d’alimentation : 7-12V
Tension logic: 5V
E/S digitales: 54
Entrées analogiques: 16
Flash: 256kB
SRAM: 8kB
EEPROM: 4kB
Fréquence d’horloge: 16 MHz
Wifi: No
Bluetooth: No
SD card: No
Touch: No
UART/SPI/I2C/I2S: Yes/Yes/Yes/No

Cómo empezar

Visión general del microcontrolador Arduino MINI

Visión general del microcontrolador Arduino MINI

La placa Arduino MINI se ha diseñado para proyectos en los que el espacio ocupado es crítico y la configuración es fija.

Características del microcontrolador

El microcontrolador Arduino MINI utiliza el microprocesador ATmega328P. Este procesador funciona a una frecuencia de reloj de 8(3.3V ver) 16(5V ver) MHz y dispone de 2 kB de RAM, 1 kB de EEPROM y 32 kB de memoria Flash (para programación y almacenamiento de datos).

  • CPU ATmega328P
  • Voltage : 5V
  • Flash : 32 kB
  • RAM : 2 kB
  • EEPROM : 1 kB
  • Clock speed : 8(3.3V ver) 16(5V ver)MHz
  • WiFi : No
  • Bluetooth : No
  • SD : No

Alimentación

El microcontrolador Arduino MINI funciona en un rango de tensión de 3,35-12V (3,3V ver) o 5-12V(5V ver) gracias a su regulador de tensión integrado. El microprocesador, por su parte, funciona a una tensión de 3,3 o 5V. En funcionamiento normal, el microcontrolador consume hasta 45mA (si no recibe alimentación) y puede aceptar una corriente máxima de 40mA en cada uno de sus pines IO.

Pinout

  • Analog I/O : 6 (A0, A1, A2, A3, A4, A5)
  • Digital I/O : 8 (0, 1, 2, 4, 7, 8, 12, 13)
  • Pines PWM: 6 (3, 5, 6, 9, 10, 11)
  • Comunicación serie: 14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
  • Comunicación I2C: 1 ((‘A4’, ‘A5’))
  • Comunicación SPI: 1 ((10, 13, 12, 11))
  • Interrupción : 1 (2)

Código básico e identificación de pines

Para utilizar los pines de entrada/salida en el código, basta con utilizar las etiquetas presentes en la placa, es decir, A0-A5 y 0-13. Los pines A0, A1, A2, A3, A4 y A5 también pueden sustituirse por 14, 15, 16, 17, 18 y 19 respectivamente. Para su información, los pines analógicos también pueden utilizarse como entradas/salidas digitales.

const int analogPin=A0; // broches A0-A5 ou 14-19
const int digitalInPin=2; // broches 0-13 et 14-19
const int digitalOutPin=4; // broches 0-13 et 14-19
const int pwmPin=3; // broches 3 5 6 9 10 11

int analogVal=0;
int digitalState=LOW; //LOW or false or 0
int pwmVal=250;

void setup() {
  Serial.begin(9600); //broches 0(Rx) et 1(Tx)
  
  pinMode(analogPin,INPUT_PULLUP); // broches 0-13 et 14-19, Argument OUTPUT, INPUT, INPUT_PULLUP
  pinMode(digitalInPin,INPUT);
  pinMode(digitalOutPin,OUTPUT);
  pinMode(pwmPin,OUTPUT);
}

void loop() {
 analogVal=analogRead(analogPin); // broches A0-A5 ou 14-19, return int
 digitalState=digitalRead(digitalInPin); // broches 0-13 et 14-19, return boolean
 digitalWrite(digitalOutPin,HIGH); //broches 0-13 et 14-19, valeur LOW(0) ou HIGH(1)
 analogWrite(pwmPin,pwmVal);// broches 3 5 6 9 10 11, valeur 0-255
}

Resumen de características

Microcontrôleur
Nom: ArduinoMINI
Marque: Arduino
Caractéristiques
CPU: ATmega328P
Tension d’alimentation : 3.35-12V (3.3V ver) or 5-12V(5V ver)
Tension logic: 3.3V ou 5V
E/S digitales: 14
Entrées analogiques: 6
Flash: 32kB
SRAM: 2kB
EEPROM: 1kB
Fréquence d’horloge: 8(3.3V ver) 16(5V ver) MHz
Wifi: No
Bluetooth: No
SD card: No
Touch: No
UART/SPI/I2C/I2S: Yes/Yes/Yes/No

Cómo empezar

Visión general del microcontrolador Arduino NANO

Visión general del microcontrolador Arduino NANO

La placa Arduino NANO es una versión más pequeña de la Arduino UNO con una funcionalidad similar. Ideal para la creación rápida de prototipos y la construcción de proyectos embebidos.

Características del microcontrolador

El microcontrolador Arduino NANO utiliza el microprocesador ATmega328. Este procesador funciona a una frecuencia de reloj de 16 MHz y dispone de 2 kB de RAM, 1 kB de EEPROM y 32 kB de memoria Flash (para programación y almacenamiento de datos).

  • CPU ATmega328
  • Voltage : 5V
  • Flash : 32 kB
  • RAM : 2 kB
  • EEPROM : 1 kB
  • Clock speed : 16MHz
  • WiFi : No
  • Bluetooth : No
  • SD : No

Alimentación

El microcontrolador Arduino NANO funciona en un rango de tensión de 7-12 V gracias a su regulador de tensión integrado. El microprocesador, por su parte, funciona a una tensión de 5V. En funcionamiento normal, el microcontrolador consume hasta 19mA (si no recibe alimentación) y puede aceptar una corriente máxima de 40mA en cada uno de sus pines IO.

Pinout

  • Analog I/O : 8 (A0, A1, A2, A3, A4, A5, A6, A7)
  • Digital I/O : 8 (0, 1, 2, 4, 7, 8, 12, 13)
  • Pines PWM: 6 (3, 5, 6, 9, 10, 11)
  • Comunicación serie: 14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
  • Comunicación I2C: 1 ((‘A4’, ‘A5’))
  • Comunicación SPI: 1 ((10, 13, 12, 11))
  • Interrupción : 1 (2)

Código básico e identificación de pines

Para utilizar los pines de entrada/salida en el código, basta con utilizar las etiquetas presentes en la placa, es decir, A0-A7 y 0-13. Los pines A0, A1, A2, A3, A4 y A5 también pueden sustituirse por 14, 15, 16, 17, 18 y 19 respectivamente. Para su información, los pines analógicos también pueden utilizarse como entradas/salidas digitales.

const int analogPin=A0; // broches A0-A7
const int digitalInPin=2; // broches 0-13 et 14-19
const int digitalOutPin=4; // broches 0-13 et 14-19
const int pwmPin=3; // broches 3 5 6 9 10 11

int analogVal=0;
int digitalState=LOW;
int pwmVal=250;

void setup() {
  Serial.begin(9600); //broches 0(Rx) et 1(Tx)
  
  pinMode(analogPin,INPUT_PULLUP); // broches 0-13 et A0-A7, Argument OUTPUT, INPUT, INPUT_PULLUP
  pinMode(digitalInPin,INPUT);
  pinMode(digitalOutPin,OUTPUT);
  pinMode(pwmPin,OUTPUT);
}

void loop() {
 analogVal=analogRead(analogPin); // broches A0-A7, return int
 digitalState=digitalRead(digitalInPin); // broches 0-13 et 14-19, return boolean
 digitalWrite(digitalOutPin,HIGH); //broches 0-13 et 14-19, valeur LOW(0) ou HIGH(1)
 analogWrite(pwmPin,pwmVal);// broches 3 5 6 9 10 11, valeur 0-255
}

Resumen de características

Microcontrôleur 
Nom:Arduino NANO
Marque:Arduino
Caractéristiques 
CPU:ATmega328
Tension d’alimentation :7-12V
Tension logic:5V
E/S digitales:14
Entrées analogiques:8
Flash:32kB
SRAM:2kB
EEPROM:1kB
Fréquence d’horloge:16 MHz
Wifi:No
Bluetooth:No
SD card:No
Touch:No
UART/SPI/I2C/I2S:Yes/Yes/Yes/No

Cómo empezar