Pantalla OLED


El bus SPI tiene interés como medio de comunicación porque una gran variedad de sensores y dispositivos comerciales disponen de un interfaz SPI como medio de comunicación.

El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola en 1980. Sus ventajas respecto a otros sistemas han hecho que se convierta en un standard de facto en el mundo de la electrónica y automatización.

El bus SPI tiene una arquitectura de tipo maestro-esclavo. El dispositivo maestro (master) puede iniciar la comunicación con uno o varios dispositivos esclavos (slave), y enviar o recibir datos de ellos. Los dispositivos esclavos no pueden iniciar la comunicación, ni intercambiar datos entre ellos directamente.

En el bus SPI la comunicación de datos entre maestros y esclavo se realiza en dos líneas independientes, una del maestro a los esclavos, y otra de los esclavos al maestro. Por tanto la comunicación es Full Duplex, es decir, el maestro puede enviar y recibir datos simultáneamente.

Otra característica de SPI es que es bus síncrono. El dispositivo maestro proporciona una señal de reloj, que mantiene a todos los dispositivos sincronizados. Esto reduce la complejidad del sistema frente a los sistemas asíncronos.

Por tanto, el bus SPI requiere un mínimo de 3 líneas.


  • MOSI (Master-out, slave-in) para la comunicación del maestro al esclavo.
  • MISO (Master-in, slave-out) para comunicación del esclavo al maestro.
  • SCK (Clock) señal de reloj enviada por el maestro.

Además, se requiere una línea adicional SS (Slave Select) para cada dispositivo esclavo conectado, para seleccionar el dispositivo con el que se va a realizar la comunicación.

SPI1

Sin embargo, esto tiene la desventaja de requerir una línea por cada dispositivo esclavo. En caso de disponer muchos dispositivos esclavos esto puede no ser práctico, por lo que es posible adoptar una conexión en cascada, donde cada esclavo trasmite datos al siguiente.

SPI2

Por contra, en esta configuración la información debe llegar a todos los esclavos para que la comunicación sea finalizada por lo que, en general, la velocidad de respuesta del bus es menor.

SPI3
Por contra, en esta configuración la información debe llegar a todos los esclavos para que la comunicación sea finalizada por lo que, en general, la velocidad de respuesta del bus es menor.
El funcionamiento del bus SPI es sencillo.
SPI4

Por defecto el maestro mantiene en estado HIGH todas las líneas SS. Cuando el maestro quiere establecer comunicación con esclavo pone a LOW la línea SS correspondiente, lo que indica al esclavo que debe iniciar la comunicación.

En cada pulso de la señal de reloj, normalmente en el flanco de subida, el dispositivo maestro envía un bit del esclavo y a la vez que recibe un bit del esclavo seleccionado.

La trama (los datos enviados) no sigue ninguna regla, es decir, podemos enviar cualquier secuencia arbitraria de bits. Esto hace que los dispositivos conectados necesiten tener pre-acordado la longitud y significado de los que van a enviar y recibir.

La electrónica requerida para implementar el bus SPI es sencilla y barata, incluso un único registro de desplazamiento puede ser suficiente. Además, como la señal de reloj es proporcionada por el maestro, los esclavos ni siquiera necesitan disponer de un reloj propio.

EL BUS SPI EN ARDUINO

Arduino dispone de soporte SPI por hardware vinculado físicamente a ciertos pines. También es posible emplear cualquier otro grupo de pines como bus SPI a través de sofware, pero en ese caso la velocidad será mucho menor.

Los pines asociados a SPI varían de un modelo a otro. La siguiente tabla muestra la disposición en alguno de los principales modelos. 

Para otros modelos, consultar el esquema de patillaje correspondiente.

MODELO     SS    MOSI      MISO         SCK     
Uno10111213
Nano10111213
Mini Pro10111213
Mega53515052

El pin SS por hardware se emplea al usar Arduino como esclavo. En caso de usar Arduino como maestro, podemos usar cualquier pin como SS, o varios en caso de disponer de varios esclavos.


Conectar el bus SPI es sencillo. Casi la mayor dificultad será encontrar la función de cada pin en el dispositivo que queremos conectar, ya que no todos los fabricantes emplean la misma designación para los pines que participan en el bus SPI.

Para que os sea más sencillo, la siguiente tabla muestra algunos de los pines habituales que encontraremos en dispositivos SPI con designaciones que podéis encontrar según el fabricantes. Los marcados en color rojo son alimentación, en amarillo los propios del bus SPI, y en azul otros pines que aparecen con frecuencia en dispositivos SPI, aunque no forman parte del bus SPI.

NombreAliasPin (en Arduino Uno o Nano)Descripcion
VCC +3.3 … 5 Volt
GNDGroundGround
SCLKCLK/SCK/SCLKD13 (hardware)Clock (SPI)
MISOMISO/SDA/DOUTD12 (hardware)Master In Slave Out (SPI)
MOSIMOSI/SDI/DIND11 (hardware)Master Out Slave In (SPI)
SSSS/CS/D10 (hardware, solo en esclavo)Slave/Chip Select (SPI)
RESRST/RES/RESTD9 (variable, se fija por software)Controller Reset
RSRS/DCD8 (variable, se fija por software)Mode: Command/Dat


Pantalla TFT de 1,8/2,4 pulgadas con módulo combinado de codificador rotatorio EC11, interfaz SPI, pantalla LCD

Características:
1. Diseño todo en uno: la pantalla y el codificador están integrados, simples y hermosos, convenientes para bricolaje.
2. Múltiples opciones de tamaño: pantalla TFT de 1,8 y 2,4 pulgadas, para satisfacer diferentes necesidades
3. Pantalla de alta resolución: 1,8 pulgadas 128x160, resolución de 320x240 de 2,4 pulgadas, clara y delicada
4.Soporte de interfaz SPI: interfaz SPI, gran compatibilidad, fácil de conectar y programar
5.Encodificador con interruptor: codificador giratorio EC11, 20 pulsos de posicionamiento, con función de interruptor

Parámetro:
Nombre del producto: codificador rotatorio TFT+EC11 de 1,8/2,4 pulgadas
Codificador rotatorio TFT+EC11 de 1,8 pulgadas:
Chip controlador TFT de 1,8 pulgadas: ST7735S
Interfaz TFT de 1,8 pulgadas: SPI
Resolución: 128*160 RGB
EC11: vástago de flor de ciruelo, longitud del vástago 15 mm, 20 pulsos de posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Codificador rotatorio TFT + EC11 de 2,4 pulgadas:
Chip controlador TFT de 2,4 pulgadas: ST7789
Interfaz TFT de 2,4 pulgadas: SPI
Resolución: 320*240 RGB
EC11: mango de flor de ciruelo, longitud del mango 15 mm, 20 pulsos 20 posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Descripción:
El módulo es una combinación de 1.8 pulgadas/2.Módulo de pantalla de interfaz SPI de 4 pulgadas y codificador rotatorio EC11, los dos no están relacionados, solo coloque una placa, transformé en un módulo integrado, con una clave adicional, la interfaz clave también es independiente, puede elegir usarla de acuerdo con el real uso de la situación.Diseño todo en uno, bricolaje más simple y hermoso, conveniente.

El paquete incluye:
Módulo x 1
Pasador x 1



Características:
1. Diseño todo en uno: la pantalla y el codificador están integrados, simples y hermosos, convenientes para bricolaje.
2. Múltiples opciones de tamaño: pantalla TFT de 1,8 y 2,4 pulgadas, para satisfacer diferentes necesidades
3. Pantalla de alta resolución: 1,8 pulgadas 128x160, resolución de 320x240 de 2,4 pulgadas, clara y delicada
4.Soporte de interfaz SPI: interfaz SPI, gran compatibilidad, fácil de conectar y programar
5.Encodificador con interruptor: codificador giratorio EC11, 20 pulsos de posicionamiento, con función de interruptor

Parámetro:
Nombre del producto: codificador rotatorio TFT+EC11 de 1,8/2,4 pulgadas
Codificador rotatorio TFT+EC11 de 1,8 pulgadas:
Chip controlador TFT de 1,8 pulgadas: ST7735S
Interfaz TFT de 1,8 pulgadas: SPI
Resolución: 128*160 RGB
EC11: vástago de flor de ciruelo, longitud del vástago 15 mm, 20 pulsos de posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Codificador rotatorio TFT + EC11 de 2,4 pulgadas:
Chip controlador TFT de 2,4 pulgadas: ST7789
Interfaz TFT de 2,4 pulgadas: SPI
Resolución: 320*240 RGB
EC11: mango de flor de ciruelo, longitud del mango 15 mm, 20 pulsos 20 posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Descripción:
El módulo es una combinación de 1.8 pulgadas/2.Módulo de pantalla de interfaz SPI de 4 pulgadas y codificador rotatorio EC11, los dos no están relacionados, solo coloque una placa, transformé en un módulo integrado, con una clave adicional, la interfaz clave también es independiente, puede elegir usarla de acuerdo con el real uso de la situación.Diseño todo en uno, bricolaje más simple y hermoso, conveniente.

El paquete incluye:
Módulo x 1
Pasador x 1


Características:
1. Diseño todo en uno: la pantalla y el codificador están integrados, simples y hermosos, convenientes para bricolaje.
2. Múltiples opciones de tamaño: pantalla TFT de 1,8 y 2,4 pulgadas, para satisfacer diferentes necesidades
3. Pantalla de alta resolución: 1,8 pulgadas 128x160, resolución de 320x240 de 2,4 pulgadas, clara y delicada
4.Soporte de interfaz SPI: interfaz SPI, gran compatibilidad, fácil de conectar y programar
5.Encodificador con interruptor: codificador giratorio EC11, 20 pulsos de posicionamiento, con función de interruptor

Parámetro:
Nombre del producto: codificador rotatorio TFT+EC11 de 1,8/2,4 pulgadas
Codificador rotatorio TFT+EC11 de 1,8 pulgadas:
Chip controlador TFT de 1,8 pulgadas: ST7735S
Interfaz TFT de 1,8 pulgadas: SPI
Resolución: 128*160 RGB
EC11: vástago de flor de ciruelo, longitud del vástago 15 mm, 20 pulsos de posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Codificador rotatorio TFT + EC11 de 2,4 pulgadas:
Chip controlador TFT de 2,4 pulgadas: ST7789
Interfaz TFT de 2,4 pulgadas: SPI
Resolución: 320*240 RGB
EC11: mango de flor de ciruelo, longitud del mango 15 mm, 20 pulsos 20 posicionamiento, 5 pies con interruptor
Función táctil: sin contacto

Descripción:
El módulo es una combinación de 1.8 pulgadas/2.Módulo de pantalla de interfaz SPI de 4 pulgadas y codificador rotatorio EC11, los dos no están relacionados, solo coloque una placa, transformé en un módulo integrado, con una clave adicional, la interfaz clave también es independiente, puede elegir usarla de acuerdo con el real uso de la situación.Diseño todo en uno, bricolaje más simple y hermoso, conveniente.

El paquete incluye:
Módulo x 1
Pasador x 1








Pantalla OLED driver 1306 I2C

Las OLED son uno de los tipos de pantalla disponibles para emplear en nuestros proyectos de electrónica y Arduino.

Un OLED (Organic light-emitting diode) es un tipo de LED en el que la capa emisiva es está formada por un compuesto orgánico que emite luz en respuesta a la electricidad.

Al igual que el resto de tipos de pantallas, las OLED necesitan un controlador específico que convierta los datos recibidos en las señales electrónicas para controlar la pantalla.

En el campo de la electrónica casera, se comercializan unas pequeñas pantallas OLED de 0.96″ listas para conectar a Arduino. Estas pantallas incorporan el controlador SDD1306 y tienen un tamaño muy reducido de 25mm x 14mm. Son monocromas y tienen una resolución de 128×64 pixels.

La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del sensor.




SOFTWARE

Para usar el puerto SPI en Arduino el IDE Standard proporciona la librería “SPI.h” que contiene las funciones necesarias para controlar el hardware integrado de SPI.

Asimismo, el entorno de programación de Arduino define las constantes SCK, MOSI, MISO, y SS para los pines de SPI. Usar estos “alias” en nuestro código hace que sea más fácil de intercambiar programas entre modelos placas.

as funciones básicas para hacer funcionar el bus SPI son las siguientes:

SPI.begin(); // Inicia el bus SPI
SPI.transfer(c); // Envía un byte
SPI.attachInterrupt(); // Activar la interrupción para recibir datos

También se dispone de otras funciones para configurar las opciones del bus SPI. Para cambiar el orden de los bit enviados, disponemos de la función setBitOrder.:

setBitOrder (LSBFIRST); // least significant bit first
setBitOrder (MSBFIRST); // more significant bit first

Para cambiar la polaridad y la fase del reloj tenemos la función SPI.setDataMode:

setDataMode (SPI_MODE0); // clock normalmente LOW, muestreo en flanco subida
setDataMode (SPI_MODE1); // clock normalmente LOW, muestreo en flanco bajada
setDataMode (SPI_MODE2); // clock normalmente HIGH, muestreo en flanco subida
setDataMode (SPI_MODE3); // clock normalmente HIGH, muestreo en flanco bajada

Finalmente, podemos cambiar la velocidad del bus con la función SPI.setClockDivider() divisores de 2 a 128. La frecuencia del bus será la velocidad de reloj dividido por el divisor elegido.

setClockDivider(SPI_CLOCK_DIV2); //8 MHz (considerando un modelo de 16 Mhz)
setClockDivider(SPI_CLOCK_DIV4); //4 MHz
setClockDivider(SPI_CLOCK_DIV8); //2 MHz
setClockDivider(SPI_CLOCK_DIV16); //1 MHz
setClockDivider(SPI_CLOCK_DIV32); //500 KHz
setClockDivider(SPI_CLOCK_DIV64); //250 KHz
setClockDivider(SPI_CLOCK_DIV128); //125 KHz

Sin embargo, estas funciones están obsoletas desde la versión de Arduino 1.6.0., prefiriéndose la función beginTransaction, como muestra el siguiente ejemplo.

SPI.beginTransaction (SPISettings (2000000, MSBFIRST, SPI_MODE0)); // 2 MHz clock, MSB first, mode 0

No obstante, al ser la trama de datos específica de cada dispositivo, lo más frecuente es que no usemos directamente estas funciones, y que nuestro uso del bus SPI se realice de forma indirecta a través de la librería del componente.

Referencia de del blog de Luis LLamas: https://www.luisllamas.es/conectar-arduino-a-una-pantalla-oled-de-0-96/


No hay comentarios:

Publicar un comentario