Arduino Lab 03 Display LCD TFT 1,44 e RTC MCP79410 Dispositivos a serem utilizados neste Lab Neste Lab iremos discutir o funcionamento do display de LCD TFT de 1,44 e do relógio de tempo real (RTC) MCP 79410. Um código será implementado para integração entre estes dois componentes e o Arduíno Nano. Introdução O relógio de tempo real MCP 79410 foi desenvolvido pela Microchip para aplicações de baixo consumo. Faz uso de compensação digital de tempo para atingir uma melhor precisão no relógio e no calendário interno. Possui também um pino que pode ser programado como saída de referência de clock ou para dois modos de alarme diferentes entre si. Uma pequena memória não volátil para armazenar dados e uma memória SRAM, alimentada pela bateria de backup, também fazem parte deste CI. Neste Lab iremos utilizar um pequeno módulo contendo o RTC, cristal de 32768 Hz, resistores de Pull-up e o soquete de bateria.
Módulo RTC MCP 79410 O display de LCD TFT utilizado neste Lab faz uso do controlador ILI 9163C, da empresa Ilitek, e possui uma resolução de 128 128 pixels coloridos (RGB). Seu tamanho reduzido, medindo apenas 1,44 de tela, o faz ideal para aplicações embarcadas. Display LCD -TFT ILI9163C Apenas 4 fios são necessários para estabelecer uma comunicação com este display utilizando o protocolo SPI. Possui também um próprio frame buffer interno para endereçamento dos pixels. Esta característica faz com que este possa ser usado com qualquer tipo de microcontrolador, até mesmo aqueles com pequena memória.
O Arduino Nano já é conhecido desta série de Lab s e já foi citado no Arduino Lab 01. Lembrando aos leitores que esta placa é totalmente compatível com o Arduino UNO em relação ao número dos pinos e tamanho das memórias. Arduino Nano Display TFT LCD Display de LCD A constituição de uma tela de LCD simples é caracterizada pela disposição dos compostos de cristal líquido sobre 2 lâminas translúcidas e polarizadas, denominadas substratos. No entanto, essas lâminas formam um eixo perpendicular, como se fossem uma representação de uma matriz. Desse modo, ocorrem polarizações distintas entre ambas.
Construção Display de LCD A função das células que compõem os compostos químicos presentes no cristal líquido é a de atuar como guias da luz captada pelo receptor do display. Assim, esta é conduzida até o campo visual, que, assim, reproduzirá a imagem conforme ela foi emitida pelo raio de luz. Esse deslocamento só é possível devido à formação de campos magnéticos nas lâminas, que por sua vez geram impulsos elétricos, os quais irão transportar os pontos luminosos. Aprofundando um pouco mais, uma tensão é aplicada a camada de cristal líquido provocando um giro do cristal. Entre a camada polarizada e o cristal líquido, que foi girada, a intensidade da luz de fundo é reduzida em cada célula RGB e, dependendo da tensão aplicada, as cores surgirão como resultado desta polarização, aparecendo uma combinação entre as cores primárias (vermelho (Red), verde (Greem) e azul (Blue)) para formar as imagens. Display de TFT LCD A tecnologia Thin Film Transistor Liquid Crystal Display (TFT LCD) é a tecnologia de telas mais comum usada em celulares, monitores e outros dispositivos eletrônicos. É uma variação do Display de Cristal Líquido (LCD) que utiliza a tecnologia Transistor de Película Fina (TFT) para controlar cada ponto na
tela, conhecido como pixel, e não linhas e colunas como era feito nas telas de raios catódicos, oferecendo assim melhor qualidade de imagem e maiores resoluções quando comparado com a geração de telas LCD. Construção LCD-TFT Estes displays necessitam de uma luz de fundo, chamado de backlight, sempre acesa. A matriz TFT controla a passagem das cores primárias da visão vermelho, verde e azul através de filtros dessas cores. Cada pixel tem 3 células, uma para cada cor, que são transparentes em seu estado natural, porém ficam opacas ao receber uma carga elétrica, o que impede a passagem de luz. Pelo fato do preto nessa tela não ser tão intenso, pois é gerado apenas pela opacidade das células, o contraste fica debilitado, pois as cores escuras não ficam vivas. Dados Técnicos do Display
Imagem do display funcionamento em O display utilizado neste Lab, como já mencionado anteriormente, é controlado pelo driver ILI9163C. Este driver oferece diversas formas de comunicação com periféricos como microprocessadores e microcontroladores. Algumas das características principais deste display podem ser conferidas abaixo: Interface: 8-bits, 9-bits, 16-bits, 18-bits com MCU série 8080 8-bits, 9-bits, 16-bits, 18-bits para MCU série 6800 6-bits, 16-bits, 18-bits RGB interface 3-pin/4-pin Interface SPI Display mode: Full color mode (Standby desligado): 262K-cores Reduced color mode (Standby ligado): 8-colors (3bits MSB bits mode) Arquitetura de baixo consumo: VDDI = 1.65V ~ 3.3 V (interface I/O) VCI = 2.5V ~ 4.0 V (analog)
O diagrama de blocos deste controlador está ilustrado abaixo. Diagrama blocos do controlador display Utilizamos neste Lab a interface SPI de 4 vias para comunicação entre o controlador e o Microcontrolador. Os pinos do display utilizados foram: CS (chip enable)
D/C (data/ command select) SCL (serial clock) SDA (serial data input/output). O modo de escrita nos registradores do display, que é o modo mais utilizado geralmente nas aplicações, significa que o microcontrolador deseja escrever comandos e dados no driver do LCD. No nosso caso, para a comunicação serial a 4 pinos, os pacotes de dados contêm os bytes de transmissão e os bits de controle que são transmitidos pela linha D/C. Se o pino D/C está em nível baixo Low o byte transmitido pelo microcontrolador é interpretado como sendo comandos dados ao driver do LCD. Já se o pino está em nível alto High, o byte transmitido é armazenado na memória de dados RAM ou no registrador de comandos como parâmetro. Comunicação SPI em4 pinos Qualquer instrução pode ser enviada em qualquer ordem para o driver. O bit mais significativo (MSB) deve ser transmitido primeiro. A interface serial é iniciada quando o pino CS está em nível alto. Neste estado, deve-se haver pulsos na linha de clock SCL ou então a linha SDA não terá nenhum efeito. A borda de descida no pino CS habilita a interface serial e indica o inicia da transmissão dos dados. Quando CS está em nível alto, o clock na linha SCL é ignorado. Na borda de descida de CS, SCL pode está em nível alto ou baixo por ser uma linha de clock. As amostras na linha SDA são feitas na borda de subida da linha CS. O pino D/C indica
quando o byte é comando (Low) ou parâmetro ou dados da RAM (High). Um diagrama simplificado de toda a dinâmica de escrita de parâmetros no drive do display está ilustrado logo abaixo. Para aqueles que desejam um aprofundamento na dinâmica de comunicação com este display, o datasheet é uma ótima fonte de informação. Diagrama comunicação SPI Relógio de tempo real RTC Um relógio de tempo real é um dispositivo eletrônico que armazena os dados de hora e data em uma memória interna. A retenção destes dados geralmente é feita utilizando uma bateria de backup de lithium de 3V. Este CI tem a capacidade de continuar o clock de contagem mesmo após o desligamento da alimentação (Bateria mantida). Neste Lab estamos utilizando o MCP 79410 da Microchip. O protocolo I2C é utilizado para a comunicação entre o microcontrolador e o RTC. As características mais importantes deste RTC estão descritas abaixo:
Gerenciamento automático de dias, meses e anos inclusive bissextos. Trabalha com formato em 12 AM/PM ou 24 horas. Gerenciamento de dias da semana (Domingo, segunda, ) Memória SRAM de 64 bytes que pode ser alimentada pela bateria de backup. Dois alarmes programáveis. Uma saída de dreno aberto para receber sinais de clock (32768 Hz, 8192 Hz, 4096 Hz ou 1 Hz) ou mesmo para a saída do alarme programável. Memória EEPROM de 1 Kbit (8 bytes paginados). Bus I2C para comunicação com o mundo em 100 ou 400 KHz Pode ser alimentado de 1,8 a 5 volts. Pode ser calibrado para atingir precisão de 1 ppm Muda automaticamente entre a alimentação pela bateria de backup e alimentação pelo VCC. Temperatura de trabalho entre -45 a 80 C. A disposição dos pinos deste CI está ilustrada na figura abaixo. Pinagem do RTC
Um diagrama de blocos simples sobre a arquitetura deste dispositivo está ilustrado na figura abaixo. Diagrama dos registradores do RTC Na linha de dados do bus I2C, O dispositivo vai ser endereçado utilizando os seguintes endereços listados: Tabela de endereços do RTC
Características da transmissão A comunicação entre o RTC e um dispositivo controlador obedece uma sequência de operação ilustrada abaixo: Sequência de operação protocolo I2C As letras destacadas na figura acima contêm os seguintes parâmetros: (A) Bus Not Busy Linha de dados não ocupada: Ambos as linhas de dados e clock permanecem em nível alto. (B) Start Data Transfer Uma transição de nível alto para baixo da linha SDA enquanto a linha de clock (SCL) está em nível alto determina uma condição de start. Todos os comandos devem ser precedidos de uma condição de start. (C) Stop Data Transfer Uma transição de nível baixo para alto da linha SDA enquanto o clock está em nível alto, determina uma condição de Stop. Todas as operações devem terminar com a condição de Stop. (D) Data Valid O estado da linha de dados representa um dado valido quando, após uma condição de start, a linha de dados é estável para a duração de um período de nível alto do sinal de clock. O dado nesta linha deve ser trocado durante o período de nível baixo do sinal de clock. Há somente um bit de dado por pulso de clock. Acknowledge ACK Reconhecimento: Cada dispositivo, quando endereçado, é obrigado a gerar um sinal de ACK
após a recepção de cada byte. Mapa de memoria e registradores O MCP79410 possui quatro diferentes blocos de memoria: Os registradores do RTCC, Memória SRAM, EEPROM de 1 Kbit com proteção via software, e uma EEPROM protegida. Os registradores do RTCC e da memória SRAM compartilham o mesmo espaço, acessado atraves do byte de controle 1101111X. A regiao de memória EEPROM está em um espaço de endereço diferente e pode ser acessada utilizando o byte de controle 1010111X. O RTC não irá reconhecer os locais onde desejamos escrever ou ler dados se o endereço especificado estiver fora do range. Uma figura com o mapa de memória esta ilustrada abaixo. Mapa de memória de RTC
Os registradores do RTCC estão contidos no endereço 0x00 até 0x1F. Temos também 64 bytes de memória SRAM para acesso do usuário, localizada no endereço 0x20 até 0x5F. A SRAM é um bloco separado dos dos registradores do RTCC. Todos estes dados são retidos enquanto a bateria de backup estiver os alimentando. Uma tabela mostrando detalhadamente os registradores do RTCC é mostrado logo abaixo. Em nossa aplicação, os principais registradores a serem acessados estão localizados entre os endereços 0x00 e 0x06. Mapa de memórias detalhado RTC Serão descritos detalhadamente, no código feito para o Arduino, o acesso para leitura e escrita deste registradores Teste e montagem Para testar esta pequena aplicação, utilizaremos a biblioteca
elaborada pela Limor Fried e fornecida pela Adafruit Industries para estabelecer a comunicação com o controlador do display. Para a comunicação com o RTC, um pequeno e simples código está embutido na aplicação principal, não sendo necessária nenhuma biblioteca extra. Baixe a biblioteca neste link, decompacte Adafruit-GFXLibrary-master.zip e TFT_ILI9163C-master.rar na pasta libraries da IDE do arduino de sua preferência, abra novamente a IDE a carregue o exemplo Nano_Display_rtc_mcp79410 para testar a aplicação. O esquema de ligação entre estes três dispositivos se encontra ilustrado abaixo. Esquema de ligação do projeto O algoritmo para teste do display e do RTC será apresentado abaixo e possui uma explicação detalhada o para melhor entendimento do leitor [crayon-58945c3db4a5a717196229/] Uma imagem da montagem final e teste na protoboard esta é ilustrado abaixo.
Montagem final em uma protoboard Conclusão Este pequeno e interessante projeto pode servir como base para grandes aplicações envolvendo displays de LCD-TFT e RTC, onde datalogs podem ser montados, ou até mesmo um aparelho portátil em que o utilizador consiga acompanhar na tela os dados de medições de sensores relacionados a data e hora exatas do dia. As aplicações são infinitas, depende apenas da imaginação do utilizador..