Post on 21-Nov-2020
PROJETO DE ACESSIBILIDADE PARA PORTADORES DE NECESSIDADES ESPECIAIS MOTORAS
UTILIZANDO ARMBAND MYO
Marcelo Pita Gomes de Castro
Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Antônio Claudio Gómez de Sousa
Rio de Janeiro
Fevereiro de 2017
ii
iii
iv
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
Escola Politécnica – Departamento de Eletrônica e de Computação
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária
Rio de Janeiro – RJ CEP 21949-900
Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que
poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre
bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem
finalidade comercial e que seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).
v
DEDICATÓRIA
Este trabalho é dedicado a todo povo brasileiro, que investiu em minha educação e acreditou no retorno em dedicação ao país. Que este projeto sirva de início de uma solução tecnológica capaz de ajudar tantos necessitados em nosso país e no mundo. Que sirva também como forma de despertar o interesse de novos estudiosos a dedicarem o seu tempo propondo novas soluções para um Brasil melhor.
vi
AGRADECIMENTO
A meus pais, Tânia Pita e Ricardo Castro, meu padrasto Carlos Carneiro, minha
madrasta Camilla Goulart, meus irmãos Beatriz Castro, Gustavo Castro e Carolina
Carneiro e toda minha família por todo carinho e apoio durante toda essa jornada que foi
cursar Engenharia Eletrônica e de Computação.
A meus professores, que souberam passar mais do que ensinamentos técnicos,
mas que despertaram o meu interesse na busca por conhecimento.
A meus colegas e grandes amigos de curso, que trilharam comigo este caminho.
Passando manhãs, tardes e noites de muito estresse e estudo, mas também de muita
descontração e divertimento. Sem a ajuda de vocês, nada disso seria possível.
A meus amigos de tempos do colégio, que mesmo com a distância tendo
aumentado com a faculdade e agora com o trabalho, estão sempre presentes dando o
apoio necessário.
Ao professor Ricardo Rhomberg, pela presença na banca examinadora e por todo
ensinamento na área de Telecom, a qual sigo hoje profissionalmente.
Ao professor José Antônio Borges, pela presença na banca e pelo estímulo
durante a disciplina de Tecnologia e Desenvolvimento Social a seguir em frente com
este projeto.
Ao professor Antônio Claudio, por toda a orientação e por ser o professor que
inicializou meu curso de Engenharia Eletrônica e de Computação lecionando
Computação I e agora finaliza com este trabalho.
A todos que me ajudaram durante o planejamento e desenvolvimento deste
projeto, sobretudo ao Rafael Chaves, que sempre dispôs a ajudar durante toda a
faculdade e à Danielle Carvalho, aguentando o meu estresse, a distância e a saudade,
sempre disposta a ajudar revisando os textos e ao meu lado durante cada etapa deste
processo.
vi
RESUMO
O projeto a ser apresentado é o resultado do estudo e integração do aparelho de
reconhecimento de gestos Armband Myo e do microcontrolador Arduino para a criação
de um protótipo de um equipamento capaz de controlar utensílios domésticos presentes
em um quarto.
O trabalho de engenharia social surgiu com o interesse de facilitar as atividades
do dia a dia de portadores de deficiência física a fim de torna-los menos dependentes de
familiares e profissionais da saúde para realizar tarefas consideradas banais para a maior
parte da sociedade, mas que podem representar um desafio para portadores de
mobilidade reduzida.
São apresentados nos capítulos de cada equipamento as características técnicas e
os funcionamentos dos equipamentos utilizados, assim como projetos em que foram
aplicados.
A partir do método iterativo de desenvolvimento de projetos de software, foram
realizados os controles dos equipamentos de televisão, do decodificador da televisão por
assinatura, do ar condicionado, da iluminação e da cortina.
Os equipamentos foram controlados de forma bem-sucedida e foram estudadas
formas de desenvolver futuramente o projeto e de barateá-lo, com o objetivo de o tornar
mais viável.
Palavras-Chave: Engenharia Social, Armband Myo, Arduino, controle residencial,
deficientes físicos.
vi
ABSTRACT
The project to be presented is the result of the study and integration of the
Armband Myo gesture recognition device and the Arduino microcontroller for the
creation of a prototype of an equipment capable of controlling domestic devices present
in a room.
The work of social engineering came up with the interest of facilitating the day-
to-day activities of people with physical disabilities in order to make them less
dependent on family and health professionals to perform tasks considered banal for the
most of society, but that can be a challenge for people with reduced mobility.
The technical characteristics and the workings of the equipment used, as well as
the projects in which they were applied, are presented in the chapters of each
equipment.
From the iterative method of development of software projects, the controls of
television equipment, pay-TV decoders, air conditioning, lighting and curtains were
carried out.
The equipment was successfully controlled and ways were studied to develop
the project in the future and to make it cheaper, in order to make it more feasible.
Key-words: Social Engineering, Armband Myo, Arduino, house-control, disabled
people.
ix
SIGLAS
UFRJ – Universidade Federal do Rio de Janeiro
PNS – Pesquisa Nacional de Saúde
CIF – Classificação Internacional de Funcionalidade, Incapacidade e Saúde
x
Sumário
1 Introdução 1
1.1 - Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 - Delimitação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 - Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 - Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 - Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 - Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 O Armband Myo 6
2.1 - Características técnicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 - Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 - Projetos realizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1 - Projetos de Entretenimento . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 - Projetos de trabalho e produtividade . . . . . . . . . . . . . 11
2.3.2 - Projetos de Conectividade . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.4 - Projetos médicos e sociais . . . . . . . . . . . . . . . . . . . . . . . 13
3 O Arduino 15
3.1 - Armband Myo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 - Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 - Arduino Nano e Arduino Mini . . . . . . . . . . . . . . . . . . 16
3.1.3 - Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
xi
3.2 - A configuração da placa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 - Projetos Sociais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4 Desenvolvimento do Projeto 23
4.1 - Dispositivo de interface do usuário . . . . . . . . . . . . . . . . . . . 23
4.1.1 - Circuitos e módulos utilizados. . . . . . . . . . . . . . . . . . . . 24
4.1.2 - Diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 - Dispositivo para controle da iluminação . . . . . . . . . . . . . . . . 26
4.2.1 - Circuitos e módulos utilizados. . . . . . . . . . . . . . . . . . . . 26
4.2.2 - Diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 - Dispositivo para controle da televisão . . . . . . . . . . . . . . . . . . 28
4.3.1 - Circuitos e módulos utilizados. . . . . . . . . . . . . . . . . . . . 28
4.3.2 - Diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.4 - Dispositivo para controle da TV por assinatura . . . . . . . . . . . 30
4.4.1 - Diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5 - Controle do Ar Condicionado . . . . . . . . . . . . . . . . . . . . . . . . 31
4.6 - Controle da Cortina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.6.1 - Circuitos e módulos utilizados. . . . . . . . . . . . . . . . . . . . . 33
4.6.2 - Diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7 - Comunicação entre Arduinos . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7.1 - Circuitos e módulos utilizados. . . . . . . . . . . . . . . . . . . . . 35
5 Resultados e Discussão 36
5.1 - Controle dos equipamentos . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 - Melhorias tecnológicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3 - Preço . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
xi
5.4 - Público alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5 Conclusões 43
Referências 44
A Código do Microcontrolador Central 49
B Código do Microcontrolador do Aparelho da NET 57
C Código do Microcontrolador da Cortina 60
D Código do Microcontrolador da Iluminação 63
E Código do Microcontrolador do Ar Condicionado 66
xi
Lista de Figuras
1 – Proporção de pessoas com deficiência física . . . . . . . . . . . . . . . . . . . . . . . . 2
2 – O Armband Myo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 – - Os gestos para controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 – Jogos desenvolvidos para o Armband Myo. . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 – Exemplos de programas de multimídia com compatibilidade ao Armband . 10
6 – Ferramentas desenvolvidas para produção. . . . . . . . . . . . . . . . . . . . . . . . . . 12
7 – Ferramentas de apresentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8 – Aplicativos de Conectividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 – Testes do Armband Myo com prótese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10 – Placa Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
11 – Arduino Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
12 – Arduino Mini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
13 – Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
14 – Arduino IDE e a estruturação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
15 – Exemplos no Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
16 – Protótipo da lixeira automatizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
17 – LCD 20x04 . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
18 – Diagrama de blocos do microcontrolador central. . . . . . . . . . . . . . . . . . . . . . 25
19 – Modulo de relé SDR utilizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
20 – Diagrama de Blocos do Microcontrolador da Iluminação. . . . . . . . . . . . . . . . 27
21 – Sensor TL1838 e LED TSAL6100 infravermelhos. . . . . . . . . . . . . . . . . . . . . 29
22 – Diagrama de blocos do microcontrolador da TV. . . . . . . . . . . . . . . . . . . . . . . 29
23 – Diagrama de blocos do microcontrolador do aparelho de TV por assinatura . 31
24 – Servo Motor com hélice de 6 pontas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
xi
25 – Diagrama de blocos do microcontrolador da cortina. . . . . . . . . . . . . . . . . . . 34
26 – Módulo Transmissor e Receptor em RF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
27 – Cortina com o Sistema do Servo Motor montado. . . . . . . . . . . . . . . . . . . . . . 37
28 – Raspberry Pi 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
29 – Percentual de cada item de acordo com a estimativa de gastos. . . . . . . . . . . . 41
xv
Lista de Tabelas
1 – Estimativa de gastos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1
Capítulo 1
Introdução
1.1 – Tema
O tema do trabalho é o controle de elementos de um quarto através do Armband
Myo, que é um conjunto de sensores elétricos estimulados pelos músculos do braço.
1.2 – Delimitação
O projeto está focalizado no controle de equipamentos presentes em um quarto,
domiciliar ou hospitalar. O controle de equipamentos de cozinha, escritório e de
garagem estão fora do escopo do projeto. O sensor utilizado para o envio de comandos
não foi realizado no projeto, foi comprado e sua implementação também está fora do
escopo do projeto.
Esta é uma versão inicial de um equipamento, o que não torna o projeto a ser
economicamente viável nesta versão. Ao final do projeto devem ser realizadas
prospecções de novas etapas a serem estudadas a fim de tornar o projeto cada vez mais
viável.
1.3 – Justificativa
Somos 200,3 milhões de brasileiros residentes em domicílios particulares
permanentes, segundo os dados mais recentes. Destes mais de 200 milhões de pessoas,
6,2% apresentou algum tipo de deficiência ligada à audição, à visão, à intelectualidade e
aos movimentos físicos (PNS, 2013).
Dos quatro grupos de deficiência, a deficiência física foi o segundo maior grupo
presente nos brasileiros. Foi relatado um grupo de 3,6% da população para os
deficientes visuais; 1,3% da população para os deficientes físicos; 1,1% da população
2
para deficientes auditivos; e 0,8% da população para deficientes intelectuais (PNS,
2013).
A deficiência física é mais presente na vida dos homens (1,6%) do que na vida
das mulheres (1,0%) e sua presença cresce de acordo com a faixa etária da população, já
que dos 1,3% da população com a deficiência, somente 0,3% nasceu nessa situação e os
outros 1,0% adquiriram por doença ou acidente (PNS, 2013).
Um fator de grande impacto na qualidade de vida dos deficientes motores é o
fato de 46,8% deles relatar um grau intenso ou muito intenso de limitações, o que
impedia de fazer atividades do dia-a-dia. Além disso, quando se compara o nível de
formação acadêmica, deficientes físicos são até 2,4 vezes mais frequentes em pessoas
com ensino fundamental incompleto do que em pessoas com alguma formação
acadêmica, o que significa uma renda mais baixa desses deficientes e uma capacidade
de reabilitação menor.
Figura 1 - Proporção de pessoas com deficiência física, na população total,
com indicação do intervalo de confiança de 95%, segundo o sexo, os grupos de idade, a
cor ou raça e o nível de instrução (PNS, 2013)
Com o passar dos anos, a expectativa de vida do povo brasileiro cresce. Em
2003, tinha-se 71,2 anos de expectativa de vida ao nascer e em 2013 este número
cresceu para 74,9. Por mais que seja um índice a ser comemorado, também é necessária
atenção para alguns detalhes não explícitos. Pessoas com mais de 60 anos de idade
representavam, em 2013, 13,2% da população e 6,8% destes idosos diziam apresentar
3
alguma dificuldade de realizar tarefas diárias. Detalhando ainda mais os números da
população idosa, os números de pessoas com dificuldade crescem exponencialmente de
acordo com a idade. No intervalo entre 60 e 64 anos de idade, somente 2,8% das
pessoas relatou dificuldades com as tarefas diárias, no intervalo de 65 a 74 anos de
idade, este número cresceu para 4,4% e a partir de 75 anos, cresceu ainda mais,
atingindo 15,6% da população. Dificultando ainda este cenário, 84% da população dos
idosos relatou necessitar de alguma ajuda para realizar tarefas do dia-a-dia e,
infelizmente, 10,9% não a recebia (PNS, 2013).
Analisando todo esse cenário mais atual e prospectando para um futuro não
muito longínquo, a população idosa, que cada vez mais cresce, requer cuidados
especiais. Dos idosos referenciados pela pesquisa que necessitavam de cuidados
especiais, 17,8% recebiam cuidados de forma remunerada e 78,8% recebiam cuidados
de pessoas ligadas à família (PNS, 2013).
Com o passar dos anos, outro elemento que tem crescido é a tecnologia. A
internet foi introduzida por todo mundo acelerando a globalização. Hoje se criam
elementos cada vez menores e mais baratos capazes de se comunicar e as indústrias de
entretenimento, de telecomunicações, empresas de diversas áreas comerciais utilizam
deste avanço para gerar mais lucro, atingindo uma maior quantidade de pessoas a um
preço cada vez menor. Além de gerar lucro, porém, essas novas tecnologias são capazes
de mudar a sociedade de outra maneira, melhorando a qualidade de vida de pessoas
antes necessitadas, facilitando tarefas, que para alguns era algo quase impossível, sendo
disponibilizadas a uma grande quantidade de pessoas. Esse é o objetivo da Engenharia
Social.
Projetos de Engenharia Social são muitas vezes feitos por pesquisas de
universidades, apoio governamental ou até de pessoas próximas a deficientes físicos,
que se mobilizam a alguma ideia e criam algo inovador. Assim como os projetos da
criação de uma luva háptica para auxiliar pessoas cegas a enxergar numa sala de aula,
da criação de um novo conceito de acessibilidade na web para deficientes visuais e da
criação de um mecanismo capaz de deixar cadeirantes se locomoverem em pé, este
projeto tem o objetivo de debater uma solução possível para que possa ser criado um
dispositivo novo, utilizando as tecnologias já existentes, capaz de alterar e melhorar a
qualidade de vida de pessoas com alguma necessidade especial.
Analisando as dificuldades existentes para deficientes físicos e a passividade da
sociedade em tornar essas pessoas independentes de ajuda, o projeto de SmartRoom
4
surgiu. O projeto levanta o conceito de se utilizar um controle simples de se manusear,
diferentes de controles remotos que não são eficazes para uma gama grande de pessoas
com dificuldades físicas, que seja ligado a equipamentos presentes num quarto. Assim
sendo, o deficiente físico, idoso ou até um paciente com mobilidade reduzida num
hospital, seria capaz de controlar os elementos presentes em seu espaço de convivência,
com maior liberdade e independência, resultando numa melhor qualidade de vida diária.
1.4 – Objetivos
O objetivo geral é elaborar um projeto de Quarto Inteligente controlado por
comandos capturados pelo Armband Myo, para que os portadores de necessidades
especiais motoras tenham uma maior facilidade de realizar atividades do dia a dia,
consideradas atividades banais para os que não têm a mesma dificuldade, aumentando
sua independência e qualidade de vida.
Atividades planejadas: (1) Controle de Lâmpadas do Quarto; (2) Controle da
Televisão; (3) Controle do decodificador da Televisão por Assinatura; (4) Controle do
Ar Condicionado; (5) Controle da Cortina.
1.5 – Metodologia
O projeto foi realizado através da metodologia iterativa de construção de
soluções em software. Foi analisado o problema de maneira mais global e estudado um
meio de abrangê-lo e solucioná-lo. Com o escopo do projeto já definido, foi projetado
cada desenvolvimento de solução de maneira separada, utilizando os elementos da
iteração de estudo, projeto e análise, até que chegasse ao resultado esperado. Quando
cada solução foi concluída, foi realizado um novo projeto para integrar todas em um
único canal controlado pelo usuário.
1.6 – Descrição
No capítulo 2 será apresentado o dispositivo Armband Myo, informando as
características técnicas, descrevendo o seu funcionamento e mostrando projetos em que
5
está relacionado, tanto em suas áreas com maiores quantidades de projetos realizados,
como em áreas similares a este projeto.
No capítulo 3 será apresentado o conjunto de microcontroladores Arduino
utilizados no projeto. Serão descritas as características de cada um deles, a plataforma
de implementação de soluções e serão apresentados outros projetos, relacionados a este,
em que foram utilizados.
No capítulo 4 será apresentado o desenvolvimento do projeto, descrevendo cada
uma das soluções criadas, os elementos utilizados e como as soluções são integradas no
projeto total.
No capítulo 5 serão apresentados os resultados e serão discutidos os próximos
passos e melhorias a serem realizadas. Será estudada a viabilidade financeira do projeto
e será discutido como torná-lo mais atrativo.
No capítulo 6 será apresentada a conclusão, realizada em tópicos, de modo a
tornar objetivos os pontos principais conhecimentos adquiridos durante o estudo deste
projeto.
6
Capítulo 2
O Armband Myo
O Armband-Myo é um equipamento eletrônico em formato de braçadeira de
antebraço desenvolvido pela empresa Thelmic Labs capaz de reconhecer gestos feitos
com a mão e com o braço do usuário com o intuito de ativar funções no computador. O
equipamento é composto por 8 sensores elétricos que, utilizando o processo de
eletromiografia parcial, transforma em dados a posição de cada um dos três músculos do
braço e, por bluetooth, envia os dados para o computador
(https://www.myo.com/techspecs).
Figura 2 - O Armband Myo
(http://www.techrepublic.com/article/myo-armband-makes-smartglasses-hands-free/)
2.1 – Características técnicas
O Armband Myo tem seu comprimento ajustável entre 19 cm e 34 cm, de modo
que possa melhor se adaptar ao braço de cada utilizador. A massa do equipamento é de
93 g e sua espessura é de 1,1 cm (https://www.myo.com/techspecs).
7
O equipamento é compatível com sistemas operacionais da Microsoft e da Apple
para computadores, para o Linux existem algumas aplicações feitas por
desenvolvedores que não são ligados à empresa que criaram uma forma de
compatibilidade (http://www.fernandocosentino.net/pyoconnect). Para celulares existe
compatibilidade tanto para sistemas IOS, quanto para sistemas Android. A comunicação
entre os aparelhos é feita pelo protocolo de comunicação Bluetooth, existindo um
adaptador para os computadores utilizando uma porta USB para a recepção e
transmissão de dados (https://www.myo.com/techspecs).
Com relação às características de Hardware, são dois tipos de sensores, oito do
tipo de eletromiografia parcial, capazes de informar impulsos elétricos dos músculos do
braço, reconhecendo movimentos e poses; além de sensores de medidas inerciais, com
base em nove eixos: três eixos de giroscópio, três eixos de acelerômetro e três eixos
magnetrônicos (https://www.myo.com/techspecs). O equipamento contém LEDs para
informar o estado do equipamento, como ligado, desligado, sincronizando e em espera.
Além dos LEDs, existem três tipos de vibração que o equipamento é capaz de produzir
uma curta, uma média e uma longa, que também informam ao usuário o estado do
equipamento. O processador utilizado é um ARM Cortex M4 e possui uma bateria de
Lítio, capaz de durar 24 horas de uso e, para carregá-la, existe uma porta micro USB
(https://www.myo.com/techspecs).
2.2 – Funcionamento
O funcionamento do Armband Myo é dependente da configuração dos
parâmetros utilizados pelo dispositivo. Como é um sensor que possibilita o
reconhecimento de gestos e movimentos de qualquer pessoa, existem parâmetros que
são configurados com auxílio do computador, antes do primeiro uso de cada usuário,
que reconhece as características específicas de cada um. Para que seja feita esta
configuração, é instalado o software inicial presente no site do Armband Myo, o
myoconnect (https://www.myo.com/start). Com este software, são dadas as informações
básicas ao usuário do passo a passo de configuração, em que o usuário realiza uma série
de movimentos e gestos, que calibram o dispositivo, para que depois seja salvo em um
arquivo as configurações daquele usuário. Após a calibração, o usuário pode colocar o
bracelete em qualquer um dos dois braços, logo abaixo do cotovelo, fazer um gesto de
reconhecimento, e o dispositivo vai vibrar para informar que está pronto para uso.
8
Com a configuração realizada, o usuário tem à disposição aplicativos para o
controle do próprio computador, envolvendo controle de apresentações, um teclado
virtual, um mouse virtual e controladores de vídeos e músicas, todos desenvolvidos e
entregues pela própria empresa, com a instalação inicial. Esses aplicativos têm cinco
gestos base de controle: Punho, com todos os dedos da mão fechados; Aceno para
dentro, com os dedos esticados e o punho virado no sentido do corpo; Aceno para fora,
com os dedos esticados e o pinho virado para longe do corpo; Dedos abertos, com todos
os dedos esticados ao máximo; e Dois toques, com o dedo médio dando dois toques
rápidos no polegar.
Figura 3 - Os gestos para controle (Myo Keyboard Mapper)
Além dos cinco gestos capturados pelos sensores eletromiográficos, os
aplicativos também usam os nove eixos de medidas inerciais, como uma forma de
apontador nos casos de mouse e teclado virtuais. Para ativar esses aplicativos, o usuário
deve levantar a mão, fechar o punho e então descer a mão, em um gesto próximo ao
manuseio de uma chave. Com este movimento, fica à disposição uma lista dos
aplicativos, e para selecionar cada um, aponta com o braço e estica os cinco dedos.
2.3 – Projetos realizados
Além dos aplicativos iniciais disponibilizados pela Thalmic Labs, existem
diversos projetos acontecendo em paralelo de desenvolvedores que querem utilizar desta
tecnologia para diferentes projetos, como jogos, integração com programas de música e
vídeo, controle de robôs, entre outros. Para auxiliar esses projetos, a Thalmic Labs
disponibiliza alguns softwares de obtenção de dados e uma biblioteca com um conjunto
de funções (https://developer.thalmic.com/downloads).
9
Após a conclusão de um desses projetos, o desenvolvedor tem um espaço na
central de mercado no site do Armband Myo, podendo compartilhar a sua aplicação
(https://market.myo.com/). Além dessa central de mercado, existem muitos blogs e
artigos científicos que mostram projetos mais desenvolvidos e o resultado de cada um
deles.
A seguir, apresentamos alguns exemplos de projetos por área de interesse.
2.3.1 – Projetos de Entretenimento
O maior foco, pelo menos na criação do Armband Myo, foi o público do
entretenimento, visto que os vídeos de propaganda exploravam bastante esta área e a
área empresarial, além de muitos exemplos de aplicações para desenvolvedores de jogos
no fórum da empresa (https://www.myo.com/). Com isso, foram atraídos muitos
desenvolvedores de entretenimento para realizar aplicações com o dispositivo, que
correspondem a 53% dos projetos disponibilizados no mercado de aplicativos,
considerando jogos e ferramentas de multimídia (https://market.myo.com/).
Na área de jogos, foram criados alguns inteiramente novos para serem utilizados
exclusivamente com o Armband Myo, como o “Myosilk” e o “Icarus Rising”; e, como
na maioria das vezes, jogos adaptados para a utilização do bracelete, como o “Myo +
Tetrix” e o “Fruit Ninja Connector”.
Em Myosilk (https://market.myo.com/app/55955bf1e4b0f2c8982c90d9/myosilk)
o usuário tem a oportunidade de fazer pinturas animadas usando o movimento do braço
e os gestos padrões do Armband Myo.
Em Icarus Rising
(https://market.myo.com/app/55392b70e4b02f8140d20a84/icarus-rising), o usuário
utiliza dois Armbands Myo, além de um óculos de realidade virtual, o que torna o jogo
completamente imersivo. Neste jogo, o usuário deve eliminar os adversários mexendo
os braços para mirar e usando os movimentos padrões para disparar as armas.
10
Figura 4 - Jogos desenvolvidos para o Armband Myo (https://market.myo.com/)
Nos jogos em que há compatibilidade do equipamento com a jogabilidade já
desenvolvida, os movimentos do braço simulam os movimentos do mouse e as poses
padrão da mão representam teclas chaves para o jogo.
Além de jogos, o conteúdo de entretenimento também foi abordado com criação
de softwares com compatibilidade de controle através de movimentos do braço e da
mão, utilizados em reprodutores de áudio e vídeo, como “Myo for Windows Media
Player” e “Itunes Connector”, além de controle de aplicativos para o celular, como o
“Air Guitar” e o “Myo Youtube” e até mesmo o controle de funções do celular, como o
“Myo Song” que permite atender ligações e controlar o reprodutor musical do aparelho
celular.
Figura 5 - Exemplos de programas de multimídia com compatibilidade ao Armband (https://market.myo.com/).
11
2.3.2 – Projetos de trabalho e produtividade
Os projetos relacionados ao ambiente de trabalho são o segundo maior foco no
quesito de projetos realizados e disponibilizados no mercado de aplicativos do Armband
Myo, representando 39% do total de aplicativos (https://market.myo.com/). Esses
projetos foram criados para atender a integração dos controles originados pelo Armband
com os softwares de produção e com softwares de apresentação.
Os softwares de produção atendem principalmente a área de programadores e
designers. As ferramentas permitem a integração com softwares de programação, como
o “SublimeText Connector” (https://market.myo.com/app/55bbd712e4b0a4d28fe2a279-
/sublimetext-connector), que adapta os comandos padrões do Armband Myo com o
software SublimeText para realizar funções como alterar as opções do menu, descer ou
subir o texto, acelerando o modo com que o usuário pode realizar essas ações e de
forma simples. Já o “Rhinoceros Controller”
(https://market.myo.com/app/549ca27fe4b03603dc2c69e8/rhinoceros-controller) é uma
ferramenta que adapta os comandos padrões do Armband Myo com o software de
design 3D Rhinoceros. Com essa ferramenta, sobretudo designers 3D podem utilizar o
bracelete para controlar o ângulo de visão do objeto em que está sendo trabalhado, o que
deixa o objeto menos virtual, já que é possível controlá-lo com o movimento da mão e
do braço, ao invés de usar um mouse. Além de ferramentas para softwares exclusivos
para a área, também há ferramentas para integração com o e-mail, como o “Mailbox
Gestures” (https://market.myo.com/app/54aaa506e4b090ea5683e2bf/mailbox-gestures),
e com o gerenciador de tarefas trello, com o “Trello Connector”
(https://market.myo.com/app/5494aa43e4b009360b85a97b/trello-connector). Esses
aplicativos dão o controle ao usuário de passar por e-mails ou tarefas utilizando os
gestos reconhecidos.
12
Figura 6 - Ferramentas desenvolvidas para produção (https://market.myo.com/)
As aplicações de integração com os softwares de apresentação são de grande
auxílio para os usuários do Armband Myo que precisam fazer alguma apresentação em
algum instituto de ensino ou trabalho, acabando com a necessidade de passar slides pelo
computador, ou do uso de um equipamento eletrônico de pointer. Através das poses
padrões do bracelete, o usuário é capaz de passar slides, dar zoom em determinada
sessão e até mesmo criar uma fonte luminosa na apresentação, como a do pointer. As
ferramentas no mercado de aplicativos são adaptadores para cada um dos softwares de
apresentação terem as funcionalidades apresentadas.
Figura 7 - Ferramentas de apresentação (https://market.myo.com/)
2.3.3 – Projetos de Conectividade
Os projetos de conectividade do mercado de aplicativos do Armband Myo
representam 8% de todos os aplicativos (https://market.myo.com/). Os aplicativos
contêm ferramentas de conexão com robôs, aeromodelos e modelos automotivos.
Na área de controle de robôs, uma das opções do mercado de aplicativos é o
“EZ-ROBOT”, um software que associa o controle de um mini robô com diversos
comandos, inclusive comandos enviados pelo Arduino Myo
13
(https://market.myo.com/app/54986643e4b009360b85a9d3/ez-builder). O software é
configurado pelo próprio usuário, então cada usuário escolhe quais ações pré-
programadas serão executadas de acordo com cada gesto reconhecido pelo bracelete.
Além dos aplicativos para robôs oferecidos no mercado de aplicativos da
Thelmic Labs, estudantes da universidade de Brighton, no Reino Unido, também
fizeram um estudo baseado na utilização do Armband Myo para o controle do robô
veicular Husky, também criado pelos alunos.
O aplicativo “Myo + Parrot 3.0” é capaz de controlar tanto drones, quanto
modelos automotivos da marca Parrot versão 3.0
(https://market.myo.com/app/559ec0cee4b0f2c8982c9164/myo--parrot-30). Ele
funciona em smartphones com sistemas operacionais Android ou iOS e utiliza dos
gestos padrões para controlar a altitude, a direção e os movimentos do braço para
locomover os veículos. Além deste aplicativo, existem outros também específicos para
cada veículo com controle através do Armband Myo similar.
Figura 8 - Aplicativos de Conectividade (https://market.myo.com/)
2.3.4 – Projetos médicos e sociais
Da mesma forma que este trabalho, universidades e a própria Thelmic Labs
procuram soluções no âmbito médico e social utilizando o Armband Myo. Um artigo
publicado pelo departamento de ciência da computação e de engenharia de software da
universidade de Cantuária, no Reino Unido, testou a utilização do Armband Myo para
controle de próteses através de um método não invasivo e mais barato. Como conclusão,
foi analisado que o Armband Myo não foi suficiente para o controle total de uma
prótese de mão (Abduo e Galster, 2015). Apesar disso, os acadêmicos consideraram que
14
o projeto foi um sucesso já que foram capazes de realizar tarefas mais simples com o
dispositivo.
A Thelmic Labs também realizou experimentos da utilização do Armband Myo
para o controle de próteses para amputados (http://www.cbc.ca/news/canada/kitchener-
waterloo/johnny-matheny-robotic-arm-uses-thalmic-labs-armband-1.3334199). O
resultado do experimento foi considerado um sucesso, já que o usuário, que era
amputado acima do cotovelo, conseguiu realizar o controle de sua prótese, sendo capaz
de segurar e largar objetos, como uma bola de borracha.
Figura 9 - Testes do Armband Myo com prótese (http://www.cbc.ca/news/canada/kitchener-waterloo/johnny-matheny-robotic-arm-uses-
thalmic-labs-armband-1.3334199)
15
Capítulo 3
O Arduino
O Arduino é uma plataforma de integração de hardware e software opensource.
Ele é composto por uma placa eletrônica com um microcontrolador programável através
de linguagens de programação com diversas portas de entrada e saída de dados. Capaz
de integrar componentes eletrônicos, como botões, LEDs, sensores, portas de internet,
receptores de rádio, entre outros e de forma barata, o Arduino é objeto de muitos
projetos acadêmicos, pessoais e empresariais de automação e de Internet das Coisas.
3.1 – Características técnicas
As placas do Arduino (https://www.arduino.cc/) são na maior parte das vezes
compostas por um microcontrolador Atmel, baseado na arquitetura AVR; uma memória
Flash, uma memória SRAM e uma memória EEPROM; pinos de entrada e saída de
dados digitais e de dados PWM; pinos de entrada de dados analógicos; suportando
tensões de 7 a 12 Volts e operando com tensões de 3 e 5 Volts e correntes de 20 a 50
mA (https://www.arduino.cc/en/Products/Compare). Essas placas têm diversos
modelos, características e tamanhos para atender da melhor forma o usuário.
3.1.1 – Arduino Uno
A placa mais utilizada e documentada dos Arduinos é o Arduino Uno
(https://www.arduino.cc/en/Main/ArduinoBoardUno). Com o comprimento de 68,6
mm, largura de 53,4 mm e massa de 25 g, é uma placa com capacidade de realizar
projeto em diferentes áreas por sua versatilidade e características multifuncionais.
Seu processador é o ATmega328P (Atmel Datasheet), com 16 MHz de clock, 32
KB de memória Flash, 2 KB de memória SRAM e 1 KB de EEPROM; possui 8 pinos
de entrada e saída de dados digitais, 6 de dados PWM, e 6 entradas de dados analógicas.
Para a comunicação com o computador ou para a alimentação da placa, possui uma
16
conexão USB tipo B e a alimentação também pode ser realizada por um cabo Jack com
tensão DC de 7 a 12 Volts (https://www.arduino.cc/en/Main/ArduinoBoardUno).
O preço encontrado no mercado americano varia de US$ 9,00 para as versões
genéricas com as mesmas características até US$ 20,00 (https://www.amazon.com/). Já
no mercado brasileiro, o preço varia de R$ 50,00 até R$ 120,00
(http://www.filipeflop.com/ e http://www.mercadolivre.com.br/).
Figura 10 - Placa Arduino Uno (https://www.arduino.cc/en/Main/ArduinoBoardUno)
3.1.2 – Arduino Nano e Arduino Mini Com o foco voltado ao tamanho, para realizar a integração com objetos menores
do dia a dia foram criadas as placas Arduino Nano
(https://www.arduino.cc/en/Main/ArduinoBoardNano) e Arduino Mini, sendo o
Arduino Mini uma versão mais compacta do Arduino Nano, sem os pinos de cada porta
previamente soldados e sem um conector serial para USB instalado na placa, o que
torna necessário um módulo de adaptação para realizar os downloads do código
(https://www.arduino.cc/en/Main/ArduinoBoardMini). O Arduino Nano possui 45 mm
de comprimento, 18 mm de largura e uma massa de 7 g. Já o Arduino Mini possui o
comprimento de 30 mm e a largura de 18 mm.
O Arduino Nano é uma placa compacta com características similares ao Arduino
Uno, possui um processador baseado no ATmega 328 (Atmel Datasheet), com 16 MHz
de clock e, ao invés de um USB tipo B para realizar a comunicação com o computador e
a alimentação, possui uma entrada Mini-USB tipo B. Para realizar a entrada e saída de
dados, possui 22 pinos para dados digitais e 6 pinos para dados PWM. Já para entrada
17
de dados analógicos, possui 8 pinos. Diferentemente do Arduino Uno, que possui
pinagem do tipo fêmea, os pinos do Arduino Nano são do tipo macho. Possui 32 KB de
memória Flash, 2 KB de memória SRAM e 1 KB de memória EEPROM. O Arduino
Nano opera com tensões de 3 a 5 V e corrente de 40 mA por pino de obtenção de dados.
Para a sua alimentação, suporta tensões de 7 a 12 V.
O preço do Arduino Mini, no mercado americano é próximo a US$ 15,00,
enquanto o valor do Arduino Nano flutua próximo a US$ 36,00
(https://www.amazon.com/). No mercado nacional, existem versões genéricas com as
mesmas funcionalidades. Para o Arduino Mini, o valor é próximo a R$ 23,00 e, para o
Arduino Nano, o valor se mantém próximo a R$ 32,00 (http://www.filipeflop.com/ e
http://www.mercadolivre.com.br/).
Figura 11 - Arduino Nano Figura 12 - Arduino Mini
(https://www.arduino.cc/en/Main/ArduinoBoardNano) (https://www.arduino.cc/en/Main/ArduinoBoardMini)
3.1.3 – Arduino Mega
O Arduino Mega é a placa do Arduino projetada para projetos mais complexos,
como controle robótico e impressoras 3D
(https://www.arduino.cc/en/Main/ArduinoBoardMega2560).
A placa possui praticamente a mesma largura que o Arduino Uno, com 53,3
mm, mas um comprimento quase 50% maior, com 101,52 mm. Sua massa também é
quase 50% maior, possuindo 37 g. Sua proporção é deste tamanho para atender o
18
número de portas existentes, sendo 39 portas de entrada e saída de dados digitais, 15
portas de entrada e saída de dados PWM e 16 portas de entrada de dados analógicos.
O processador da placa é o ATmega2560 (Atmel Datasheet), com 16 MHz de
clock. A placa possui 256 KB de memória Flash, 8 KB de memória SRAM e 4 KB de
memória EEPROM. A tensão de operação das portas de entrada e saída de dados é de 3
a 5 V, suportando correntes de 20 a 50 mA. Para a alimentação do Arduino Mega, são
suportadas tensões de 7 a 12 V.
O preço da placa encontrada no mercado americano está em torno de US$ 39,00
(https://www.amazon.com/) e, no cenário nacional, o preço da placa está em torno de
R$ 80,00 (http://www.filipeflop.com/ e http://www.mercadolivre.com.br/).
Figura 13 - Arduino Mega
(https://www.arduino.cc/en/Main/ArduinoBoardMega2560)
3.2 – A configuração da placa
O Arduino IDE é o software opensource do Arduino idealizado para os
desenvolvedores e projetistas criarem os seus respectivos códigos e realizarem o upload
destes para a placa Arduino. O sistema é suportado tanto em Windows, quanto em Mac
e em Linux e é estruturado de forma a oferecer ao desenvolvedor um editor de texto, um
compilador com interface de resposta, um guia de exemplos de códigos e, além disso,
possa transferir os comandos para a placa, tudo isso em um mesmo ambiente
(https://www.arduino.cc/en/Main/Software).
19
A linguagem de programação reconhecida pelo Arduino e seu compilador é
baseada nas linguagens C e C++, de forma que o código C é totalmente compatível com
o código da IDE do Arduino, que possui também algumas funções orientadas a objeto.
Os códigos do Arduino são divididos em três sessões principais: a estrutura, os valores e
as funções.
A estrutura do código começa separando duas funções principais para o
programa: Setup e Loop. A função Setup é executada uma vez automaticamente ao
Arduino ser ligado e pode voltar a ser executada, caso seja realizada uma referência
para a mesma. Esta função serve para realizar a configuração das portas utilizadas e
inicializar variáveis utilizadas pelo sistema. Já a função Loop, é uma função que é
executada repetidas vezes, enquanto o sistema está ligado. Sempre que a função chega
ao fim, volta a ser executada pelo início. Esta função serve para realizar o controle do
sistema, analisando as novas entradas recebidas e efetuando alterações nas portas de
saída. Além das funções Setup e Loop, a sessão de estrutura também está relacionada à
sintaxe do código e ao controle de estrutura, como iterações, operações aritméticas,
lógicas e com ponteiros; e sintaxe de relacionamento com bibliotecas e de comentários
de código; que são as mesmas às utilizadas pela linguagem C
(https://www.arduino.cc/en/Reference/HomePage).
20
Figura 14 - Arduino IDE e a estruturação
Os valores são uma sessão dividida entre constantes e variáveis. As constantes,
além das utilizadas pela linguagem C, também correspondem às variáveis utilizadas
para relacionar entradas e saídas de dados, como as constantes INPUT e OUTPUT,
além de constantes relacionadas a valores lógicos, como HIGH, que corresponde ao
valor lógico 1 e a tensões maiores que 3V, e LOW, que corresponde ao valor lógico 0 e
a tensões menores que 2V. Já as variáveis, são todas relacionadas às variáveis da
biblioteca C com adição da variável String, presente na biblioteca C++.
A sessão de funções está relacionada às ferramentas de entrada e saída de dados,
além de tratamento matemático, trigonométrico, lógico e binário e de verificação de
caracteres obtidos pelo sistema. Algumas dessas funções também estão presentes na
biblioteca C e C++, além de outras funções já relacionadas à parte eletrônica do sistema.
21
Figura 15 - Exemplos no Arduino IDE
3.3 – Projetos Sociais
O Arduino, por ser uma ferramenta de baixo custo e de inúmeras possibilidades
de desenvolvimento, possui projetos realizados em diversos ramos de estudo, inclusive
o ramo de projetos sociais e projetos voltados à saúde. Pelo grande número de
desenvolvedores, o número de projetos também é elevado, o que leva a uma quantidade
grande de criações e ideias novas.
Alguns desses projetos também realizam estudos sobre o uso de
microcontroladores Arduinos para realizar projetos voltados à deficientes físicos, como
é o caso do protótipo de auxílio à prática de natação para pessoas com deficiência visual
(Medeiros at al., 2013). Nesse projeto foi implementado por meio de um Arduino,
emissores e receptores de luz infravermelha e de motores vibratórios um mecanismo de
auxílio a deficientes visuais que possa substituir ao tapper, que é utilizado hoje para
avisar a um praticante de natação e deficiente visual quando que este se aproxima à
borda da piscina.
Outro projeto voltado a deficientes físicos utilizando a Arduino é a Lixeira
Automatizada (Almeida at al., 2016). Este projeto elaborou um dispositivo que utiliza
um Arduino e um Servo Motor, automatizando o levantamento da tampa da lixeira e
evitando o contanto de um cadeirante com a mesma, aumentando o conforto e
impedindo a contaminação de bactérias.
22
Como uma forma de solucionar o problema de deficientes visuais não
reconhecerem o alfabeto romano, impedindo que muitas vezes não sejam capazes de
assinar o próprio nome em documentos, foi criado o projeto de reconhecimento deste
alfabeto por meio de uma placa de estimulação tátil controlada por um Arduino (Vidal
at al., 2015). Neste dispositivo o usuário tem sete botões de entrada de dados para que
possa inserir a letra em braile e assim receber no sensor tátil a letra correspondente no
alfabeto romano.
Figura 16 - Protótipo da lixeira automatizada (Vidal at al., 2015)
23
Capítulo 4
Desenvolvimento do Projeto
O desenvolvimento do projeto de integração do Armband Myo com o Arduino
para o auxílio de portadores de necessidades especiais inicializou com o planejamento
da interface do usuário, a fim de dispor de um jeito simples as opções do sistema e um
método de como o usuário seria capaz de navegar por entre elas.
Após a criação da interface do usuário, foram verificadas as maneiras de
controle de cada elemento do ambiente. Os equipamentos foram testados
individualmente e, separadamente, foram criadas soluções para cada um deles.
Por fim, foi testado o meio de comunicação entre os módulos de controle de
equipamento e o centro de comando utilizado pelo usuário.
4.1 – Dispositivo de interface do usuário
Como soluções para o controle dos equipamentos via Armband Myo, foram
planejados dois métodos de interface para o usuário. O primeiro método foi utilizar cada
gesto reconhecido pelo Armband para controlar um dispositivo específico. Desta forma,
o usuário teria um controle rápido de cada equipamento, bastando fechar os dedos para
acender e apagar as luzes ou virar o braço para controlar a tv. O segundo método foi de
utilizar um menu através um painel de LCD, em que os gestos reconhecidos pelo
Armband fossem capazes de navegar. Assim, ao virar o braço o usuário poderia mudar a
opção selecionada, ao fechar a mão, escolher uma opção, ou ao esticar os dedos, voltar
para o menu principal.
Apesar de ser um método de controle mais lento que o primeiro e a necessidade
de um painel em LCD, foi escolhida a implementação do modelo de menu. Com este
modelo o usuário tem à sua disponibilidade mais opções de ação, não se limitando ao
número de gestos reconhecidos pelo sistema. Além do menu, para cada equipamento foi
criado um submenu, para que o usuário pudesse mandar comandos mais precisos para
cada equipamento, como a escolha de um canal na televisão, ou para fechar mais a
cortina. A escolha do segundo modelo, prioriza no projeto a quantidade de
24
equipamentos a serem controlados e a quantidade de opções em cada equipamento ao
invés da escolha da velocidade do controle de ação, pensando que o mais importante
para o usuário seria o acesso a este controle que é difícil ou privado, do que a um
controle limitado.
4.1.1 – Circuitos e módulos utilizados
A interface utilizada para o usuário necessita de algum retorno ao usuário para
que este saiba o que está sendo selecionado e o que cada comando utilizado irá realizar
em seguida. Portanto, foi utilizado um sistema de visor através de um visor LCD com
20 colunas e 4 linhas, capaz de informar a opção selecionada pelo usuário, a próxima e a
anterior.
O Display LCD utilizado é do modelo LCD 20x04 Blacklight Azul, com 98 mm
de comprimento, 60 mm de largura e 14 mm de altura e um visor de 76 mm x 26 mm
(Datasheet RT204-1). O módulo contém 8 pinos de transmissão e recepção de dados,
sendo possível utiliza-lo também com somente 4. Além destes, possui mais 8 pinos para
alimentação de 5 V e controle de brilho, que é utilizado por meio de um regulador de
tensão através de um circuito com potenciômetro. O seu preço no mercado brasileiro
está em torno de R$ 40,00 (http://www.filipeflop.com/).
Figura 17 - LCD 20x04
(http://www.filipeflop.com/)
25
4.1.2 – Diagrama
Figura 18 - Diagrama de blocos do microcontrolador central
O usuário utiliza o Armband Myo e tem as opções de fazer as poses de punho,
de abertura dos dedos, do aceno para fora e do aceno para dentro. O interpretador
analisa os comandos realizados pelo Armband e envia para o programa principal em que
pose que o Armband se encontra. O programa principal analisa o comando atual e, caso
o comando atual seja diferente do comando anterior, significa que o usuário executou
alguma ação.
Caso a ação seja da pose de punho e está sendo verificado o menu, é configurado
no programa principal a verificação de submenu, recebendo as informações das ações
possíveis de cada equipamento e passando-as ao usuário através do display LCD. Caso
esteja sendo verificado o submenu, é enviado o comando para o Arduino controlador
deste equipamento com o código referente ao comando a ser realizado.
Caso a ação seja de aceno para dentro ou para fora, o programa principal altera o
índice da opção atual e o envia para as opções de menu ou de submenu, dependendo dos
status do momento. Ao receber o comando ou equipamento recebido pelo menu,
informa ao usuário através do display LCD.
26
Se a ação do usuário for da abertura dos dedos, o menu principal configura a
opção de verificar o menu e retorna o índice ao seu valor inicial, informando ao usuário
as opções iniciais do menu.
4.2 – Dispositivo para controle da iluminação
Em qualquer ambiente, a iluminação tem papel fundamental para uma boa
qualidade de vida. A necessidade de ajuda para controlar a luminosidade de um
ambiente pode ser algo realmente desconfortável, então foi criado um dispositivo para
realizar esse controle.
4.2.1 – Circuitos e módulos utilizados
A lógica do dispositivo é a utilização de um circuito eletrônico utilizando um
controlador Arduino Mini ou Arduino Nano, para impactar minimamente no espaço
físico, junto com um relé que chaveia o circuito elétrico da lâmpada (SDR Datasheet). O
circuito eletrônico é energizado por meio da própria rede elétrica que está controlando.
O relé é configurado de forma Normal Fechado (NC), visando uma facilidade
para o usuário. Caso haja a perda do controle do circuito com o circuito no modo
Aberto, basta reiniciar o sistema para que se tenha o controle manual comum.
O módulo de relé utilizado já vem com o circuito de controle do transistor
previamente soldado, necessitando apenas de entradas digitais para o reconhecimento
do estado. Sua largura é de 34 mm, o seu comprimento de 27 mm e sua altura de 17
mm. A tensão máxima de carga é de 240 VAC e sua corrente máxima de carga de 10 A.
O seu preço é em torno de R$ 9,00 no mercado brasileiro (http://www.filipeflop.com/).
27
Figura 19 - Modulo de relé SDR utilizado (http://www.filipeflop.com/)
4.2.2 – Diagrama
Figura 20 - Diagrama de Blocos do Microcontrolador da Iluminação
O Arduino responsável pelo controle da iluminação tem dois blocos para fazer a
atuação sobre o relé. No primeiro bloco, o Arduino espera alguma mensagem ser
recebida pelo receptor. Como todos os comandos enviados são enviados pelo mesmo
canal, ao receber uma mensagem, é necessária uma verificação do conteúdo para saber
se a mensagem se destina a este Arduino ou a outro.
Sendo a mensagem destinada a este microcontrolador, o verificador da
mensagem recebida envia o comando para o interpretador de comandos que,
dependendo do código enviado, atua sobre o relé abrindo ou fechando seu circuito.
28
4.3 – Dispositivo para controle da televisão
A televisão, além do computador e de dispositivos móveis, que já são
controlados pelo Armband Myo por meio de aplicativos, é um dos meios de
entretenimento mais comuns em uma residência ou quarto hospitalar. Efetuar o controle
do volume do aparelho e do canal assistido transforma o usuário em uma pessoa
independente para se ter diversão no dia a dia.
Para realizar o controle do aparelho de televisão, foram selecionadas as funções
mais utilizadas pelo controle remoto: ligar/desligar o aparelho, aumentar e diminuir o
volume, subir e descer um canal. Afim de realizar essas funções, foi criado um circuito
verificador de código de envio capaz de capturar os comandos enviados do controle
remoto para a televisão. Com os códigos de envio capturados, estes mesmos códigos
foram utilizados em outro circuito, com um LED infravermelho que, ao enviar os
códigos configurados, atuava da mesma maneira que o controle remoto.
Apesar de serem circuitos simples de se montar, os sinais enviados de cada
fabricante de televisão são diferentes entre si, o que gera a necessidade de, para cada
aparelho de televisão de fabricantes diferentes utilizado pelo usuário, realizar a captura
dos sinais enviados pelo controle remoto e configurar no circuito de envio.
4.3.1 – Circuitos e módulos utilizados
O circuito de verificação de códigos utiliza da integração de um Arduino com
um sensor receptor infravermelho (TL1838 Datasheet). O sensor tem três pinos de
conexão, um para o Vcc, outro para o GND e o terceiro para uma das entradas de dados
do Arduino. Quando é enviado um código infravermelho pelo controle remoto, o sensor
o envia para o microcontrolador que interpreta o sinal.
O valor desse sensor no mercado nacional está próximo a R$ 2,00 por unidade
(http://www.eletrogate.com). Suas dimensões são de 30 mm de comprimento e 5 mm de
largura.
Para enviar os comandos para a televisão, é utilizado um LED que atua na faixa
de frequência da luz infravermelha, que é conectado à saída de dados do Arduino e a um
resistor que se liga ao GND, para que envie os comandos através da fonte luminosa
(TSAL6100 Datasheet).
29
O valor do LED infravermelho no mercado nacional está próximo a também R$
2,00 por unidade (http://www.filipeflop.com/).
Figura 21 – Sensor TL1838 e LED TSAL6100 infravermelhos (http://www.eletrogate.com)
4.3.2 – Diagrama
Figura 22 - Diagrama de blocos do microcontrolador da TV
O Arduino controlador do aparelho de televisão tem três blocos para realizar o
controle. O primeiro bloco é similar ao bloco de verificação utilizado para o controle da
iluminação, alterando somente a configuração para detectar os comandos enviados para
o controle da TV.
A diferença entre blocos de interpretação dos comandos está no modo de
atuação. O bloco interpretador de comandos do microcontrolador da TV, ao receber a
mensagem, envia um fluxo de mensagens para o LED infravermelho, transmitindo
mensagens previamente configuradas que atuam no receptor infravermelho do aparelho
de televisão.
30
4.4 – Dispositivo para controle da TV por assinatura
Complementando o dispositivo para realizar o controle das funções do aparelho
de televisão, foi implementado outro dispositivo capaz de controlar as funções da TV
por assinatura.
Apesar de não ser tão comum nas casas de brasileiros como a televisão aberta, a
televisão por assinatura, para quem tem a possibilidade de fazê-lo, é uma fonte de
entretenimento de fundamental controle, tornando este dispositivo importante para que
o dispositivo do controle do aparelho de televisão não seja implementado somente nas
casas de pessoas sem a assinatura.
Como a televisão por assinatura possui muitos canais a mais que a televisão de
canal aberto, podendo a chegar a centenas, trocar de canal escolhendo o próximo ou o
anterior poderia se tornar algo cansativo e ineficiente em alguns casos. Para solucionar
esse problema, foi criada uma opção complementar: a escolha de um canal favorito. O
canal favorito é uma opção que se inicializa no sistema como não configurada e, ao
usuário selecionar pela primeira vez, ele define um canal que é gravado na memória do
programa. Com o canal favorito já configurado, o usuário, quando seleciona esta opção
do menu, é enviado para um submenu que tem as opções de acessar o canal configurado
ou reconfigurar o canal.
O método para descobrir o código enviado pelo controle remoto para o
equipamento de televisão por assinatura foi o mesmo utilizado para o dispositivo de
controle do aparelho de televisão.
31
4.4.1 – Diagrama
Figura 23 - Diagrama de blocos do microcontrolador do aparelho de TV por assinatura
O diagrama de blocos do Arduino controlador do aparelho de televisão por
assinatura tem apenas uma diferença com relação a estrutura do Arduino controlador do
aparelho de TV. A diferença é na mensagem recebida do Arduino central, que pode
estar contendo mais de um código de controle na mesma mensagem transmitida. Para
tratar essa diferença de funcionamento, o bloco verificador de mensagem recebida
percorre toda a mensagem e vai enviando para o interpretador de comandos cada um
dos códigos até o fim da mensagem.
4.5 – Controle do Ar Condicionado
Um equipamento eletrônico ligado à qualidade de vida principalmente em um
país tão quente quanto o Brasil é o ar condicionado, ou o ventilador. Um equipamento
que para ser mais eficiente deve ser instalado nos lugares mais altos do cômodo,
tornando difícil acesso para portadores de necessidades especiais motoras. Além da
32
possibilidade de controle remoto, é possível o controle pelo Armband Myo, dando aos
usuários a capacidade de se refrescarem sem necessitar do auxílio de outras pessoas.
Como são aparelhos com modelos muito distintos, o dispositivo de controle do
ar condicionado/ventilador não segue um modelo padrão, existindo duas formas para
realizar o controle. A primeira forma é utilização do circuito com um relé, como o
módulo de controle da iluminação. Essa forma é voltada para ventiladores e aparelhos
de ar condicionado mais antigos, sem controle via controle remoto. Assim, o Armband
Myo é capaz de controlar o chaveamento do relé que, por sua vez, conecta ou
desconecta o circuito de alimentação do aparelho, ligando ou desligando. A segunda
forma de controle é a utilização do circuito com um LED infravermelho, como o
módulo do aparelho de televisão e da tv por assinatura. Esta forma é focada nos
aparelhos mais modernos com controle via controle remoto, o que torna capaz a análise
do código enviado pelo controle com o sensor infravermelho e o envio do código
aprendido com o circuito utilizando o LED com espectro de luz infravermelha.
4.6 – Controle da Cortina
O último item a ser controlado via Armband Myo é a cortina, ou a persiana.
Outro meio capaz de controlar a iluminação do ambiente, dando maior conforto para
uma noite mais tranquila, diminuindo o calor de um dia com sol forte à janela, ou capaz
de providenciar vistas deslumbrantes, a cortina está totalmente correlacionada à
qualidade de vida ao dia a dia de uma pessoa.
Para abrir e fechar a cortina, um usuário com mobilidade reduzida pode ter
muita dificuldade para se locomover até a corda, assim como para ter força ou o jeito de
manejar a corda de controle. O dispositivo para realizar o controle da cortina fornece
aos usuários as opções básicas de fechar e abrir uma parte da cortina, permitindo ao
usuário o controle da quantidade de luz incidente no ambiente.
O controle da cortina é realizado por um microcontrolador que se conecta a um
servo motor (43R Servo Datasheet), encaixado e preso por meio de uma estrutura
montada, que movimenta a engrenagem da cortina. O motor é acionado por um
determinado intervalo de tempo e depois para, esperando um novo comando. Para
alimentar o circuito, o sistema deve ser conectado a uma fonte DC de 9 a 12 V. Uma
bateria não seria recomendada porque o motor consome muita energia e a troca seria
necessária em um intervalo curto de tempo.
33
4.6.1 – Circuitos e módulos utilizados
O microcontrolador utilizado no circuito é um Arduino Nano ou um Arduino
Mini, para impactar minimamente no tamanho e no peso para montar a estrutura
conectada à cortina.
O motor utilizado para movimentar a engrenagem da cortina é um Servo Motor
de 360º(43R Servo Datasheet). Capaz de 60 rotações por minuto e um torque de
3,3km/cm quando alimentado por uma porta de 5 V do Arduino. Consegue operar de
4,5 V até 6 V e tem dimensões de 42 mm de comprimento, 39,5 mm de largura e 20,5
mm de altura. Tem uma massa de 44 g e acompanha uma hélice de 6 dentes para
realizar o encaixe com a engrenagem.
O preço do Servo Motor de rotação contínua no cenário nacional está em torno
de R$ 70,00, já o preço da fonte de 9V com alimentação de 2 A está em torno de R$
15,00.
Figura 24 - Servo Motor com hélice de 6 pontas
34
4.6.2 – Diagrama
Figura 25 - Diagrama de blocos do microcontrolador da cortina
O diagrama de blocos do Arduino controlador da cortina segue o mesmo modelo
dos microcontroladores de execução. A diferença nesse caso é a utilização de um bloco
de temporização. Este bloco atua sobre o interpretador de comandos que liga ou desliga
a tensão sobre o Servo Motor. Assim, a engrenagem da cortina só gira por um
determinado intervalo de tempo previamente configurado, permitindo o controle de
vários níveis de comprimento da cortina.
4.7 – Comunicação entre Arduinos A comunicação entre os microcontroladores é fundamental para que o Armband
Myo, que é a conexão entre os microcontroladores, o usuário e os módulos
controladores de dispositivos sejam integrados.
As conexões entre os módulos de controle devem ser feitas de modo que facilite
a implementação da solução no cômodo. Deve-se utilizar uma comunicação sem fio,
para não precisar passar cabeamento por todo o ambiente, que seja capaz de atender as
limitações da distância de um quarto.
As comunicações sem fio para o Arduino são de três tipos. Uma comunicação
via wifi, interligando os dispositivos por meio de redes IP; uma comunicação via
Bluetooth, uma conexão de menor consumo energético e ponto a ponto; e uma conexão
via rádio, mais barata, mas com módulos diferentes para envio e recepção de dados.
Como não é necessário nenhum envio de dados entre os dispositivos atuadores nos
35
equipamentos eletrônicos para o dispositivo de contato com o usuário, foi escolhida a
comunicação via rádio para baratear os custos da solução.
4.7.1 – Circuitos e módulos utilizados
Para a implementação do transmissor de dados em rádio frequência foi utilizado
o módulo de circuito sem fio MX-FS-03V (MX-FS-03 Datasheet). Capaz de enviar
dados modulados em amplitude na frequência de 433 MHz a uma distância de até 200
m, o transmissor tem a potência de transmissão de 10 mW, operando entre 3,5 e 12 V e
sendo capaz de transmitir os dados com uma taxa de 4 KB/s. Possui o comprimento e a
altura de 19 mm e a largura de 7 mm, com somente um pino para a recepção de dados
do Arduino e mais dois para o GND e VCC.
O módulo de recepção utilizado foi o MX-05V (MX-05V Datasheet), que
complementa o módulo de transmissão. Este opera com a tensão de 5 V e uma corrente
de 4 mA, tendo a frequência de recepção de 433 MHz com uma sensibilidade de 105
dB. Suas dimensões são de 30 mm de comprimento, 7 mm de largura e 14 mm de
altura, com dois pinos para transmissão de dados para o Arduino e mais dois para o
GND e VCC.
O valor do par de transmissor e receptor no mercado nacional está em torno de
R$7,00 a R$ 12,00, sendo difícil de encontrar uma venda separada.
(http://www.filipeflop.com/)
Figura 26 - Módulo Transmissor e Receptor em RF (http://www.filipeflop.com/)
36
Capítulo 5
Resultados e discussão 5.1 – Controle dos equipamentos
Os resultados mais diretamente encontrados são os resultados do controle de
cada equipamento disposto a se estudar. Alguns deles sendo mais precisos e estáveis,
outros precisando de ajustes mais finos para que ocorresse o funcionamento.
Os melhores resultados encontrados foram no controle da iluminação e no
controle da televisão por assinatura. O controle da iluminação, por ser apenas o controle
do chaveamento de um relé, acabou sendo um item mais estável, já que a conexão entre
o microcontrolador e o relé era direta e não dependia da interpretação de sensores para o
reconhecimento dos comandos. O controle da televisão por assinatura, apesar de
depender da comunicação do LED infravermelho com o sensor receptor de luz
infravermelha do aparelho de TV por assinatura, apresentou melhores resultados porque
os códigos utilizados pela NET, a televisão por assinatura estudada neste protótipo, são
codificados com 32 bits pelo padrão da empresa japonesa NEC, que permitiu a
utilização da biblioteca opensource para o Arduino IRremote
(https://github.com/z3t0/Arduino-IRremote). Com essa biblioteca, se é capaz de enviar
e receber sinais infravermelhos em diferentes padrões conhecidos, entre eles, o NEC
(http://www.sbprojects.com/knowledge/ir/nec.php).
Para o controle das funções do aparelho de televisão e do ar condicionado, os
resultados foram mais complicados de se conseguir. A televisão utilizada foi da marca
Buster e o aparelho de ar condicionado da marca Eletrolux. Esses equipamentos, ao
contrário do aparelho da NET, não utilizavam padrões mundiais já configurados na
biblioteca IRremote. Para solucionar esse problema, foi utilizada a mesma biblioteca,
mas sem a utilização de padrões de comandos. Esta biblioteca permite a captura da
sequência de pulsos de luz infravermelha modulados em 38 KHz, que são salvos em um
vetor. Cada código tem seu vetor específico salvo na memória Flash do Arduino e
quando o comando é escolhido, a mesma sequência capturada previamente é enviada
37
pelo LED infravermelho, permitindo a captura e processamento da mensagem pelo
receptor infravermelho do aparelho a ser controlado.
O controle da cortina também teve resultados bons, mas que dependeram de
grandes ajustes precisos para que a estrutura fosse montada. A necessidade de o motor
estar precisamente conectado à engrenagem que é responsável pela movimentação da
cortina foi a causa de todo o ajuste. Além disso, foi necessário um suporte como
contrapeso para equilibrar o conjunto, devido à grande movimentação do motor ao ser
ligado. Apesar de toda a dificuldade de montar a estrutura, esta serviu de apoio para o
circuito de controle do Arduino, deixando o conjunto estável e, se preso corretamente ao
teto, sem maiores riscos de desmontar.
Figura 27 - Cortina com o Sistema do Servo Motor montado
A maior dificuldade nos sistemas de controle dos equipamentos foi na
alimentação. A ideia de fazer circuitos que não necessitem de trocas habituais de
bateria, levou à necessidade de haver uma fonte conectada à tomada para a alimentação
dos circuitos controladores. No caso do circuito controlador da iluminação, este
problema foi irrelevante, para os controladores da TV e da TV por assinatura também
teve impactos pequenos, devido à necessidade de uma proximidade à alimentação
elétrica. No caso do controle do ar condicionado, em alguns casos a alimentação é feita
através de um circuito dedicado ao aparelho e em muitas vezes o aparelho fica próximo
ao teto, o que dificultam as chances de haver alimentações elétricas por perto. Como
esse circuito é composto pelo Arduino, por um receptor em rádio frequência e por um
LED infravermelho, o seu consumo é mais baixo comparado aos demais controladores,
38
sendo levada em consideração a chance de realizar a alimentação por baterias, já que
não necessitariam da troca com uma frequência tão alta a ponto de impactar na solução.
O circuito com maiores problemas foi o de controle da cortina. Por não ser um
equipamento elétrico, ficar na altura do teto e ser o circuito que mais consome energia,
por causa da utilização do Servo Motor, a dificuldade de chegar a alimentação do
circuito foi um dos grandes desafios a serem resolvidos.
5.2 – Melhorias tecnológicas
O Arduino controlador central do sistema do quarto inteligente e o meio de
interface com o usuário conseguiu realizar todas as suas funções propostas. Quando
utilizado o Arduino Uno, com a versão atual foi utilizada mais de 95% da memória
RAM disponível no equipamento. Apesar disto não ter impactado na performance, é um
fator que limita a possibilidade de novos avanços em versões posteriores. Quando
testado com o Arduino Mega, o resultado também foi um sucesso na performance e o
problema da memória não se mostrou impactante para as próximas versões, permitindo
o estudo do controle de novos utensílios domésticos e do controle mais completo dos
aparelhos já estudados nesta versão.
Um dificultador do sistema utilizando o Arduino como controlador central foi a
necessidade de junto ao Arduino ser necessário um computador com sistema
operacional Windows ou Mac. Esse computador era necessário para executar o software
de recepção dos comandos do Armband Myo e, através de um programa de integração
entre o Armband e o Arduino, passar via cabo USB os dados obtidos para o processador
do Arduino. Para resolver essa necessidade, já foi estudada a substituição do
microcontrolador central utilizando o Arduino por um que utilize o microcontrolador
Raspberry Pi 3 (https://www.raspberrypi.org/products/raspberry-pi-3-model-b/).
O Raspberry Pi 3 é um microcontrolador mais potente e um pouco diferente do
Arduino. Possui um processador de 1,2 GHz com 64 bits, quatro núcleos e com
arquitetura ARMv8, Wifi, de tecnologia 802.11n, e Bluetooth, versão 4.1 e de baixo
consumo de energia, já inclusos. Além disso, uma memória RAM de 1 GB, 4 portas
USB, uma porta HDMI, uma porta Ethernet e um conector de 3,5mm para áudio e vídeo
composto. Para sua alimentação é necessária uma fonte de tensão 5 V e corrente de 2 A.
O Raspberry Pi é considerado um minicomputador porque tem um encaixe para um
cartão micro-SD, em que podem ser instalados diversos sistemas operacionais, a
39
maioria baseados em Linux. Assim como o Arduino, também possui pinos para a
entrada e saída de dados, que o tornam capaz de se comunicar com outros
microcontroladores e com circuitos eletrônicos. O Raspberry Pi 3 possui 40 pinos,
sendo 26 para a entrada e saída de dados e os outros 14 para a alimentação dos circuitos.
O preço do Raspberry Pi 3, no mercado nacional, está em torno de R$ 300,00. Enquanto
isso, no mercado americano, o microcontrolador tem o preço no entorno de US$ 35,00.
Figura 28 - Raspberry Pi 3
(https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)
Com essas características, torna possível a comunicação entre o Raspberry Pi e
os outros Arduinos através de códigos em rádio frequência. Porém, é necessário um
novo estudo para realizar esse controle, já que a programação para o Raspberry Pi não
utiliza das mesmas funções das do projeto para o Arduino. Para realizar a comunicação
com o Armband Myo também há uma nova dificuldade. Como o software de
comunicação do Armband com o computador, por enquanto, é desenvolvido somente
para sistemas operacionais Mac e Windows, seria necessário usar uma adaptação já
criada em opensource para a implementação em sistemas Linux. Um benefício dessa
adaptação, é a possibilidade de uma maior utilização dos dados provenientes do
Armband Myo, já que os comandos não seriam mais restritos aos utilizados pela
aplicação de transferência de dados do computador para o Arduino.
40
5.3 – Preço
O preço do produto final é um grande impactante para a viabilidade do projeto
no mercado brasileiro e internacional. A seguir, é apresentado um resumo dos
equipamentos utilizados e o cálculo do preço do projeto.
Sensor Muscular
1 Armband Myo – US$ 199,00. No momento, em torno de R$ 620,00 +
Impostos, que podem chegar até mesmo ao valor do produto.
Microcontroladores
1 Arduino Uno + 5 Arduinos Nano/Mini – R$ 50,00 + 5 x R$ 30,00 =
R$ 200,00
Ou
1 Arduino Mega + 5 Arduinos Nano/Mini – R$ 80,00 + 5 x R$ 30,00 =
R$ 230,00
Ou
1 Raspberry Pi 3 + 5 Arduinos Nano/Mini – R$ 300,00 + 5 x R$ 30,00 =
R$ 450,00. Sendo considerada a importação do Raspberry Pi, o valor
pode diminuir cerca de R$ 100,00. Além disso, pode ser estudada a
viabilidade de utilizar versões mais simples do Raspberry Pi.
Módulos de controle e comunicação
1 Servo Motor – R$ 70,00
1 Emissor + 5 Receptores de códigos em rádio frequência – 5 x R$ 7,00
= R$ 35,00
1 Relé – R$ 9,00
3 LEDs Infravermelhos – 3 x R$ 2,00 = R$ 6,00
1 LCD 20x4 – R$ 40,00
Fontes de alimentação
5 Fontes para os Arduinos – 5 x R$ 15,00 = R$ 75,00
41
Calculando todos os módulos utilizados e desconsiderando equipamentos para a
soldagem e montagem do suporte da cortina, resistores e fios, além da mão de obra e da
eventual necessidade de utilizar um computador, o projeto utilizando o Arduino Uno ou
o Arduino Mega custaria em torno de R$ 1.335,00 e R$ 1.650,00. Já o projeto
utilizando o Raspberry Pi 3, custaria em torno de R$ 1.585,00 e R$ 1.900,00. Pode não
ser um projeto barato, considerando o valor do salário mínimo brasileiro, porém, um
possível apoio do governo para o abatimento de impostos e a compra de material em
atacado podem ser fatores que diminuam o preço do produto.
Orçamento sensor 620 imposto sensor 620 microcontrolador 300 módulos de controle e comunicação 160 fontes de alimentação 100
Total 1800
Tabela 1 – Estimativa de gastos
Figura 29 – Percentual de cada item de acordo com a estimativa de gastos
42
5.4 – Público alvo O público alvo do projeto, que são os portadores de deficiências motoras,
consegue por parte usar o dispositivo. O projeto não conseguiu atingir pessoas sem
ambos os braços, pessoas com paralisia e pessoas com a doença de Parkinson. Apesar
disso, nesta primeira versão, pessoas com um braço amputado, com ambos os braços
amputados até o cotovelo e pessoas com paralisia leve conseguem utilizar este
dispositivo afim de melhorar suas qualidades de vida.
Nas próximas etapas do projeto, visa-se estudar a utilização do Raspberry Pi
para implementar novas funções de reconhecimento dos gestos do usuário com
Armband Myo. Com essas novas funções, será possível o reconhecimento de gestos
mais simples, que até alguns tetraplégicos em tratamento são capazes de realizar. Além
disso, pode ser implementada uma função de filtragem dos sinais recebidos pela
transmissão do Armband Myo para o Raspberry Pi, assim sendo possível a melhor
utilização de pessoas portadoras da doença de Parkinson, que não são capazes de
controlar todo o movimento do braço. Poderia ser aplicado um filtro “passa-baixas”, em
que os sinais de baixa frequência representariam os sinais voluntários realizados pelo
usuário e os sinais em altas frequências, que seriam desconsiderados pelo filtro,
representariam os movimentos não voluntários do usuário, provenientes do sintoma das
mãos trêmulas da doença.
Esses dois públicos somados representam cerca de 350 mil pessoas no Brasil,
número que pode dar forças para a implementação do projeto no país.
Outra solução possível para os portadores de deficiência física, seria a utilização
de outro mecanismo mais barato de obtenção de dados provenientes de movimentos
voluntários dos usuários. Nesse caso, seria necessária a implementação de uma nova
forma de comunicação entre o mecanismo captador dos dados com o microcontrolador
central, mas a interpretação dos comandos e a comunicação com os módulos executores
podem ser reaproveitadas.
Será analisado, a partir do CIF, um público alvo mais limitado ao longo do
desenvolvimento futuro do projeto, para que possa se consolidar um produto mais
definido e a partir disso, realizar estratégias de marketing e de mercado para que o
produto chegue a este grupo.
43
Capítulo 6
Conclusões
Existe um problema na sociedade brasileira que é a dependência de muitos
deficientes físicos de familiares ou profissionais da saúde para realizar
atividades básicas do dia a dia, seja no quarto de casa ou em um quarto
hospitalar.
O Armband Myo é capaz de capturar os gestos de usuários e utilizá-los para
realizar controle sobre equipamentos domésticos, dando aos deficientes físicos
motores uma maior autonomia e, assim, promovendo melhor qualidade de vida
destes indivíduos.
Foi possível, por meio da utilização de microcontroladores Arduinos integrados
com LEDs emissores infravermelhos, relés e Servo Motores, controlar
equipamentos eletrônicos presentes num quarto domiciliar ou hospitalar.
Para aumentar o público capaz de se beneficiar com o projeto, é necessário um
estudo aprofundado para a utilização de uma maior quantidade de dados
provenientes do Armband Myo, incluindo usuários tetraplégicos e portadores da
doença de Parkinson.
O preço do projeto atualmente está em torno de R$ 1.335,00 e R$ 1.900,00,
sendo necessária a análise de alguma forma de barateamento para que a
comercialização do produto seja viável.
Durante o desenvolvimento do projeto foi possível aumentar o conhecimento
dos números de deficientes no país, além de me aprofundar em tecnologias
novas, como o Armband Myo e integrar com tecnologias já conhecidas como o
Arduino, com uma aplicação inovadora.
44
Referências
[1] MINISTÉRIO DA SAÚDE, Pesquisa Nacional de Saúde. P.23-33, 2013. Disponível em: <http://www.ibge.gov.br/home/estatistica/populacao/pns/2013/>.
[2] THELMIC LABS, Myo tech specs. Disponível em: <https://www.myo.com/techspecs/>.
[3] TECHREPUBLIC, Myo armband makes smartglasses hands free. Disponível em:
<http://www.techrepublic.com/article/myo-armband-makes-smartglasses-hands-
free/>
[4] COSENTINO, FERNANDO, Pyoconnect. Disponível em: <http://www.fernandocosentino.net/pyoconnect/>.
[5] THELMIC LABS, Download Myo Connect. Disponível em:
<https://www.myo.com/start>
[6] THELMIC LABS, Myo Developer. Disponível em:
<https://developer.thalmic.com/downloads>
[7] THELMIC LABS, Myo Market. Disponível em: < https://market.myo.com/>
[8] ALEEM IDRIS, Myosilk. Disponível em:
<https://market.myo.com/app/55955bf1e4b0f2c8982c90d9/myosilk>
[8] THALMIC LABS, Icarus Rising. Disponível em:
<https://market.myo.com/app/55392b70e4b02f8140d20a84/icarus-rising>
[9] THELMIC LABS, Myo. Disponível em: <https://www.myo.com/>
[10] DIMITRIS CHATZIPARASCHIS, SublimeText Connector. Disponível em:
<https://market.myo.com/app/55bbd712e4b0a4d28fe2a279/sublimetext-connector>
45
[11] SARKAWT AZAD NOORI, Rhinoceros Controller. Disponível em:
<https://market.myo.com/app/549ca27fe4b03603dc2c69e8/rhinoceros-controller>
[12] DZSUBEK, Mailbox Gestures. Disponível em:
<https://market.myo.com/app/54aaa506e4b090ea5683e2bf/mailbox-gestures>
[13] GEEKYBEAVER, Trello Connector. Disponível em:
<https://market.myo.com/app/5494aa43e4b009360b85a97b/trello-connector>
[14] EZ-ROBOT, EZ-Builder. Disponível em:
<https://market.myo.com/app/54986643e4b009360b85a9d3/ez-builder>
[15] THALMIC LABS, Myo + Parrot 3.0. Disponível em:
<https://market.myo.com/app/559ec0cee4b0f2c8982c9164/myo--parrot-30>
[16] CBC NEWS, Johnny Matheny's prosthetic arm controlled by Thalmic Lab
armband. Disponível em: < http://www.cbc.ca/news/canada/kitchener-
waterloo/johnny-matheny-robotic-arm-uses-thalmic-labs-armband-1.3334199>
[17] ABDUO, M.; GALSTER M. Myo Gesture Control Armband for Medical
Applications. Department of Computer Science and Software Engineering,
University of Canterbury, Oct 16 2015. Disponível em:
<https://www.cosc.canterbury.ac.nz/research/reports/HonsReps/2015/hons_1502.pd
f>
[18] SATHIYANARAYANAN, M.; MULLING, T.; NAZIR, B. Controlling a Robot
Using a Wearable Device (MYO). International Journal of Engineering
Development and Research, v. 3, n. 3, p. 1-6, 2015. ISSN 2321-9939. Disponível
em:
<http://www.academia.edu/15519489/Controlling_a_Robot_Using_a_Wearable_D
evice_MYO_>
[19] ARDUINO, Arduino. Disponível em: <https://www.arduino.cc/>
46
[20] ARDUINO, Compare board specs. Disponível em:
<https://www.arduino.cc/en/Products/Compare/>
[21] ARDUINO, Arduino UNO. Disponível em:
<https://www.arduino.cc/en/Main/ArduinoBoardUno>
[22] ARDUINO, Arduino Nano. Disponível em:
<https://www.arduino.cc/en/Main/ArduinoBoardNano>
[23] ARDUINO, Arduino Mini. Disponível em:
<https://www.arduino.cc/en/Main/ArduinoBoardMini>
[24] ARDUINO, Arduino MEGA 2560. Disponível em:
<https://www.arduino.cc/en/Main/ArduinoBoardMega2560>
[25] ARDUINO, Arduino IDE. Disponível em:
<https://www.arduino.cc/en/Main/Software>
[26] ARDUINO, Language Reference. Disponível em:
<https://www.arduino.cc/en/Reference/HomePage>
[27] ATMEL, Datasheet Atmel 8-Bit Microcontroller with 4/8/16/32KBytes in-system
programmable Flash. Disponível em: <http://www.atmel.com/images/Atmel-8271-
8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-
328P_datasheet_Complete.pdf>
[28] MARTINS, A. R. Q.; VARGAS, F.; SILVA, T. L.; PAZINATO, A. Uso da
robótica educacional como estímulo a criatividade. CINTED-UFRGS, v. 14, n. 1, Jul
2014. Disponível em: <http://seer.ufrgs.br/index.php/renote/article/view/67339>
[29] CAVALCANTIE, M. M.; SILVA, J. L. S.; VIANA, E. C., DANTAS, J. R. A
Plataforma Arduino para fins didáticos: Estudo de caso com recolhimento de dados a
partir do PLX-DAQ. XXXIV Congresso da Sociedade Brasileira de Computação, n.
1978, 2014. Disponível em: <http://www.lbd.dcc.ufmg.br/colecoes/wei/2014/0037.pdf>
47
[30] VIDAL, F. B.; ESPINOSA, P. B.; LOMBA L. F. D. Placa de Estimulação Tátil de
Auxílio a Deficientes Visuais para Aprendizagem da Assinatura e do Alfabeto Romano.
Computer on the Beach, v. 1, p. 4-6, 2015. Disponível em:
<http://siaiap32.univali.br/seer/index.php/acotb/article/viewFile/7122/4041>
[31] ALMEIDA, M. R. L.; MAESTRA, D. E.; SOUZA, S. S. F.; LIMA, F. P. A.
Desenvolvimento de uma lixeira automatizada para deficientes físicos utilizando
arduino. ETIC 2016 – Encontro de Iniciação Científica, ISSN 21-76-8498.
Disponível em:
<http://intertemas.toledoprudente.edu.br/revista/index.php/ETIC/article/viewArticle/545
>
[32] MEDEIROS, A. C. A.; SILVA, F. M. C.; NASCIMENTO, M. A. A.; TEIXEIRA,
L. R. L. Protótipo de auxílio à prática de natação para pessoas com deficiência visual.
IX Congresso de Iniciação Científica do IFRN. p. 2630-2639, 2013. Disponível em:
<http://www2.ifrn.edu.br/ocs/index.php/congic/ix/paper/viewFile/1081/295>
[33] LCD20x04, RT204-1 Datasheet. Disponível em:
<http://img.filipeflop.com/files/download/Datasheet_Display_20x4.pdf>
[34] SONGLE RELAY, SDR Datasheet. Disponível em:
<http://elecfreaks.com/store/download/datasheet/breakout/Relay/SRD(T73).pdf>
[35] OPEN IMPULSE, TL1838 Datasheet. Disponível em:
<https://www.openimpulse.com/blog/document-viewer/?pdf_file=TL1838-Infrared-
Receiver-datasheet.pdf>
[36] VISHAY, TSAL6100 Datasheet. Disponível em:
<http://www.vishay.com/docs/81009/tsal6100.pdf>
[37] SPRINGRC, 43R Servo Datasheet. Disponível em:
<http://img.filipeflop.com/files/download/Datasheet_SM-S4306R.pdf>
48
[38] ARDUINO, MX-FS-03 Datasheet. Disponível em:
<http://www2.units.it/ict/autina/progetto/doc/433MHz_RX-
TX/433MHz%20Wireless%20Modules%20MX-FS-03V%20&%20MX-05.pdf>
[39] ARDUINO, MX-05V Datasheet. Disponível em:
<http://www2.units.it/ict/autina/progetto/doc/433MHz_RX-
TX/433MHz%20Wireless%20Modules%20MX-FS-03V%20&%20MX-05.pdf>
[40] ELETROGATE, Eletrogate homepage. Disponível em:
<http://www.eletrogate.com>
[41] SB-PROJECTS, NEC Protocol. Disponível em:
<http://www.sbprojects.com/knowledge/ir/nec.php>
[42] GITHUB, Arduino IR Remote. Disponível em: <https://github.com/z3t0/Arduino-
IRremote>
[43] RASPBERRY, Raspberry PI 3 Model B. Disponível em:
<https://www.raspberrypi.org/products/raspberry-pi-3-model-b/>
[44] ORGANISAÇÃO MUNDIAL DA SAÚDE. Classificação Internacional de
Funcionalidade, Incapacidade e Saúde. Lisboa, 2004. Disponível em:
<http://www.inr.pt/uploads/docs/cif/CIF_port_%202004.pdf>
49
Apêndice A
Código do Microcontrolador Central #include <stdio.h> #include <stdlib.h> #include <string.h> #include <LiquidCrystal.h> #include <MyoController.h> #include <IRremote.h> #include "VirtualWire.h" #define PORTA_TX 4 #define NUMERO_OPCOES 5 #define NUMERO_SUBOPCOES 6 #define MAX_TAM_NOME 11 #define MAX_CHAR_ENVIO 7 LiquidCrystal lcd(13, 12, 11, 10, 9, 8); IRsend irsend; char Valor_CharMsg[4]; enum bool3 {nao = 0, sim = 1, configurado = 2}; typedef enum bool3 tipo_opcao; typedef struct menu_sub_option{ char nome[MAX_TAM_NOME]; char codigo_envio[MAX_CHAR_ENVIO]; tipo_opcao configuravel; //0 -> nao, 1-> sim, 2-> configurado }type_sub_option; typedef struct menu_option { char nome[MAX_TAM_NOME]; type_sub_option sub_opcao[NUMERO_SUBOPCOES]; }type_menu_option; int indice_opcoes, indice_sub_opcoes, indice_tamanho_sub; type_menu_option opcoes[NUMERO_OPCOES]; char codigo_envioAux[MAX_CHAR_ENVIO - 1]; int indice_lcd = 0; MyoController myo = MyoController();
50
char comando, comando_anterior, switch_menu; //Transmissor RF char msg_rf[MAX_CHAR_ENVIO]; void atualizar_lcd(){ int indice_aux; lcd.clear(); if(switch_menu == 'm') { lcd.setCursor(0, (indice_lcd%4)); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(">"); for(indice_aux = 0; ((indice_aux + 4*(indice_lcd/4)) < NUMERO_OPCOES) && (indice_aux < 4) ; indice_aux++) { lcd.setCursor(2, indice_aux); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(opcoes[indice_aux + 4*(indice_lcd/4)].nome); } } else if(switch_menu == 's') { lcd.setCursor(0, (indice_lcd%4)); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(">"); for(indice_aux = 0; (strcmp(opcoes[indice_opcoes].sub_opcao[indice_aux + 4*(indice_lcd/4)].nome, "\0"))&& (indice_aux < 4) && (indice_aux + 4*(indice_lcd/4) < NUMERO_SUBOPCOES) ; indice_aux++) { lcd.setCursor(2, indice_aux); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(opcoes[indice_opcoes].sub_opcao[indice_aux + 4*(indice_lcd/4)].nome); } } else if(switch_menu == 'c') { lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print("Configurando:"); if(codigo_envioAux) lcd.print(codigo_envioAux); lcd.print("_"); lcd.setCursor(1, 1); lcd.print("0 2 4 6 8"); lcd.setCursor(1, 2); lcd.print("1 3 5 7 9"); lcd.setCursor(4, 3); lcd.print("FIM"); if(indice_lcd < 10) { if(!(indice_lcd%2))
51
lcd.setCursor(indice_lcd/2*3,1); else lcd.setCursor((indice_lcd-1)/2*3,2); } else lcd.setCursor(3,3); lcd.print(">"); } else if(switch_menu == 'e') { lcd.setCursor(0, indice_lcd); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(">"); lcd.setCursor(2, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print("Executar"); lcd.print(opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].codigo_envio); lcd.setCursor(10,0); // lcd.print(" "); // Colocando espaco no char referente ao aparelho lcd.setCursor(2, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD lcd.print("Configurar"); } } void executar_acao() { strcpy(msg_rf, opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].codigo_envio); send(msg_rf); Serial.print("Trasmitido: "); Serial.println(msg_rf); } void verificar_config() { if(opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].configuravel == sim) // configurar! { //configurar -> menu de configuracao switch_menu = 'c'; indice_lcd = 0; atualizar_lcd(); } if(opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].configuravel == configurado) // configurar ou executar { //deseja executar ou configurar? //configurar -> menu de configuracao //executar -> executar_acao(); switch_menu = 'e'; indice_lcd = 0; atualizar_lcd(); } }
52
void calcular_subopcao() { for(indice_tamanho_sub = 1; (strcmp(opcoes[indice_opcoes].sub_opcao[indice_tamanho_sub - 1].nome,"\0") && (indice_tamanho_sub - 1 < NUMERO_SUBOPCOES)); indice_tamanho_sub++); } void send (char *message) { vw_send((uint8_t *)message, strlen(message)); vw_wait_tx(); // Aguarda o envio de dados } void setup() { int tam_subopcao; Serial.begin(9600); //Pino ligado ao pino DATA do transmissor RF vw_set_tx_pin(PORTA_TX); //Velocidade de comunicacao (bits por segundo) vw_setup(2000); lcd.begin(20, 4); //Configurando as opcoes e subopcoes for(int i=0; i<NUMERO_OPCOES; i++) { for(int j=0; j<NUMERO_SUBOPCOES;j++) { opcoes[i].sub_opcao[j].configuravel = nao; strcpy(opcoes[i].sub_opcao[j].nome, "\0"); } } strcpy(opcoes[0].nome, "TV"); strcpy(opcoes[0].sub_opcao[0].nome, "Power"); strcpy(opcoes[0].sub_opcao[0].codigo_envio, "Tp"); strcpy(opcoes[0].sub_opcao[1].nome, "Canal +"); strcpy(opcoes[0].sub_opcao[1].codigo_envio, "T+"); strcpy(opcoes[0].sub_opcao[2].nome, "Canal -"); strcpy(opcoes[0].sub_opcao[2].codigo_envio, "T-"); strcpy(opcoes[0].sub_opcao[3].nome, "Volume +"); strcpy(opcoes[0].sub_opcao[3].codigo_envio, "T>"); strcpy(opcoes[0].sub_opcao[4].nome, "Volume -"); strcpy(opcoes[0].sub_opcao[4].codigo_envio, "T<"); strcpy(opcoes[1].nome, "NET"); strcpy(opcoes[1].sub_opcao[0].nome, "Power"); strcpy(opcoes[1].sub_opcao[0].codigo_envio, "Np"); strcpy(opcoes[1].sub_opcao[1].nome, "Canal +"); strcpy(opcoes[1].sub_opcao[1].codigo_envio, "N+"); strcpy(opcoes[1].sub_opcao[2].nome, "Canal -"); strcpy(opcoes[1].sub_opcao[2].codigo_envio, "N-"); strcpy(opcoes[1].sub_opcao[3].nome, "Volume +");
53
strcpy(opcoes[1].sub_opcao[3].codigo_envio, "N>"); strcpy(opcoes[1].sub_opcao[4].nome, "Volume -"); strcpy(opcoes[1].sub_opcao[4].codigo_envio, "N<"); strcpy(opcoes[1].sub_opcao[5].nome, "Favorito"); //strcpy(opcoes[1].sub_opcao[5].codigo_envio, ""); opcoes[1].sub_opcao[5].configuravel = sim; strcpy(opcoes[2].nome, "A.C."); strcpy(opcoes[2].sub_opcao[0].nome, "Ligar"); strcpy(opcoes[2].sub_opcao[0].codigo_envio, "Al"); strcpy(opcoes[2].sub_opcao[1].nome, "Desligar"); strcpy(opcoes[2].sub_opcao[1].codigo_envio, "Ad"); strcpy(opcoes[3].nome, "Lampada"); strcpy(opcoes[3].sub_opcao[0].nome, "Ligar"); strcpy(opcoes[3].sub_opcao[0].codigo_envio, "Ll"); strcpy(opcoes[3].sub_opcao[1].nome, "Desligar"); strcpy(opcoes[3].sub_opcao[1].codigo_envio, "Ld"); strcpy(opcoes[4].nome, "Cortina"); strcpy(opcoes[4].sub_opcao[0].nome, "Fechar"); strcpy(opcoes[4].sub_opcao[0].codigo_envio, "Cf"); strcpy(opcoes[4].sub_opcao[1].nome, "Abrir"); strcpy(opcoes[4].sub_opcao[1].codigo_envio, "Ca"); indice_opcoes = indice_sub_opcoes = 0; strcpy(codigo_envioAux, "\0"); switch_menu = 'm'; atualizar_lcd(); myo.initMyo(); comando = comando_anterior = 0; } void loop() { comando = Serial.read(); myo.updatePose(); switch ( myo.getCurrentPose() ) { case rest: comando = 'o'; break; case waveIn: comando = 's'; break; case waveOut:
54
comando = 'd'; break; case fist: comando = 'e'; break; } if(comando_anterior != comando) { switch ( comando ) { case 's': if(indice_lcd > 0) { indice_lcd --; atualizar_lcd(); if(switch_menu == 'm') indice_opcoes--; if(switch_menu == 's') indice_sub_opcoes--; } break; case 'd': if(switch_menu == 'm') { if(indice_lcd < (NUMERO_OPCOES - 1)) { indice_lcd ++; atualizar_lcd(); indice_opcoes++; } } else if(switch_menu == 's') { if(indice_lcd < (indice_tamanho_sub - 2)) { indice_lcd ++; atualizar_lcd(); indice_sub_opcoes++; } } else if(switch_menu == 'e') { if(!indice_lcd) { indice_lcd++; atualizar_lcd(); } } else if(switch_menu == 'c') { if(indice_lcd < 10) { indice_lcd ++;
55
atualizar_lcd(); } } break; case 'e': if(switch_menu == 's') { if (opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].configuravel == nao) //se nao tiver opcao de config executar_acao(); else verificar_config(); } else if(switch_menu == 'm') { switch_menu = 's'; indice_lcd = 0; calcular_subopcao(); atualizar_lcd(); } else if(switch_menu == 'e') { if(!indice_lcd) { executar_acao(); indice_lcd = 0; indice_sub_opcoes = 0; switch_menu = 's'; atualizar_lcd(); } else { switch_menu = 'c'; indice_lcd = 0; atualizar_lcd(); } } else if(switch_menu == 'c') { if(indice_lcd < 10) { int i; for(i=0; codigo_envioAux[i] != '\0'; i++); if(i < MAX_CHAR_ENVIO -3) { codigo_envioAux[i] = '0'+indice_lcd; codigo_envioAux[i+1] = '\0'; } atualizar_lcd(); } else { if(indice_opcoes == 1) {
56
char aux2[MAX_CHAR_ENVIO]; aux2[0] = 'N'; aux2[1] = '\0'; strcat(aux2, codigo_envioAux); Serial.println(aux2); strcpy(opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].codigo_envio, aux2); } opcoes[indice_opcoes].sub_opcao[indice_sub_opcoes].configuravel = configurado; strcpy(codigo_envioAux, "\0"); switch_menu = 'e'; indice_lcd = 0; atualizar_lcd(); } } break; case 'f': if(switch_menu == 'c') { switch_menu = 's'; strcpy(codigo_envioAux, "\0"); } else if(switch_menu == 'e') switch_menu = 's'; else { switch_menu = 'm'; indice_opcoes = 0; } indice_lcd = 0; indice_sub_opcoes = 0; atualizar_lcd(); break; } } comando_anterior = comando; delay(100); }
57
Apêndice B
Código do Microcontrolador do Aparelho
da NET #include <stdio.h> #include <stdlib.h> #include <string.h> #include <IRremote.h> #include "VirtualWire.h" //IR #define LED_PIN 3 //RF #define RECEPTOR 12 #define BITS_SEC 2000 //Bits per sec transmissor IRsend irsend; void analisarComando(char command) { vw_rx_stop(); switch(command) { case 'p': Serial.println("Power"); irsend.sendNEC(0xE17A48B7, 32); delay(40); break; case '+': Serial.println("Canal +"); irsend.sendNEC(0xE17A08F7, 32); delay(40); break; case '-': //canal - Serial.println("Canal -"); irsend.sendNEC(0xE17A58A7, 32); delay(40); break; case '>': // volume + Serial.println("Volume +"); irsend.sendNEC(0xE17AB04F, 32);
58
delay(40); break; case '<': // volume - Serial.println("Volume -"); irsend.sendNEC(0xE17A708F, 32); delay(40); break; case '0': // botao 0 Serial.println("0"); irsend.sendNEC(0xE17A00FF, 32); delay(40); break; case '1': // botao 1 Serial.println("1"); irsend.sendNEC(0xE17A807F, 32); delay(40); break; case '2': // botao 2 Serial.println("2"); irsend.sendNEC(0xE17A40BF, 32); delay(40); break; case '3': // botao 3 Serial.println("3"); irsend.sendNEC(0xE17AC03F, 32); delay(40); break; case '4': // botao 4 Serial.println("4"); irsend.sendNEC(0xE17A20DF, 32); delay(40); break; case '5': // botao 5 Serial.println("5"); irsend.sendNEC(0xE17AA05F, 32); delay(40); break; case '6': // botao 6 Serial.println("6"); irsend.sendNEC(0xE17A609F, 32); delay(40); break; case '7': // botao 7 Serial.println("7"); irsend.sendNEC(0xE17AE01F, 32); delay(40); break; case '8': // botao 8 Serial.println("8"); irsend.sendNEC(0xE17A10EF, 32); delay(40); break; case '9': // botao 9 Serial.println("9"); irsend.sendNEC(0xE17A906F, 32);
59
delay(40); break; } vw_rx_start(); } void setup() { Serial.begin(9600); vw_set_rx_pin(RECEPTOR); vw_setup(BITS_SEC); // Bits per sec vw_rx_start(); } void loop() { uint8_t message[VW_MAX_MESSAGE_LEN]; uint8_t msgLength = VW_MAX_MESSAGE_LEN; //tipo_bool modificador; boolean modificador; modificador = false; if (vw_get_message(message, &msgLength)) // Non-blocking { for (int i = 0; i < msgLength; i++) { if(modificador == true) { if((message[i]>33&&message[i]<65) || (message[i]>90&&message[i]<126)) { analisarComando(message[i]); } else modificador = false; } if(message[i] == 'N') { //Serial.println("opcoes NET:\n"); modificador = true; } } } }
60
Apêndice C
Código do Microcontrolador da Cortina
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ServoTimer2.h"
#include "VirtualWire.h"
//Servo
#define SERVO_PIN 9
//RF
#define RECEPTOR 12
#define BITS_SEC 2000 //Bits per sec transmissor
#define FECHAR 2000
#define ABRIR 1000
#define PARADO 1500
#define TEMPO 8000 //8 segs
ServoTimer2 servoMotor;
void analisarComando(char command)
{
servoMotor.attach(SERVO_PIN);
vw_rx_stop();
switch(command)
{
case 'a':
61
Serial.println("Abrir");
servoMotor.write(ABRIR);
delay(TEMPO);
servoMotor.detach();
break;
case 'f':
Serial.println("Fechar");
servoMotor.write(FECHAR);
delay(TEMPO);
servoMotor.detach();
break;
}
vw_rx_start();
}
void setup()
{
Serial.begin(9600);
vw_set_rx_pin(RECEPTOR);
vw_setup(BITS_SEC); // Bits per sec
vw_rx_start();
}
char comando;
void loop()
{
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;
boolean modificador;
comando = Serial.read();
if((comando == 'a') || (comando == 'f'))
62
analisarComando(comando);
modificador = false;
if (vw_get_message(message, &msgLength)) // Non-blocking
{
for (int i = 0; i < msgLength; i++)
{
if(modificador == true)
{
if((message[i]>33&&message[i]<65) || (message[i]>90&&message[i]<126))
{
analisarComando(message[i]);
}
else
modificador = false;
}
if(message[i] == 'C')
{
//Serial.println("opcoes NET:\n");
modificador = true;
}
}
}
}
63
Apêndice D
Código do Microcontrolador da
Iluminação
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "VirtualWire.h"
//Rele
#define PORTA_RELE 7
//RF
#define RECEPTOR 12
#define BITS_SEC 2000 //Bits per sec transmissor
void analisarComando(char command)
{
vw_rx_stop();
switch(command)
{
case 'l':
Serial.println("Ligar");
digitalWrite(PORTA_RELE, LOW);
break;
case 'd':
Serial.println("Desligar");
digitalWrite(PORTA_RELE, HIGH);
break;
}
64
vw_rx_start();
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PORTA_RELE, OUTPUT);
digitalWrite(PORTA_RELE, LOW);
vw_set_rx_pin(RECEPTOR);
vw_setup(BITS_SEC); // Bits per sec
vw_rx_start();
}
void loop()
{
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;
//tipo_bool modificador;
boolean modificador;
modificador = false;
if (vw_get_message(message, &msgLength)) // Non-blocking
{
for (int i = 0; i < msgLength; i++)
{
if(modificador == true)
{
if((message[i]>33&&message[i]<65) || (message[i]>90&&message[i]<126))
{
analisarComando(message[i]);
}
else
65
modificador = false;
}
if(message[i] == 'L')
{
//Serial.println("opcoes Lampada:\n");
modificador = true;
}
}
}
}
66
Apêndice E
Código do Microcontrolador do Ar
Condicionado #include <stdio.h> #include <stdlib.h> #include <string.h> #include <IRremote.h> #include "VirtualWire.h" //IR #define LED_PIN 3 //RF #define RECEPTOR 5 #define BITS_SEC 2000 //Bits per sec transmissor unsigned int onSpring[] = {4550,4350,650,1550,650,450,650,1550,650,1500,650,500,600,450,650,1600,600,450,650,400,700,1500,700,450,650,450,650,1550,600,1600,600,500,600,1550,650,450,650,450,650,450,650,1550,650,1550,600,1600,600,1550,650,1550,650,1550,650,1500,700,1500,650,500,600,450,650,450,650,450,650,450,650,450,650,1550,650,1550,600,500,600,1600,600,500,600,450,650,450,650,1550,650,450,650,450,650,1550,650,400,650,1600,600,1550,650,1550,650,5200,4550,4400,600,1600,600,450,650,1550,650,1550,650,450,650,450,650,1550,600,450,650,450,650,1550,650,450,650,450,650,1550,650,1550,600,500,600,1600,600,500,600,500,600,450,650,1550,650,1550,650,1550,600,1600,600,1600,600,1550,650,1550,650,1550,600,500,600,500,600,500,600,500,600,500,600,500,600,1550,650,1550,650,450,650,1550,600,500,600,500,600,500,600,1600,600,450,650,450,650,1550,650,450,650,1550,600,1600,600,1600,600,}; unsigned int offSpring[] = {4500,4400,600,1650,550,500,600,1600,600,1600,600,500,600,500,600,1550,600,500,600,500,600,1650,550,550,550,500,600,1600,600,1600,600,500,600,1550,600,500,600,1650,550,1600,600,1600,600,1600,600,500,600,1550,600,1650,550,1600,600,500,600,500,600,500,600,500,600,1600,600,500,550,550,550,1600,600,1600,600,1600,600,500,600,500,600,500,600,450,600,550,550,500,600,550,550,500,600,1600,600,1600,600,1600,600,1600,550,1600,600,5300,4500,4400,600,1600,550,550,550,1600,600,1650,550,500,600,500,600,1600,600,500,600,500,600,1600,550,550,550,550,550,1600,600,1600,600,500,600,1600,600,500,600,1600,550,1650,550,1600,600,1600,600,500,600,1600,600,1600,550,1650,550,500,600,550,550,500,600,500,600,1600,600,500,600,500,600,1600,550,1650,550,1650,550,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,550,1650,550,1650,550,1600,600,1600,600,1600,600,}; IRsend irsend;
67
void analisarComando(char command) { vw_rx_stop(); switch(command) { case 'l': Serial.println("Ligar"); irsend.sendRaw(onSpring, 199, 38); delay(40); break; case 'd': Serial.println("Desligar"); irsend.sendRaw(offSpring, 199, 38); delay(40); break; } vw_rx_start(); } void setup() { Serial.begin(9600); vw_set_rx_pin(RECEPTOR); vw_setup(BITS_SEC); // Bits per sec vw_rx_start(); } void loop() { uint8_t message[VW_MAX_MESSAGE_LEN]; uint8_t msgLength = VW_MAX_MESSAGE_LEN; //tipo_bool modificador; boolean modificador; modificador = false; if (vw_get_message(message, &msgLength)) // Non-blocking { for (int i = 0; i < msgLength; i++) { if(modificador == true) { if((message[i]>33&&message[i]<65) || (message[i]>90&&message[i]<126)) { analisarComando(message[i]); } else modificador = false; }
68
if(message[i] == 'A') { //Serial.println("opcoes AC:\n"); modificador = true; } } } }