Introdución:
Arduíno pode comunicarse con outros dispositivos transmitindo e recibindo información. Pode comunicarse co ordenador, con outro Arduíno, cun receptor GPS, unha pantalla, un teléfono móbil, etc.
Transmisión de datos:
A comunicación con outros dispositivos realízase de forma dixital, é dicir, mediante pulsos eléctricos que representan os ceros e uns en binario. A cantidade mínima de información que pode transferir é un byte (8 bits).
Necesitamos ademais un código común para codificar os caracteres que enviamos. Arduíno utiliza o código ASCII (ver táboa).
Velocidade:
A velocidade de comunicación vén determinada polo tempo en que cada bit se mantén na liña. Por exemplo, se un bit se mantén na liña de comunicación durante un segundo dicimos que a comunicación é de 1 bit por segundo = 1 bps = 1 Baudio
Arduíno é capaz de realizar comunicacións serie desde 300 a 115200 baudios. Por defecto, para a comunicación serie, estableceremos unha velocidade de 9600 baudios cando queiramos comunicarnos.
Buffer de datos:
O búfer ou buffer é un espazo de memoria no que se almacenan datos de maneira temporal. O seu principal uso é para evitar que o programa se quede sen datos durante unha transferencia. A medida que van chegando datos á tarxeta Arduíno, estes son almacenados no búfer ata que o programa se encarga de lelos.
Arduíno Uno ten un búfer dunha capacidade de 64 bytes.
Comunicación serie
Serve, por exemplo, para comunicarnos co ordenador a través da consola ou para conectar dous Arduínos entre si. É a comunicación que se utiliza para transmitir datos mediante USB ou Bluethood.
Pins de comunicación serie no Arduíno:
Para realizar a transmisión de datos empréganse dúas liñas de cables:
- Tx: Transmisión de datos
- Rx: Recepción de datos
Podemos establecer a comunicación con outro dispositivo a través dos pins 0 (Rx) e 1 (Tx), ou a través do cable USB.
Cando a placa Arduíno está transmitindo ou recibindo datos, acéndense os LEDs Tx e Rx
Comunicación I2C
Nós utilizaremos este tipo de comunicación para utilizar unha pantalla LCD con interface I2C.
I²C , I2C, IIC ou TWI (Two Wire Interface, ou interface de dous fíos) é un sistema de comunicacións en serie que utiliza dúas liñas para transmitir a información: unha para os datos (SDA) e outra para o sinal de reloxo (SCL)
Trátase dun bus de comunicación mestre-escravo no que os diferentes compoñentes (escravos) se conectan en paralelo coa placa Arduíno (mestre) a través das dúas liñas de bus (SDA e SCL).
Pins de comunicación I2C no Arduíno:
No caso dunha placa Arduíno UNO as conexións I2C serían:
- GND e Vcc para a alimentación.
- SDA (pin de datos) ao pin analóxico A4.
- SCL (sinal de reloxo) ao pin analóxico A5.
A tarxeta Arduíno UNO Rev3 ten outros dous pins que podemos utilizar igualmente para a comunicación I2C, e que están na parte superior, xunto aos pins dixitais. Está indicado pola parte de atrás da tarxeta. Se tes este modelo de Arduíno e che resulta máis cómodo podes substituír as conexións A4 e A5 polos pins SDA e SCL da parte superior.
A librería Wire será a encargada de xestionar o protocolo de comunicacións.
Comunicación SPI
Nós utilizaremos este tipo de comunicación para o control dunha matriz de LEDS gobernada polo integrado MAX7219.
SPI é un protocolo de comunicación serial (Serial Peripherical Interface) mestre-escravo. É máis rápido có I2C ou có porto serie normal e permite enviar e recibir datos ao mesmo tempo.
Pins de comunicación SPI no Arduíno:
O SPI utiliza catro liñas: MOSI (do mestre ao escravo), MISO (do escravo ao mestre), CLK (reloxo) e SS (selección). Para a comunicación SPI dun Arduíno UNO podemos utilizar os pins ICSP, pero nesta sección non imos traballar con eles. Para o control da matriz de LEDs usaremos pins dixitais que tamén teñen a función SPI (pins 10, 11, 12 e 13)