Intel Edison Lab 04 – Mostrando dados do Intel Edison no display do Nokia 5110 em Python Imagem Aplicação Neste Lab iremos tratar dos passos para enviar comandos de configuração e dados para o display de LCD gráfico, muito utilizado nos antigos celulares Nokia 5110, com o controlador PCD 8544 da Philips. Alguns dados internos do Edison como temperatura dos dois núcleos do processador, hora e data internas do sistema e o endereço IP no qual o Edison está registrado também serão indicados do Display. Display de LCD gráfico Os displays gráficos são comumente utilizados em aplicações onde deseja-se indicar símbolos, desenhos, pequenos gráficos ou figuras com qualidade monocromática aos usuários. O display que vamos trabalhar neste Lab apresenta as seguintes principais características: Matriz de 48×84 pontos monocromáticos; Interface serial com velocidade máxima de 4 Mbits/s; Controlador interno PCD8544; Retro iluminação à LED; Tensão de operação (módulo) 2,7 a 5,0 V; Baixo consumo de energia (LEDS desligados); Temperatura de trabalho em -25°C a +70°C; Controlador PCD8544 O controlador/driver PCD8544, fabricado com tecnologia CMOS, foi desenvolvido para controlar um display gráfico de 48 linhas e 84 colunas. Todas as funções necessárias para o display estão embutidas em um único chip incluindo geração da tensão de alimentação e polarização AC necessárias para o LCD, resultando em um baixo consumo de energia e mínima necessidade de componentes externos para seu correto funcionamento. Um diagrama da estrutura interna deste driver está indicado na figura abaixo. Diagrama Estrutura PCD8544 Endereçamento da memória O arranjo do endereçamento da memória que é indicado na figura acima (DDRAM) é uma matriz que consiste de 6 linhas (Endereçamento em Y), que abrange do endereço 0 ao 5 (101), e 84 colunas (Endereçamento em X) que opera do 0 ao 83 (1010011). Endereços fora desta faixa de valores não são suportados pelo controlador. Para acessar uma posição específica no display, devemos relacionar um endereço em X e outro em Y assim como é feito em uma matriz comum de dados. Os dados devem ser enviados para o display em pacotes de 8 bits (1 Byte) e estes serão organizados como linhas verticais e, neste caso, o bit MSB (Most Significant Bit) será posicionado em baixo e o LSB (Last Significant Bit) será posicionado em cima. Podemos observar esta organização nas figuras abaixo: Escrita MSB primeiro Mapa memória DDRAM Podemos escrever os dados na memória endereçável (DDRAM) do controlador continuamente e os valores para endereços em X e Y serão incrementados automaticamente. Neste caso, temos dois métodos para configurar o formato da operação de endereçamento. No modo vertical de endereçamento (V=1), as posições em Y serão incrementadas após cada byte de dados recebidos no controlador (Próxima figura). Após o último endereço em Y (Y=5), o posicionador do eixo Y irá retornar para a posição 0 e o X será incrementado para a próxima coluna. Dinâmica modo Vertical No modo horizontal de endereçamento (V=0), o endereço em X incrementa após cada byte (Observe a figura abaixo). Após o último endereço em X (X=83), o posicionador de X irá retornar para a posição 0 e o Y incrementa para a próxima linha. Após o último endereço (X=83 e Y=5) os posicionadores retornarão para o início novamente (X=0 e Y=0). Dinâmica modo Horizontal Terminais de controle do LCD Os sinais de controle e operação do display são enviados de forma serial de acordo com a operação e combinação dos pinos. A descrição destes pinos é apresentada na tabela abaixo. Imagem pinos do display Tabela pinos do display Formato da comunicação O formato dos comandos que são utilizados para comunicar com o LCD é dividido em 2 modos, sendo eles: Command Mode e Data Mode sendo o pino DC utilizado para alternar entre estes dois modos. Se o valor 0 for atribuído ao pino DC (DC=0), o dado que será enviado ao LCD será interpretado como comando e se DC=1, o dado enviado será interpretado como Dado. Após 1 byte de dados serem escritos, uma posição de endereço da memória DDRAM será incrementado automaticamente como explicado acima. O formato dos dados é serial e o bit mais significativo (MSB – Most Significant Bit) será enviado primeiro. Geralmente, esta estrutura acontece como mostrado na figura abaixo: Dinâmica dos dados Os modos para enviar os dados para o display também foram citados acima e a representação gráfica no tempo é indicada abaixo. Diagrama um Byte por vez Diagrama vários dados continuamente Qualquer dado enviado para o display ou alteração na linha de clock (CLK) será interpretado pelo controlador do display apenas quando o pino SCE estivar em nível baixo. Os dados serão “trocados” no pino DIN seguindo o intervalo do sinal de clock na borda de descida. Se o pino de reset estiver ativado, (RES=0) qualquer dado enviado para o controlador do display será cancelado. Quando RES = 1, no próximo pulso de clock, o dado será interpretado como sendo pertencente ao bit 7 novamente, reiniciando a comunicação, assim como pode ser observado abaixo. Diagrama ação do pino RES Esquema de montagem O esquema de ligação entre o Display e o Intel Edison segue a ordem indicada na tabela e na figura abaixo, sendo a primeira uma visão global da montagem e a segunda um Zoom nas ligações. Tabela de ligação Diagrama de ligação Diagrama de ligação ampliado Para facilitar a conexão entre o Edison e o Display, optamos por utilizar uma Arduino Proto Shield que se encaixa facilmente com o módulo do Edison. Uma imagem das ligações dos pinos e da montagem já com o Edison é indicada abaixo. Imagem Proto Shield Imagem montagem final Programação e teste Inicialmente, declaramos as portas de comunicação e a matriz dos dados em Hexadecimal referente a fonte (Letras e símbolos) do display. Logo após iniciamos o display, e lemos o valor da temperatura nos dois núcleos e o endereço IP no qual o Edison está registrado. Subsequentemente, indicamos todos estes dados no display. O algoritmo, feito em Python para a montagem deste protótipo é apresentado abaixo e uma imagem com o resultado da impressão dos dados no display também é indicada logo a seguir. [crayon-592d37ac314e8763667799/] Imagem indicação dos dados Observação: O método para copiar o algoritmo e a criação de um novo arquivo dentro da memória do Edison já foi abordado no Edison Lab 03. Conclusão Neste Lab observamos uma nova forma de interação entre o Edison e o usuário através do display Nokia 5110. Muitas informações podem ser indicadas neste display já que o mesmo é do tipo gráfico e permite que desenhos e gráficos sejam plotados. As limitações de aplicação dependem apenas do leitor já que o controlador deste display é de fácil interação.