Intel Edison Lab 03 – Oxímetro Bluetooth e LCD

Propaganda
Intel
Edison
Lab
03
–
Oxímetro Bluetooth e LCD 16×2
em Python
Tela teste inicial
Neste Lab descreveremos o método utilizado para integrar um
Oxímetro Bluetooth com tecnologia LE (Low Energy), um display
de LCD de 16 colunas e 2 linhas (16×2) e o Intel Edison
utilizando uma biblioteca escrita em Python.
O Oxímetro utilizado neste Lab despensa apresentações pois já
foi descrito no Lab 02, inclusive com o princípio de
funcionamento e configurações.
Um enfoque maior será dado ao display de LCD quanto ao método
e a dinâmica da comunicação com o Intel Edison, por ser de
fácil e constante uso de Hobistas, estudantes e Makers.
Display de LCD 16×2
Displays de LCD são dispositivos comuns e baratos para uma
interface com microcontroladores ou processadores como o Intel
Edison, que não apresenta nenhum tipo de saída de vídeo (como
a Raspberry Pi, BeagleBone Black entre outras).
Controlador HD44780
A maioria dos displays de 16×2, 20×4 e outros derivados, são
compatíveis com o controlador HD44780 da empresa Hitachi. Este
controlador nos permite enviar os dados de duas maneiras:
Enviando os 8 bits (8 bits = 1 byte) de uma só vez através dos
pinos D0 a D7 ou enviando dois pacotes de 4 bits consecutivos
(4 bits = 1 nibble) através dos pinos D4 a D7.
A segunda opção (enviar dois pacotes de 4 bits) parece ser
mais complicada, porém esta é frequentemente utilizada nos
projetos que utilizam este display por economizar 4 pinos de
comunicação do processador ou microcontrolador, logo, para
comunicar com este display utilizaremos somente 6 pinos, sendo
eles dois pinos de controle e 4 de dados.
Comunicação modo 4 bits
Todos os displays baseados no controlador HD44780 devem
receber um startup de dados referente a configuração na qual o
controlador deverá trabalhar.
A pequena rotina descrita
abaixo irá inicializar o display no modo em que desejamos
neste Lab.
[crayon-592b203b2c25b690564536/]
Dinâmica de envio dos dados para o LCD
Temos 8 bits em cada byte, porém enviaremos 4 bits de cada vez
e, obrigatoriamente, enviar estes de acordo com as
especificações de tempo descritas no datasheet do controlador.
O grande segredo está em enviar os 4 bits mais significativos,
alterar o estado do pino enable e novamente enviar os 4 bits
menos significativos.
Uma rotina para alterar o estado do pino enable, em Python, é
descrita abaixo, onde a constante E_DELAY tem o valor 0,0005
(500 ns).
[crayon-592b203b2c275178972320/]
Os comandos de configuração e posicionamento do cursor são
enviados utilizando o mesmo canal de dados (pinos D4 a D7). O
controlador utiliza o terminal RS do display para distinguir o
que é comando ou o que é dados.
Se o pino RS estiver em nível baixo, qualquer bit enviado na
linha de dados D4 a D7 será interpretado como comando e quando
RS em nível alto, os bits serão aceitos pelo controlador
HD44780 como um caractere.
A rotina para enviar os bits para o LCD está descrita abaixo,
onde o parâmetro mode, que é repassado ao pino RS, pode
receber as constantes LCD_CHR = True para dados enviados como
caractere ou LCD_CMD = False para dados em forma de comandos
para o controlador do display.
[crayon-592b203b2c281187350100/]
Esquema e montagem
O principal objetivo deste Lab é a integração do Oxímetro
Bluetooth, o display de LCD de 16×2 e o Intel Edison, exibindo
os dados enviados pelo Oxímetro na tela do display. Um esquema
de ligação entre o Edison e o display de LCD, seguindo os
mesmos modelos feitos para uma ligação com o Arduino, já que
estamos utilizando o Breakout board, está ilustrado na figura
abaixo.
Esquema Overview
Uma imagem da montagem real, feita em protoboard está indicada
abaixo.
Circuito montado
E o esquema das ligações entre o Edison e o Bluetooth também
está indicado na figura abaixo.
Esquema de Ligação
Programação e teste
Optamos em elaborar um programa em Python para ser
interpretado dentro do Intel Edison por ser de fácil
entendimento e execução a partir do diretório root do Edison.
O programa se encontra abaixo e foi elaborado para uma fácil
interpretação do leitor.
[crayon-592b203b2c290356100443/]
Primeiramente, crie o script do programa no diretório root do
Intel Edison utilizando o editor de textos de sua preferência.
No nosso caso optamos por utilizar o nativo do Yocto Linux.
Criação do arquivo utilizando o editor vi
Insira o código apresentado anteriormente dentro do editor vi.
A maneira mais fácil é copiando o script com a combinação
control+c ou outro método e posicionar o mouse sobre a tela do
editor vi e clicar com o botão direito do mouse. O script será
colado, porém devemos conferir se o cabeçalho foi inserido
corretamente (na grande maioria não é) e alguns endentamentos
importantes para a linguagem Python. Se alguma mensagem de
erro aparecer, basta abrir o script novamente e editar (aperte
a tecla i primeiro) para corrigir.
Edição e correção do script
Corrija o cabeçalho, salve o script (ESC + :wq + ENTER) e
digite os comandos para habilitar o controlador bluetooth,
comando para acessar a biblioteca gatttool de qualquer
diretório e execute o script descrito com o comando python
edisonBluetoothOximeter.py.
Comandos iniciais e confirmação
Os dados enviados pelo Oxímetro serão mostrados na tela do
display de LCD, assim como pode ser observado na figura
abaixo.
Funcionamento do display
Observação: O procedimento de instalação do Gattool e o método
de análise da comunicação entre o Oxímetro e o Intel Edison
utilizando o Bluetooth já foram descritos no Lab 02.
Conclusão
Neste Lab descrevemos os métodos e a dinâmica de comunicação
entre o Intel Edison e o display de LCD. Um script de código
em linguagem Python também foi apresentado para conduzir a
comunicação entre os dispositivos. Outras bibliotecas
utilizando diversas linguagens também podem ser escritas afim
de atender as preferências de programação de cada leitor.
Download