Antonio Diego - Monografia Arduino

download Antonio Diego - Monografia Arduino

of 125

Transcript of Antonio Diego - Monografia Arduino

  • UNIVERSIDADE FEDERAL DO MARANHO CENTRO DE CINCIAS EXATAS E TECNOLOGIA

    DEPARTAMENTO DE ENGENHARIA DE ELETRICIDADE

    ANTONIO DIEGO SANTOS ABREU

    ARDUINO PLATAFORMA ELETRNICA MICROCONTROLADORA

    So Lus 2012

  • ANTONIO DIEGO SANTOS ABREU

    ARDUINO PLATAFORMA ELETRNICA MICROCONTROLADORA

    So Lus 2012

    Monografia apresentada ao Curso de Engenharia Eltrica da Universidade Federal do Maranho, para obteno do grau de Bacharel em Engenharia Eltrica.

    Orientadores:

    Prof. Dr. Areolino de Almeida Neto Prof. MSc. Marcos Tadeu Rezende

  • A Deus pelo dom da vida e sabedoria de todos os dias. minha linda famlia companheira.

    Aos meus grandes amigos.

  • AGRADECIMENTOS

    Aos meus pais, Dilva Abreu e Raimundo Abreu, por me dar a possibilidade e todo o suporte para conseguir alcanar os meus objetivos ensinando-me as diretrizes das disciplinas do meu comportamento para eu poder seguir minha vida.

    Ao meu querido irmo Antonio Marcos, que alm de um grande irmo um amigo de carter precioso e nico.

    A minha namorada, Aurydiana Frana, por estar sempre perto de mim nos ltimos anos compreendendo e vivenciando vrios momentos comigo sejam bons ou ruins.

    Aos meus familiares, principalmente minhas avs, por sempre entenderem minha ausncia quando precisava estudar.

    Em especial ao meu grande amigo Engenheiro Lucas Angelo por estar sempre dando foras e compartilhando bons momentos e projetos ao longo desses anos.

    Ao meu grande amigo Erick Santana, amigo que compartilhei algumas horas da madrugada nesse desafio dos estudos e provas.

    Ao amigo Marcos Ferreira pelo grande corao e o apoio de sempre. Ao amigo Enio Leal por ajudar-me na mudana de engajamento

    profissional. A todos os meus amigos da Universidade, Anderson Machado, James

    Pinheiro, Danilo Vale, Felipe Carvalho, Isac Lauda, Hugo Rossa, Gerdson Cunha, Marcos Lima, Renato Carvalho, Joselilson Silva, Diego Aurlio e todos aqueles que de alguma forma participaram da minha formao.

    Ao grande Professor Marcos Tadeu, do qual sou admirador pela sua capacidade de visualizar o que poucos conseguem ver e pelos seus preciosos ensinamentos e pacincia durante todas as etapas deste e de outros projetos.

    Ao Professor Areolino Neto por me proporcionar oportunidades e abrir portas para o mundo da Mecatrnica.

    A todos os professores com quem tive o prazer de compartilhar informaes ao longo destes anos no curso.

  • A Paulo Henrique e Carlos Csar, da NetCom, pela oportunidade que me ofereceram em sua Escola Tcnica e incentivo para o desenvolvimento de sistemas mecatrnicos.

    A todos que de forma direta ou indireta, me ajudaram a chegar nessa etapa da vida.

  • No conheo a chave para o sucesso, mas a chave para o fracasso tentar agradar a todo mundo.

    Bill Cosby

  • RESUMO

    Neste trabalho apresentada uma plataforma eletrnica microcontroladora denominada Arduino, incluindo as suas diversas aplicaes. A plataforma Arduino um sistema embarcado que foi desenvolvido para os projetistas mudarem o foco para a concepo final do projeto e no a montagem dos circuitos integrados em si. Dentre as diversas aplicaes, destacam-se a sua importncia em sistemas robticos, sistemas de conexo com internet, sensoriamento, comunicao remota e sistemas eletrnicos desenvolvidos para uso educacional. Todas essas aplicaes foram desenvolvidas utilizando-se uma estrutura baseada em Microcontrolador.

    Palavras-chave: Arduino, Sistema Embarcado, Microcontrolador.

  • ABSTRACT

    This work presents a microcontroller eletronic project called Arduino, includind its many applications. Arduinos platform is an embarked system that was developed for changing the designers focus from the assembly of the integrated circuits to the final conception of the project. Among several applicabilities of Arduino, some stand out, like applications in robotic systems, systems of connection with internet, sensing, remote communication and electronic systems designed for educational use. All these applications were developed using a microcontroller based structure.

    Keywords: Arduino, Embarked Systems, Microcontroller.

  • LISTA DE FIGURAS

    Figura 2.1 Diagrama esquemtico de um microcontrolador tpico .................... ...22 Figura 2.2 Evoluo do projeto Arduino ............................................................ ...24 Figura 2.3 Arduino Interface Serial .................................................................... ...27 Figura 2.4 Arduinos evoluo da comunicao USB....................................... ..28 Figura 2.5 Arduino Duemilanove ........................................................................ ..28 Figura 2.6 Arduino UNO ..................................................................................... ..29 Figura 2.7 Arduino MEGA 2560 ......................................................................... ..30 Figura 2.8 Arduino Mini ...................................................................................... ..30 Figura 2.9 Arduino Nano .................................................................................... ..31 Figura 2.10 Arduino Bluetooth .............................................................................. ..32 Figura 2.11 Arduino Fio e Lily Pad ....................................................................... ..32 Figura 2.12 Arduino sensorshields mdulos Zigbee e Inputshield .................... ..34 Figura 2.13 Arduino Mega GSM, GPRS e GPS ................................................... ..35 Figura 3.1 Software Arduino ............................................................................... ..38 Figura 3.2 Design da placa Arduino UNO .......................................................... ..39 Figura 4.1 Conexo do LED na placa Arduino ................................................... ..43 Figura 4.2 Interruptor na placa Arduino .............................................................. ..45 Figura 4.3 Acionamento sequencial ................................................................... ..48 Figura 4.4 Acionamento de um motor de corrente contnua ............................... ..49 Figura 4.5 Transistor MOSFET .......................................................................... ..50 Figura 4.6 Receptor infravermelho ..................................................................... ..51 Figura 4.7 Pulsos NEC ....................................................................................... ..52 Figura 4.8 Endereo $59 comando 16 no NEC .................................................. ..52 Figura 4.9 Repetio de sinal NEC .................................................................... ..53 Figura 4.10 Montagem do Arduino com o display de cristal lquido ..................... ..54 Figura 4.11 Conexo do receptor infravermelho com o Arduino .......................... ..54 Figura 4.12 Controle infravermelho utilizado no projeto ....................................... ..55 Figura 5.1 Modelos ISO/OSI .............................................................................. ..60 Figura 5.2 Arduino Ethernet Shield..................................................................... ..64 Figura 5.3 Hardware de acionamento ................................................................ ..66 Figura 5.4 Configurao do roteador .................................................................. ..67

  • Figura 5.5 Pgina web Arduino .......................................................................... ..67

  • LISTA DE TABELAS

    Tabela 3.1 Comparativo com as principais caractersticas relativas ao ATMEGA .36 Tabela 5.1 Funes das camadas do protocolo internet ...................................... ..61 Tabela 5.2 Caractersticas da comunicao TCP/IP ............................................ ..63

  • LISTA DE QUADROS

    Quadro 4.1 Cdigo do acionamento dos pinos de sada ...................................... ..43 Quadro 4.2 Cdigo pisca LED .............................................................................. ..44 Quadro 4.3 Cdigo do acionamento de um pino .................................................. ..46 Quadro 4.4 Cdigo do filtro de rudo de uma chave ............................................. ..47 Quadro 4.5 Cdigo do acionamento sequencial ................................................... ..48 Quadro 4.6 Cdigo do acionamento ..................................................................... ..50 Quadro 4.7 Cdigos e endereos de VCR com NEC ........................................... ..53 Quadro 4.8 Cdigo do acionamento do controle IR ............................................. ..56 Quadro 5.1 Cdigo fonte para o WebServer ........................................................ ..68

  • LISTA DE SIGLAS

    ADSL Asymmetric Digital Subscriber Line AGC Automatic Gain Control ATM Asynnchronous Transfer Mode CI Circuito Integrado DIP Dual In-line Package DC Direct Current DNS Domain Name System EEPROM Electrically Erasable Programmable Read-Only Memory FDDI Fiber Distributed Data Interface FTP File Transfer Protocol FPGA Field Programmable Gate Array FTDI Future Technology Devices International HTML Hyper Text Multi Language HTTP Hypertext Transfer Protocol I2C Inter Integrated Circuit IDE Integrated Development Environment IP Internet Protocol IR Infrared ISO International Organization for Standardization ICSP In Circuit Serial Programming LAN Local Area Network LCD Display de Cristal Lquido MOSFET Metal Oxide Semiconductor Field Effect Transistor NEC Numerical Eletromagnetics Code OSI Open Systems Interconnect PC Personal Computer PLD Programmable Logic Device PWM Pulse-Width Modulation SMD Surface Mounting Devices SPI Serial Peripheral Interface SRAM Static Random Access Memory

  • SMTP Simple Mail Transfer Protocol TCP Transmission Control Protocol TTL Transistor-Transistor Logic UART Universal Asynchronous Receiver Transmitter UDP User Datagram Protocol UMR Unidade Mvel Robtica USB Universal Serial Bus VCR Video Cassette Recorder

  • SUMRIO

    1 INTRODUO ............................................................................................. 17 1.1 Objetivos ..................................................................................................... 18 1.2 Motivao .................................................................................................... 19 1.3 Organizao do Trabalho ........................................................................... 19 2 PLATAFORMA ELETRNICA MICROCONTROLADA ARDUINO ............ 21 2.1 Microcontroladores e Sistemas Embarcados .......................................... 21 2.1.1 Sistemas Embarcados .................................................................................. 22 2.2 Histrico do Projeto Arduino ..................................................................... 23 2.3 Conceitos Bsicos ...................................................................................... 24 2.4 Os Principais Modelos da Plataforma Arduino ........................................ 26 2.4.1 Verso Arduino Interface Serial ................................................................. 27 2.4.2 Arduino evoluo USB ............................................................................... 27 2.4.3 Verses Arduino Duemilanove e Diecimila ................................................... 28 2.4.4 Verso Arduino UNO .................................................................................... 29 2.4.5 Verso Arduino MEGA ................................................................................. 29 2.4.6 Verso Arduino Mini ..................................................................................... 30 2.4.7 Verso Arduino Nano ................................................................................... 31 2.4.8 Verso Arduino Bluetooth ............................................................................. 31 2.4.9 Verses Arduino Fio e Lilypad ...................................................................... 32 2.4.10 Principais Diferenas .................................................................................... 33 2.5 Arduino SensorShield ................................................................................ 34 3 CARACTERSTICAS TCNICAS ................................................................ 36 3.1 Arduino e a Conexo com o Computador ................................................ 37 3.1.1 Software Arduino IDE ................................................................................... 37 3.2 A Placa Arduino UNO ................................................................................. 39 4 PROJETOS E IMPLEMENTAES COM O ARDUINO ............................. 42 4.1 Projetos Elementares ................................................................................. 42 4.1.1 Acionamento de Dispositivos de Sada ........................................................ 42 4.1.2 Acionamento do Arduino via Dispositivo de Entrada .................................... 45 4.1.3 Acionamentos Sequencial ............................................................................ 48 4.1.4 Acionamento de um motor dc via PWM do Arduino ..................................... 49

  • 4.2 Projeto do Controle Remoto IR ................................................................. 51 4.2.1 Teoria do Controle Infra Vermelho................................................................ 51 4.2.2 Protocolo NEC Caractersticas Tcnicas ................................................... 52 4.2.3 Projeto com acionamento de display de cristal via controle remoto ............. 53 5 ARDUINO E A CONEXO COM A INTERNET ........................................... 58 5.1 Protocolo TCP/IP e Ethernet ...................................................................... 59 5.2 Camadas do Protocolo ............................................................................... 60 5.2.1 Modelo ISO/OSI x Internet ............................................................................ 60 5.2.2 Funes das Camadas Internet .................................................................... 61 5.2.3 Camada de Transporte TCP/IP .................................................................... 63 5.3 Arduino Ethernet Shield ............................................................................. 64 5.4 Projeto Arduino Ethernet ........................................................................... 65 6 CONCLUSES ............................................................................................ 72

    REFERNCIAS ........................................................................................... 74 ANEXOS ...................................................................................................... 76

  • 17

    1 INTRODUO

    A crescente evoluo da tecnologia aliada ao grande investimento em microprocessadores originou uma nova concepo de desenvolvimento de projetos de sistemas embarcados na rea de eletrnica com novas ferramentas computacionais inclusive aplicadas a rea de mecatrnica. Esse novo conceito permite a uma ampla gama de profissionais (no somente engenheiros) a possibilidade de desenvolver projetos na rea. Rosa 2011 classifica o Arduino como o Lego do futuro, onde uma criana poderia montar o seu rob com esta ferramenta. A crescente oferta de Tablets, Smartphones e Netbooks vem possibilitando o advento de inovaes que afetam o dia-dia de milhes de pessoas em todo o mundo e que esto diretamente relacionados a essa tecnologia.

    O surgimento dos microcontroladores e a otimizao dos sistemas embarcados aumentaram as possibilidades de desenvolvimento de projetos de automao, dado o baixo custo e a alta velocidade de processamento desses dispositivos.

    O trabalho com os microcontroladores transformou-se em uma ferramenta fundamental para desenvolvimento de projetos eletrnicos de alto desempenho, pois tornou-se possvel programar uma pastilha de circuito integrado para efetuar controle, monitoramento e acionamento das mais variadas aplicaes dentro da informtica.

    O aprendizado dos microcontroladores tambm tornou-se um desafio, pois so tantos os modelos, configuraes e fabricantes que confundem os iniciantes nos estudos dessa ferramenta, no somente os estudantes, mas qualquer profissional que deseje implementar os seus projetos com os microcontroladores embarcados. A definio de qual microcontrolador utilizar em um projeto vai muito alm do que saber programar. Muitos fatores esto envolvidos, tais como: linguagem de programao, capacidade de processamento e disponibilidade no mercado local. Assim, existem diversas questes a serem levantadas quando se decide utilizar um microcontrolador.

    Desta forma, surge a necessidade de criar um novo conceito em aprendizagem de programao em eletrnica, de tal forma que exista uma interao bem definida dos elementos eletrnicos e da utilizao de suas potencialidades sem, contudo precisar conhecer profundamente os mecanismos. Conforme Rosa 2011, o

  • 18

    Arduino traz esse conceito de plataforma, pois em uma mesma placa pode-se perceber a existncia de um microcontrolador e facilmente se pode acessar os seus pinos de entrada e sada j pr-definidos.

    1.1 Objetivos

    O presente trabalho visa apresentar uma plataforma eletrnica microcontroladora tendo por base a tecnologia do Arduino. Este sistema uma ferramenta flexvel e de baixo custo, uma vez que surge como um novo conceito de hardware livre. Tambm uma ferramenta de fcil utilizao, seja por alunos ou profissionais da rea, ou at mesmo usurios com necessidade de desenvolver um projeto eletrnico e que possuem conhecimentos elementares na rea. Margolis 2011 fala sobre o a proposta de criao:

    O Arduino usado em muitos programas educacionais em todo o mundo, especialmente por desenvolvedores que querem criar seus prottipos com facilidade, mas no precisam de uma profunda compreenso dos detalhes tcnicos por trs de suas criaes. O Arduino tambm foi projetado para ser usado por pessoas sem formao tcnica, o software inclui uma abundncia de cdigo de exemplo para demonstrar como usar as mais variadas aplicaes da placa Arduino. (MARGOLIS, 2011, p.1)

    Neste contexto, nota-se a relevncia do Arduino na aplicao de projetos educacionais em vrios nveis do conhecimento, uma vez que para o seu uso em aplicaes elementares, o projetista no deve necessariamente conhecer profundamente o dispositivo.

    Como objetivos secundrios, neste trabalho foram projetados, construdos e testados vrios experimentos bsicos e complexos, que podem ser utilizados para o ensino dessa plataforma. Alm disso, foram criadas guias de laboratrio para estes experimentos, que podem ser aplicados em treinamentos e minicursos dentro da prpria Universidade.

  • 19

    1.2 Motivao

    A principal motivao desse trabalho foi apresentar para a comunidade universitria da UFMA a plataforma Arduino, devido esta ser uma ferramenta de boa acessibilidade, possuir baixo preo e no ser do conhecimento geral do corpo discente da Universidade Federal do Maranho, em termos de desenvolvimento de trabalhos acadmicos.

    Uma segunda motivao consistiu em poder contribuir para disseminar o conhecimento de plataformas microcontroladoras voltadas para o projeto como um todo e no somente para a arquitetura do microcontrolador, dando nfase sua funcionalidade, indo portanto alm do estudo sobre a disposio dos elementos dentro do microcontrolador utilizado.

    Desta forma, os resultados dos projetos elaborados nesse trabalho podem ser utilizados em vrios nveis do saber tecnolgico, bastando apenas determinar o objetivo do projeto e conhecer o circuito eletrnico no qual a plataforma Arduino estar inserida.

    1.3 Organizao do Trabalho

    Este trabalho est dividido em seis captulos e referncias bibliogrficas: Captulo 2: neste captulo so abordados alguns conceitos sobre Microcontroladores, Sistemas Embarcados e do Projeto Arduino. Neste ltimo ser descrita a evoluo de todas as placas bem como da placa me dos projetos que fazem parte deste trabalho; Captulo 3: neste captulo, so apresentados conceitos sobre alguns componentes eletrnicos usados no projeto, suas funes e especificaes, bem como as mais variadas placas de sensores (sensorshields) utilizadas atualmente;

    Captulo 4: neste captulo, so mostrados vrios exemplos de experimentos desenvolvidos para o laboratrio, demonstrando a funcionalidade do Arduino, bem como dos seus sensorshields e a descrio dos experimentos que foram construdos para posterior utilizao em treinamentos, tanto em Instituies de Ensino Tcnico e Tecnolgico como em centros de treinamentos de empresas do setor;

  • 20

    Captulo 5: neste captulo, apresentado um importante sensorshield da plataforma Arduino que interage na comunicao com a Internet bem como as especificaes para projetos futuros; Captulo 6: so apresentadas as concluses, onde so comentadas todas as potencialidades da plataforma Arduino que foram validadas com testes em laboratrio.

  • 21

    2 PLATAFORMA ELETRNICA MICROCONTROLADORA- ARDUINO

    O presente captulo descreve a teoria bsica dos microcontroladores e dos sistemas embarcados bem como as suas principais funcionalidades. Em seguida descrita a trajetria do projeto Arduino desde o surgimento at a criao do Arduino UNO. Vrios conceitos bsicos da plataforma foram contemplados e todos os modelos das placas foram descritos durante o captulo, culminando com a anlise das principais diferenas entre as placas. O texto tambm traz a descrio sobre os sensorshields, que so elementos importantes para um bom desempenho dos projetos com o Arduino.

    2.1 Microcontroladores e Sistemas Embarcados

    Os microcontroladores destacam-se por possurem vrias funcionalidades em nico chip. Lima 2010 apresenta a seguinte definio:

    Um microcontrolador um sistema microprocessado com vrias funcionalidades (perifricos) disponveis em um nico chip. Basicamente, um microcontrolador um microprocessador com memrias de programa, de dados e RAM, temporizadores e circuito de clock embutidos. O nico componente externo que pode ser necessrio um cristal para determinar a frequncia de trabalho (LIMA, 2010, p. 24).

    Microcontroladores so dispositivos capazes de efetuar o controle de equipamentos eletrnicos ou mesmo de mquinas de pequeno e grande porte, atravs de programao realizada em diferentes tipos de linguagem. um componente muito verstil, pois ele programvel e pode ser empregado em diversas aplicaes. Atualmente vrias empresas como Atmel, Microchip, Intel, Motorola, Texas, entre outros fabricantes possuem microcontroladores cada vez mais velozes, robustos, com maior capacidade de processamento, baixo consumo de energia, entre outras vantagens, as quais foram atingidas devido o alto investimento nas reas de pesquisa e desenvolvimento.

    Lima 2010 mostra que o desenvolvimento dos microcontroladores est associado ao grande numero de funes que ele pode executar a partir de um programa desenvolvido para uma determinada tarefa.

  • 22

    O desenvolvimento dos microcontroladores se deve ao grande nmero de funcionalidades disponveis em um nico circuito integrado. Como o seu funcionamento ditado por um programa, a flexibilidade de projeto e de formas de trabalho com um hardware especfico so inmeras, permitindo aplicao nas mais diversas reas (LIMA, 2010, p.18).

    Sistemas comandados por microcontroladores esto cada vez mais presentes no cotidiano das pessoas, onde suas aplicaes vo desde sistemas muitos simples (uma mquina de lavar roupas) at os sistemas mais complexos como processamento digital de sinais, controle de trajetria de robs dentre outros.

    Com base nos conceitos acima nota-se que a grande vantagem de se colocar vrias funcionalidades em um nico circuito integrado a possibilidade de desenvolvimento rpido de sistemas eletrnicos com o emprego de um nmero pequeno de componentes externos como mostrado no diagrama esquemtico da Figura 2.1.

    Figura 2.1 Diagrama esquemtico de um microcontrolador tpico

    Fonte: LIMA, 2010

    2.1.1 Sistemas Embarcados

    A nossa sociedade est cercada por incontveis sistemas embarcados, encontrados em diversos equipamentos dentre os quais destacamos: aparelhos de comunicao mvel, TV digital, som, modens, brinquedos, cmeras digitais, fornos de micro-ondas e outros aparelhos eletrodomsticos inclusive com controle remoto. At mesmo em alguns carros so usados vrios deles, em diferentes partes como,

  • 23

    por exemplo, no sistema de injeo eletrnica, freio ABS, airbag, computador de bordo, etc.

    Em Morimoto 2007 afirma-se que, ao contrrio de um PC, que pode executar os mais diversos programas simultaneamente e com diferentes funes, os sistemas embarcados so dispositivos "invisveis", que esto cada vez mais presentes em nosso cotidiano, de forma que muitas vezes sequer percebemos que eles esto l.

    Um sistema embarcado pode ser, desde uma pequena placa de algum brinquedo moderno, at uma mquina com centenas de processadores, destinada a criar desde previses sobre mercados de capitais, ou at controlar o trfego areo.

    Sistemas embarcados so geralmente desenvolvidos para uma tarefa especfica. Por questes de segurana e aplicabilidade alguns ainda possuem restries para computao em tempo real. O software desenvolvido para sistemas embarcados muitas vezes chamado firmware e armazenado em uma memria ROM ou memria flash, em vez de um disco rgido. Por vezes o sistema tambm executado com recursos computacionais limitados: sem teclado, sem tela e com pouca memria.

    Todos estes fatores tambm podem ser traduzidos em custo reduzido. Processadores utilizados em alguns sistemas embarcados geralmente tm preos bem menores que processadores convencionais.

    2.2 Histrico do Projeto Arduino

    O projeto Arduino foi iniciado na cidade de Ivrea, na Itlia em 2005, tendo por objetivo tornar os projetos de sistemas microcontrolados mais simples. Ele foi desenvolvido numa escola de engenharia e com oramento menor em relao aos custos na poca. Em 2006 o projeto recebeu meno honrosa na categoria Comunidades Digitais em 2006, pela Prix ArsEletronics. Tambm alcanou a marca de 50.000 placas vendidas at outubro de 2008. At julho de 2011 foram vendidas mais de 120.000 placas do projeto, de acordo com o site oficial do Arduino1.

    A Figura 2.2, mostra os principais marcos histricos do Arduino desde a criao.

    1http://www.arduino.cc

  • 24

    Figura 2.2 Evoluo do projeto Arduino

    Em 2005, um grupo acadmico com a proposta de reduzir os custos com projetos microcontrolados ganhou notria evoluo e reconhecimento a nvel mundial em um curto intervalo de tempo. A plataforma ainda era elementar e contava apenas com a comunicao tipo serial RS232. Em 2007, o Arduino Diecimilia ganhou a comunicao USB o que tornou o projeto mais flexvel e alavancou as vendas. Em 2009, com o lanamento do Arduino Duemilanove foi corrigido uma srie de erros de operao da placa anterior. Em 2010 foi lanado o Arduino UNO, que a placa base mais moderna atualmente e que segue com o mesmo sucesso, tendo em vista que essa placa conta com mais memria do microcontrolador e com mais velocidade no envio e recebimento de dados.

    2.3 Conceitos Bsicos

    O Arduino no um microcontrolador e sim uma plataforma eletrnica que possui uma srie de dispositivos eletrnicos agregados a um microcontrolador em uma placa de circuito integrado. A placa foi adaptada para conectar-se facilmente com outros dispositivos, pois possui a descrio bem detalhada de suas portas de entrada e sada bem como o acesso facilitado para sua comunicao com outros dispositivos e at mesmo a placas de expanso que tambm so confeccionadas para adaptar-se placa principal.

    Embora o Arduino seja uma plataforma que pode ser desenvolvida com base em qualquer microcontrolador, o modelo mais utilizado nas verses comerciais o ATMEL. No presente trabalho, utilizamos duas placas que, assim como no restante do mundo, utiliza os microcontroladores ATMEGA 328. No Brasil, existem

  • 25

    diversas cpias modificadas que foram desenvolvidas e adaptadas, tais como o Freeduino, Tatuino dentre outras verses.

    O Arduino tambm possui uma linguagem prpria, os desenvolvedores a nomearam de linguagem Arduino. Trata-se de uma linguagem C++ que foi adaptada disposio dos pinos das diversas placas do projeto.

    Os desenvolvedores do projeto disponibilizam todos os cdigos e diagramas de montagem para qualquer usurio interessado em confeccionar o seu prprio prottipo, da mesma forma que vendem as placas montadas para todo o mundo.

    Em reportagem revista INFO2, em maro de 2009, David Mellis, da Arduino, contou como um hardware de cdigo aberto (livre) pode se espalhar pelo mundo, Mellis falou que a empresa queria que outras pessoas estendessem a plataforma para adequ-la s suas necessidades. Para isso, elas deveriam ter acesso ao cdigo-fonte do software e ao projeto do hardware. Alm disso, como era uma plataforma nova e de cdigo aberto deu confiana s pessoas. Elas sabiam que poderiam continuar expandindo a plataforma mesmo que o desenvolvedor original desistisse dela.

    Segundo David Mellis 2009 o cdigo aberto traz algumas vantagens ao hardware que a possibilidade de adaptar o modelo de negcios e o fornecimento a diferentes situaes. Outras empresas podem vender kits para a montagem de dispositivos compatveis com Arduino, por exemplo. Tambm podem redesenhar os produtos para trabalhar com componentes que so mais baratos e fceis de conseguir em seus pases. Um exemplo de produto derivado das placas Arduino que atende a um uso especfico a ArduPilot, placa de cdigo aberto para navegao autnoma em aeronaves. (Revista INFO, 2009, p. 30)

    O Arduino uma plataforma open-source projetada com um microcontrolador simples de 8 bits da famlia AVR da fabricante ATMEL e que utiliza uma linguagem baseada em C/C++, mas que tambm pode ter o seu projeto adaptado para qualquer outro microcontrolador que suporte a linguagem. (ROSA, 2011, p.3)

    O projeto Arduino tem como uma de suas vantagens, ser uma ferramenta de baixo custo, flexvel e, principalmente, de fcil utilizao, seja por alunos

    2http://info.abril.com.br/professional/tendencias/hardware-livre-leve-e-solto.shtml

  • 26

    profissionais da rea, ou at mesmo usurios que tem necessidade de desenvolver um projeto eletrnico.

    Alm disso, os requisitos mnimos para utilizao de uma das placas da plataforma Arduino um computador com entrada USB e o software de compilao encontrado na pgina dos desenvolvedores do projeto3.

    As placas Arduino possuem algumas portas de entrada e sada, analgicas e digitais, alm de uma ou mais portas de comunicao serial, que so caractersticos do microcontrolador utilizado na placa.

    As placas Arduino contam com um sistema de boot incorporado ao microcontrolador, que tem por objetivo interpretar a linguagem Arduino e traduzi-la para linguagem de instruo do microcontrolador.

    Atravs dos diversos recursos apresentados pela plataforma, o Arduino pode interagir em diversos nveis de projetos, como em projetos mais simples que dispe de LED, botes, CIs, LCD, entre outros, comunicando com um PC atravs de porta USB, ou outros dispositivos controlveis como PLDs, FPGAs, ou outros microcontroladores e ferramentas mais sofisticadas, tais como comunicao ethernet e sem fio.

    2.4 Os Principais Modelos da Plataforma Arduino

    Desde o princpio, as placas Arduino contavam com um microcontrolador ATMEGA, portas de entrada e sada, analgicas e digitais nvel TTL - Transistor-Transistor Logic (5 V), e porta de comunicao serial. Hoje existem placas cada vez mais sofisticadas com configuraes que atendem cada vez mais as necessidades do pblico.

    As placas Arduino podem ser encontradas para venda em sites de representantes comerciais ou montadas pelo prprio usurio, j que os desenvolvedores disponibilizam em seu site os arquivos do esquemtico e do layout da placa. Alm disto, os componentes utilizados para fabricao das placas so de fcil acesso e encontradas em qualquer loja de componentes eletrnicos.

    A seguir so apresentadas as placas disponveis desde o primeiro modelo at o mais atual e ainda outros modelos mais especficos.

    3http://www.arduino.cc/

  • 27

    2.4.1 Verso Arduino Interface Serial

    A plataforma Arduino Interface Serial foi a primeira placa desenvolvida em 2005. Possui um microcontrolador ATMEGA8, que possui 8 KB de memria de programa do tipo flash, componentes discretos e uma porta serial do tipo RS232, conforme Figura 2.3. a placa mais simples de montar, pois os componentes utilizados so do tipo convencional.

    considerada hoje uma placa obsoleta, por causa de sua porta de comunicao estar caindo em desuso, os componentes so de encapsulamento tipo DIP e no conta com componentes do tipo SMD, considerados ideais pelo mercado.

    Figura 2.3 Arduino Interface Serial

    Fonte: Arduino, 2011.

    2.4.2 Arduino evoluo USB

    O Arduino USB foi a primeira placa fabricada com conexo USB, sendo vendida principalmente como um kit que deveria ser montado pelo usurio. Esta primeira placa tinha um problema de layout nas ligaes com conector USB e teve uma segunda verso lanada.

    Seguida desta, foi lanada a placa Arduino Extreme, que contava com componentes SMD em substituio aos convencionais, sendo lanada a seguir uma segunda verso em que o layout possua plano de terra. Alm disso, possua um ATMEGA8 e uma FTDI para converso RS232 - USB.

    A terceira gerao de Arduino com porta USB foi Arduino NG (Nuova Generazione), que continha um novo FTDI para converso RS232 USB e um novo

  • 28

    microcontrolador ATMEGA 168. O Arduino Extreme e o NG so apresentados na Figura 2.4.

    Figura 2.4 Arduinos evoluo da comunicao USB

    Fonte: Arduino, 2011.

    2.4.3 Verses Arduino Duemilanove e Diecimila

    O Arduino Duemilanove e Diecimilia so os modelos 2009 e 2007 das placas padro da plataforma. Conta com 12 portas de I/O digitais, 6 portas de I/O analgicas, conversor A/D de 10 bits, comunicao via USB, SPI, I2C, Canais PWM, alimentao via USB ou externa atravs de fonte de alimentao, entre outras caractersticas. Alm disso o modelo 2007 contava com um microcontrolador ATMEGA 168 com 16 KB, enquanto o modelo 2009 contava com um ATMEGA 328 com 32 KB (Flash). O modelo do Duemilanove apresentado na Figura 2.5.

    Figura 2.5 Arduino Duemilanove

    Fonte: Arduino, 2011.

  • 29

    2.4.4 Verso Arduino UNO

    O Arduino UNO a ltima verso das placas Arduino, como apresentado na Figura 2.6. Lanada no final de 2010 possui um microcontrolador ATMEGA328 e a novidade est no conversor RS232 USB que conta com um ATMEGA8 substituindo o FTDI. Com isto o arquivo de carregamento do sistema diminuiu de tamanho, o que economizou na memria flash do ATMEGA328 e acelerou o processo.

    O UNO foi utilizado para marcar o lanamento do Arduino 1.0 e junto a este sero obtidas as verses de referncia.

    Figura 2.6 Arduino UNO

    Fonte: Arduino, 2011.

    2.4.5 Verso Arduino MEGA

    O Arduino MEGA uma placa que possui como caractersticas principais um microcontrolador que possibilita principalmente uma quantidade maior de portas de I/O, outros recursos como portas seriais extras, PWMs, entre outros recursos conforme mostrado na Figura 2.7.

    Essa placa foi desenvolvida originalmente com o ATMEGA 1280, um microcontrolador com 128 KB de memria flash e um FTDI, que foram substitudos posteriormente por um ATMEGA 2560, que possui 256 KB de memria flash e assim como o UNO possui um ATMEGA 8 como conversor RS232 USB.

  • 30

    Figura 2.7 Arduino MEGA 2560

    Fonte: Arduino, 2011.

    2.4.6 Verso Arduino Mini

    O Arduino Mini a menor placa de todas as placas, como mostra a Figura 2.8. Ela baseada em um ATMEGA168, pode ser considerada a miniaturizao da Diecimila por possuir grande parte dos recursos desta, mas no possui conexo USB.

    Esta placa ideal quando se deseja otimizar espao e projetar mais de um prottipo, pois neste caso necessrio apenas um adaptador no qual pode gravar quantas placas mini se desejar.

    Pode-se utiliz-la diretamente em um protoboard ou ento sold-la ao hardware do prottipo em desenvolvimento.

    Figura 2.8 Arduino Mini

    Fonte: Arduino, 2011.

  • 31

    2.4.7 Verso Arduino Nano

    Esta placa pode ento ser considerada a miniaturizao da Arduino Duemilanove completo, pois possui praticamente todos os recursos que o Duemilanove dispe inclusive conexo USB, conforme a Figura 2.9.

    Para aliment-lo por uma fonte externa, necessrio que a alimentao ocorra diretamente nos pinos de alimentao disponveis, diferente do que ocorre no Duemilanove, mas em relao ao tamanho, esta placa semelhante Mini, porm um pouco mais alongada.

    Figura 2.9 Arduino Nano

    Fonte: Arduino, 2011.

    2.4.8 Verso Arduino Bluetooth

    O Arduino Bluetooth uma placa que se difere em vrios aspectos as Arduinos tradicionais. Como o prprio nome sugere, o Arduino Bluetooth possui conexo sem fio via Bluetooth incorporado na placa, conforme Figura 2.10.

    Devido a sua complexidade, esta a placa Arduino com o oramento mais alto e tambm a mais sensvel. Sua alimentao de no mximo 5,5 V que serve para carregar a bateria presente no mdulo.

    Possui algumas outras peculiaridades, como por exemplo, o mdulo de Bluetooth, que deve ser configurado conforme exige o fabricante.

  • 32

    Figura 2.10 Arduino Bluetooth

    Fonte: Arduino, 2011.

    2.4.9 Verses Arduino Fio e Lilypad

    Estas duas placas Arduino so de uso mais especfico. O Arduino Lilypad foi desenvolvido em um formato circular o que viabiliza a sua aplicao, que ser incorporado a roupas e tecidos dentre outras aplicaes.

    J o Arduino Fio uma placa desenvolvida para com o Funnel, que uma linguagem de programao baseada em redes funcionais. Possui um ponto de Wireless contendo inclusive um conector para ser acoplado um dispositivo sem fio.

    A Figura 2.11 mostra o formato dessas placas.

    Figura 2.11 Arduino Fio e Lilypad

    Fonte: Arduino, 2011.

  • 33

    2.4.10 Principais Diferenas

    Cada Arduino tem sua particularidade, sendo que o melhor buscar o custo/benefcio mais interessante. O mercado proporciona opes de alto e baixo custo, que fazem toda a diferena na montagem final do projeto, dependendo do propsito do mesmo.

    Projetos mais simples que no exigem otimizao de espaos, podem utilizar um Arduino UNO ou Duemilanove, dependendo se necessrio uma boa velocidade do microcontrolador ou no. Aplicaes em que velocidade no extremamente essencial, o Arduino Duemilanove suficiente. Caso contrrio, um Arduino UNO mais interessante, j que o carregamento do arquivo de inicializao para a memria de programa do microcontrolador principal executado por um microcontrolador a parte.

    De acordo com a publicao cientfica Programar 2008, o bootloader uma ferramenta que quando ligada possibilita que o Arduino receba os comandos diretamente da porta USB. Em outras palavras, o carregador do arquivo de inicializao (bootloader) permite um canal direto de carregamento da placa com o computador, o que d uma velocidade muito grande na execuo do projeto, pois a prpria placa funciona como gravadora do microcontrolador.

    Quando so necessrias muitas portas de I/O, digitais ou analgicas, o Arduino Mega a melhor opo. Projetar um hardware e ainda ter de multiplexar as portas I/O para aumentar a variabilidade do Arduino UNO ou Duemilanove muitas vezes se torna mais dispendioso do que adquirir um Arduino Mega.

    Quando se fala em otimizao de espaos, os Arduinos Mini e Nano so as opes mais adequadas, j que se assemelham praticamente a CIs de 40 pinos DIP. O layout dessas placas foi feito pensando nesta premissa.

    O Arduino Bluetooth uma opo bastante onerosa, mas que dependendo da situao mais simples de aplicar do que adquirir um sistema sem fio e acoplar externamente a outro tipo de Arduino. No mercado possvel adquirir placas baseadas no Arduino, como o Freeduino, o Chinduino, Seeduino, Iluminato e at mesmo a verso brasileira com uma estampa da bandeira do Brasil na parte de baixo da placa. Todas estas placas so os chamados clones e podem apresentar peculiaridades em relao ao original, inclusive melhorias como uso de um microcontrolador mais eficiente, maior nmero de portas, entre outros.

  • 34

    A escolha da placa fica por conta da relao custo benefcio do projeto, que deve faz-lo da melhor forma possvel e pensando em todas as possibilidades futuras, mas se necessrio mudar o tipo de placa Arduino depois de iniciado o projeto, no h problema algum, j que todas as placas tem a linguagem compatvel entre si.

    2.5 Placas Arduino SensorShield

    O Arduino possui uma sria de adaptadores, que otimizam as suas funcionalidades, conforme as Figuras 2.12 e 2.13, denominados Arduinos sensorshields. Os sensorshields so placas plug and play que garantem ao Arduino uma peculiaridade no desenvolvimento de projetos.

    Possuem funes pr-definidas, tais como zigbee (comunicao sem fio), controle remoto, adaptador ethernet, interface com motores e adaptao para vrios tipos de sensores. So facilmente adaptveis ao Arduino e servem para aplicaes especficas.

    Figura 2.12 Arduino Sensorshields Mdulos Zigbee e InputShield

    Fonte: Arduino,2011

  • 35

    Figura 2.13 Arduino Mega GSM GPRS GPS

    Fonte: Arduino, 2011

  • 36

    3 CARACTERSTICAS TCNICAS

    Os microcontroladores ATMEGA so bastante flexveis e os programas desenvolvidos para um microcontrolador desta famlia necessitam de poucos ajustes, s vezes at nenhum, para serem utilizados em outros microcontroladores do mesmo gnero, diferentemente de outros modelos.

    Os microchips utilizados nas placas Arduino so: ATMEGA8, ATMEGA168, ATMEGA328, ATMEGA1280 e ATMEGA2560. Cada qual possui peculiaridades, como disposio dos pinos, mas a programao a mesma e vale para qualquer um deles.

    No Arduino ainda utilizado um cristal ressonador de 16 MHz como gerador do sinal de "clock" externo dos microcontroladores. Isto possibilita que o microcontrolador execute cerca de 16 milhes de instrues por segundo.

    Em relao aos recursos de cada um dos microcontroladores, apresentado na Tabela 3.1 um comparativo com as principais caractersticas relativas ao ATMEGA.

    Tabela 3.1 Comparativo com as principais caractersticas relativas ao ATMEGA

    ATMEGA PortasI/O Flash(Kb) EEPROM(Kb) SRAM(Kb) CanaisA/D UART 8 23 8 0,5 1 6 1

    168 23 16 0,5 1 8 1 328 23 32 1 2 8 1 1280 86 128 4 8 16 4 2560 86 256 4 8 16 4

    Fonte: Rosa, 2011

    Alguns conceitos bsicos sobre as caractersticas destes microcontroladores so:

    Portas de I/O so as portas de entrada e sada de dados, analgicos ou digitais, e que servem para comunicar externamente o microcontrolador e hardware. A memria flash delimita o tamanho mximo do programa que ser executado pelo Arduino. O bootloader do Arduino ainda utiliza uma pequena parcela desta memria.

  • 37

    A memria EEPROM uma memria utilizada para armazenar dados, os quais s sero excludos quando o programa sobrescrev-los. A memria SRAM uma memria utilizada para armazenar dados temporrios. Canais A/D so canais que convertem dados analgicos em digitais. No ATMEGA a converso A/D tem preciso de 10 bits. UART um perifrico responsvel pela comunicao serial entre o microcontrolador e o mundo externo, como por exemplo a comunicao serial entre Arduino e PC.

    No presente trabalho foi adotada como placa padro o Arduino UNO e o Duemilanove para execuo dos projetos desenvolvidos e demonstrao dos exemplos de programao. Entretanto, os resultados obtidos podem ser adaptados para quaisquer outros modelos.

    3.1 Arduino e a Conexo com o Computador

    O software utilizado para desenvolver os projetos da plataforma Arduino denominado Arduino IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Integrado), pode ser utilizado em qualquer uma das placas da famlia Arduino.

    Nesta seo so apresentados alguns aspectos desse software bem como da conexo da placa com o computador e algumas inconsistncias que podem interferir na comunicao. Em seguida descrita a placa Arduino UNO por completo, todos os pinos externos e componentes que fazem parte do projeto da placa explicitando as suas funes e os recursos disponveis.

    3.1.1 Software Arduino IDE

    O Arduino IDE um programa multitarefa desenvolvido em JAVA, utilizado para criar, salvar, editar e compilar os programas e carreg-los na placa Arduino, alm de apresentar outros recursos como gravao do bootloader em um microcontrolador ATMEGA e um monitor serial simples.

  • 38

    O programa possui uma interface simples e rpida, que inclui um editor de cdigos-fonte com recursos de realce e identificao automtica de determinados cdigos digitados no programa.

    O programa ainda possui uma srie cdigos-fonte exemplos, uma ferramenta que auxilia o programador a aprender a linguagem Arduino ou relembrar cdigos necessrios durante o projeto que est sendo desenvolvido.

    A Figura 3.1 mostra a tela do software Arduino em execuo.

    Figura 3.1 Software Arduino

    Fonte: Arduino, 2011

    Na pgina oficial do Arduino realizado o download de um arquivo compactado, no qual est uma pasta que contm uma quantidade razovel de arquivos, drivers para instalao do CI FTDI, exemplos, bibliotecas, referncias, entres outros.

    No Anexo I desse trabalho apresentado todo o passo a passo da utilizao do programa com todos os mdulos e caractersticas da linguagem.

  • 39

    3.2 A Placa Arduino UNO

    A placa Arduino UNO a mais recente e pode-se consider-la atualmente como referencia dessa plataforma. Ela derivada da placa Arduino Duemilanove que possui um CI de converso RS232 USB. A grande novidade desta placa est na reduo do bootloader do sistema que foi incorporado a um ATMEGA8. A Figura 3.2 mostra em detalhes, os diversos componentes da Arduino UNO.

    Figura 3.2 Design da placa Arduino UNO

    Fonte: Arduino, 2011

    Para detalhar a funcionalidade dos pinos, observa-se na Figura 3.2, a partir do primeiro pino no canto superior direito da placa, o pino digital 0 e seguindo no sentido anti-horrio, temos os seguintes componentes e funes:

    Pinos 0 e 1: So portas de I/O digitais quando o modo serial no for utilizado no cdigo fonte. No caso de necessitar de porta serial para comunicar durante o programa, estas duas portas no serviram de I/O digitais, apenas para comunicao (so os pinos Tx e Rx). Pinos 2 13: So as portas de I/O digitais. So portas onde o sinal de sada ser 0 V ou 5 V, conforme o cdigo fonte executar. Nas portas 11, 10, 9, 6, 5 e 3 esto disponveis os 6 canais PWMs da placa. Ainda nestes pinos tem-se

  • 40

    algumas outras funes especiais, como as ligaes SPI e 2 interrupes externas (pinos 2 e 3). Pino GND: Porta referente a um terra digital. Utilizado como terra referencial do hardware externo. Pino AREF: Porta de entrada, responsvel por receber um sinal de referncia externa para o conversor A/D do Arduino. Se este pino ficar flutuando, o Arduino considerar como referncia 0 V. Pinos Analog in: So as 6 portas analgicas da placa e possuem converso A/D com 10 bits de preciso, ou seja, possvel obter 1024 nveis de tenso diferentes com estes 10 bits (2 bits). Estes pinos podem ser utilizados como portas de entrada e sada e ainda nestes, est disponvel a comunicao I2 C. Pinos de alimentao (Power): Podem ser utilizados como fonte de tenso para o hardware externo, entrada de energia no pino Vin e um pino de reset externo. So 2 nveis de tenso para alimentao externa (5 V e 3,3 V) e GND. Pinos ICSP: Esto disponveis para o caso de se desejar gravar algum

    programa ou o bootloader da placa Arduino e significa In-System Programmer. Se observado corretamente, pode-se utilizar esses pinos para comunicao SPI da placa, pois os pinos MISO, MOSI e SCK esto conectados nestes pinos.

    O Arduino tambm possui uma srie de outros elementos que so integrantes bsicos das estruturas das placas. So eles:

    Boto de Reset: Este boto o reset e est ligado diretamente ao reset do microcontrolador e tem por funo facilitar ao usurio a reinicializao da placa. Cristal Oscilador: um componente extremamente importante na placa Arduino, pois trata-se do gerador de clock com preciso do microcontrolador. Conversor RS232 USB: No caso do Arduino UNO, este componente um outro microcontrolador (ATMEGA 8). Adaptador de entrada para fonte: a entrada jack para uma fonte de alimentao externa do tipo fonte CA/CC com tenso mxima de 15 V, sendo que o ideal a utilizao de fonte de alimentao com tenso entre 7,5 V e 10 V. possvel se utilizar uma bateria de 9 V com um adaptador para este tipo de entrada.

  • 41

    Regulador de tenso: Regulador de tenso do tipo 7805M para regular e estabilizar em 5 V uma alimentao de uma fonte de tenso externa. Entrada USB: Utilizada para comunicao e programao da placa Arduino. Esta entrada pode ser utilizada como fonte de alimentao, j que a USB do PC fornece uma alimentao de 5 V estvel. Microcontrolador ATMEGA328: Responsvel por praticamente todas as funes e que no caso da placa UNO, trata-se de um ATMEGA328. LED de sinalizao: So quatro os LED de sinalizao presentes na placa, sendo:

    o LED de Potncia: Indica que a placa est alimentada; o LED Serial Tx e Rx: Sinalizam que est ocorrendo transmisso

    de dados e recepo de dados de e para a placa. o Pino 13 LED: o nico LED presente na placa para utilizao

    via cdigo. ligado ao pino 13 de I/O digital e pode ser utilizado como teste de verificao de defeito da placa.

  • 42

    4 PROJETOS E IMPLEMENTAES COM O ARDUINO

    Neste captulo so abordadas vrias potencialidades e funcionalidades da placa Arduino bem como a descrio completa de alguns projetos que utilizam essa placa como principal elemento de controle.

    Os projetos tambm podem ser implementados com os shields, que so placas adicionais que podem ser agregadas ao Arduino original para aumentar as suas capacidades de processamento, expanso de pinos e funcionalidades. Dentre essas funcionalidades podemos destacar os shields de ethernet, TCP/IP sem fio, motorshield etc.

    Os shields seguem a mesma filosofia que o conjunto de ferramentas originais: so fceis de montar e baratos de produzir e foram desenvolvidos tendo como o principal foco a funcionalidade do projeto e no na arquitetura do microcontrolador que est sendo utilizado. Os shields so acompanhados de cdigos para servir como interface com o cdigo principal de tal forma que devemos incluir as bibliotecas referentes sua funo para o devido reconhecimento da placa principal do projeto.

    4.1 Projetos Elementares

    Os projetos, com implementaes prticas apresentados nesta seo envolveram acionamentos de dispositivos de sada, leitura das entradas do Arduino, acionamento sequencial e o acionamento de um motor via PWM do Arduino.

    4.1.1 Acionamento de Dispositivos de Sada

    O projeto em questo desenvolvido com o intuito de descrever as ferramentas necessrias para implementar um acionamento de dispositivos de sada pelos pinos da placa Arduino. No presente experimento foi demonstrado o simples acionamento de um LED (Light Emitter Diode), conforme mostrado na Figura 4.1.

    As placas Arduino so projetadas de forma a facilitar o piscar de um LED com o uso do pino digital 13, como apresentado na Figura 3.2. As novas placas j so fabricadas com o LED instalado e tambm placas existe um resistor de 1 k no

  • 43

    pino 13, o que lhe permite conectar o LED diretamente a ele. Para conexo a outro pino digital, deve-se usar um resistor externo.

    Figura 4.1 Conexo do LED na placa Arduino

    No Quadro 4.1, temos o cdigo para ser compilado e executado na placa Arduino. O cdigo de exemplo muito simples, pois demonstra o acionamento dos pinos de sada da placa em nvel alto e baixo para respectivamente ligar e desligar.

    Quadro 4.1 Cdigo de acionamento dos pinos de sada

    Existem situaes em que necessrio que o dispositivo seja acionado em intervalos peridicos ao mesmo tempo em que outra funo executada (tal como observar o estado de um interruptor). Para tanto no se deve usar a funo delay ( ), seno todo o restante do programa fica paralisado enquanto o LED pisca.

    Para demonstrar esse exemplo segue um cdigo que demonstra como possvel acionar um dispositivo periodicamente (nesse caso um LED) sem o uso da funo delay ( ). O que o programa faz observar quando foi a ltima vez que o LED foi ligado ou desligado e assim, a cada ciclo de loop ( ), verificar se passou o tempo

    /*LED pisca-pisca: liga e desliga um LED conectado a um pino digital em intervalos de 2 segundos. */

    void setup( ) { pinMode(13, OUTPUT); }

    void loop( ) { digitalWrite(13, HIGH); // liga o LED delay(1000); // aguarda 1 segundo digitalWrite(13, LOW); // desliga o LED delay(1000); // aguarda mais um segundo }

  • 44

    determinado, se esse tempo tiver passado, o LED ligado caso esteja desligado e vice-versa.

    O cdigo do Quadro 4.2 deve ser o padro frente funo delay ( ), pois o delay significa que o microcontrolador ir aguardar um determinado intervalo de tempo no executando nenhuma outra atividade, um estado de inrcia que nem sempre interessante para o projeto.

    Quadro 4.2 Cdigo pisca LED

    constintLEDPin = 13; //LED conectado ao pino digital 13

    intLEDtate = LOW; // ultimo valor do LED longpreviousMillis = 0; // ultimo momento que LED foi atualizado

    longinterval = 1000; // tempo de transio entre estados (milisegundos)

    void setup() {

    pinMode(LEDPin, OUTPUT); // configura o pino digital como sada }

    void loop() { // verifica se o melhor momento para atualizar o LED, ou seja, se a diferena entre o tempo atual e o ltimo tempo que piscamos o LED maior que o tempo de transio entre estados?

    unsigned long currentMillis = millis(); if(currentMillis - previousMillis> interval) {

    // ultimo tempo em que o LED piscou

    previousMillis = currentMillis; // se o LED est apagado acenda-o ou vice-versa: if (LEDtate == LOW) LEDtate = HIGH; else LEDtate = LOW;

    digitalWrite(LEDPin, LEDtate); } }

  • 45

    4.1.2 Acionamento do Arduino via Dispositivo de Entrada

    O interruptor instantneo um componente que conecta dois pontos de um circuito ao pression-lo. O exemplo a seguir, liga um LED quando pressionado um interruptor.

    Conforme mostrado na Figura 4.2, verifica-se que foram conectados dois fios placa Arduino. O primeiro vai de um dos terminais do interruptor ao GND. O segundo vai do outro terminal do interruptor at o pino digital 2 do Arduino. Foi ligado um resistor pull-up de 10 k nesse ltimo terminal (um terminal do resistor vai ao terminal do interruptor; o outro vai ao pino de fornecimento de 5 V do Arduino).

    Quando o interruptor est livre (no pressionado), no h conexo entre seus dois terminais, de forma que o pino do Arduino est conectado aos 5 V (via o resistor pull-up) e ao ler o pino, obtm-se um nvel alto. Quando o interruptor fechado (pressionado), ocorre conexo entre seus terminais, de forma que o pino do Arduino ligado ao terra do circuito e obtm-se um nvel baixo. Nesse caso, observa-se que o pino ainda se mantm conectado aos 5 V, mas o resistor de pull-down com que o pino esteja mais prximo ao terra. O circuito tambm pode ser ligado na lgica reversa com o resistor de pull-up mantendo o pino 2 em nvel baixo.

    Se por acaso o pino digital for desconectado da montagem, o LED poder piscar de forma irregular, porque no pino o nvel de tenso est flutuando com valores aleatrios, entre nveis alto e baixo. Por isso se utiliza um resistor de pull-up ou pull-down no circuito. O cdigo referente aplicao prtica est presente no Quadro 4.3.

    Figura 4.2 Interruptor na placa Arduino

    Fonte: Arduino, 2011

  • 46

    Quadro 4.3 Cdigo do acionamento de um pino

    Em situaes mais crticas, necessita-se de um filtro para evitar rudos do interruptor toda vez que ele acionado, pois trepidaes causam reconhecimento semelhante a mltiplos toques. O cdigo apresentado no Quadro 4.4 realiza esse filtro atravs da funo milis ( ) para acompanhar o momento em que o interruptor pressionado. Esta funo tambm permite o ajuste do tempo de filtragem, em diversos projetos esse tipo de funo interessante, por parametrizar o ajuste de tempo em que funo atuar no sistema a fim de evitar a trepidao.

    intLEDPin = 13; // escolha o pino para o LED intinPin = 2; // escolha o pino de entrada (para o interruptor) intval = 0; // varivel para ler o estado do interruptor

    void setup() { pinMode(LEDPin, OUTPUT); // declara-se o LED como sada pinMode(inPin, INPUT); // declara-se o interruptor como entrada }

    void loop(){ val = digitalRead(inPin); // ler o valor de entrada if (val == HIGH) { // verificar se a entrada HIGH (interruptor livre) digitalWrite(LEDPin, LOW); // desligar LED }else { digitalWrite(LEDPin, HIGH); // ligar LED } }

  • 47

    Quadro 4.4 Cdigo do filtro de rudo de uma chave

    intinPin = 7; // o nmero do pino de entrada intoutPin = 13; // nmero do pino de sada

    intstate = HIGH; // estado atual do pino de sada intreading; // estado atual do pino de entrada intprevious = LOW; // estado anterior do pino de entrada

    // as seguintes variveis so do tipo ''long'' porque o tempo, // medido em milissegundos, // transformar-se- logo em um valor grande demais para um ''int'' long time = 0; // ltimo momento em que o pino de sada foi atualizado longdebounce = 200; // tempo do filtro, aumente se ocorrer irregularidades

    void setup() { pinMode(inPin, INPUT); pinMode(outPin, OUTPUT); }

    void loop() { reading = digitalRead(inPin);

    // se acabamos de pressionar o interruptor (isto , se a entrada // foi de LOW para HIGH), e esperamos o bastante desde o // ltimo toque de forma a ignorar o rudo... if (reading == HIGH &&previous == LOW &&millis() - time >debounce) { // inverta a sada if (state == HIGH) state = LOW; else state = HIGH;

    // ...e lembre-se do momento do ltimo toque time = millis(); }

    digitalWrite(outPin, state);

    previous = reading; }

  • 48

    4.1.3 Acionamentos Sequenciais

    Neste experimento so utilizados seis LED para apresentar um modo sequencial de acionamento dos dispositivos de sada do Arduino, conforme mostrado na Figura 4.3. Os LED esto conectados do pino 2 ao 7 da placa, com o uso de resistores de 330 .

    O cdigo de acionamento sequencial apresentado no Quadro 4.5 e atravs dele produzido piscar dos LED em sequncia, um por um, utilizando para tal duas funes: uma para acionar a sada e outra para gerar um retardo.

    Figura 4.3 Acionamento sequencial

    Quadro 4.5 Cdigo acionamento sequencial

    int timer = 100; // Quanto maior, mais devagar. int pins[] = { 2, 3, 4, 5, 6, 7 }; // vetor com o nmero dos pinos intnum_pins = 6; // quantidade de LED (tamanho do vetor) void setup(){ int i; for (i = 0; i

  • 49

    4.1.4 Acionamento de um motor dc via PWM do Arduino

    Neste experimento desenvolvido o acionamento de um motor dc de 12 V via PWM de uma placa Arduino, conforme mostrado na Figura 4.4. O controle do motor feito a partir da leitura de um potencimetro, cujo valor de tenso usado como referncia para o ajuste do ciclo de trabalho do PWM. Com base no valor de tenso do potencimetro, o Arduino ajusta o tempo dos nveis alto e baixo do PWM, de modo a controlar o motor dc.

    Para o desenvolvimento do experimento, foram utilizados os seguintes componentes:

    1 placa Arduino Duemilanove 1 MOSFET IRF540 2 Resistores: 1 de 1 k e outro de 10 k 1 Motor DC de 12 V

    O cdigo utilizado no acionamento do motor dc apresentado no Quadro 4.6.

    Figura 4.4 Acionamento de um motor de corrente contnua

  • 50

    Figura 4.5 Transistor MOSFET

    Quadro 4.6 Cdigo do acionamento

    O experimento desenvolvido demonstrou a potencialidade do Arduino ao controlar um motor de corrente contnua via modulao PWM, que um tipo de acionamento muito comum em automao e controle.

    O Arduino UNO possui no total 12 pinos de I/O digitais, cujos valores de tenso so 0 V ou 5 V. As portas PWM esto disponveis em seis canais, que so as portas 3, 5, 6, 9, 10 e 11. Para o experimento em questo, foi utilizado o pino 9 para gatilhar o MOSFET que comuta para o funcionamento do motor dc.

    intsensorPin = A0; intsensorValue = 0; void setup() { pinMode(9, OUTPUT); Serial.begin(9600);}

    void loop() { sensorValue = analogRead(sensorPin); analogWrite(9,sensorValue/4); Serial.println(sensorValue/4); delay(10);}

  • 51

    4.2 Projeto do Controle Remoto IR

    O projeto do controle remoto IR precisou de um sensor receptor infravermelho. O receptor utilizado foi o IRM3638, apresentado na Figura 4.6, que foi conectado placa Arduino como forma de receber o sinal infravermelho. A ideia bsica do projeto enviar comandos de um controle remoto para o Arduino atravs do receptor IR com os valores dos acionamentos sendo apresentados em um display de LCD 16 x 2.

    4.2.1 Teoria do Controle Infra Vermelho

    A comunicao por um sinal infra-vermelho foi desenvolvida ao longo dos anos, sendo hoje a forma mais barata para controlar remotamente um dispositivo. Quase todos os equipamentos de udio e vdeo podem ser controlados dessa maneira.

    O uso dos componentes que so utilizados para implementar sistemas de controle infra-vermelho ficou generalizado, de modo que o preo desses dispositivos cada vez mais acessvel ao desenvolvedor.

    A seguir apresentado o modelo de comunicao infravermelha bem como exposio do protocolo de comunicao que foi utilizado para estabelecer as regras de comunicao do controle IR com o Arduino. No objeto desse trabalho discutir sobre os protocolos de comunicao via sinal infra-vermelho, mas a prxima subseo destina-se exclusivamente ao tratamento do protocolo NEC, que viabiliza a comunicao desses dispositivos.

    Figura 4.6 Receptor infravermelho

  • 52

    4.2.2 Protocolo NEC Caractersticas Tcnicas

    O protocolo NEC um formato de protocolo japons utilizado em produtos como os da Sanyo mais antigos. Tem como caracterstica um sinal de 16 bits, sendo 8 bits de endereo e 8 bits de comando. Para diminuio de erros, so transmitidos duas vezes na mensagem, com uma portadora de 38 kHz. Alm disso, existe diferenciao de tempo para a interpretao dos nveis lgicos positivo e negativo, sendo 1,12 ms para o nvel 0 e 2,25 ms para o nvel 1. A indicao de um bit, 0 ou 1, sempre com o envio de um trem de pulsos de durao de 560 s como mostrados na Figura 4.7:

    Figura 4.7 Pulsos NEC

    Fonte: SB-PROJECTS, 2006

    Como exemplo de uma mensagem gerada por esse protocolo tem-se a Figura 4.8 com o endereo $59 e comando $16 iniciando por um bit de 9 ms AGC (Controle de Ganho Automtico), seguido por um espao de 4,5 ms.

    Figura 4.8 Endereo $59 comando 16 no NEC

    Fonte: SB-PROJECTS, 2006

    O grande diferencial desse protocolo a utilizao de um bit especfico para repeties de 9 ms AGC, espaado por 2,25 ms e novo nvel de tenso por 560 s e repetido a cada 110 ms, como mostrado na Figura 4.9:

  • 53

    Figura 4.9 Repetio de sinal NEC

    Fonte: SB-PROJECTS, 2006

    No Quadro 4.7, so apresentados os cdigos de VCR Fisher 530.

    Quadro 4.7 Cdigos e endereos de VCR com NEC

    Fonte: SB-PROJECTS, 2006

    4.2.3 Projeto com acionamento de display de cristal via controle remoto

    O projeto desenvolvido com a placa Arduino para receber sinais IR, foi concebido com a iteno de demonstrar a chegada dos dados ao arduino via controle remoto e o receptor IRM3638. Para tanto foi utilizado:

    1 Controle IR 1 Receptor IR 1 Display LCD 16 x 2 1 Arduino Duemilanove 1 LED 1 Resistor de 10 k

    NEC Message Key Function $68-$00 Play $68-$01 Rec $68-$02 AudioDub $68-$03 Frame $68-$04 Slow $68-$05 Quick $68-$06 Cue $68-$07 Review $68-$08 FF $68-$09 Rew $68-$0A Stop $68-$0B Pause/Still $68-$0C Upkey $68-$0E Down key

  • 54

    Figura 4.10 Montagem do Arduino com o display de cristal lquido

    Figura 4.11 Conexo do receptor infravermelho com o Arduino.

  • 55

    Figura 4.12 Controle infravermelho utilizado no projeto

    Fonte: SB-PROJECTS, 2006

    O presente projeto tem a finalidade de apresentar como acontece o envio de dados do controle IR para a placa Arduino passando pelo receptor IR. Os valores numricos so apresentados na tela do display de LCD, conforme mostrado nas Figuras 4.10, 4.11 e 4.12.

    O que percebido com esse projeto a relativa facilidade para implementao de envio de dados via infravermelho, pois pode-se enviar e receber comandos para fazer qualquer tipo de acionamento e que possibilita uma gama muito grande de possibilidades para a mecatrnica, com o acionamento a distancia de diversos equipamentos, bastando apenas adaptar o cdigo realidade do projeto a ser desenvolvido.

    O cdigo para acionamento do controle IR apresentado no Quadro 4.8.

  • 56

    Quadro 4.8 Cdigo de acionamento do controle IR

    #include #define IR_IN 8 LiquidCrystallcd(12, 11, 5, 4, 3, 2);

    intPulse_Width=0; intir_code=0x00; charadrL_code=0x00; charadrH_code=0x00; void timer1_init(void) { TCCR1A = 0X00; TCCR1B = 0X05; TCCR1C = 0X00; TCNT1 = 0X00; TIMSK1 = 0X00; } voidremote_deal(void) { lcd.clear(); delay(1); lcd.setCursor(0,0); lcd.print(ir_code,HEX); lcd.setCursor(0,1); lcd.print(adrL_code,HEX); } charlogic_value() { TCNT1 = 0X00; while(!(digitalRead(8))); Pulse_Width=TCNT1; TCNT1=0; if(Pulse_Width>=7&&Pulse_Width=7&&Pulse_Width=25&&Pulse_Width

  • 57

    } for(j = 0 ; j < 8; j++) {if(logic_value() == 1) adrH_code |= (1=140&&Pulse_Width=68&&Pulse_Width=34&&Pulse_Width=7&&Pulse_Width

  • 58

    5 ARDUINO E A CONEXO COM A INTERNET

    Os sistemas de comunicao digital de dados, em especial a Internet, vem se tornando um meio cada vez mais essencial para o homem moderno, aumentando significativamente a eficincia daqueles que utilizam seus recursos. Com acessos dedicados e com a possibilidade de distribuio desse recurso em grande escala por um baixo custo, a utilizao da internet difundiu-se nos meios residenciais, industriais e consequentemente no meio empresarial.

    Atualmente a Internet tem seu emprego em larga escala nos computadores pessoais que dispem de sistemas operacionais com todo o protocolo embutido em seu kernel, cabendo aos usurios e programadores apenas utilizar esses recursos. Esse sistema e ainda ser por muitos anos o carro-chefe das aplicaes da grande rede. Porm, com a evoluo dos microcontroladores, uma nova gerao de aplicaes est se formando, so as aplicaes embedded (embarcadas) para a Internet. (MOKARZEL, 2004, p.11)

    Essa nova tecnologia possibilita a construo de hardware clientes e servidores de Internet a um custo muito baixo. possvel imaginar uma gama de produtos que pode ser criada ou aprimorada com o emprego dessa nova ferramenta. Desde brinquedos e aplicaes domsticas at o monitoramento e controle de equipamentos na indstria, uma nova gerao de telefonia IP de baixo custo e equipamentos interativos monitorados pelo celular.

    Hoje no s computadores, como outros dispositivos baseados em microprocessadores podem compartilhar uma rede local. Se antes um computador compartilhava uma impressora na rede local, hoje a prpria impressora uma parte da rede com uma interface e um endereo de IP prprio. Alm do mais, temos PDAs (computadores de mo), celulares, netbooks e vrias outras criaes embarcadas com tecnologia baseada em microcontroladores de uso geral compartilhando informaes na rede. O futuro dos eletrodomsticos est na evoluo e integrao de todos esses sistemas na rede.

    O Arduino oferece uma grande facilidade de colocar os dispositivos nessa rede de comunicao uma vez que existe um sensorshield que funciona unica e exclusivamente para conectar a plataforma Arduino com a Internet.

  • 59

    5.1 Protocolo de rede TCP/IP e Ethernet

    O TCP/IP um conjunto de protocolos usado em redes na Internet. Um protocolo um conjunto de normas que dois ou mais computadores devem usar para estabelecerem uma comunicao entre si. Fala-se em conjunto de protocolos para o TCP/IP, pois vrias especificaes esto envolvidas. Tecnicamente, ele tratado como uma pilha de protocolos de comunicao.

    De acordo com Kurose 2006, a Ethernet praticamente tomou conta do mercado de redes com fio. Na dcada de 80 e incio da dcada de 90, ela enfrentou muitos desafios de outras tecnologias LAN, incluindo tokeng ring, FDDI e ATM. Algumas dessas outras tecnologias conseguiram conquistar uma parte do mercado de LANs durante alguns anos. Mas, desde sua inveno, em meados da dcada de 1970, a Ethernet continuou a se desenvolver e crescer e conservou a sua posio dominante no mercado. Hoje, ela tem predominado como tecnologia de LAN com fio e provvel que continue assim no futuro prximo. Kurose 2006 compara a Ethernet que est sendo usada para a rede local com o que a Internet tem sido para a rede global.

    A Ethernet a camada de sinalizao de baixo nvel bsico que fornece a capacidade de transmisso de mensagens fsicas. Endereos de origem e de destino para estas mensagens so identificadas por um Media Access Control (MAC). Seu esboo Arduino define um valor de endereo MAC, que deve ser exclusivo em sua rede. (MARGOLIS, 2011, p. 451)

    Com base nessa potencialidade da Ethernet, possvel colocar sistemas embarcados funcionando como webserver robustos que podem trabalhar em tempo real em aplicaes que exigem um nvel de criticidade elevado.

  • 60

    5.2 Camadas do Protocolo

    Nesta seo sero descritos os modelos de referncias de camadas ISO/OSI, as funes das camadas internet e as camadas de transporte TCP/IP.

    5.2.1 Modelo ISO/OSI x Internet

    O Modelo OSI uma referncia de camadas para o funcionamento da rede. Nele a rede dividida em sete camadas bem definidas, cada uma com sua funo prpria, para facilitar o desenvolvimento da rede, conforme apresentado na Figura 5.1.

    Cada camada um grupo de funes similares que fornece servios camada superior e recebe servios da camada inferior.

    As sete camadas desse modelo so: Camada de Aplicao, Apresentao, Seo, Transporte, Rede, Link de Dados e Fsica. Existe uma simplificao para o Modelo de camadas Internet, no qual as camadas de aplicao, traduo e seo so agrupadas apenas em aplicao e as camadas link dados e fsica agrupadas na camada de rede.

    Figura 5.1 Modelos ISO/OSI

    Fonte: MOKARZEL, 2004

    comum descrever a pilha de um protocolo como um conjunto de camadas, onde cada uma possui sua prpria funo. Cada camada depende da

  • 61

    camada inferior e fornecedora para a camada superior, conforme a Figura 5.1. Mokarzel 2004 aponta como vantagem desse sistema a possibilidade de redesenhar uma das camadas mantendo-se as demais intactas. Por exemplo, ao trocar uma placa de rede que utiliza cabo UTP por um sistema sem fio, no necessrio nenhuma adaptao no navegador de pgina web. A Internet baseada em uma simplificao de quatro camadas da arquitetura ISO/OSI de sete camadas.

    5.2.2 Funes das Camadas Internet

    As camadas do protocolo Internet possuem as seguintes funes, relacionadas na Tabela 5.1:

    Tabela 5.1 Funes das camadas do protocolo internet

    Camada Funo Exemplo

    Camada de Aplicao

    Contm um conjunto de protocolos distintos que provem os diversos servios da Internet.

    HTTP, FTP e Email (SMTP/POP)

    Camada Transporte Possibilita a comunicao entre os pontos da rede. TCP e UDP

    Camada Internet Roteia e entrega os datagramas entre os ns da rede.

    IP, ICMP e ARP

    Camada Rede Implementa a transmisso de pacotes. Ethernet (802.3), PPP e X-25

    Fonte: MOKARZEL, 2004

    A camada de aplicao onde residem aplicaes de rede e seus protocolos. Ela inclui muitos protocolos, tais como o protocolo HTTP (que prov requisio e transferncia de documentos pela Web), o SMTP (que prov transferncia de mensagens de correio eletrnico) e o FTP (que prov a transferncia de arquivos entre dois sistemas finais). Verifica-se que certas funes de rede, como a traduo de nomes fceis de entender dados a sistemas finais da Internet (por exemplo, ufma.br) para um endereo de rede de 32 bits, tambm so executadas com a ajuda de um protocolo de camada de aplicao, no caso, o sistema de nomes de domnio (domainname system - DNS).

    A camada de transporte da Internet transporta mensagens da camada de aplicao entre os lados do cliente e servidor de uma aplicao. H dois protocolos de transporte na Internet: TCP e UDP, e qualquer um deles pode levar

  • 62

    mensagens de camada de aplicao. O TCP prov servios orientados para conexo para suas aplicaes. Alguns desses servios so a entrega garantida de mensagens da camada de aplicao ao destino e controle de fluxo (isto , compatibilizao das velocidades remetente/receptor). O TCP tambm fragmenta mensagens longas em segmentos mais curtos e prov mecanismo de controle de congestionamento, de modo que uma origem regula sua velocidade de transmisso quando a rede est congestionada. O protocolo UDP prov servio no orientado para conexo a suas aplicaes.

    A camada de Internet responsvel pela movimentao, de uma mquina para outra, de pacotes de camada de rede conhecidos como datagramas. O protocolo de camada de transporte da Internet (TCP ou UDP) em uma mquina de origem passa um segmento de camada de transporte e um endereo de destino camada de rede, exatamente como voc passaria ao servio de correios uma carta como um endereo de destinatrio. A camada de rede ento prov o servio de entrega do segmento camada de transporte na mquina destinatria.

    A camada de rede da Internet tem dois componentes principais: IP (Internet Protocol Protocolo Internet) e protocolo de roteamento. O IP define os campos no datagrama e o modo como os sistemas finais e os roteadores agem nesses campos. Existe um nico protocolo IP e todos os componentes da Internet que tm uma camada de rede devem executar esse protocolo. O protocolo de roteamento determina as rotas que os datagramas seguem da origem ao destino. A Internet tem muitos protocolos de roteamento.

    A Internet uma rede de redes e, dentro de uma delas, o administrador pode executar qualquer protocolo de roteamento que queira. Embora a camada de rede contenha o protocolo IP e tambm numerosos protocolos de roteamento, ela quase sempre denominada simplesmente camada IP, refletindo o fato de que ela o elemento fundamental que mantm a integridade da Internet. (KUROSE, 2006, p.37)

    A camada de Interface de rede a responsvel por lidar diretamente com o meio fsico de envio dos dados, como cabos (de cobre ou fibras pticas) ou ondas de rdio. Desse modo, essa camada trata diretamente das caractersticas eltricas e mecnicas, interfaces e switches, enfim, trata do meio por onde os dados passam.

  • 63

    Ela responsvel por receber os datagramas que vm da camada de Internet e prepar-los para serem enviados para o meio de transmisso. interessante constatar que o meio de transmisso diverso, existindo vrios: pode ser por sinais eltricos (em redes que utilizam cabos do tipo par tranado), sinais luminosos (no caso de redes que utilizam fibras pticas) ou at ondas de rdio (redes wireless), s para citar como exemplos.

    Alm disso, a interface de rede responsvel por receber os dados pela rede (ou seja, enviados pelo meio de transmisso) e garantir que eles cheguem via Internet.

    Os tipos de protocolos usados para garantir o envio dos dados no meio de transmisso dependem da tecnologia de interconexo utilizada na rede. No momento, a mais usada e conhecida so as redes Ethernet.

    5.2.3 Camada de Transporte TCP/IP

    A principal funo da camada de transporte TCP dar robustez ao sistema, garantindo que mensagens enviadas sejam recebidas. Para isso o TCP possui as caractersticas descritas na Tabela 5.2.

    Tabela 5.2 Caractersticas da comunicao TCP/IP

    Caractersticas Descrio

    Transferncia bsica de dados

    Para a camada de aplicao, o TCP capaz de transferir um fluxo contnuo de octetos de uma estao a outra, empacotando esses octetos em grupos que so transportados pela camada internet. O TCP decide quando e como enviar, se deve separar em blocos ou retransmitir algum pacote.

    Robustez

    O TCP cuida de recuperar dados que foram danificados, perdidos, duplicados ou recebidos fora de ordem, conferindo robustez ao meio de comunicao. Isso conseguido pelo sequenciamento dos pacotes e envio de confirmao de recebimento (ACK).

    Controle de Fluxo

    O TCP prov os meios para que o receptor possa controlar o fluxo de envio. Esse controle feito atravs do retorno de uma janela em cada mensagem de ACK, indicando o nmero de octetos que ainda podem receber alm do ltimo aceito.

  • 64

    Multiplexao

    Para permitir que uma nica estao use diversas comunicaes TCP simultneas, o protocolo fornece uma numerao de porta, que combinada com a rede e com o endereo IP, forma um socket. Cada socket nico, desta forma mltiplas conexes simultneas podem ser geradas.

    Conexo Lgica

    Os mecanismos de robustez e controle de fluxo descritos anteriormente obrigam o TCP a inicializar e manter certas informaes sobre cada fluxo de dados. A combinao dessas informaes, que inclui o socket, o nmero da sequncia e o tamanho da janela, chama-se conexo lgica.

    Segurana O usurio do TCP deve indicar a segurana e a precedncia da sua comunicao.

    Fonte: Mokarzel, 2004

    5.3 Arduino Ethernet Shield

    Trata-se de um mdulo capaz de abrir ligaes com outros servidores da Internet ou ento, funcionar ele prprio como um mini servidor destinado a pginas web, no exigindo mais nenhum equipamento para fazer este tipo de atividade.

    O Arduino Ethernet Shield, baseia-se num chip w 5100 que capaz de fornecer 4 sockets independentes e simultneo.

    Figura 5.2 Arduino Ethernet Shield

    Fonte: Arduino, 2011

    Neste momento do trabalho, ser apresentado a maneira como o Arduino conecta-se com os dados a serem compartilhados em rede, seja ela local ou mesmo a internet.

  • 65

    Existe a possibilidade de desenvolvimento de vrios aplicativos que demonstram como construir e utilizar clientes e servidores web bem como a interao de protocolos de comunicao mais comuns da Internet com o Arduino.

    A Internet permite que um cliente (navegador web, por exemplo) solicite informaes de um servidor (um servidor web ou outro prestador de servio Internet). Dentre as diversas possibilidades, o Arduino pode funcionar como servidor que fornece informaes aos clientes utilizando protocolos de Internet podendo agir como um webserver criando pginas para exibio em navegadores web.

    O Arduino Ethernet suporta uma grande variedade de mtodos (protocolos) que permitem a sua adaptao para funcionar como um cliente ou servidor de Internet. A biblioteca Ethernet usa o conjunto de protocolos padro da Internet onde a maior parte da linguagem de baixo nvel est oculta.

    5.4 Projeto Arduino Ethernet

    O Ethernet Shield tem uma entrada para o cabo RJ 45 (cabo de rede), possibilitando ao Arduino interagir em uma rede pessoal ou at mesmo com a internet, dessa forma cria-se uma vasta gama de atividades, tais como interagir com o Arduino remotamente.

    A proposta de trabalho de desenvolver um projeto onde o Arduino emula um servidor web, onde atravs de uma pgina HTML (uma pgina internet simples) enviado o comando, para os LED serem ligados ou desligados e assim enviar diretamente para o servidor as informaes de quando ligado ou desligado.

    Os materiais utilizados para o projeto foram: 1 placa Arduino 1 Ethernet Shield 1 protoboard 1 roteador Linksys WRT545

    No presente experimento, o Arduino vai emular um servidor web e depois receber algum comando para ligar ou desligar os LED que esto conectados na placa.

  • 66

    O Ethernet Shield foi conectado placa Arduino e para conectar os LED no Arduino foram utilizados os pinos 4, 5, 6 e7. Os botes foram conectados aos pinos 8 e 9, conforme a Figura 5.3.

    Figura 5.3 Hardware de acionamento

    Em seguida foi conectado o cabo RJ45 do Ethernet Shield no roteador. Outra pea importante no funcionamento do projeto o roteador, neste

    trabalho um Linksys WRT54G, um roteador wireless com 4 portas LAN. Precisou-se para esse caso utilizarmos a porta 8246 e IP local. A preferncia por usar essa porta, d-se pelo fato de a porta 80 ou 8080 bloquear com facilidade.

    O programa Arduino baseado no exemplo webserver.pde com algumas modificaes.

    O cdigo HTML armazenado na memria do programa, de modo a se obter RAM suficiente para armazenar outros dados.

    Para colocar o Arduino em rede, foi atribudo o endereo de IP local 192.168.1.134. Dessa forma, os testes para obteno de respostas via ethernet ficou mais canalizado. Esta configurao foi feita no prprio roteador conforme mostrado na Figura 5.4.

  • 67

    Figura 5.4 Configurao do roteador

    Observando a Figura 5.5, pode ser percebida a proposta do trabalho de forma mais compreensiva, pois na mesma encontrado o navegador com o script HTML que est na memria de programa do microcontrolador utilizado no Arduino. O script apresentado no Quadro 5.1, quando executado, mostra no navegador web os comandos que devem ser enviados para o Arduino conforme ordem de acionamento dos mesmos dentro da respectiva sequncia sugerida.

    Figura 5.5 Pgina Web Arduino

  • 68

    Quadro 5.1 Cdigo fonte para o WebServer

    #include #include #include #include

    prog_char string_0[] PROGMEM = "Controle de LED pela Internet"; prog_char string_1[] PROGMEM = ""; prog_char string_2[] PROGMEM = ""; prog_char string_3[] PROGMEM = ""; prog_char string_4[] PROGMEM = ""; prog_char string_5[] PROGMEM = "Insert your name here:"; prog_char string_6[] PROGMEM = ""; prog_char string_7[] PROGMEM = ""; prog_char string_8[] PROGMEM = "Ligada (ON)"; prog_char string_9[] PROGMEM = "Desligada (OFF)";

    prog_char string_10[] PROGMEM = " "; //for auto refresh

    PROGMEM const char *string_table[] = // change "string_table" name to suit { string_0, string_1, string_2, string_3, string_4, string_5, string_6, string_7, string_8, string_9, string_10 };

    char buffer[85]; // make sure this is large enough for the largest string it must hold

    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byteip[] = { 192, 168, 1, 134 }; byte gateway[] = { 192, 168, 1, 1 }; byte subnet[] = { 255, 255, 255, 0 };

    String inString = String(35);

    Server server(8246);

    LEDLED1 = LED(7); LEDLED2 = LED(6); LEDLED3 = LED(5); LEDLED4 = LED(4);

    String msg=""; int tam=0; int st1=9,st2=9,st3=9,st4=9; void setup() { Serial.begin(9600);

  • 69

    Ethernet.begin(mac, ip,gateway,subnet); server.begin(); Serial.println("Serial READY");

    Serial.println("Ethernet READY"); Serial.println("Server READY"); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,INPUT); pinMode(9,INPUT); } void loop() { Client client = server.available(); intLED=0; if (client) {

    booleancurrent_line_is_blank = true; while (client.connected()) {

    if (client.available()) {

    char c = client.read(); if (inString.length() < 35) { inString.concat(c); } if (c == '\n' &&current_line_is_blank) { if(inString.indexOf("b1")>0){ LED1.toggle(); if(LED1.getState()) st1=8; else st1=9; LED=1;

    } if(inString.indexOf("b2")>0){

    LED2.toggle(); if(LED2.getState()) st2=8; else st2=9; LED=2;

    }

    if(inString.indexOf("b3")>0){

    LED3.toggle(); if(LED3.getState()) st3=8; else st3=9; LED=3; } if(inString.indexOf("b4")>0){

    LED4.toggle(); if(LED4.getState()) st4=8; else st4=9;

  • 70

    LED=4;

    } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println();

    strcpy_P(buffer, (char*)pgm_read_word(&(string_table[0]))); // Necessary casts and dereferencing, just copy. client.println( buffer ); for (int i = 1; i < 8; i++) { strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i]))); // Necessary casts and dereferencing, just copy. client.println( buffer ); switch(i){ case 1: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st1]))); client.println( buffer ); break; case 2: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st2]))); client.println( buffer ); break; case 3: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st3]))); client.println( buffer ); break; case 4: strcpy_P(buffer, (char*)pgm_read_word(&(string_table[st4]))); client.println( buffer ); break; } delay(30); } if(digitalRead(8)==HIGH){ client.println("Botao 1, ON"); }else{ client.println("Botao 1, OFF"); } if(digitalRead(9)==HIGH){ client.println("Botao 2, ON"); }else{ client.println("Botao 2, OFF"); }

    //strcpy_P(buffer, (char*)pgm_read_word(&(string_table[10]))); client.println( buffer );

    break; } if (c == '\n') { // we're starting a new line current_line_is_blank = true; } else if (c != '\r') { // we've gotten a character on the current line current_line_is_blank = false; } } } // give the web browser time to receive the data delay(1); inString = ""; client.stop(); } }

  • 71

    Este experimento funciona com o envio de dados para o webserver Arduino. Para a utilizao da aplicao, necessrio o acesso placa via IP de rede que foi atribudo ao dispositivo. Este acesso realizado atravs do navegador de internet que logo retornar as mensagens da pgina web conforme a Figura 5.5.

    A partir desse mtodo, percebemos a potencialidade de aplicao do Arduino, podendo expandir para projetos mais complexos bem como monitoramento de sensores a distncia e acionamento de dispositivos via web.

    //strcpy_P(buffer, (char*)pgm_read_word(&(string_table[10]))); client.println( buffer );

    break; } if (c == '\n') { // we're starting a new line current_line_is_blank = true; } else if (c != '\r') { // we've gotten a character on the current line current_line_is_blank = false; } } } // give the web browser time to receive the data delay(1); inString = ""; client.stop(); } }

  • 72

    6 CONCLUSES

    A motivao deste trabalho foi provocada pela grande aplicabilidade da placa Arduino e pela pouca literatura existente dentro do mbito acadmico sobre esse tema. A tecnologia relativamente nova e desde o seu lanamento est em franco desenvolvimento e a cada dia ganha mais adeptos tendo em vista a facilidade e o grande apelo mercadolgico que traz. Trata-se de um novo conceito de hardware aberto possibilitando aos usurios de todo mundo aumentarem as funcionalidades e potencialidades da plataforma bem como agregar inmeras possibilidades de funcionamento de maneira bem rpida.

    Por isso, este trabalho apresentou uma proposta de servir como material didtico de suporte a projetistas entre o que atualmente tem-se de bibliografia sobre o Arduino e o que pode-se fazer em termos prticos para otimizar as potencialidades deste sistema. Vrios experimentos foram realizados em laboratrio com o intuito de testar e/ou adaptar as funcionalidades das placas e otimizar processos que antes, com os microcontroladores e placas convencionais, despendiam muita energia e tempo dos projetistas