projeto e inovaÇÃo de aplicaÇÕes de baixo custo...

12
PROJETO E INOVAÇÃO DE APLICAÇÕES DE BAIXO CUSTO BASEADAS NO MICROCONTROLADOR ARDUINO Riccieli Kendy Zan Minakawa¹ Ricardo Ribeiro dos Santos² ¹Aluno do Curso de Engenharia de Computação UFMS, voluntário de Iniciação Científica UFMS 2012/13 ² Professor da UFMS, Faculdade de Computação; e-mail: [email protected] Resumo: Objetivou-se neste trabalho projetar e implementar um sistema de gerenciamento de conteúdo para televisores, propondo uma nova solução para a área de Sinalização Digital: reaproveitar materiais eletrônicos obsoletos barateando o custo do produto final. O projeto é composto de hardware e software que permite ao usuário enviar, via internet, mensagens de texto para serem exibidas em um televisor. O sistema desenvolvido pode ser dividido em duas partes: a construção e programação de um hardware que atendesse os objetivos do projeto e a elaboração e desenvolvimento de uma interface web. De modo geral, o sistema é responsável por gerenciar uma página web e controlar o fluxo de informações inseridas pelo usuário que serão exibidas na tela de um televisor. Para isso, utilizou-se um televisor de tubo de raios catódicos, um microncontrolador Arduino ATMega 2560 e bibliotecas responsáveis por fazerem o interfaceamento das funcionalidades do software com o hardware desenvolvido. Conclui-se ser possível reutilizar materiais eletrônicos que poderiam ser descartados com o advento da tecnologia ao se adicionar novos recursos ao componente. O produto resultante deste projeto é um sistema de hardware e software que apresenta um custo de aquisição de hardware menor quando comparado a algumas soluções comerciais já existentes. Palavras-chave: Sinalização Digital, televisores de tubo de raios catódicos, Arduino. 1. INTRODUÇÃO Fruto da evolução tecnológica, a área Sinalização Digital [1] tem causado grande impacto na maneira como órgãos e empresas se comunicam com seus públicos alvos. Com a grande quantidade de informação exibida em variados meios de comunicação, a necessidade de atrair a atenção do público gera ideias criativas para que seja possível atingir os resultados esperados: fazer com que o público tenha interesse naquilo que se deseja passar. Assim, fazer o uso da tecnologia para tornar essa comunicação mais prática, econômica e versátil tem se tornado alvo de interesse de muitas empresas. Naturalmente, existem vários sistemas de gerenciamento de conteúdo para televisores, como por exemplo, os encontrados em aeroportos, terminais rodoviários, shoppings, táxis e

Upload: vandat

Post on 22-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

PROJETO E INOVAÇÃO DE APLICAÇÕES DE BAIXO CUSTO BASEADAS NO

MICROCONTROLADOR ARDUINO

Riccieli Kendy Zan Minakawa¹ Ricardo Ribeiro dos Santos²

¹Aluno do Curso de Engenharia de Computação UFMS, voluntário de Iniciação Científica UFMS 2012/13

² Professor da UFMS, Faculdade de Computação; e-mail: [email protected]

Resumo: Objetivou-se neste trabalho projetar e implementar um sistema de gerenciamento de

conteúdo para televisores, propondo uma nova solução para a área de Sinalização Digital:

reaproveitar materiais eletrônicos obsoletos barateando o custo do produto final. O projeto é

composto de hardware e software que permite ao usuário enviar, via internet, mensagens de

texto para serem exibidas em um televisor. O sistema desenvolvido pode ser dividido em duas

partes: a construção e programação de um hardware que atendesse os objetivos do projeto e a

elaboração e desenvolvimento de uma interface web. De modo geral, o sistema é responsável

por gerenciar uma página web e controlar o fluxo de informações inseridas pelo usuário que

serão exibidas na tela de um televisor. Para isso, utilizou-se um televisor de tubo de raios

catódicos, um microncontrolador Arduino ATMega 2560 e bibliotecas responsáveis por

fazerem o interfaceamento das funcionalidades do software com o hardware desenvolvido.

Conclui-se ser possível reutilizar materiais eletrônicos que poderiam ser descartados com o

advento da tecnologia ao se adicionar novos recursos ao componente. O produto resultante

deste projeto é um sistema de hardware e software que apresenta um custo de aquisição de

hardware menor quando comparado a algumas soluções comerciais já existentes.

Palavras-chave: Sinalização Digital, televisores de tubo de raios catódicos, Arduino.

1. INTRODUÇÃO

Fruto da evolução tecnológica, a área Sinalização Digital [1] tem causado grande

impacto na maneira como órgãos e empresas se comunicam com seus públicos alvos. Com a

grande quantidade de informação exibida em variados meios de comunicação, a necessidade

de atrair a atenção do público gera ideias criativas para que seja possível atingir os resultados

esperados: fazer com que o público tenha interesse naquilo que se deseja passar. Assim, fazer

o uso da tecnologia para tornar essa comunicação mais prática, econômica e versátil tem se

tornado alvo de interesse de muitas empresas.

Naturalmente, existem vários sistemas de gerenciamento de conteúdo para televisores,

como por exemplo, os encontrados em aeroportos, terminais rodoviários, shoppings, táxis e

bares. Os principais diferenciais do projeto aqui apresentado são: a utilização do

microcontrolador Arduino [2,3], que proporciona baixo custo e flexibilidade, e a utilização de

televisores de tubos de raios catódicos, que oferece uma oportunidade de reaproveitar

equipamentos eletrônicos que poderiam ser descartados com o advento dos avanços

tecnológicos.

O objetivo inicial do projeto foi desenvolver um sistema de gerenciamento de

conteúdo composto de software e hardware que permite ao usuário enviar, via internet,

mensagens de texto para serem exibidas em um televisor de tubos de raios catódicos.

2. MATERIAL E MÉTODOS

O trabalho foi desenvolvido no Laboratório de Sistemas Computacionais de Alto

Desempenho (LSCAD) da Universidade Federal de Mato Groso do Sul (UFMS), Campo

Grande.

O projeto desenvolvido pode ser dividido em duas partes: a construção e programação

de um hardware que atendesse os objetivos do projeto e a elaboração e desenvolvimento de

uma interface web.

O sistema de hardware consiste em uma placa Arduino ATMega 2560, um cabo RCA,

um modulador de áudio e vídeo para fazer a comunicação entre a placa Arduino e o televisor,

um sensor DHT 11 para capturar a temperatura do ambiente, um shield Ethernet para

gerenciar a página web (interface web), um cartão micro SD e uma matriz de contato para

implementação do hardware.

O desenvolvimento do software que gerencia e controla o fluxo de informações que

são exibidas no televisor utiliza como base a linguagem de programação C com algumas

bibliotecas implementadas em C++. São estas:

DHT library: utilizada para realizar, calcular e converter medidas de temperatura.

TVOut library: utilizada para realizar o interfaceamento entre a placa Arduino e o

televisor de tubo de raios catódicos.

SD library: utilizada para fazer o interfaceamento entre Shield Ethernet e o cartão

Micro-SD.

Time library: utilizada para manipular e realizar cálculos de data e hora.

Ethernet library: utilizada para a implementação da interface web e para fazer

consultas de data e hora em servidores NTP [4].

A interface web tem como base a programação de páginas para Internet em HTML [5]

com auxílio de recursos da biblioteca Ethernet.

2.1 PLATAFORMA ARDUINO

Arduino é um kit de desenvolvimento open-source baseado em uma placa de circuito

impresso dotada de vários recursos de interfaceamento (pinagem de entrada e saída) e um

microcontrolador Atmel AVR. É um projeto descendente da plataforma Wiring [6] que foi

concebida com o objetivo de tornar o uso de circuitos eletrônicos mais acessível em projetos

multidisciplinares.

A linguagem usada para programação do Arduino é baseada na linguagem Wiring

(sintaxe + bibliotecas), e muito similar a C++, com pequenas modificações. O ambiente de

desenvolvimento adotado é baseada em Processing.

Atualmente, pode-se comprar um kit Arduino em diferentes versões. Também são

disponibilizadas informações do hardware para aqueles que desejam montar seu próprio kit

Arduino.

Além do ambiente de programação para o Arduino, existem outros softwares que

auxiliam o uso dessa tecnologia. Um exemplo disso é a ferramenta Fritzing [7] que é um

ambiente de desenvolvimento, dentro do projeto Arduino, que possibilita usuários documentar

seus protótipos e, principalmente, ilustrar a implementação de um projeto real de uma

maneira fácil e intuitiva de ser entendida por outros usuários.

2.1.1 AMBIENTE DE DESENVOLVIMENTO

A IDE (Integrated Development Environment) do Arduino foi desenvolvida em Java e

contém um editor de texto para escrita do código, uma área de mensagem, uma área de

controle de informações, uma barra de ferramentas com botões para funções comuns e um

conjunto de menus. Os programas escritos usando o ambiente de desenvolvimento Arduino

são chamados de sketches.

A linguagem de programação do Arduino é baseada em C/C++, preservando sua

sintaxe na declaração de variáveis, na utilização de operadores, na manipulação de vetores, na

conservação de estruturas, sendo também case sensitive. Contudo, ao invés de uma função

main, todos os sketches necessitam de duas funções elementares:

setup( ): é usada para fazer configurações: inicializar variáveis, configurar o modo dos

pinos, etc. Esta função é executada automaticamente uma única vez, assim que o kit

Arduino é ligado ou resetado. .

loop( ): faz exatamente o que seu nome sugere: entra em looping (executa sempre o

mesmo bloco de código), permitindo ao programa executar repetitivamente as

instruções que estão dentro desta função. A função loop( ) deve sempre ser declarada

após a função setup( ).

2.2 TVOUT LIBRARY

A biblioteca TVOut [8] (disponível em https://code.google.com/p/arduino-tvout/) tem

como objetivo gerar conteúdo em um televisor utilizando um microcontrolador Arduino. A

biblioteca está implementada para suportar tanto televisores que operam em sistema NTSC

quanto em sistema PAL. Basicamente, ela está estruturada em arquivos de configurações de

hardware e arquivos onde estão implementados os métodos acessíveis, nos quais permitem ao

usuário configurar, formatar, desenhar e gerar o conteúdo que deseja em um televisor. Essas

funções estão descritas no relatório parcial.

Mesmo o Arduino sendo um projeto open-source e a biblioteca TVOut ter sido escrita

por vários usuários, sendo possível fazer alterações, inclusões e aprimoramentos na biblioteca,

com a finalidade de adaptá-la para suprir as necessidades dos problemas em questão, a

biblioteca apresenta algumas limitações técnicas de utilização. Por exemplo, não é possível

aplicar cores diferentes de preto e branco devido às configurações de hardware sobre a qual

ela está implementada.

2.3 MONTAGEM DO CIRCUITO

Para utilizar a biblioteca TVOut com Arduino e um televisor de tubo de raios

catódicos é necessário construir o circuito apresentado na Figura 1. Essa configuração varia

de microcontrolador para microcontrolador. Como esse projeto foi desenvolvido utilizando

um ATMega 2560, deve-se soldar um jumper no centro de um Cabo RCA e conectá-lo através

de um resistor de 1 KΩ à porta 11 da placa Arduino, reservada para fazer a sincronização

(SYNC). Em paralelo, deve-se conectar um resistor de 470 Ω à porta digital 29 da placa

Arduino que corresponde à saída de vídeo. A parte externa do cabo RCA deve ser conectada

no GND da placa Arduino. O cabo RCA é conectado ao modulador de áudio e vídeo que por

sua vez é conectado no televisor

Figura 1: Prototipação do projeto de hardware desenvolvido utilizando a ferramenta Fritzing

2.4 SHIELD ETHERNET

O Shield Ethernet é utilizado para contectar a placa Arduino à Internet através de um

cabo RJ45 podendo ser programado para comportar-se como um servidor web ou um cliente.

Quando configurado para simular o funcionamento de um servidor, conhecendo-se o IP que é

atribuído à placa Arduino, é possível acessá-lo através de qualquer computador que esteja

conectado a mesma rede que a placa.

O Shield Ethernet ainda possui um slot reservado para inserção de um cartão micro-

SD, muito útil para armazenar dados que são enviados para o servidor.

No sistema desenvolvido, o Shield Ethernet é responsável por gerenciar a página web

(interface web) e por fazer consultas de disponibilidade de informação de data e hora em

servidores NTP (Network Time Protocol). Como o NTI (Núcleo de Tecnologia da

Informação), órgão responsável pelo gerenciamento da internet na Universidade, bloqueia o

acesso a alguns servidores, foram utilizados os seguintes endereços de servidor para manter

atualizado hora e data.

a.ntp.br 200.160.0.8

b.ntp.br 200.189.40.8

c.ntp.br 200.192.232.8

3. RESULTADOS

3.1 SISTEMA DE HARDWARE

O sistema de hardware desenvolvido para o projeto pode ser observado na Figura 2. A

Figura 2 mostra um Shield Ethernet acoplado à placa Arduino ATMEGA 2560, resistores,

jumpers, um cabo RCA soldado, um sensor de temperatura DHT11 e um cartão micro-SD no

slot reservado pelo Shield Ethernet. Note que, mesmo o Shield Ethernet sendo acoplado à

placa Arduino, é possível utilizar quase todas as portas da placa, ou seja, adicionar mais

recursos ao projeto. Apesar de não ter conexão visível, as portas digitais 50, 51 e 52 não

podem ser utilizadas, pois são reservadas para comunicação SPI, assim como as portas

digitais 4 e 53 que são utilizadas para selecionar e configurar o cartão micro-SD.

Figura 2: Implementação do circuito para conexão da placa Arduino

com os demais sensores e o televisor.

3.2 INTERFACE WEB

A interface web do sistema contém campos para inserir: um título para a mensagem,

de preenchimento opcional; uma mensagem obrigatória que contenha até 140 caracteres sem

acentuações; uma prioridade que deve ser obrigatoriamente selecionada pelo usuário. O

sistema pré-define que as mensagens podem ter prioridade baixa, média ou alta. O usuário

deve ainda selecionar: uma categoria obrigatória para a mensagem: graduação, pós-

graduação, notícias ou eventos; uma data que determinará quando a mensagem deve começar

a ser exibida no televisor e uma data de expiração da mensagem. A página web possui um

contador de caracteres que indica quantos caracteres o usuário ainda pode inserir no campo

mensagem. Quando a página é iniciada, esse contador possui o valor 140, ou seja, pode-se

digitar 140 caracteres no corpo da mensagem. Observe a Figura 3.

Figura 3: Interface web para acesso ao sistema de exibição de mensagens no televisor via

Arduino.

3.3 FUNCIONAMENTO DO SISTEMA

O funcionamento simplificado do sistema pode ser observado na Figura 4. O usuário

acessa a página web do sistema digitando o endereço de IP do Arduino, obtido a partir do

shield Ethernet, em um browser e aguarda a página carregar. Carregada a página, o usuário

deve preencher os campos de mensagem, título (se conveniente), categoria, prioridade e uma

data para a mensagem começar a ser exibida e uma data para que a mensagem deixe de ser

exibida. Ao clicar no botão enviar, essas informações são enviadas para o Arduino converter

os códigos de entidades HTML para caracteres correspondentes em ASCII. Finalmente, o

sistema atribui um identificador único para a mensagem e verifica as datas de início e término

para então gravar os dados em um arquivo na memória flash do cartão micro-SD.

No cartão micro-SD, as mensagens estão divididas em três arquivos de acordo com um

critério específico: mensagens com uma data de início futura em relação a data atual,

mensagens expiradas e mensagens ativas, que são mensagens que estão dentro de um período

válido para serem exibidas.

Figura 4: Digrama simplificado do funcionamento do sistema.

Para exibir as mensagens no televisor, o sistema utiliza apenas as mensagens que estão

no arquivo correspondente às mensagens ativas, ou seja, as que possuem data de início

anterior à data atual e as que a data de expiração não excedam a data atual. Essas mensagens

que estão no cartão micro-SD serão carregadas na memória do Arduino e exibidas uma a uma,

seguindo uma ordem de exibição definida pela prioridade utilizando o algoritmo MaxHeap

[9]. Toda vez que o sistema é reiniciado ou que uma nova mensagem é inserida, o MaxHeap

garante que a mensagem de maior prioridade sempre fique na raiz da estrutura, fazendo com

que mensagens de maior prioridade sejam exibidas primeiro que as mensagens de menor

prioridade.

Como a memória SRAM do Arduino ATMega 2560 (8 Kb) é relativamente pequena

dado à complexidade dessa aplicação, a estrutura do MaxHeap mantém na memória do

Arduino apenas o identificador das mensagens e a prioridade a ele associado. Quando o

MaxHeap determina que é a vez de uma mensagem ser exibida, o sistema busca a mensagem

no cartão micro-SD, através do identificador da mensagem e carrega o conteúdo

correspondente (mensagem e título) para a memória.

Finalmente, o Arduino utiliza recursos da biblioteca TVOut para exibir as mensagens

no televisor. Todas as mensagens são exibidas seguindo o mesmo frame como sugere a Figura

5. O tempo de exibição de cada mensagem é determinado pelo tamanho de cada uma.

Figura 5: Na tela do televisor é possível observar o título da mensagem: “ERI 2013” e a

mensagem “Escola Regional de Informática MS de 28 a 30 de Agosto. Três Lagoas – MS”,

bem como a data, hora e a temperatura do ambiente no momento em que a foto foi obtida e os

logotipos da FACOM, LSCAD e UFMS.

3.4 MONITORAMENTO DE MEMÓRIA

Para obter os dados apresentado na Tabela 1, utilizou-se a seguinte função para fazer-

se o monitoramento de memória SRAM livre no Arduino:

int freeRam ( )

extern int __heap_start, *__brkval;

int v;

return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);

O Arduino ATMega 2560 possui 8 Kb de memória SRAM, mas apenas 7103 bytes

estão disponíveis para serem utilizados quando o programa começa ser executado.

Para realizar as configurações necessárias do Shield Ethernet, por exemplo, gerar um

endereço IP, o Arduino consome, aproximadamente, 100 bytes da memória SRAM.

Tarefas como: consultar os servidores NTP, calcular corretamente a data e hora,

configurar o sistema a fim de manter esses valores acessíveis na memória, ou exibir

corretamente data e hora no televisor, utilizam, em média, 1538 bytes de memória SRAM.

Para inserir uma mensagem completa (140 caracteres), com um título de até 10

caracteres, selecionando uma prioridade, uma categoria e datas de início e término da

mensagem, utiliza-se, em média, 551 bytes de SRAM.

Para exibir o frame como o da Figura 10, que mostra logotipos do LSCAD, FACOM e

UFMS, exibe a temperatura ambiente, a data e hora atuais e uma mensagem de 140

caracteres, o Arduino precisa utilizar uma resolução de 230 x 180 pixels que corresponde,

aproximadamente, à 5175 bytes de memória SRAM.

Tabela 1: Utilização de memória SRAM do Arduino ao executar determinada tarefa.

Tarefa Uso da memória SRAM

(em bytes)

Configurar Shield Ethernet 100

Atualizar data e hora do sistema 1538

Inserir mensagem no sistema 551

Exibir mensagem no televisor 5175

Total: 7364

Logo é possível notar que apesar de desejável, o sistema ao executar todas essas

tarefas simultaneamente irá exceder à quantidade de memória SRAM livre do Arduino.

Quando isso ocorre o sistema trava e deve ser reiniciado manualmente.

4. CONCLUSÕES

Este trabalho projetou e desenvolveu um sistema de hardware e software para geração

de conteúdo em televisores de tubo de raios catódicos. Tendo em vista os objetivos iniciais,

pode-se dizer que eles foram atingidos até o limite imposto por dificuldades inflexíveis

encontradas ao longo do desenvolvimento do projeto.

A biblioteca TVOut possui algumas limitações da forma como está originalmente

implementada. Por exemplo, o fato de possuir apenas duas opções de cores (branco e preto)

limita a possibilidade de se desenvolver e aprimorar as aplicações. Outro fator complicador é

a ausência de documentação detalhada e de fácil acesso à implementação da biblioteca, que

dificulta bastante quaisquer alterações que se façam necessárias.

O microcontrolador Arduino ATMega 2560 possui pouca memória SRAM, se

comparado às exigências do projeto que manipula diversos componentes complexos. Isso

restringe a possibilidade de adicionar novos recursos e dificulta a manipulação dos dados já

obtidos pelo sistema.

Portanto, a insuficiência de memória SRAM livre para manipulação de dados somado

às limitações e falhas na implementação da biblioteca TVOut dificultaram na implementação

de um projeto auto-suficiente como esperado. O sistema funciona bem se as funcionalidades

não forem executadas todas simultaneamente, como é desejável.

Uma funcionalidade do sistema que se destaca é a flexibilidade para inserção, e

exibição dos conteúdos, uma vez que é utilizado apenas um microcontrolador, com acesso à

Web, responsável pelo gerenciamento de todo o sistema. Assim, não é necessário utilizar um

computador dedicado para organizar e sincronizar as mensagens, como as soluções

comerciais existentes no mercado. Isso torna o projeto aplicável em diversas situações em que

o usuário deseja exibir conteúdos digitais em um aparelho de televisor tais como:

informativos para clientes/usuários de serviços, publicidade, notícias, programação de

eventos, entre outras.

O produto resultante deste projeto é um sistema de hardware/software que apresenta

um custo de aquisição do hardware menor quando comparado a algumas soluções comerciais

existentes.

As próximas etapas do projeto envolvem o refinamento dos resultados já alcançados, o

estudo da substituição de alguns componentes por outros que oferecem maior capacidade de

armazenamento e desempenho, bem como a implantação do sistema no Laboratório de

Sistemas Computacionais de Alto Desempenho (LSCAD) e no hall de entrada da Faculdade

de Computação (FACOM). Ainda, será necessário realizar testes em vários modelos diferentes

de televisor, e adaptar o código para cada um deles, com o intuito de investigar a portabilidade

do software.

5. REFERÊNCIAS

[1] Digital Signage. Disponível em <http://en.wikipedia.org/wiki/Digital_signage>

[2] Arduino HomePage. Disponível em <http://www.arduino.cc/>

[3] Michael Margolis. Arduino Cookbook. O’Reilly, 1st ed. March, 2011

[4] Network Time Protocol – A Hora Legal Brasileira, via Internet. Disponível em

<http://www.ntp.br/>

[5] HTML Tutorial - (HTML5 Compliant). Disponível em

<http://www.w3schools.com/html/>

[6] Wiring: open-source programming framework for microcontrollers. Disponível em

< http://wiring.org.co/>

[7] Fritzing: From prototype to product. Disponível em <http://fritzing.org/>

[8] Arduino TVOut . Disponível em <https://code.google.com/p/arduino-tvout/>

[9] CORMEN, Thomas H. et al. Algoritmos: teoria e prática. Tradução da segunda edição

[americana]. Rio de Janeiro: Elsevier, 2002.

6. PRODUTOS ALCANÇADOS

Resumo aceito para apresentação na modalidade pôster na IV Escola Regional de

Informática (ERI), Três Lagoas/MS, agosto/2013.