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-59d0e06f78d66153539239/] 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. 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-59d0e06f7a7ec066548521/]
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-59d0e06f7a808695853635/] 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-59d0e06f7a816686097483/] 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-59d0e06f7a829771294815/] 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. Intel Edison Lab 02 Conexão
com um Oxímetro de pulso via Bluetooth LE Intel Edison e Oximetro Bluetooth Neste Lab iremos tratar da conexão entre o Intel Edison e um Oxímetro de pulso utilizando o bluetooth como meio de comunicação. Explicaremos o funcionamento do Bluetooth LE (Low Energy) e como iremos efetivar a engenharia reversa para descobrir o protocolo de comunicação do Oxímetro. Oxímetro de Pulso A oximetria de pulso é a maneira de medir quanto oxigênio o sangue está transportando. O nível de oxigênio mensurado com um oxímetro é chamado de nível de saturação de oxigênio, (%SpO2) que é a porcentagem de oxigênio que o sangue está transportando, comparada com a máxima capacidade de transporte. Idealmente, mais de 89% das células vermelhas devem estar transportando oxigênio. É importante saber o nível de oxigênio sanguíneo pois, quando este nível é baixo, as células do corpo podem ter dificuldade de trabalhar apropriadamente. Em curtas palavras, o oxigênio é
o gás que faz o corpo funcionar. Segundo a SBPT (Sociedade Brasileira de Pneumologia e Tisiologia), ter um nível muito baixo de oxigênio sanguíneo pode sobrecarregar o coração e o cérebro de um indivíduo. Funcionamento de um Oxímetro de Pulso Os aparelhos comerciais para medição do nível de oxigenação sanguínea utilizam a Lei de Beer-Lambert que relaciona a concentração de um soluto com a intensidade de luz que pode ser transmitida através deste soluto e, por este motivo, é possível aplicar esta técnica à medição de saturação. Na figura abaixo podemos ver um diagrama simples que exemplifica esta lei. Lei de Beer-Lambert Quando uma fonte de luz de comprimento de onda específico é direcionada aos capilares dos tecidos, parte dela é absorvida pela hemoglobina. A parte não absorvida é capturada por um sensor que varia sua tensão de acordo com a quantidade de luz recebida. O sinal é filtrado e tratado, obtendo então à aquisição do percentual de saturação de oxigênio.
Dinâmica de captura do sinal A hemoglobina desoxigenada tem alta absorbância em um valor próximo do comprimento de onda da luz vermelha, ou seja, 650 nm (nanômetros), enquanto que em seu estado saturado, possui baixa absorbância na faixa do espectro infravermelho, próximo de 950nm. Nessa faixa do espectro, entre 650 e 950 nm, pode-se definir entre um percentual aceitável ou não de saturação de oxigênio de um indivíduo. A figura abaixo, retirada do site howequipamentsworks, exemplifica a dinâmica da relação de absorção da luz pela hemoglobina com a concentração de oxigênio. Dinâmica de absorção Um diagrama típico que ilustra os componentes necessários para
este tipo de equipamento está ilustrado abaixo. Funcionamento de um Oxímetro Engenharia reversa do Oxímetro de Pulso O principal objetivo deste trabalho é estabelecer a comunicação entre o Oxímetro e o Intel Edison. Para isso, precisamos conhecer como foi implementado o protocolo de comunicação bluetooth, utilizado no Oxímetro, para comunicação com o aplicativo MyOximeter. Este aparelho e o aplicativo para celular foram desenvolvidos pela empresa Jumper Medical.
Aplicaivo myoximeter Análise da comunicação Como o dispositivo comunica-se somente com o aplicativo disponibilizado pela empresa fabricante, desconfiamos que algum tipo de protocolo estava presente na comunicação. Uma das maneiras de analisar o fluxo de dados no canal Bluetooth do celular, dados de entrada e saída, pode ser utilizando a função de sniff que o Android disponibiliza na área Opções do desenvolvedor no item Registro de investigação.
Habilitação bluetooth do registro Um arquivo é gerado dentro da pasta \Android\Data, geralmente com o nome btsnoop_hci.log. Particularmente, o software de análise de protocolos chamado WireShark foi utilizado para entender a dinâmica entre o celular e o Oxímetro. Na imagem abaixo, observamos alguns detalhes da análise preliminar feita utilizando este software. Observação: O termo UUID significa Universally Unique Identifying Information. Este número identifica um serviço particular oferecido pelo dispositivo bluetooth. É similar a uma notação de portas utilizadas na internet.
Depuração utilizando o WireShark Apesar de termos tantas informações provindas do WireShark, ainda não era possível estabelecer a comunicação entre o Oxímetro e o Intel Edison. Uma outra alternativa foi fazer um debug dos dados que trafegavam entre o módulo bluetooth e o microcontrolador do Oxímetro. Na figura abaixo, podemos ver os componentes internos do Oxímetro. Componentes internos do Oxímetro Fizemos um mapeamento da conexão entre o microcontrolador e o módulo Bluetooth para descobrirmos qual o padrão de
comunicação entre os dois (SPI, Serial, I2C, etc) e em qual pino exatamente o sinal estaria disponível. A figura abaixo mostra os pinos que estão ligados diretamente as portas do microcontrolador e suas respectivas designações importantes para este trabalho. Mapeamento bluetooth das conexões do módulo Os fios soldados na imagem acima foram ligados a um analisador de protocolos, como observado na figura abaixo. Conexão com o analisador de protocolos O resultado da análise nos mostrou que o módulo Bluetooth somente recebe dados em sua porta RX, mesmo quando o dispositivo estava pareado com um celular. A outra linha de
dados que alterava seu estado era a conectada ao pino PB12, onde alternava para o nível baixo toda vez que um trem de pulsos era enviado ao módulo Bluetooth pelo microcontrolador. Abaixo, indicamos o byte de start dos dados de absorbância e o próprio payload de absorbância. Análise dos dados Absorbância Na próxima figura, são indicados o start byte e os dados vitais enviados pelo Oxímetro. Análise dos dados Dados vitais Na figura abaixo temos um apanhado geral da dinâmica de comunicação entre o microcontrolador e o módulo Bluetooth, todos contidos dentro do aparelho de oximetria.
Dinâmica dos pacotes de dados Com todos esses dados, chegamos a mais uma conclusão: o módulo bluetooth não transmite nenhum dado ao microcontrolador, ou seja, nenhum dado de requisição de envio de pacotes é enviado pelo celular (através do aplicativo oficial disponibilizado pelo fabricante) ao Oxímetro. Esta informação facilita ainda mais a construção de uma biblioteca para gerenciar esta comunicação, abrindo o leque de aplicações/integração com outros dispositivos. No entanto, ainda assim não conseguíamos receber os dados utilizando o Intel Edison. Iniciamos um novo trabalho de investigação utilizando um outro aplicativo chamado nrf Master Control Panel, que foi utilizado para complementar as informações necessárias para estabelecer a comunicação.
Aplicativo utilizado depurar os dados para Ao conectar o celular com o Oxímetro, um log de informações também é gerado. O aplicativo oferece a opção de enviar este log de dados para um e-mail, assim uma análise mais detalhada pode ser feita. Duas informações muito importantes foram retiradas deste arquivo: 1. Quais UUID s do módulo Bluetooth deveriam receber valores para iniciar a comunicação; 2. Qual protocolo exatamente estava sendo utilizado na comunicação entre o celular e o Bluetooth. Um detalhamento das informações importantes obtidas no log do aplicativo está indicado na figura abaixo.
Análise dos dados gerados pelo aplicativo Com todas estas informações em mãos, a comunicação com o módulo, utilizando o Intel Edison, pode ser efetivada. Preparação e programação do Intel Edison O Bluetooth Low Energy (BLE ou Bluetooth Smart) é uma tecnologia WPAN (Wireless Personal Area Network) que foi desenvolvida com o objetivo de inovar a aplicação sem fio para dispositivos aplicados a Healthcare, fitness, rastreamento de dispositivos indoor (beacons), segurança, entretenimento doméstico e aplicações industriais. Comparado aos Bluetooth clássicos, estes dispositivos possuem um baixo consumo de energia e custo, enquanto mantêm as mesmas características de alcance de comunicação. Para trabalhar com o BLE utilizando o Edison, algumas bibliotecas devem ser instaladas. Os detalhes são expostos a seguir. Instalação da biblioteca GATT GATT (Generic Attribuit Profile) é um padrão de serviços disponibilizados para comunicação utilizando Bluetooth no modo Low Energy. Ela define como os atributos serão agrupados para
estabelecer o serviço de comunicação entre dispositivos LE. Para instalar esta biblioteca no Edison, precisamos do pacote de aplicações para comunicação Bluetooth denominado BlueZ 5.24. Insira os seguintes comandos na linha de comandos do Intel Edison. [crayon-59d0e06f7e551577630681/] Para que possamos iniciar a ferramenta gatttol de qualquer local, insira o código abaixo na linha de comandos do Edison. [crayon-59d0e06f7e56f943649415/] Encontrando dispositivos Bluetooth 1. Habilite o Bluetooth do Intel Edison [crayon-59d0e06f7e57a438327633/] 1. Inicie a ferramenta de controle do bluetooth. [crayon-59d0e06f7e586758006944/] 1. Encontre o MAC do dispositivo e desligue o scan [crayon-59d0e06f7e591613440153/] Na figura abaixo, observamos o MAC address do Oxímetro Bluetooth. Imagem do MAC do Bluetooth
Utilizando o gatttool para ler os dados A ferramenta gatttool será utilizada para ler os dados provindos do Oxímetro e mostrá-los na tela. Digite os comandos da mesma forma que descrita abaixo. Para que possamos utilizar a ferramenta gatttool de qualquer local, digite o comando abaixo. [crayon-59d0e06f7e59f867840864/] Vamos iniciar o gattool no modo interativo utilizando o MAC address do Oxímetro. [crayon-59d0e06f7e5b6556726658/] Conecte ao dispositivo, habilite a comunicação configurando o handle 0x000e com o valor 0x0200 e no handle 0x0022 com o valor 0x0100. [crayon-59d0e06f7e5c2381542789/] O Oxímetro irá se conectar ao Intel Edison e a troca de dados iniciará automaticamente, como observado na imagem abaixo. Leitura dos dados utilizando o gatttool Instalando pip e os módulos necessários Para executar os scripts em Python usando o módulo pexpect, pexpect deve ser instalado, o que é fácil de se fazer utilizando o gerenciador de pacotes para Python chamado pip. Pip não é instalado no Intel Edison por padrão e não está
presente no repositório padrão opkg. Digite as linhas de comandos descritas abaixo para fazer o download do pacote. 1. Use o editor de textos vi para editar o arquivo basefeeds.conf. [crayon-59d0e06f7e5d2611136889/] 2. Digite os endereços para download. [crayon-59d0e06f7e5dd666616055/] Download do pacote necessário Digite esc + :wq para gravar e sair do editor. [crayon-59d0e06f7e5ea408217099/] Update opkg e instale o módulo Python-pip. [crayon-59d0e06f7e5f5451880907/] Na imagem abaixo, observamos o download dos arquivos descritos anteriormente. Comando update 1. Instale a ferramenta pip. [crayon-59d0e06f7e602515851223/]
Instalação do módulo pexpect Teste da comunicação Crie um novo arquivo para inserirmos o script necessário para comunicação e decodificação dos dados enviados pelo Oxímetro. 1. Digite o comando para criar o arquivo na extensão Python. [crayon-59d0e06f7e60f728526882/] 1. Copie e cole o script de comandos indicado abaixo. [crayon-59d0e06f7e619915707355/] Digite esc + :wq para gravar e sair do editor. [crayon-59d0e06f7e627634734599/] 1. Digite novamente os comandos para habilitar o Bluetooth, acessar a ferramenta gatttool e execute o script acima descrito. [crayon-59d0e06f7e632978259094/] A figura abaixo mostra o resultado final de todo o trabalho, a comunicação e conversão dos dados Bluetooth enviados pelo Oxímetro.
Resultado da comunicação com o Oxímetro Conclusão Nesta aplicação efetivamos a conexão entre o Intel Edison e um Oxímetro de pulso, por meio do canal de comunicação Bluetooth LE. A dinâmica da análise do protocolo descrita neste Lab permite que qualquer dispositivo Bluetooth, com as mesmas características de comunicação, possa trocar informações com o Edison de forma efetiva. Na próxima aplicação, estes dados serão enviados para um servidor na internet e o conceito de Health IoT estará consolidado para este projeto. Intel Edison Lab 01
Configurações iniciais, WiFi e Bluetooth Intel Edison Neste Lab iniciaremos a configuração do Intel Edison. Trataremos da instalação do Linux embarcado na versão 159.devkit da distribuição Yocto Linux, configuração de acesso a uma rede Wifi e, por fim, a configuração do módulo bluetooth utilizando o método Serial Port Profile (SPP). Intel Edison O Intel Edison pode ser considerado um computador de tamanho muito reduzido que contém periféricos úteis para comunicação com o mundo exterior em um único encapsulamento. Possui toda a robustez de um minicomputador com um processador Intel Atom SoC (System on the Chip) dual-core de 500MHz, Wifi 802.11 a/b/g/n, Bluetooth de baixo consumo (Low Energy) e 70 pinos de entrada e saída, distribuídos com múltiplas funções, sendo que somente 40 pinos estão disponíveis para o usuário modificar seus estados. Apresenta também uma antena otimizada para comunicação Bluetooth e Wifi (Comunicação simultânea) além de um mini conector para uma antena externa.
Componentes Módulo Toda a versatilidade desta plataforma permite que técnicos, engenheiros ou pessoas interessadas por tecnologia embarcada possam prototipar plataformas eletrônicas de média a alta complexidade em tempo e custo reduzido comparado a antigas tecnologias como o Z80 e o Intel 8051, por exemplo. Outra grande vantagem é a variedade de linguagens e softwares que podem ser utilizados para projetar aplicações que envolvam acesso a periféricos e comunicação, já que podem ser feitos em linguagem C, C++, Python, dentre outras. A compatibilidade com os módulos do Arduino permite que Shields, já desenvolvidos para aplicação com versões anteriores do Arduino, possam ser utilizados também com uma maior capacidade de processamento utilizando o Edison.
Arduino breakout board Pesando apenas 8 gramas, baixo consumo de energia e um pouco maior do que uma moeda de R$ 1,00, a filosofia principal do Edison é para aplicações em IoT (Internet of Things) e vestíveis (Weareble Computing). Comparação com uma moeda O diagrama de blocos do Edison (sem nenhuma conexão externa) pode ser observado na figura abaixo. Muito cuidado deve ser tomado nas tensões de entrada e saída do módulo, já que o mesmo, sem qualquer conversor de nível de tensão externa, opera somente em 1,8 V. Diagrama de blocos Intel Edison
Informações mais detalhadas sobre esta plataforma podem ser encontradas na página oficial da Intel. Montagem do módulo instalação dos softwares. e Preparação do Hardware Inicialmente, vamos alimentar o Intel Edison. Se sua opção foi adquirir a placa de expansão compatível com Arduíno, instale o módulo no local correto e aperte levemente as duas mini porcas disponíveis para fixação. Alimente a placa utilizando uma fonte externa de tensão DC de 7 a 15V no conector J1. Montagem do módulo Se todo o setup estiver correto, aguarde até que o LED verde DS3 fique aceso, e assim a placa estará alimentada corretamente.
LED alimentação Posicione a micro chave para o lado dos conectores mini USB e conecte um cabo USB, na porta próxima a micro chave, e ao computador. Microchave e conector USB Se você escolheu a Mini Breakout Board, apenas monte o módulo e conecte os dois cabos USB ao seu PC. Mini Breakout board Instalação dos Softwares Quando o Edison foi lançado no mercado, a forma de se instalar a distribuição Linux era um pouco trabalhosa, onde tínhamos
que copiar o arquivo da distribuição no flash driver do Edison, abrir o terminal de comandos e executar o boot via terminal. Agora, uma ferramenta que facilita a instalação de todos os driver s e IDE s necessárias (Intel XDK, Eclipse, Phone Flash Tool Lite e a IDE do Arduino) para o desenvolvimento com o Edison, está disponível no site da Intel. Escolha o sistema operacional e instale o executável. Instalação das ferramentas Inicie o executável, e escolha as IDE s e softwares a serem instalados. Para instalação completa, o tempo médio é de 30 minutos dependendo do PC, conexão e sistema operacional. Imagem do Instalador
Configurando o WiFi Após a instalação de todas as ferramentas e do Linux utilizando o instalador da Intel, baixe o software Putty, de acordo com o sistema operacional, para que possamos estabelecer uma conexão via terminal com o Edison. Instalador do Putty Identifique qual é o número da porta serial a qual o módulo está instalado. Basta ir em Device -> Ports (COM &LPT) -> USB Serial Port (COM4). Identificação Serial da porta Inicie o Putty, escolha a opção Serial, configure o número da porta COM e a velocidade de comunicação em 115200 bps. Selecione a tecla Open e a janela do Putty se abrirá em modo
de linhas de comando. Imagem configuração Putty Selecione a tecla Open e a janela do Putty se abrirá. Aperte a tecla Enter do seu teclado para habilitar a conexão e inserir os comandos. Tela inicial Putty Digite root + Enter e estaremos prontos para configurar o módulo. Digite no prompt de comando configure_edison setup + Enter. Um assistente de configuração iniciará. Primeiro, digite uma
senha para que o seu módulo possa ser acessado remotamente pela internet. Imagem configurações iniciais Dê um nome ao seu módulo. No meu caso, escolhi o chamar de MyEddy. Aperte y + Enter e novamente para a configuração do Wifi. Configurando o nome do módulo Uma pesquisa das redes Wifi próximas ao seu módulo será feita e basta inserir o número da rede relacionado ao SSID e a senha.
Identificação das redes Wifi próximas Um número de IP será atribuído ao módulo. Anote este número pois iremos acessar o Edison utilizando o modo SSH na porta 22, via internet, utilizando o Putty. Feche o terminal e abrao novamente e configure as opções como abaixo. Acessando o Edison via SSH Login utilizando o usuário padrão root e a senha configurada anteriormente. Desta forma, estaremos aptos a acessar o módulo Edison remotamente.
Tela de comandos no modo SSH Configurando o Bluetooth no Edison Bluetooth é uma tecnologia utilizada para troca de dados em curto alcance, utilizando rádio de alta frequência (Aproximadamente 2.4 GHz) e que vem sendo utilizado por aproximadamente 20 anos. Muitas versões e especificações foram criadas ao longo do tempo para padronizar a comunicação. Esta tecnologia é largamente utilizada nos dias atuais. É encontrada em Smartphone, tabletes, carros, acessórios, computadores e agora no Intel Edison! O Edison inicia seu funcionamento com o módulo Bluetooth desligado para economizar energia. Toda vez que for necessário iniciar o uso deste módulo, devemos digitar os comandos necessários para habilitá-lo novamente. Se desejamos que o Bluetooth inicie automaticamente quando o módulo for religado, uma boa opção é adicionar um script de comando na área de startup. O primeiro passo para habilitar o Bluetooth é utilizar o comando rfkill. # rfkill unblock bluetooth -> Habilita o módulo Bluetooth # rfkill list -> Comando para conferir se foi habilitado
Comandos iniciais para configurar o Bluetooth O comando bluetoothctl abre o controle das funções do módulo. O comando show mostra as atribuições do controlador Bluetooth. Atribuições do controlador bluetooth
Se observarmos na seção dos UUID s, não iremos encontrar o UUID responsável pelo Serial Port. Para resolver este problema (Um problema muito grave e que não permite que o Edison se conecte a um telefone), devemos instalar uma biblioteca chamada SPP-loopback.py no diretório /root/bluetooth. Utilizaremos a forma mais fácil de copiar este arquivo no diretório interno ao Intel Edison. O software WinSCP utiliza o protocolo SCP (Secure Copy) para transferir este arquivo para ambientes Linux. Execute a instalação, abra o aplicativo, configure da mesma forma como está na janela abaixo e aceite o aviso sobre a conexão. Tela de login do software WinSCP Mensagem de notificação do WinSCP Acesse o diretório /root, crie uma nova pasta denominada bluetooth, copie e cole o arquivo SPP-loopback.py dentro
da pasta Bluetooth. Tela de trabalho do WinSCP Após copiar, feche o WinSCP, volte ao Putty e aplique o comando reboot. O Edison irá reiniciar e a conexão utilizando o Putty deverá ser refeita novamente. Quando reabrir, aplique os seguintes comandos listados abaixo. Comandos para instalar a biblioteca SPP-loopback.py Após o comando show, as atribuições do módulo Bluetooth serão indicadas na tela e agora iremos observar a UUID para o Serial port.
Tela do prompt de comando após instalação biblioteca da Instalação do aplicativo e interação com o Edison via Bluetooth O aplicativo mais indicado e, consequentemente o menos complicado, para testar se toda a configuração feita no módulo do bluetooth foi bem executada, para dispositivos Android, se chama Bluetooth Spp pro. imagem aplicativo Bluetooth SPP Para parear e conectar seu celular utilizando o Android ao Edison, basta seguir os comandos listados abaixo.
Comandos para habilitar o Bluetooth Abra o aplicativo e selecione o Edison. Imagem aplicativo Conecte ao dispositivo.
Imagem conesão com o Edison Abra o terminal no comand line mode e envie uma string para o Edison. No meu caso, enviei a string test. Imagem do Comand line no aplicativo Abaixo, temos um apanhado total dos comandos enviados ao Edison.
Lista de comandos utilizados
Continuação lista de comandos Conclusão Neste Lab executamos os procedimentos iniciais para trabalharmos com o Intel Edison. Este módulo tem uma grande capacidade de trabalho com sistemas embarcados, IoT e Werables. Apesar de todos os problemas relacionados à arquivos que deveriam ser nativos da distribuição e aos sistemas que ainda não funcionam como deveriam, o time de desenvolvedores da Intel trabalha nas resoluções de acordo com a demanda dos usuários. Nós, pretendemos elaborar aplicações interessantes usando essa ferramenta.