UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO MURILO SOARES ALVES RENAN FERNANDES TELES NÍVEL DIGITAL RELATÓRIO FINAL CURITIBA 2013 MURILO SOARES ALVES RENAN FERNANDES TELES NÍVEL DIGITAL Relatório final apresentado como requisito parcial para a obtenção de aprovação na disciplina de Oficinas de Integração II do curso de Engenheria de Computação. Orientador: Juliano Mourão Vieira CURITIBA 2013 Dedicamos este relatório a todos os nossos apoiadores e envolvidos no projeto, que nos impulsionaram e contribuiram direta ou indiretamente no desenvolvimento deste trabalho. AGRADECIMENTOS Agradecimos antes de tudo aos professores Hugo Vieira e Mário Sérgio Freitas por ministrarem a disciplina de Oficinas de Integração II com maestria. Agradecemos também a colaboração do projessor Juliano Mourão Vieira que se dispôs a sanar as eventuais dúvidas e dificuldades. Agradecemos ainda a todos os demais que puderam compartilhar deste projeto. Nada disto teria sido possível sem as opiniões, ajudas e apoio de todos os envolvidos. A tarefa não é tanto ver aquilo que ninguém viu, mas pensar o que ninguém ainda pensou sobre aquilo que todo mundo vê. (Arthur Schopenhauer). RESUMO S. ALVES, Murilo; F. TELES, Renan. NÍVEL DIGITAL. 31 f. Relatório final – Graduação em Engenharia de Computação, Universidade Tecnológica Federal do Paraná. Curitiba, 2013. A caminhada para a digitalização tem dado passos largos. Mesmo simples objetos estão acompanhando o progresso tecnólogico. Este projeto visa desenvolver um nível digital, construindoo desde o início e procurando resgatar as vantagens sobre o processo mecânico. A motivação encontrada para desenvolver este projeto se deu pela curiosidade de como um acelerômetro trabalha em conjunto de um microcontrolador. Esta ideia inicial levou os alunos à escolha do projeto e à busca de conhecimento necessário para satisfazer a conclusão do trabalho. Os componentes mais importantes utilizados no projeto foram um acelerômetro, um arduino e uma tela de LCD. De maneira sucinta, o arduino controla os dados que recebe do acelerômetro e envia para a tela de maneira gráfica ou númerica. Por fim, o trabalho cumpre a sua premissa: Acrescentar um conhecimento aos alunos para assim ser construído um dispositivo prático, realizando uma ligação do aluno com as matérias já cursadas. Palavras-chave: Nível Digital, Arduíno, LCD, Sensor de Posição, Acelerômetro LISTA DE FIGURAS FIGURA 1 FIGURA 2 FIGURA 3 FIGURA 4 FIGURA 5 FIGURA 6 FIGURA 7 FIGURA 8 FIGURA 9 FIGURA 10 FIGURA 11 – – – – – – – – – – – Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arduíno Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acelerômetro Capacitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acelerômetro Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ponte de Wheatstone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LCD Nokia 5110 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ligação com o Arduíno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Placa Impressa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protocolo I 2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Projeto Em Fase Intermediária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 16 17 18 19 20 20 21 23 23 LISTA DE TABELAS TABELA 1 TABELA 2 – Especificações do Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 – Média de Gastos do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 LISTA DE SIGLAS LCD IDE PWM ICSP VCC GND SCE RST D/C SCLK LED DN(MOSI) I 2C SDA SCL LSB ACK Liquid Crystal Display Integrated Development Environment Pulse Width Modulation In Circuit Serial Programming Collector Supply Voltage Ground Serial Chip Enable Reset Data/Command Serial Clock Line Light-Emitting Diode Serial Data Input Inter IC Serial Data Serial Clock Least Significant Bit Acknowledge SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 MOTIVAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ESPECIFICAÇÕES DO SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 COMPONENTES DO SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Arduíno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Acelerômetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1 Acelerômetro Capacitivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.2 Acelerômetro Piezoelétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.3 Acelerômetro Piezoresistivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.4 Acelerômetro Micro Eletro-Mecânico (MEMS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4 Placa Impressa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 PROTOCOLO I 2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Comunicação de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1.1 LCD - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1.2 Acelerômetro - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1.3 Botões - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1.4 Computador - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 FUNDAMENTOS DO PROJETO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 PASSOS SEGUIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 FUNÇÃO GERAL DO SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 SOFTWARES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 DESPESAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 RESULTADOS OBTIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 DIFICULDADES DO PROJETO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11 11 11 11 12 13 13 14 15 16 17 18 18 19 21 22 23 24 24 24 25 26 26 26 27 27 27 29 29 29 30 31 10 1 INTRODUÇÃO A medição do nivelamento de superfícies é utilizado em diversos campos, desde caseiros até em grandes obras. Porém os materiais disponíveis para aquisição no mercado de maneira que não sejam demasiadamente custosos e que podem fornecer a medida de inclinação de superfícies, podem muitas vezes serem classificados como ultrapassados, sob o ponto de vista tecnológico. Objetos como transferidor, ou ainda uma régua de nível, podem não apresentar demasiada praticidade e nem mesmo a precisão requerida em diversas situações que necessitam tal medição. A ideia deste projeto é exatamente construir um nível - um objeto que possa medir a inclinação com maior precisão e facilidade de uso. Para isto, temos de sair do mundo mecânico e passar ao lado eletrônico, pois quando comparados, o segundo apresenta rapidez e precisão disparadamente melhores, e muitas vezes tamanho e custos também reduzidos, além da possibilidade de ter uma maior facilidade de manuseio, quando previamente programado a fim de simplificar o uso, expandindo o campo de usuários. Desta forma, o desenvolvimento de um nível digital pode ter uma utilidade interessante em uma gama de situações, sem pecar nos quesitos supra mencionados. Para tal, propomos a utilização da plataforma livre Arduíno (ARDUINO, 2013), pela gama de utilidades que se pode realizar com este e possíveis modificações caso alguém se proponha a trabalhar futuramente no projeto, bem como a utilização de um sensor de posição, no caso um acelerômetro MMA7660. Por fim, uma tela de LCD para mostrar de forma gráfica e numérica esta variação que pretendese capturar, da qual a escolha pode ser manuseada através de botões. 11 1.1 MOTIVAÇÃO Este projeto nos impulsiona a ir mais à fundo no mundo eletrônico digital, da qual tem grande importância para o desenvolvimento profissional e até mesmo pessoal, devido ao conhecimento adquirido durante a construção do objeto. 1.2 OBJETIVOS 1.2.1 OBJETIVO GERAL Construir um nível eletrônico usando acelerômetro e microcontrolador que atenda aos requesitos dos possíveis usuários, além de nos familiarizar com os diversos componentes e o trabalho prático necessário durante o desenvolvimento deste projeto. 1.2.2 OBJETIVOS ESPECÍFICOS • Implementar o protocolo I 2C no Arduíno a fim de comunicar com o acelerômetro. • Implementar a interface gráfica e de texto para o LCD. • Tornar o dispositivo móvel • Capturar através de sensores a variação de posição em relação ao zero em que se encontra o objeto. 12 2 FUNDAMENTAÇÃO TEÓRICA Segundo a primeira lei de Newton: todo corpo que está em repouso tende a continuar em repouso até que alguma força externa haja sobre ele. A segunda lei de Newton, por sua vez, define a força aplicada como o produto da massa pela sua aceleração. Uma vez que se consiga calcular a aceleração e possua o peso do objeto, é possível determinar a força aplicada sobre ele. O acelerômetro é um instrumento capaz de medir a aceleração sobre o objeto. Ao invés de posicionar vários dinamômetros em diferentes pontos de um objeto, apenas um acelerômetro é capaz de calcular qualquer força exercida sobre ele. Para calcular a inclinação, a aceleração da gravidade age sobre o acelerômetro e, conforme a atitude do mesmo no espaço, o vetor de aceleração da gravidade tem suas projeções aumentadas ou diminuídas em cada eixo x, y e z. Com estas projeções consegue ser calculada a inclinação do objeto. 13 3 3.1 ESPECIFICAÇÕES DO SISTEMA COMPONENTES DO SISTEMA O artefato é, em suma, constituído pelos seguintes componentes: • Central de processamento Arduíno • Tela de LCD • Acelerômetro digital • Um cabo Grove para conexão do acelerômetro • Botões para interfaceamento • Resistores, jumpers, pinos para conexão, etc. Podemos ver as conexões de acordo com o diagrama abaixo: Figura 1: Diagrama de blocos explicitando as conexões Fonte: Própria 14 3.1.1 ARDUÍNO O Arduíno é uma plataforma em código aberto objetivando o fácil manuseio de hard- ware e de software. Entre as mais variadas funções que pode exercer, ele recebe informações do meio através da comunicação com sensores, pode controlar motores e luzes, dentre outras aplicações. O ambiente de desenvolvimento é denominado Arduíno IDE, baseado na linguagem Processing que por sua vez é baseada em Java. O microcontrolador da plataforma é programado na linguagem de programação Arduino, baseada em Wiring (ARDUINO, 2013). É possível expandir para diversas funcionalidades através dos shields1 existentes, que são acoplados aos conectores da placa. Figura 2: Placa do Arduíno modelo Uno Fonte: Página do Arduíno2 O modelo utilizado foi o Arduino Uno como ilustrado na figura acima, devido à flexibilidade em sua utilização e a comunicação em USB. Nesta versão, o chip para conversão USB-Serial utilizado é o ATMega8U2 e o microcontrolador é o ATmega328 (ARDUINO. . . , 2013a). Contém um total de 20 pinos, dentre os quais 14 são de entradas/saídas digitais (destas, 6 possuem controle de saída PWM) e 6 entradas analógicas, um cristal oscilador de 16MHz, um conector externo para alimentação, conectores ICSP e um botão de reset. 1 São placas que podem ser conectadas sobre o Arduíno expandindo assim suas capacidades de utilização 15 Um resumo das especificações (ARDUINO. . . , 2013b) pode ser encontrado na tabela 1: Microcontrolador Tensão de operação Tensão de entrada (recomendada) Tensão de entrada (limites) Pinos de I/O Digitais Pinos Analógicos Corrente CC por I/O Pino Corrente do Pino 3.3V Memória Flash SRAM EEPROM Velocidade do Clock ATmega328 5V 7-12V 6-20V 14 (6 deles com saída PWM) 6 40 mA 50 mA 32 KB (ATmega328) 0.5 KB p/ Bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz Tabela 1: Especificações do Arduino Uno 3.1.2 ACELERÔMETRO De uma maneira geral, os acelerômetros são sensores ou transdutores3 que tornam possível resgatar a aceleração e por consequência, a velocidade e localização do acelerômetro. É possível obter essas informações nas três dimensões, o que o torna um objeto extremamente útil em diversas aplicações eletrônicas, uma vez que pode-se tirar dele ainda a inclinação, rotação, colisão, etc. A magnitude da aceleração aplicada ao corpo é traduzida por sinais elétricos e processada por circuitos externos. Existem diversos tipos de acelerômetros, cada qual com suas vantagens e desvantagens. 3 Dispositivo que realiza a conversão de uma grandeza em outra. No caso, traduz uma informação não-elétrica (aceleração) para uma informação elétrica. 16 3.1.2.1 ACELERÔMETRO CAPACITIVO Neste projeto foram utilizados acelerômetros capacitivos, assim denominados pois va- riam uma capacitância em resposta à aceleração, a que são submetidos o sinal de saída do circuito. Estes acelerômetros possuem um capacitor entre a massa e a estrutura de suporte, como está na figura 2, sendo sensíveis a mudanças na capacitância. Figura 3: Esquema interno de um acelerômetro capacitivo Fonte: Página da Universidade Técnica de Lisboa4 Havendo uma aceleração e variando o espaço entre a placa fixa e a móvel do capacitor, varia-se a capacitância e e gera-se um sinal de saída do circuito. Capacitores são componentes elétricos que armazenam carga elétrica, geralmente formado por duas placas paralelas. A capacitância é dada por C = ε · Ad onde ε é uma constante varia de acordo com o material, A é a área das placas e d é a distância entre elas. Podemos citar que este modelo se baseia na Lei de Hooke e na Segunda Lei de Newton, uma vez que apresentam três sistemas que incluem: um sistema massa-mola, um para medição do deslocamento e um circuito de condicionamento de sinal. Medem tanto a aceleração estática - gerada por uma força gravitacional, retratando o ângulo de inclinação a que o dispositivo está, quanto dinâmica, gerada pelas vibrações dos movimentos permitindo medir a velocidade e a direção da qual o dispositivo está se movendo. 17 O modelo utilizado foi o SEN04051P da (SEEED. . . , 2013), que é um acelerômetro digital com os três eixos, e se utiliza de uma interface (GROVE. . . , 2013) de quatro pinos, como mostra a figura 3: Figura 4: Acelerômetro digital grove utilizado no projeto Fonte: Página da SEEED Studio 5 3.1.2.2 ACELERÔMETRO PIEZOELÉTRICO Estes se utilizam de um cristal piezoelétrico(MECATRONICA, 2013) que podem ser cristais tanto sintéticos como naturais que produzem carga quando são expandidos ou comprimidos. Estes cristais são unidos à massa e quando há variação na aceleração, sofrem compressão em certo eixo e seguem a lei da inércia, gerando cargas elétricas, seguindo a lei de Newton F = m · a. 18 3.1.2.3 ACELERÔMETRO PIEZORESISTIVO Funcionando praticamente da mesma maneira do modelo anterior, a diferença neste é que varia-se a resistência (detectada por uma ponte de Wheatstone, mostrada na figura à seguir) de acordo com a força exercida pela massa, para tanto possuindo um componente piezoresistivo ao invés do cristal piezoelétrico (ACELEROMETROS, 2013). Figura 5: Esquema de uma Ponte de Wheatstone Fonte: Blog Os Fundamentos da Física6 3.1.2.4 ACELERÔMETRO MICRO ELETRO-MECÂNICO (MEMS) Este tipo de acelerômetro é atualmente o mais utilizado. Através das propriedades mecânicas do silício torna-se possível a detecção da aceleração e vibração em qualquer dos três eixos. Existem estruturas em forma de pente, com dentes móveis e fixos. Medindo-se o deslocamento dos elementos móveis associadas a cada eixo é possível obter então a aceleração, e este movimento é convertido então em sinal digital ou analógico. Estes sensores são de baixo custo, compactos e bastante sensíveis (ACELEROMETROS, 2013). O modelo utilizado foi, de acordo com as vantagens citadas e a disponibilidade, o MEMS capacitivo. 19 3.1.3 LCD A tela de LCD utilizada é o Nokia 5110, sendo esta uma tela de LCD gráfica básica, tendo como motivo de seu desenvolvimento para uso nos primeiros celulares de mesma marca. Ela permaneceu com vasto uso em projetos devido à grande diversidade de aplicações. A tela é composta de uma matriz de 48 linhas e 84 colunas, ou ainda 48 × 84 pixels(LCD. . . , 2013), com oito terminais: 1. VCC - Suprimento de energia 2. GND - Ground 3. SCE - Serial Chip Enable 4. RST - Reset 5. D/C - Data/Command 6. DN<MOSI> (atualmente SDIN) - Serial Data Input 7. SCLK - Serial Clock Line 8. LED - Light-Emitting Diode Figura 6: Tela de LCD utilizada Fonte: Página da Hobby Eletronics7 As funções dos pinos são: VCC é a alimentação positiva; GND o terra (ou negativo); SCE é o pino que habilita a passagem de dados e é ativo em sinal baixo; RST é o sinal que reinicia o dispositivo; D/C é a entrada para selecionar entre endereço e dado; DN(MOSI) ou SDIN é o pino de entrada de dados; SCLK faz a entrada de clock que sincronizará o sinal. Este modelo usa um controlador PCD8544, que consiste de um CMOS de baixo consumo que comanda o display de 48 × 84. A comunicação com microcontroladores é feita através de um 20 barramento serial. Um único chip interno contém todas as funções necessárias para o display. Podemos encontrar estas e demais informações na figura 7: Figura 7: Especificações da tela de LCD usada no projeto Fonte: Página da Elec Freaks8 As conexões feitas entre LCD e Arduíno foram as mostradas no esquema da figura 8: Figura 8: Esquemático na qual foram baseadas as conexões entre arduíno e a tela de LCD Fonte: Página da Fritzing Beta9 21 3.1.4 PLACA IMPRESSA Após a confecção do circuito na protoboard, a ideia de repassar o circuito para uma placa de circuito impressao caseira foi proposta. O esquemático da placa impressa é exposta na Figura 9 e foi usado o software Eagle para a elaboração do desenho da placa. Figura 9: Placa impressa desenvolvida pelo grupo Fonte: Própria 22 Os itens usados para fabricação da placa: • 1 garrafa de percloreto de ferro; • 1 placa de fenolite; • 1 caneta permanente; • 1 folha de papel colché; • 1 furador de placas; • 1 ferro de solta e estanho O método de fabricação da placa pode ser encontrado em diversos sites especializados, devido os diversos modos de fabricação existe. 3.2 PROTOCOLO I 2C O protocolo de comunicação I 2C (batizado assim pela empresa Philips - uma abrevi- ação de Inter IC) é formado por quatro linhas físicas, que incluem VDD e GND, e os outros dois como base para a comunicação de dados e transmissão de sinais. Estes dois são: SDA ou linha serial de dados, da qual envia/recebe dados (é bidirecional) e SCL ou linha serial de clock usada para sincronizar a comunicação. A simplicidade e eficácia deste protocolo foi determinante para a grande aceitação deste protocolo no mercado. O barramento I 2C permite trabalhar, num mesmo sistema, com diversos circuitos dedicados utilizando as mesmas linhas de informação, selecionando o circuito ao qual deseja-se comunicar e assim assegurando a chegada segura das mensagens. A linha de clock SCL é controlada pelo mestre, geralmente com maior capacidade de processamento, e os que recebem estes sinais são os escravos. Estes últimos têm internamente um endereço cada que os identifica, de maneira que quando o mestre precisa comunicar-se, envia um endereço pelo barramento e caso seja reconhecido, prossegue com a transferência de dados. Vale ressaltar que este barramento é do tipo multimestre, ou seja, pode haver mais de um mestre (dispositivo de controle) porém somente um deles pode estar ativo durante uma comunicação, caso contrário haverá colisão de dados. 23 Figura 10: Esquema de comunicações I 2C Fonte: http://www.pessoal.utfpr.edu.br/msergio/Monog-10-2-Teclado-eletronico.pdf Conforme mostrado na figura 10, para iniciar a comunicação entre mestre e escravo, o mestre deve gerar uma condição de partida que indica que o barramento será ocupado e para tanto envia 1 bit de inicialização denominado Start. Em seguida envia um pacote de 8 bits (1 byte) contendo o endereço do escravo ao qual quer se comunicar, composto pelos 7 bits mais significativos, junto do oitavo bit (LSB) que identifica se a operação é de escrita ou leitura. Caso o escravo determinado por este endereço receba esta mensagem, ele retorna um bit de reconhecimento avisando ao mestre que recebeu os dados, denominado acknowledge bit, ou simplesmente ACK. Assim o mestre pode começar a enviar os dados em pacotes de 8 bits, sempre intercalados por um bit ACK. Ao término da comunicação, o mestre envia uma condição de parada, um bit chamado Stop bit (I 2C, 2013). 3.2.1 COMUNICAÇÃO DE DADOS No projeto proposto, diversas são as comunicações entre os dispositivos existentes: LCD - arduino, arduino - acelerômetro e computador - arduino. Nesta seção será exposto tais comunicações, relacionando-as com o software implementado. O projeto desenvolvido até então pode ser conferido na figura 11: Figura 11: Objeto construído antes de ser finalizado Fonte: Própria 24 3.2.1.1 LCD - ARDUINO A tela de LCD usada no projeto possui oito pinos de ligação. Destes apenas cinco pinos são usados para comunicação de dados, os restantes são a entrada de tensão, o terra e o controle de iluminação das luzes de fundo. Os pinos de comunicação de dados são conectados ao arduino por meio de portas digitais. No caso deste projeto, foram setados da porta oito à doze. Todavia, de nada adianta apenas a conexão dos pinos se não for programada a comunicação dos pinos citados diretamente no software. Neste caso, ao escrever o código que será enviado ao arduino, o trecho abaixo exemplifica como foram inseridos os pinos no código: "Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);" Os pinos referem-se respectivamente ao CLK, SDIN, D/C, SCE, RST. O Adafruit_PCD8544 é uma biblioteca adicionada feita para o reconhecimento do visor de LCD usado, assim declarase o display como um objeto de Adafruit e direciona-se os pinos digitais que farão a transmissão de dados (ADAFRUIT. . . , 2013). 3.2.1.2 ACELERÔMETRO - ARDUINO O acelerômetro por sua vez se comunica com o arduino através de um protocolo I2C, como já explicado na seção 3.2. Entretanto, para essa comunicação ser efetiva foi necessário incluir a biblioteca wire no programa (WIRE. . . , 2013). Esta biblioteca tem como objetivo principal instaurar e reconhecer o protocolo I2C para efetuar a comunicação de dados com sucesso entre mestre e escravo. 3.2.1.3 BOTÕES - ARDUINO Os botões possuem conexão com o arduino por meio de portas digitais. Ao fazer a conexão do botão, necessita-se a declaração da porta digital conectada, do estado do botão e se o pino estará enviando ou recebendo dados. Estes métodos são feitos através de declarações no próprio código do programa. O estado do botão tem por finalidade receber e ler os dados enviados pelo botão. 25 3.2.1.4 COMPUTADOR - ARDUINO O computador foi usado para escrever o software em que foi feito o programa do projeto. Uma vez que o código era escrito no computador, a cada nova mudança, fazía-se o upload do código corrigido para o microcontrolador do arduino. Esta comunicação entre o arduino e o computador é feita via porta serial (USB - Universal Serial Bus). O USB é um tipo de conexão criada com o intuito de facilitar o uso de um periférico no computador sem a necessidade de desligá-lo. 26 4 4.1 METODOLOGIA FUNDAMENTOS DO PROJETO O sistema proposto consiste no desenvolvimento de um aparato digital que capta a in- clinação de uma superfície. Esta captura é feita através de um acelerômetro. Os componentes principais deste projeto são: plataforma Arduíno com microcontrolador ATmega328, um acelerômetro MMA7660 com sistema Grove da Seeed Studio, um computador com entrada USB ou a utilização de pilhas como fonte externa de alimentação. No que tange ao hardware do projeto, a placa Arduíno contém o microcontrolador mestre, ou seja, que fará o controle de todos os demais circuitos integrados no sistema. Estes são compostos da tela de LCD e do acelerômetro, este último se comunicando pelos sinais de SCL e SDA - Serial Clock Line para controlar a sincronia e Serial Data Line para a transmissão de dados, respectivamente. O acelerômetro possui uma referência base (gravidade) que a partir desta, percebe a inclinação assim que ligado. 4.2 PASSOS SEGUIDOS Com o conhecimento supérfluo de acordo com as necessidades do grupo sobre o mate- rial que dispomos - Arduíno, acelerômetro, LCD - bem como insuficiência em conhecimentos sobre a física envolvida, sobre como trabalha o mundo digital, dentre outros, nos dispomos primeiramente a pesquisar e abranger todos os assuntos antes de ir diretamente à construção do objeto e assim recolher conhecimentos o bastante afim de minimizar os problemas relacionados. Com diversos materiais de apoio, pudemos então iniciar a construção física do trabalho, que abrangeu partes como a soldagem de pinos, a montagem em cima da protoboard e junção de cada um com os jumpers mais o cabo grove. Posteriormente foram procurados e implementados testes simples, básicos, afim de verificar se o Arduíno estava recebendo os códigos escritos e assim respondendo da forma esperada. Nesta fase do projeto, tivemos alguns impasses com as portas de conexão entre Arduíno e computador, de maneira que a passagem 27 destes códigos não estavam ocorrendo - devido à porta de comunicação com o computador estar desconfigurada - e posteriormente com as portas digitais do Arduíno, que também não estavam configuradas como estavam escritas no código. 4.3 FUNÇÃO GERAL DO SISTEMA O objeto deste trabalho tem como função principal a captura da variação da posição, fornecendo ao usuário uma maneira simples e precisa de obter a inclinação da superfície que se deseja analisar e, deste modo, tornando possível o seu nivelamento. 4.4 SOFTWARES Os softwares utilizados para o desenvolvimento deste projeto, tanto na parte escrita quanto na parte do objeto, foram: • Compilador Arduíno • LaTeX 4.5 DESPESAS O custo para realização do projeto foi relativamente baixo, principalmente devido à sua complexidade e densidade. Uma vez que os módulos utilizados possuem inúmeras utilidades dentro do curso de engenharia de computação, o arduino, a tela de LCD , a protoboard e eventuais jumpers de ligação já se encontravam em mãos dos integrantes, de forma que apenas o sensor acelerômetro, os botões, a placa impressa e a caixa do dispositivo eram faltantes. 28 Com o intuito de auxiliar futuros leitores, construiu-se a tabela abaixo em que encontramse disponíveis os preços dos respectivos componentes utilizados: Item Tela de LCD Nokia 5110 Acelerômetro Arduíno Uno Protoboard Botões Encapsulamento Placa Impressa e Acessórios Custo Total Aproximado Preço R$15,00 R$30,00 R$30,00 R$15,00 R$2,00 R$15,00 R$20,00 R$130,00 Tabela 2: Média de Gastos do Projeto Estes foram buscados no site Deal Extreme (http://dx.com/pt/) e acessado dia 18 de setembro de 2013 por volta das 12:00 horas. 29 5 5.1 RESULTADOS RESULTADOS OBTIDOS Os resultados obtidos na versão final do projeto foram bastante satisfatórios, atendendo ao esperado pelo grupo. Todos os objetivos foram atingidos e todas as dificuldades superadas. Acreditamos ter em mãos da melhor forma possível, a proposta sugerida. O nível digital consegue realizar as medições a priori sem distorções, sem eventuais bugs que possam atrapalhar corriqueiramente na sua função. 5.2 DIFICULDADES DO PROJETO Parafraseando o poeta, "Nem tudo são flores", pois também houveram alguns gargalos que seguraram o andamento do projeto. Logo no início do trabalho da comunicação com o Arduíno, ou ainda, com a portas, o grupo não teve facilidade em modificar a função de cada entrada digital do Arduíno, uma vez que a configuração das bibliotecas utilizadas não estava na configuração padrão. Soubemos ainda que a porta de comunicação com o computador deveria também ser alterada da padrão (COM3) após inúmeras tentativas de enviar os códigos para a plataforma Arduíno, exigindo algumas pesquisas que nos mostraram o quão comumente este problema acontece com os mais diversos usuários desta plataforma, tendo como solução a simples mudança para a porta COM5. Nos assombrou também, por demasiado tempo, um bug que teve grande custo para identificarmos: os dados mostrados na tela de LCD, após algum tempo trabalhando ou mesmo quando a inclinação variava em grandes proporções (altos valores do ângulo), a leitura/envio de dados cessava e a tela de LCD estagnava no valor zero até um reset manual. Após algumas tentativas objetivas de correção deste problema, houve necessidade de reescrita de boa parte do código como solução. 30 Por fim, conciliar este trabalho junto das demais matérias do curso a fim de conseguir um bom andamento em todas, uma vez que a demanda de tempo é demasiadamente grande para a realização deste projeto como um todo - parte escrita, desenvolvimento do código, pesquisas, dentre outros - não é tarefa simples, uma vez conhecida toda dedicação necessária em cada parte. Foram exigidos tempos de trabalho durante o período de recesso bem como de finais de semana, mas que a recompensa ao ver todas as propostas cumpridas supera o desgaste gerado. 5.3 TRABALHOS FUTUROS Uma melhoria para um trabalho futuro sobre este projeto seria a implementação de uma mediana a fim de filtrar o sinal, provendo maior estabilidade na leitura das inclinações, uma vez que a alta sensibilidade não confere valores estáticos. Uma segunda ideia seria acoplar ao projeto um servomotor que visa corrigir qualquer variação de inclinação, como se compensasse qualquer desvio, mantendo sempre a estabilidade. 31 REFERÊNCIAS ACELEROMETROS. 2013. Disponível em: Acesso em: 18 de setembro de 2013. <nebm.ist.utl.pt/repositorio/download/375>. ADAFRUIT PCD8544 Nokia 5110 LCD Library. 2013. Disponível <https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library>. Acesso 11 de setembro de 2013. em: em: ARDUINO. 2013. Disponível em: <http://www.arduino.cc/>. Acesso em: 15 de agosto de 2013. ARDUINO Datasheet. 2013. Disponível em: <http://www.atmel.com/Images/doc8161.pdf>. Acesso em: 04 de setembro de 2013. ARDUINO Uno. 2013. Disponível em: <http://www.bettech.com.br/portal5f/index.php/destaques/arduinouno.html>. Acesso em: 04 de setembro de 2013. GROVE System. 2013. Disponível em: <http://www.seeedstudio.com/document/pdf/Introduction%20to%2 Acesso em: 23 de julho de 2013. I 2C. 2013. Disponível em: <http://www.robot-electronics.co.uk/acatalog/I2CT utorial.html>.Acessoem : 18desetembrode2013. LCD Nokia 5110. 2013. Disponível em: <https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5 Acesso em: 23 de julho de 2013. MECATRONICA. 2013. Disponível em: <http://www.mecatronicaatual.com.br/educacao/969transdutores-piezoeltricos>. Acesso em: 18 de setembro de 2013. SEEED Studio. 2013. Disponível em: <http://www.seeedstudio.com/depot/grove-3axisdigital-accelerometer15g-p-765.html?cPath=25_26>. Acesso em: 19 de julho de 2013. WIRE Library. 2013. Disponível em: <http://arduino.cc/en/reference/wire>. Acesso em: 11 de setembro de 2013.