Glosario Arduino

El lenguaje de programación usado por Arduino está basado en Processing que es un lenguaje de programación de código abierto que trabaja con el entorno de desarrollo integrado (IDE) tambien de código abierto basado en Java, de fácil uso y que sirve como medio para la enseñanza y producción de proyectos multimedia.

1. UART

Un puerto Universal Asynchronous Receiver Transmitter o simplemente serie, es asíncrono con velocidades (baudios) y formatos de datos totalmente configurables. Solo usa dos (2) cables uno para TX y otra Rx que se conectan cruzados. Solo puede establecer comunicación entre 2 dispositivos donde uno es el host o DTE (Data Terminal Equipmet) normalmente la computadora y el DCE (Data Communication Equipment) un módem, impresora etc.

Es uno de los protocolos de interfaz serie más antiguo. Al no tener reloj para tener éxito en una transmisión ambos lados deben estar exactamente igual configurados en velocidad (baudios), numero de bits de datos, si habrá o no bit de paridad y bit de parada.

Este protocolo a menudo es confundido con la interfaz que lo implementa que puede ser: "puerto COM", "RS-232C", "USB" o "Ethernet".

UART es el nombre técnico para el tipo de puerto serie que puede encontrar en una PC de los años 90 (ratón serie, teclado y módem).

Pines de puerto serie
PlacaTxRx
Arduino UNO R3 y Leonardo10
Arduino MEGA y DUE1415
1617
1819

2. RS232

No conecte estos pines directamente a un puerto serial RS232; funcionan a +/- 12V y pueden dañar su placa Arduino. Debe usar una adaptación.

3. USB

El Universal Serial Bus, es un bus estándar industrial de un interfaz que define los cables, conectores y protocolos usados en un bus para conectar, comunicar y proveer de alimentación eléctrica entre computadores, periféricos y dispositivos electrónicos. En esta comunicación de haber un host. Consta de 4 pines y usa lógica TTL (5V).

Pines USB tipo A y B
PinNombreDescripciónCable
1Vcc+5VRojo
2D-Data -Blanco
3D+Data +Verde
4GNDTierraNegro

La especificación USB contempla varios tamaños y tipos de conectores compatibles con distintas especificaciones:

Pines USB mini y micro
PinNombreDescripciónCable
1Vcc+5VRojo
2D-Data -Blanco
3D+Data +Verde
4IDTipo A = GND
Tipo B = no conectado
 
5GNDTierraNegro

Los dispositivos USB 3.0 se pueden conectar en conectores USB 2.0 y viceversa, si es de tipo A. Si es de tipo B o micro-B, los dispositivos USB 2.0 se pueden conectar en conectores USB 3.0, pero no al revés.

Estandares USB
NombresVelocidad
USB 1.01.6 Mbps
USB 1.112 Mbps
USB 2.0480 Mbps
USB 3.04.8 Gbps
USB 3.110 Gbps
USB 3.220 Gbps

Para que un Arduino tenga un interfaz USB, necesita de un chip que ofrezca un interfaz USB, en algunos casos el propio uC ya dispone de ese interfaz y en otros caso usa un segundo uC como interfaz USB. Ademas en el computador host necesitamos un driver que implemente la comunicación con el USB en particular para que asigne un puerto serie virtual. Estos drivers deben estar certificados por usb.org. A partir de Windows 8.1 los driver de Arduino ya están incluidos.

Aunque la mayoría de computadoras ya incluyen una protección interna, Arduino incorpora un fusible rearmable de 500 mA, con la intención de proteger contra sobrecargas y cortocircuitos. Si circula una intensidad mayor a 500mA por el bus USB, el fusible salta interrumpiendo la alimentación.

USB es un estándar de interfaz más moderno que se describe en detalle en la documentación del USB Implementors Forum. El USB usa señalización NRZ diferencial y, por lo tanto, es mucho más complicado de describir a nivel de cable. Normalmente, se usa el USB agregando código de controlador a un motor de interfaz serial USB de hardware incrustado dentro del uC, o bien usando un chip PHY (interfaz física).

USB puede llegar a 480 Mbps (USB 2.0), mucho más rápido que UART, SPI y I2C pero también es mucho más complejo. Incluye: apretón de manos, detección de dispositivo, negociación automática de velocidad, etc. no es algo particularmente fácil de hacer en un sistema integrado a menos que pueda obtener algunas bibliotecas de software USB preconfiguradas para su chip. USB es una interfaz diferencial y bidireccional.

4. Ethernet

Interfaz serie

5. Monitor Serie

Una herramienta integrada en el IDE de Arduino que permite enviar y recibir datos seriales desde y hacia una placa conectada.

6. Bus SPI

El bus Serial Peripheral Interface es una tecnología de comunicación en serie síncrona que usa cuatro cables y una arquitectura maestro/esclavo. Un dispositivo maestro puede comunicarse en dúplex completo con varios esclavos usando una señal de SS (Slave Select) específica para cada esclavo. La comunicación es adecuada para distancias cortas. Usa 4 pines.

Pines SPI
NombresDescripciónArduino UNO
MISO o SDIMaster-In Slave-Out o Serial Data In
MOSI o SDOMaster-Out Slave-In o Serial Data Out
CLK o SCKClock o Serial Clock
SS o CS o CESlave Select o Chip Select o Chip Enable

SPI tiene un reloj maestro y datos sincrónicos de maestro a esclavo y viceversa. Un total de 3 cables más Vcc, GND y selección de chip opcional. Los datos se transfieren simultáneamente dentro y fuera, típicamente 8 bits a la vez. Los datos pueden ser MSB-first o LSB-first, dependiendo del dispositivo esclavo SPI conectado.

SPI es una interfaz interna, prácticamente usada entre chips en la misma PCB. SPI es bueno para cosas incrustadas, ya que es solo un registro de desplazamiento y no mucho más, esto permite comunicaciones realmente rápidas (10 Mbps no es poco común incluso en pequeños uP de 8 bits y más de 50 Mbps en muchos chips de 32 bits). Los datos se cargan en un registro de desplazamiento y se envían bit por bit en cada ciclo de reloj. En el otro extremo, se realiza la acción inversa.

7. Bus I2C

El bus Inter Integrated Circuit es un bus de comunicacion en serie síncrono que usa dos cables que proporciona comunicación entre dos chips. Introducido en 1982 por Philips Semiconductor. El I2C puede funcionar a diferentes velocidades: 100 Kbps, 400 Kbps, 1 Mbps y 3.4 Mbps. Se usa para conectar también diferentes placas con la simplicidad de cablear solo dos cables, llamados SDA (línea de datos), SCL (línea de reloj). Puede admitir hasta 128 dispositivos esclavos porque maneja direcciones de 7 bits.

Pines I2C
NombresDescripciónArduino UNO + NANOArduino MEGA
SDALinea de datosA420
SCL O SCKLinea de relojA521
Bus I2C

I2C es una interfaz interna de chip a chip en serie que está más cerca de una UART de baja velocidad en términos de complejidad y conteo de pines.

7. FTDI

8. IDE

Integrated Development Environment que significa "Entorno de desarrollo integrado". El IDE de Arduino, por ejemplo, es el lugar donde se escribe el software para cargarlo a un Arduino.

9. ISR

El Interrupt Service Routine o rutina de servicio de interrupción. Internamente el uC ATmega tiene ciertas interrupciones configuradas que lanza según la situación. El uso de interrupciones es casi obligatorio en un programa avanzado de un uC. Básicamente cuando un evento ocurre se levanta una bandera y la ejecución se traslada a una rama de código diferente. De esta forma no es necesario esperar un loop a comprobar que un evento ha ocurrido para ejecutar una acción. Las interrupciones pueden ocurrir por un cambio en un puerto (solo ciertos pines soportan interrupciones HW), overflow en un timer, comunicación serie (USART), etc…

10. FTDI

11. PWM

Pulse Width Modulation, una forma de simular un voltaje analógico variable mediante una salida digital.

12. DMA

Direct Memory Access es una tecnología que permite a los periféricos acceder directamente a áreas de la memoria sin intervención de la CPU. Esto aumenta el rendimiento de algunas transferencias en interfaces como SPI o DAC.

12. ICSP

In Circuit Serial Programming la programación en serie en el circuito es la capacidad de un uP para programarse directamente en el tablero en el que está monumental. También es un conjunto de señales y pines usados para la programación.

13. DAC

Digital to Analog Converter, un convertidor digital a analógico es un circuito que convierte un valor digital en un voltaje analógico. Se usa en campos como el audio y la música para crear sonidos a partir de valores digitales. La resolución de bit de un DAC expresa su capacidad de aproximar valores con precisión. Una resolución más alta significa una mejor aproximación.

14. ADC

Analog to Digital Converter, un circuito que convierte una tensión analógica en un número digital que representa ese voltaje. Este circuito está integrado en el uC y está conectado a los pines de entrada analógica de la placa Arduino.

Ver puertos análogos en Arduino.

15. BCD

Binary Coded Decimal, un estándar para representar números decimales en sistema binario, donde cada dígito decimal esta codificado en una secuencia de 4 bits.

Ver CD4511 en Integrados avanzados.

Decimal:0123456789
BCD:0000000100100011010001010110011110001001

15. RTC

Real Time Clock el reloj de tiempo real es un circuito que usa un cristal de cuarzo o un oscilador cortado con láser para mantener el tiempo dentro de una computadora o en un sistema integrado. El circuito tiene su propia fuente de alimentación, generalmente una batería de litio, y tiene un consumo de energía muy bajo. Una vez configurado, se puede consultar el RTC para obtener la fecha y la hora a través de interfaces seriales como I2C.