Você está na página 1de 123

UNICEUB CENTRO UNIVERSITRIO DE BRASLIA FATECS FACULDADE DE TECNOLOGIA E CINCIAS SOCIAIS APLICADAS CURSO DE ENGENHARIA DE COMPUTAO

GUSTAVO CAETANO DE ALMEIDA

SISTEMA CONTROLADOR DE ILUMINAO DE AMBIENTES ATRAVS DE INTERFACE COMPUTADORIZADA

BRASLIA / DF 2 SEMESTRE DE 2010

GUSTAVO CAETANO DE ALMEIDA

SISTEMA CONTROLADOR DE ILUMINAO DE AMBIENTES ATRAVS DE INTERFACE COMPUTADORIZADA

Trabalho apresentado ao Centro Universitrio de Braslia como pr-requisito para a obteno de Certificado de Concluso do Curso de Engenharia de Computao. Orientador: Jos Julim Bezerra Jnior

BRASLIA / DF 2 SEMESTRE 2010

GUSTAVO CAETANO DE ALMEIDA

SISTEMA CONTROLADOR DE ILUMINAO DE AMBIENTES ATRAVS DE INTERFACE COMPUTADORIZADA Trabalho apresentado ao Centro Universitrio de Braslia (UniCEUB) como pr-requisito para a obteno de Certificado de Concluso de Curso de Engenharia de Computao. Orientador: Prof. Jos Julim Bezerra Jnior Este Trabalho foi julgado adequado para a obteno do Ttulo de Engenheiro de Computao, e aprovado em sua forma final pela Faculdade de Tecnologia e Cincias Sociais Aplicadas FATECS.

____________________________ Prof. Abiezer Amarilia Fernandez Coordenador do Curso Banca Examinadora: ________________________ Prof. Jos Julim, Mestre em Engenharia Eltrica -Sistemas de controle. Orientador ________________________ Prof. Antonio Barbosa, Especialista em Engenharia de Software. UniCEUB ________________________ Prof. Luis Cludio, Mestre em Matemtica Pura. UniCEUB ________________________ Prof. Clber da Silva Pinheiro, Doutor em Fsica. UniCEUB

RESUMO
Trata-se de um sistema de automao de iluminao para qualquer tipo de ambiente, tendo como meta reduzir o desperdcio de energia eltrica e facilitar o controle da iluminao de locais distantes, que no precise de pessoas o tempo todo. Aps implementar um sistema envolvendo um circuito inteligente conectado ao computador, o usurio pode controlar reas ou individualmente cada ponto de energia eltrica em um ambiente determinado. O objetivo propor uma maneira eficaz de controle da iluminao de ambientes, usando para isso uma interface que gere a integrao e interao do gestor com todos os pontos de luminosidade do ambiente. utilizado hardware disponvel no mercado e j comum a todas as residncias e empresas (computador) conectado plataforma Arduno (que utiliza microcontrolador Atmel Atmega328), circuitos controladores, ligado pela porta USB central de comutao (PC), que por sua vez tem uma interface simplificada para execuo dos comandos feita em software construdo na linguagem de programao PHP.

Palavras-chave: automao, Arduno e iluminao.

ABSTRACT
This is an automation system for lighting any type of environment, aiming to reduce the waste of electricity and facilitate the control of light from distant places that does not need people all the time. After implementing a system involving an intelligent circuit connected to the computer, the user can control areas or each individual point of electrical energy in a given environment. The aim is to propose an effective way to control lighting environments, using an interface that manages the integration and interaction with all points of the ambient brightness. Its used commercially available hardware and easily available in residences and businesses (computer) connected to the Arduino platform (which uses Atmel Atmega328) circuit controllers, connected to the USB port commuting center (PC) and software built on the programming language "PHP".

Words Keys: Automation, Arduino and lighting.

Este projeto e monografia so dedicados especialmente, aos meus pais Orlando e Lia, minha irm Karine e cunhado Flvio, meus amigos, Fbio Lima, Rodrigo Isidro e Bruno Matos, aos meus colegas de trabalho, ao meu orientador, Jos Julim e a todos aqueles que tiveram pacincia e me incentivaram durante todo o processo de elaborao deste projeto.

SUMRIO
RESUMO ................................................................................................................................................ 4 ABSTRACT ............................................................................................................................................ 5 SUMRIO .............................................................................................................................................. 7 LISTA DE FIGURAS ........................................................................................................................... 10 LISTA DE QUADROS ......................................................................................................................... 12 LISTA DE SIGLAS .............................................................................................................................. 13 CAPTULO 1 INTRODUO .......................................................................................................... 15 1.1. APRESENTAO DO PROBLEMA ................................................................................... 15 1.2. MOTIVAO ........................................................................................................................ 16 1.3. OBJETIVOS DO TRABALHO .............................................................................................. 18 1.4. JUSTIFICATIVA E RELEVNCIA DO TEMA ................................................................... 19 1.5. ESCOPO DO TRABALHO .................................................................................................... 19 1.6. RESULTADOS ESPERADOS ............................................................................................... 21 1.7. ESTRUTURA DA MONOGRAFIA....................................................................................... 22 CAPTULO 2 REFERENCIAL TECNOLGICO ............................................................................ 23 2.1. - ARDUNO ............................................................................................................................... 23 2.2. - MOTIVOS PARA A ESCOLHA DO ARDUNO .................................................................. 24 2.3. - HARDWARE - O ARDUNO, SEUS COMPONENTES, INTERFACES E PINAGENS ...... 26 2.3.1. - O ARDUNO DUEMILANOVE ...................................................................................... 26 2.3.2. - O MICROCONTROLADOR ATMEL AVR ATMEGA328 ........................................... 28 2.3.3. - ENTRADAS E SADAS .................................................................................................. 29 2.3.4. - ALIMENTAO ............................................................................................................. 30 2.3.5. - RESET AUTOMTICO ................................................................................................... 31 2.3.6. - PROTEO DE SOBRECARGA DO USB .................................................................... 32 2.3.7. - FT232RL: COMUNICAO ENTRE A PLATAFORMA E O COMPUTADOR ......... 33 2.3.8. - ICSP .................................................................................................................................. 33 2.3.9. - BOOTLOADER ................................................................................................................. 34 2.3.10. - AMPLIFICADOR OPERACIONAL ............................................................................. 35 2.3.11. - CLOCK (OSCILADOR DE CRISTAL)......................................................................... 36 2.3.12. - TRANSISTOR (MOSFET)............................................................................................. 37

2.3.13. - REGULADOR DE TENSO ......................................................................................... 38 2.3.14. ACESSRIOS (SHIELDS) ............................................................................................ 38 2.4. - DEMAIS COMPONENTES FSICOS .................................................................................... 38 2.4.1. - SENSOR DE LUMINOSIDADE ..................................................................................... 38 2.4.2. - SENSOR DE PRESENA ............................................................................................... 40 2.4.3 - ULN2003A ........................................................................................................................ 41 2.4.4. - REL ................................................................................................................................ 42 2.5. - AMBIENTE DE DESENVOLVIMENTO PARA O ARDUNO ........................................... 43 2.5.1. - APLICATIVO DE DESENVOLVIMENTO .................................................................... 44 2.5.2. - INSTALAO ARDUNO PARA WINDOWS ............................................................ 45 2.5.3. - INTERFACE DO APLICATIVO DE DESENVOLVIMENTO ...................................... 46 2.5.4. - LEITURA DA INTERFACE SERIAL ............................................................................. 47 2.5.5. - CICLO DE DESENVOLVIMENTO ................................................................................ 48 2.5.6. - ESTRUTURA DO SKETCH ............................................................................................ 48 2.5.7. - REFERNCIA DAS FUNES DA LINGUAGEM ARDUNO................................... 49 2.6. - SISTEMA WEB ....................................................................................................................... 51 2.6.1. - XAMPP ............................................................................................................................. 51 2.6.2. - PHP ................................................................................................................................... 52 2.6.3. - HTTP ................................................................................................................................ 53 2.6.4. - APACHE........................................................................................................................... 54 2.6.5. - MYSQL ............................................................................................................................ 54 2.6.6. REFERNCIAS DAS FUNES PARA O SISTEMA WEB ........................................ 55 2.6.6.1 PHP .............................................................................................................................. 55 2.6.6.2 SQL.............................................................................................................................. 55 3.1. APRESENTAO GERAL ................................................................................................... 56 3.1.1. FLUXOGRAMA GERAL ............................................................................................... 58 3.1.2. VISO GERAL DO PROJETO....................................................................................... 60 3.2. REL ....................................................................................................................................... 61 3.3. SENSOR DE ILUMINAO ................................................................................................ 61 3.4. SENSOR DE PRESENA ...................................................................................................... 63 3.5. CONTROLE DO ARDUNO ................................................................................................. 64 3.5.1. PROGRAMAO DE CONTROLE DO ARDUNO .................................................... 64 3.5.2. CDIGOS DE CONTROLE ........................................................................................... 64

3.5.3. INSERO DO ALGORITMO NO ARDUNO ............................................................ 65 3.6. APRESENTAO DO CIRCUITO ....................................................................................... 68 3.7. INTERFACE DE GERENCIAMENTO ................................................................................. 73 3.7.1. CDIGO DA INTERFACE ............................................................................................. 73 3.7.2. INICIALIZANDO O SISTEMA ...................................................................................... 75 3.7.3. AMBIENTE DE GERENCIAMENTO............................................................................ 76 CAPTULO 4 APLICAO DA SOLUO COM RESULTADOS .............................................. 78 4.2. DIFICULDADES ENCONTRADAS ..................................................................................... 78 4.3. AVALIAO DO PROJETO ................................................................................................ 78 CAPTULO 5 CONSIDERAES FINAIS ..................................................................................... 80 5.1. CONCLUSO ........................................................................................................................ 80 5.2. SUGESTES PARA TRABALHOS FUTUROS .................................................................. 81 REFERNCIAS BIBLIOGRFICAS .................................................................................................. 82 APNDICE A PROGRAMA INSERIDO NO ARDUNO ............................................................... 85 APNDICE B CDIGO DA INTERFACE WEB ............................................................................. 96 ANEXO 02 REFERNCIA DA LINGUAGEM PHP E SQL ......................................................... 122 ANEXO 03 ESQUEMTICO DO ARDUNO DUEMILANOVE ................................................. 123

10

LISTA DE FIGURAS
FIGURA 1.1 TOPOLOGIA DO PROJETO ...................................................................................... 20 FIGURA 2.1 ARDUNO DUEMILANOVE ..................................................................................... 25 FIGURA 2.2 ARDUNO DUEMILANOVE: IDENTIFICAO DE COMPONENTES ............... 27 FIGURA 2.3 MAPEAMENTO DA PINAGEM DO ATMEGA328 ................................................. 29 FIGURA 2.4 EX. DE CIRCUITO INTEGRADO DO AMPLIFICADOR OPERACIONAL .......... 36 FIGURA 2.5 MOSFET ...................................................................................................................... 37 FIGURA 2.6 LDR E SEU SMBOLO ............................................................................................... 39 FIGURA 2.7 SENSOR DE PRESENA ........................................................................................... 40 FIGURA 2.8 CIRCUITO INTEGRADO ULN2003A ....................................................................... 42 FIGURA 2.9 AMBIENTE DE DESENVOLVIMENTO ARDUNO ............................................... 46 FIGURA 2.10 LEITURA/ENVIO DE DADOS UTILIZANDO PORTA SERIAL .......................... 47 FIGURA 2.11 CICLO DE DESENVOLVIMENTO PARA PLATAFORMA ARDUNO .............. 48 FIGURA 2.12 ESTRUTURA DO SKETCH ...................................................................................... 49 FIGURA 2.13 ELEMENTOS DE ESTRUTURA DA LINGUAGEM PROCESSING ..................... 50 FIGURA 2.14 ELEMENTOS DE FUNO DA LINGUAGEM PROCESSING ............................ 50 FIGURA 2.15 VARIVEIS DA LINGUAGEM PROCESSING ...................................................... 51 FIGURA 2.16 XAMPP ...................................................................................................................... 52 FIGURA 3.1 FLUXOGRAMA DO SISTEMA ................................................................................. 59 FIGURA 3.2 DESENHO DO PROJETO NA PROTOBOARD ........................................................ 60 FIGURA 3.3 TRECHO DE CDIGO DO ARDUNO ..................................................................... 63 FIGURA 3.4 TRECHO DO CDIGO NO ARDUNO ..................................................................... 64 FIGURA 3.5 PORTA VIRTUAL COM.......................................................................................... 66 FIGURA 3.6 AJUSTE DA PORTA COM NO CDIGO ............................................................... 67 FIGURA 3.7 AMBIENTE DE DESENVOLVIMENTO ARDUNO ............................................... 68

11

FIGURA 3.8 DESENHO DO PROJETO NA PROTOBOARD ........................................................ 70 FIGURA 3.9 CIRCUITO ELTRICO DO PROJETO ...................................................................... 71 FIGURA 3.10 TRECHO DO CDIGO DA INTERFACE WEB ARDU_SCRIPT.PHP ............. 74 FIGURA 3.11 TRECHO DO CDIGO DA INTERFACE WEB CORE.PHP ............................ 74 FIGURA 3.12 TRECHO DO CDIGO DO BANCO DE DADOS .................................................. 75 FIGURA 3.13 PAINEL DE CONTROLE DA APLICAO XAMPP ............................................ 76 FIGURA 3.14 SCRIPT PARA INICIAR INTERFACE WEB ........................................................... 76 FIGURA 3.15 INTERFACE DE GERENCIAMENTO (TELA INICIAL) ....................................... 77 FIGURA 3.16 INTERFACE DE GERENCIAMENTO (TELA DE PROGRAMAO) ................ 77

12

LISTA DE QUADROS
QUADRO 01 IDENTIFICAO DE COMPONENTES DO ARDUNO ....................................... 27 QUADRO 02 POSSIBILIDADES DE AES A SEREM EXECUTADAS PELO SISTEMA ...... 57 QUADRO 03 VALORES DE LUMINNCIA DO LDR E LUXMETRO ...................................... 62 QUADRO 04 CDIGOS DE CONTROLE ...................................................................................... 65

13

LISTA DE SIGLAS
AMP OP AREF ASP AVR BPS C C++ CAD CI COM DC DIP DTR E/S EEPROM FIFO FTDI GND GNU GPL HTML HTTP I2C ICSP IDE ISP JFET LDR LGPL LED MISO MOSFET MOSI NPN OSI PC PHP PIR PIC PNP PPM PWM RAM RISC SCK SCL SDA SMD SMS Amplificador Operacional Analog Reference - Pino de referncia de tenso para entradas analgicas Active Server Pages Microcontrolador RISC de chip nico Bits Por Segundo Linguagem de programao estruturada; Linguagem de programao orientada a objeto Computer-aided design Circuito Integrado Porta de comunicao responsvel pela entrada e sada de dados Direct Current Dual In-Line Package Data Terminal Ready Entrada e Sada de dados Electrically-Erasable Programmable Read-Only Memory First In, First Out Future Technology Devices International Ground GNU's Not Unix General Public License HyperText Markup Language Hypertext Transfer Protocol Inter-Intergrated Circuit In-Circuit System Programming Integrated Development Environment In-System-Programming Junction Field Effect Transistor Light Dependent Resistor Library General Public License Light Emitting Diode Master In Slave Out Metal Oxide Semiconductor Field Effect Transistor Master Out Slave In Ligao lgica negativa Open Systems Interconnection Personal Computer PHP: Hypertext Preprocessor Passive InfraRed Sensor Programmable Interface Controller Ligao lgica positiva Pulse Position Modulation Pulse-Width Modulation Random Access Memory Reduced Instruction Set Computer Serial Clock Entrada analgica do Arduno. Serial Data Line Surface Mountaing Device Short Message Service

14

SPI SQL SS STK500 TCP TTL TWI UART USB

Serial Peripheral Interface Structured Query Language Slave Select Protocolo de comunicao Transmission Control Protocol Time To Live Two-Wire Interface Universal Asynchronous Receiver/Transmitter Universal Serial Bus

UNIDADES DE MEDIDA A KB Hz V W Ampre, unidade de corrente eltrica KiloByte Hertz, unidade de freqncia Ohm, unidade de resistncia eltrica Volts, unidade de tenso eltrica Watt, unidade de potncia

15

CAPTULO 1 INTRODUO
1.1. APRESENTAO DO PROBLEMA

Visando melhorar e racionalizar o consumo eltrico por residncias e empresas, observa-se o crescimento da demanda por automao do sistema de iluminao de forma computadorizada. possvel encontrar diversas empresas atuando neste segmento. A maioria dessas empresas oferece soluo completa de automao residencial/empresarial indo alm do sistema de iluminao, como por exemplo, automatizando a abertura/fechamento de portas e janelas, sistemas de entretenimento (TV, Home Theater etc.), sistemas de irrigao de jardins, monitoramento de pacientes etc. Segundo Couto de Moraes e Castrucci, em seu livro, intitulado Engenharia de Automao Industrial, a palavra automation foi inventada pelo marketing da indstria de equipamentos na dcada de 1960. O neologismo, sem dvida, sonoro, buscava enfatizar a participao do computador no controle automtico industrial. O que significa automao? Hoje entende-se por automao qualquer sistema, apoiado em computadores, que substitua o trabalho humano e que vise solues rpidas e econmicas para atingir os complexos objetivos das indstrias e dos servios (por exemplo, automao industrial, automao bancria). A automao implica na implantao de sistemas interligados e assistidos por redes de comunicao, compreendendo sistemas supervisrios e interfaces homem-mquina que possam auxiliar os operadores no exerccio de superviso e anlise dos problemas que porventura venham a ocorrer. A automao na indstria decorre de necessidades tais como: maiores nveis de qualidade de conformao e de flexibilidade, menores custos de trabalho, menores perdas materiais e menores custos de capital; maior controle das informaes

16

relativas ao processo, maior qualidade das informaes e melhor planejamento e controle da produo. [11].

Este trabalho utiliza sensor de iluminao e sensor de presena para identificar o grau de iluminao do ambiente e a presena de pessoas no local. Dessa forma, torna-se possvel programar as atividades do sistema de forma que as aes ocorram de forma automtica, sem necessidade de interveno humana. Os sensores estaro presentes em todos os ambientes em que o controle de iluminao desejvel.

Imagina-se um futuro onde os humanos habitaro casas inteligentes e, certamente, este tipo de sistema de controle de iluminao ser item obrigatrio para aumentar o conforto das famlias.

Como este projeto depende essencialmente das variaes de iluminao ao longo do dia, muito importante fazer uso de um sensor de iluminao de qualidade para no comprometer o projeto. 1.2. MOTIVAO O tema automao est inserido na sociedade h aproximadamente 50 anos e com o avano da tecnologia e a consequente miniaturizao e reduo do custo dos componentes, esse tema passou a ser mais difundido e estudado por entusiastas, profissionais e acadmicos. A Associao Brasileira de Automao Residencial, em um artigo sobre Projeto de Interiores e Automao, afirma que a automao residencial promove a integrao e racionalizao dos diversos sistemas existentes em uma residncia, relacionados

17

comunicao, transmisso de dados, iluminao, climatizao, segurana, udio e vdeo, irrigao de jardim etc, gerando como benefcios: economia, conforto e segurana.

Possibilita ainda uma flexibilidade muito grande com relao mltipla funo de uma simples tomada, que pode ser para telefone e num momento seguinte funcionar como ponto de rede, sem a necessidade de passar novos cabos. [07]

Analisando estritamente a automao residencial no que tange iluminao, Bolzani, em seu livro Residncias Inteligentes diz que atravs da automao residencial, toda a iluminao de uma casa pode ser controlada alm do interruptor convencional de parede. Sistemas inteligentes podem acentuar os detalhes arquitetnicos de uma sala ou criar ambientes especiais para a utilizao do home-theater ou para a leitura de um livro, por exemplo. Economia de eletricidade outra vantagem, pois a intensidade de luz regulada conforme a necessidade e as lmpadas no precisam operar com seus brilhos mximos como acontece normalmente. [08]

O curso de Engenharia de Computao possui diversas disciplinas que tratam de assuntos correlatos automao e isso faz com que o aluno se sinta compelido a acompanhar as inovaes na rea. Dentre as inovaes tecnolgicas mais recentes nos ltimos 5 anos, possvel afirmar que a plataforma de computao fsica microcontrolada Arduno certamente esteja entre as mais revolucionrias, devido ao seu alto grau de facilidade de aprendizado, implementao e disponibilidade de recursos, que permite que leigos, entusiastas e profissionais gabaritados desenvolvam os mais variados dispositivos de automao.

Este projeto tem o claro propsito de controlar a iluminao de um ambiente atravs de um sistema informatizado e, para isto, sero utilizadas diversas ferramentas open source. A

18

predileo por este tipo de ferramentas para a execuo deste projeto est diretamente relacionada filosofia open source, que prega a disponibilizao de recursos (software ou hardware) para a comunidade internacional a fim de que os mesmos possam estar em contnua evoluo, independentemente de seu criador abandonar o projeto. 1.3. OBJETIVOS DO TRABALHO

Este projeto tem como objetivo desempenhar estudos de hardware e software para desenvolver e implementar um controle automatizado de iluminao de ambientes atravs de interface computadorizada.

Para realizar este projeto, necessrio fazer uso de um dispositivo fsico inteligente, que, no caso, um ambiente de desenvolvimento integrado de codinome Arduno em conjunto com sensores de presena, sensores de luminosidade, computador e ambiente grfico computadorizado desenvolvido em linguagem de programao PHP (PHP: Hypertext Preprocessor).

Para maior comodidade do usurio, o mesmo poder acender/apagar a luminria que desejar manualmente, bastando, para isso, proceder como feito hoje: pressionando o interruptor de energia. Atravs da interface computadorizada, tambm permitido configurar se os sensores de presena e sensores de iluminao devero estar ativos ou no.

De forma a interpretar os comandos de acender/apagar a luminria e transform-los em informaes inteligveis capazes de executar a tarefa, utilizado um microcontrolador da famlia Atmel o Atmega328. Esse microcontrolador tambm responsvel por enviar o feedback para o computador, a fim de exibir a informao de se o comando foi bem executado e se a(s) luminria(s) esto acesas ou apagadas.

19

1.4. JUSTIFICATIVA E RELEVNCIA DO TEMA

O projeto em questo abrange diversas disciplinas ministradas ao longo do curso de Engenharia de Computao e algumas so ligadas diretamente ao tema. So elas: Microcontroladores e Microprocessadores, Circuitos Eletrnicos, Arquitetura de

Computadores, Linguagem e Tcnicas de Programao e Banco de Dados.

Trata-se de um tema atual e comum ao meio tecnolgico. Segundo a AFRAC (Associao Brasileira de Automao Comercial), de uma forma geral, indstrias do segmento tecnolgico crescem de forma contnua e o setor de automao segue a mesma tendncia.

O setor de automao comercial movimenta uma mdia de R$ 1,4 bilho por ano no pas, incluindo mais de dois milhes de estabelecimentos que, juntos, empregam 25 milhes de pessoas. [02]

Os nmeros so da AFRAC. Segundo previso da entidade, o segmento dever crescer 10% em 2010. [02]

Com o avano da tecnologia, as facilidades esto mo de todos, fazendo com que a concorrncia nesta rea da Engenharia seja cada vez maior, onde no s as grandes empresas tm a possibilidade de elaborar projetos de automao, mas qualquer pessoa que tenha o conhecimento das tecnologias j existentes no mercado. 1.5. ESCOPO DO TRABALHO

O objetivo deste trabalho controlar um sistema de iluminao de um ambiente distncia atravs de uma interface computadorizada. O controle possibilitar ao usurio o

20

acionamento manual ou automtico das luminrias do ambiente controlado. Para isto, utilizado um sensor de luminosidade conectado eletronicamente a uma plataforma microcontrolada e, conforme a escolha do usurio, as luminrias podem se apagar ou acender automaticamente conforme o nvel de luminosidade no ambiente e/ou podem se apagar ou acender, obedecendo a horrios pr-programados atravs da interface computadorizada. Essa interface possibilitar ao usurio controle sobre todo o sistema, incluindo agendamento de horrios para acender/apagar as lmpadas, acionamento do modo econmico e identificao on-line do status das luminrias.

A fim de ilustrar o funcionamento do sistema, foi elaborado um diagrama para ilustrar o funcionamento do sistema, conforme exibido na Figura 01.

FIGURA 1.1 TOPOLOGIA DO PROJETO

21

Atravs do diagrama exibido na Figura 1.1, possvel compreender facilmente que os usurios podem acessar a interface controladora (instalada no Servidor) localmente ou atravs da internet, e executar as aes desejadas. Os comandos das aes so enviados ao Arduno, que interpreta o comando e com o auxlio dos sensores de presena e de luminosidade executa a ao demandada. 1.6. RESULTADOS ESPERADOS

Para este projeto construiu-se um circuito para integrao dos componentes eletrnicos a fim de possibilitar a automao e, para a interface computadorizada, foi desenvolvida uma interface web para controle/visualizao do sistema.

O circuito conta com sensores de luminosidade, sensores de presena e componentes eletrnicos (como resistores, circuitos integrados, rels e diodos) que so conectados plataforma Arduno, que possui um microcontrolador integrado que responsvel pela execuo de todos os comandos enviados atravs da interface web, bem como tambm enviar a sinalizao de retorno proveniente do LDR (Light Dependent Resistor) informando se o comando foi bem executado ou no.

A interface desenvolvida responsvel por toda a interao entre o sistema automatizado e o usurio. Atravs da interface, o usurio tem um panorama completo de seu ambiente e pode, a seu critrio:

Pr-configurar horrios para que as lmpadas se acendam ou apaguem; Acender ou apagar as lmpadas em tempo real; Identificar se as lmpadas esto acesas ou apagadas.

22

1.7. ESTRUTURA DA MONOGRAFIA

A estrutura desta monografia consiste de 05 captulos que tratam os assuntos descritos abaixo: Captulo 1 Captulo introdutrio, onde apresentado o objetivo do projeto. Captulo 2 Captulo de referencial tecnolgico, onde apresentada a teoria utilizada no projeto, abordando hardware e software. Captulo 3 Captulo de desenvolvimento - Implementao de software e hardware. Captulo 4 Captulo da aplicao do projeto com resultados. Captulo 5 Concluso.

23

CAPTULO 2 REFERENCIAL TECNOLGICO


2.1. - ARDUNO

O Arduno uma plataforma de computao fsica de cdigo aberto, fcil de usar, extremamente poderosa e que vem ganhando espao considervel junto a entusiastas, acadmicos e profissionais do ramo. Ele baseado em uma simples placa microcontroladora, e um ambiente para desenvolver o cdigo para a placa.

O Arduno captura informaes do meio atravs de uma srie de sensores que monitoram variaes no ambiente, trata essa informao convertendo-a para grandezas digitais e, a partir, da executa um comando pr-definido por seu desenvolvedor, tal como: controlar luzes, motores ou outras sadas fsicas.

O hardware do Arduno de cdigo aberto e suas placas podem ser montadas a um custo baixssimo ou compradas; O cdigo do ambiente de desenvolvimento tambm de cdigo aberto e sua utilizao regida sob a licena GPL (General Public License), as bibliotecas microcontroladoras C/C++ sob LGPL (Library General Public License), e os esquemas e arquivos CAD (Computer-aided design) sob Creative Commons Attribution ShareAlike.

24

2.2. - MOTIVOS PARA A ESCOLHA DO ARDUNO

Apesar de existirem diversas plataformas microcontroladas disponveis no mercado como, por exemplo: Parallax Basic Stamp, Netmedias, Phidgets e MITs Handyboard - a plataforma Arduno (ilustrada na Figura 2.1) despontou para ser escolhida como crebro deste projeto devido a sua grande popularidade junto comunidade acadmica e a diversos outros fatores, como os citados abaixo:

Custo/Benefcio: A verso mais barata do mdulo Arduno pode ser montada mo, e, inclusive, os mdulos de Arduno pr-montados custam menos de R$ 100,00. Hardware e Software de cdigo aberto: Ambos possuem seus cdigos, esquemas e planos publicados na comunidade Open Source, onde os interessados podem tomar conhecimento da tecnologia, aprimor-la e continuar seu desenvolvimento mesmo que o criador da tecnologia perca o interesse pela mesma. Sem dvida, um dos grandes pontos fortes da plataforma Arduno o fato de ela ser Open Source. Multiplataforma: O software de Arduno roda em sistemas operacionais Microsoft Windows, Apple Macintosh OSX e GNU (GNU's Not Unix)/Linux. A maioria dos sistemas microcontroladores est limitada ao sistema operacional Microsoft Windows. Portabilidade: Outra caracterstica importante do Arduno que voc pode carregar um programa nele atravs do computador central via USB (Universal Serial Bus), desconect-lo do computador e deslig-lo. Ao ligar o Arduno novamente, ele ir rodar o ltimo programa carregado sem necessidade de que o mesmo seja novamente carregado atravs do computador central via USB. Isso significa que s

25

h necessidade de plugar o Arduno ao computador central quando for desenvolver e eliminar erros do programa. Concluindo, caso queira apenas rodar o programa inserido dentro do Arduno no h necessidade de plug-lo ao computador, pois o cdigo j estar na plataforma independentemente da quantidade de tempo que o Arduno esteja desligado. Ambiente de programao eficiente: O ambiente de programao do Arduno fcil de usar para principiantes e suficientemente flexvel para que usurios avanados possam aproveit-lo ao mximo.

FIGURA 2.1 ARDUNO DUEMILANOVE FONTE: [ARDUINO WEBSITE, 2010]

26

2.3. - HARDWARE - O ARDUNO, SEUS COMPONENTES, INTERFACES E PINAGENS

2.3.1. - O ARDUNO DUEMILANOVE

Existem vrias verses de plataformas Arduno (Exemplo: Mini, LilyPad, Nano, Mega, Severino, Roboduno, Duemilanove, Freeduno, etc) todas elas, independentemente da verso, possuem um microcontrolador da fabricante Atmel incorporado plataforma.

A plataforma do Arduno Duemilanove utilizada neste projeto caracterizada pelo funcionamento de um microcontrolador Atmel AVR (Microcontrolador RISC de chip nico) ATmega328 operando 5 V com 2 KB de RAM (Random Access Memory), 32 KB de memria Flash para armazenar programas e 1 KB de EEPROM (Electrically-Erasable Programmable
Read-Only Memory) para armazenar parmetros. A velocidade do clock de 16 MHz, que

capaz de executar aproximadamente 300.000 linhas do cdigo fonte C por segundo. A placa tem 14 pinos digitais de E/S e 6 pinos de entrada analgica. Possui um conector USB para se comunicar com o computador central e uma interface de alimentao eltrica DC (corrente contnua) para se conectar a uma fonte de energia externa de 6-20 V - uma bateria de 9 V, por exemplo. Possui, tambm, um chip da FTDI (Future Technology Devices International) responsvel pela converso de sinais do protocolo RS-232 para a tecnologia USB, e seis pinos ICSP (In-Circuit System Programming) para programao do microcontrolador com instrues AVR. [04].

Para facilitar a identificao dos componentes supracitados, apresentada abaixo, na Figura 2.2, uma ilustrao do Arduno com os componentes devidamente numerados para identificao no Quadro 01.

27

FIGURA 2.2 ARDUNO DUEMILANOVE: IDENTIFICAO DE COMPONENTES FONTE: [ARDUINO WEBSITE, 2010]

QUADRO 01 IDENTIFICAO DE COMPONENTES DO ARDUNO

ID 01 02 03 04 05 06 07 08

SIGNIFICADO Conector USB Transistor Regulador de tenso Conector de energia eltrica Pinos de fora Pinos analgicos Microcontrolador Atmel ATmega328 Cristal oscilador de 16 MHz

28

09 10 11 12 13 14

Boto de Reset ICSP Pinos digitais LED (Light Emitting Diode) do pino 13 LEDs do dispositivo serial Controlador FTDI USB
FONTE: ARDUINO WEBSITE, 2010

2.3.2. - O MICROCONTROLADOR ATMEL AVR ATMEGA328

O microcontrolador um dos principais componentes em um projeto eletrnico. praticamente um computador em um chip, pois contm processador, memria e perifricos de entrada/sada.

O Atmel AVR ATmega328 especificamente um microcontrolador de arquitetura RISC (Reduced Instruction Set Computer), que, diferentemente da maioria dos demais microcontroladores disponveis no mercado, utiliza memria flash para armazenar a programao.

O microcontrolador acoplado no Arduno Duemilanove possui um formato de pacote DIP (Dual In-Line Package) de 40 pinos, que inclui endereos externos multiplexados e dados de controlador. Sua pinagem idntica do Intel 8051 exceo do RESET, que tem polaridade invertida. Os detalhes da pinagem podem ser visualizados na Figura 2.3.

29

FIGURA 2.3 MAPEAMENTO DA PINAGEM DO ATMEGA328 FONTE: [ATMEL 8-BIT AVR DATASHEET, 2010]

2.3.3. - ENTRADAS E SADAS

Cada um dos 14 pinos digitais do Duemilanove pode ser usado como entrada ou sada usando as funes pinMode(), digitalWrite(), e digitalRead(), da linguagem de programao Processing. Eles operam com 5 V. Cada pino pode fornecer ou receber um mximo de 40 mA e tem um resistor pull-up interno (desconectado por padro) de 20-50 k. Alm disso, alguns pinos tm funes especializadas: [12]

Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL (Time To Live). Estes pinos so conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL; PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma sada analgica PWM (Pulse-Width
Modulation) de 8-bit com a funo analogWrite();

30

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicao SPI (Serial Peripheral Interface), que embora compatvel com o hardware, no est includa na linguagem do Arduno; LED: 13. H um LED j montado e conectado ao pino digital 13. [12]

O Duemilanove tem 6 entradas analgicas, cada uma delas est ligada a um conversor analgico-digital de 10 bits, ou seja, transformam a leitura analgica em um valor dentre 1024 possibilidades (exemplo: de 0 a 1023). Por padro, elas medem de 0 a 5 V, embora seja possvel mudar o limite superior usando o pino AREF (Analog Reference)e um pouco de cdigo de baixo nvel. Adicionalmente, alguns pinos tm funcionalidades especializadas: [12]

I2C: 4 (SDA) e 5 (SCL). Suportam comunicao I2C (TWI) usando a biblioteca Wire. [12] AREF: Referncia de tenso para entradas analgicas. Usados com

analogReference().[12] Reset: Envie o valor LOW para reiniciar o microcontrolador. Tipicamente utilizados para adicionar um boto de reset aos Shields (placas que podem ser plugadas ao Arduno para estender suas capacidades) que bloqueiam o que h na placa. [12]

2.3.4. - ALIMENTAO

O Arduno Duemilanove pode ser alimentado pela conexo USB ou por qualquer fonte de alimentao externa. A fonte de alimentao selecionada automaticamente. [12]

31

A alimentao externa (no-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte pode ser conectada com um plugue de 2,1 mm (centro positivo) no conector de alimentao. Cabos vindos de uma bateria podem ser inseridos nos pinos GND (terra) e Vin (entrada de tenso) do conector de alimentao. [12]

A placa pode operar com uma alimentao externa de 6 a 20 V. Entretanto, se a alimentao for inferior a 7 V o pino 5 V pode fornecer menos de 5 V e a placa pode ficar instvel. Se a alimentao for superior a 12 V o regulador de tenso pode superaquecer e avariar a placa. A alimentao recomendada de 7 a 12 V. [12]

Os pinos de alimentao so:

Vin: entrada de alimentao para a placa Arduno quando uma fonte externa for utilizada. Voc pode fornecer alimentao por este pino ou, se usar o conector de alimentao, acessar a alimentao por este pino; [12] 5 V: A fonte de alimentao utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino Vin atravs de um regulador on-board ou ser fornecida pelo USB ou outra fonte de 5 V; [12] 3V3: alimentao de 3,3 V fornecida pelo circuito integrado FTDI (controlador USB). A corrente mxima de 50 mA; [12] GND (ground): pino terra. [12]

2.3.5. - RESET AUTOMTICO

Algumas verses anteriores do Arduno requerem um reset fsico (pressionando o boto de reset na placa) antes de carregar um sketch (o programa a ser compilado). O Arduno Duemilanove projetado de modo a permitir que isto seja feito atravs do software que esteja

32

rodando no computador conectado. Uma das linhas de controle de hardware (DTR - Data
Terminal Ready) do FT232RL est conectada ao reset do ATmega328 via um capacitor de

100F. Quando esta linha colocada em nvel lgico baixo, o sinal cai por tempo suficiente para reiniciar o chip. O software Arduno usa esta caracterstica para permitir carregar o programa simplesmente pressionando o boto upload no ambiente Arduno. Isto significa que o bootloader pode ter um timeout mais curto, j que a ativao do DTR (sinal baixo) pode ser bem coordenada com o incio do upload. [12]

Estas configuraes tm outras implicaes. Quando o Duemilanove esta conectado a um computador rodando Mac OS X ou GNU/Linux, ele reinicia toda vez que a conexo feita por software (via USB). No prximo meio segundo aproximadamente, o bootloader estar rodando no Duemilanove. Considerando que programado para ignorar qualquer coisa a no ser um upload de um novo cdigo, ele intercepta os primeiros bytes de dados enviados para a placa depois que a conexo aberta. Se um sketch rodando na placa recebe configuraes de uma vez ou outros dados ao iniciar, assegure-se que o software que esteja comunicando espere um segundo depois de aberta [12]

2.3.6. - PROTEO DE SOBRECARGA DO USB

O Arduno Duemilanove tem um polifusvel que protege a porta USB do computador contra curto-circuito e sobre-corrente. Apesar da maioria dos computadores possurem proteo interna prpria, o fusvel proporciona uma proteo extra. Se mais de 500mA forem aplicados na porta USB, o fusvel ir automaticamente interromper a conexo ate que o curto ou a sobrecarga seja removida. [12]

33

2.3.7. - FT232RL: COMUNICAO ENTRE A PLATAFORMA E O COMPUTADOR

A transferncia dos dados para o microcontrolador realizada atravs da emulao de uma conexo virtual RS-232 ou TTL. Como o Arduno Duemilanove no possui interface de padro RS-232, necessrio instalar programas e drivers relacionados converso RS-232 ou TTL para sinais USB, permitindo que hardwares de tecnologia antiga sejam compatveis com computadores modernos.

O circuito integrado responsvel pela converso do protocolo RS-232 para a tecnologia USB o FTDI FT232RL, que executa de forma eficiente e transparente toda a comunicao de dados entre o computador e o processador da plataforma, ATmega328, que apenas faz a gesto da comunicao de dados FIFO (First In, First Out) e das colises de mensagens. [19]

Este chip permite comunicaes em srie com uma grande gama de velocidades: 1200, 2400, 4800, 9600, 19200, 38400,57600 e 115200 bps (Bits Por Segundo). Neste projeto, a comunicao de dados se dar com velocidade de 9600 bps.

2.3.8. - ICSP

O ICSP (programao serial Em-Circuito ou, do idioma ingls, In-Circuit System Programming) uma tecnologia que permite que circuitos integrados que j esto montados e devidamente soldados nas placas sejam programados. No Arduno, o ICSP permite que os microcontroladores ATmega328 sejam programados diretamente com instrues AVR sem a necessidade de se utilizar uma IDE (Integrated Development Environment) do Arduno. Neste caso, possvel programar o ATmega328 da mesma forma que o fabricante programou o

34

Arduno com o bootloader. O bootloader ajuda o Arduno a entender seus esboos (Sketches) e execut-los, uma vez que tiverem sido carregados para o Arduno.

O ICSP permite que proprietrios de plataformas Arduno faam upgrades em seus dispositivos quando a equipe de Desenvolvimento do Projeto Arduno disponibiliza atualizaes. O ICSP tambm permite que a prpria equipe do Arduno faa atualizaes de ltima hora no bootloader da placa antes de envi-la ao cliente, mesmo que a placa j esteja totalmente montada. Em outras palavras, o Arduno manufaturado sem bootloader e, como o bootloader atualizado freqentemente, a equipe do Arduno aguarda a verso mais recente do bootloader para carreg-lo na plataforma e envi-lo ao cliente. [19]

Concluindo, o ICSP pode ser utilizado para programar o Arduno ou para usar o Arduno como um programador ISP (In-System Programming).

2.3.9. - BOOTLOADER

O bootloader um pequeno programa que roda na memria flash do microcontrolador AVR, que nunca sobrescrito e inicializado assim que a plataforma energizada. O Arduno precisa de um bootloader a fim de programar seus esboos (sketches) e transferir o cdigo atravs de uma comunicao serial/USB. O trabalho do bootloader ler dados do programa do UART (Universal Asynchronous Receiver/Transmitter) e escrev-los no flash interno do microcontrolador. O AVR ATmega328 fabricado e vendido sem o cdigo na memria flash. O cdigo pode ser carregado atravs dos 6 pinos reservados ao ISP, usando um programador ISP para microcontroladores AVR.

Para o Arduno, o ISP usado somente uma vez (no momento que fabricado) - para carregar um pequeno bootloader. Na inicializao, o bootloader executado e comunica-se

35

com o UART serial (Pinos TX e RX). A partir desse momento, o Arduno pode ser programado atravs dos pinos seriais usando o protocolo STK500. Como os pinos seriais so conectados ao chip conversor USB para serial da FTDI, o Arduno pode ser programado atravs da conexo USB. [19]

2.3.10. - AMPLIFICADOR OPERACIONAL

Segundo palavras de David F. Stout em seu livro, Handbook of Operational Amplifier Circuit Design publicado em 1976, os amplificadores operacionais so amplificadores de acoplamento direto, de alto ganho, que usam realimentao para controle de suas caractersticas. Eles so hoje encarados como um componente, um bloco fundamental na construo de circuitos analgicos. Internamente, so constitudos de amplificadores transistorizados em conexo srie. [23]

Os amplificadores operacionais so usados em amplificao, controle, gerao de formas de onda senoidais etc.. Com emprego na realizao das funes clssicas matemticas como adio, subtrao, multiplicao, diviso, integrao e diferenciao, os amplificadores operacionais so os elementos bsicos dos computadores analgicos. So teis ainda em inmeras aplicaes em instrumentao, sistemas de controle, sistemas de regulao de tenso e corrente, processamento de sinais, etc. [23]

O amplificador operacional, modelo LM358, ilustrado abaixo na Figura 2.4, presente na plataforma Arduno, utiliza entradas bipolares PNP (ligao lgica positiva) que tem seus coletores conectados ao barramento de alimentao negativa. [14]

36

FIGURA 2.4 EXEMPLO DE CIRCUITO INTEGRADO DO AMPLIFICADOR OPERACIONAL FONTE: [MANCINI, 2002]

2.3.11. - CLOCK (OSCILADOR DE CRISTAL)

O cristal instalado no Arduno o ajuda a tratar questes ligadas ao tempo. Por exemplo, em um projeto que tenha por objetivo acionar o interruptor de nmero 1 a cada 15 minutos e ligar os interruptores 2, 3 e 4 um aps o outro com pausa de 20 minutos de um sobre o outro, o cristal do Arduno o elemento responsvel por determinar o tempo exato do acionamento.

O cdigo escrito na parte de cima do cristal o 16.000H9H e transmite a informao de que o cristal opera a uma frequncia de 16 MHz. OU seja, o Arduno dispe de um cristal que faz 16 milhes de ciclos por segundo.

O cristal importante em qualquer equipamento que execute aplicaes que dependam do tempo para serem bem executadas, tais como: microprocessadores, webcams, computadores, etc.

37

A preciso do cristal depende de sua especificao e, no caso do Arduno, ele tem uma preciso de 100 ppm (Pulse Position Modulation). O que significa que o cristal tem uma margem de erro de 100 ciclos a cada 1 milho de ciclos. Logo o mximo de erro/desvio que o cristal est submetido de uma ordem de 30s a cada 1 ano.

2.3.12. - TRANSISTOR (MOSFET)

Segundo Newton C. Braga, em seu livro Curso Bsico de Eletrnica publicado em 2009, Transistores de Efeito de Campo MOS (Metal Oxide Semiconductor), ou MOSFETs (Metal Oxide Semiconductor Field Effect Transistor), so dispositivos derivados dos transistores de efeito de campo comuns, mas com algumas mudanas na sua estrutura. Conforme ilustrado na Figura 2.5, no MOSFET pode se observar uma fina camada de xido de metal (que d nome ao dispositivo) que isola o substrato da regio de comporta, em lugar da juno encontrada no JFET (Junction Field Effect Transistor). [09]

FIGURA 2.5 MOSFET

FONTE: [BRAGA, 2009]

No entanto, o funcionamento do MOSFET o mesmo: uma tenso aplicada no terminal de comporta provoca variaes ou controla a corrente que flui entre o dreno e a fonte. Isso significa que os MOSFETs podem ser usados nas mesmas aplicaes que o JFET, mas com algumas vantagens.

38

Os MOSFETs so comumente encontrados em circuitos de udio e alta freqncia como, por exemplo, em amplificadores, pequenos transmissores, alarmes, etc. Em muitos equipamentos e projetos as funes destes componentes esto embutidas em circuitos integrados.

2.3.13. - REGULADOR DE TENSO

A srie de reguladores de tenso MC33269 faz parte da famlia de reguladores de tenso positivo, de baixa sada, corrente mdia e de reguladores reparados e ajustveis, especificamente projetados para serem usados em aplicaes de baixa tenso de entrada. Estes dispositivos oferecem ao projetista do circuito uma soluo econmica para o regulamento de tenso da preciso, enquanto mantm as perdas de potncia em um nvel mnimo. [15]
2.3.14. ACESSRIOS (SHIELDS)

A plataforma Arduno permite a conexo com mdulos de hardware adicionais, denominados shields , que acrescentam funcionalidade plataforma. Estes acessrios, por assim dizer, integram fisicamente as mais diversas tecnologias plataforma, como por exemplo, conexo Ethernet, WiFi, Bluetooth, GPS, MP3, MIDI, telas Touchscreen, mdulos de reconhecimento de voz, etc. Entretanto, nenhum destes mdulos ser utilizado neste projeto.

2.4. - DEMAIS COMPONENTES FSICOS

2.4.1. - SENSOR DE LUMINOSIDADE

O LDR, ilustrado na Figura 2.6, um componente que tem uma resistncia que muda de acordo com a variao de luminosidade incidente sobre ele. A relao entre resistncia e

39

intensidade de luz inversamente proporcional, ou seja, sua resistncia aumenta conforme a incidncia de luz diminui sobre o dispositivo e vice-versa.

FIGURA 2.6 LDR E SEU SMBOLO FONTE: [NETTO, 2001]

O LDR um sensor fotocondutivo fabricado com uma camada de material semicondutor - sulfato de cdmio. Devido natureza do material empregado em sua fabricao, apresenta curvas de sensibilidade semelhantes do espectro visvel. Sua principal indicao, devido caracterstica citada, , portanto, para aplicaes onde esta caracterstica visual se torna necessria, como por exemplo, controle por intensidade luminosa em sistemas de iluminao. [10]

Estes sensores tambm podem ser empregados para medir potncias luminosas desde micro watts at mili watts, alm de possuir um custo bastante reduzido. Sendo assim, o LDR o sensor mais empregado na rea de brinquedos eletrnicos e sistemas automticos de iluminao urbana. [10]

40

2.4.2. - SENSOR DE PRESENA

Este projeto conta com 04 sensores da fabricante PPA, modelo Sensit Solid, com infravermelho passivo e rel de estado slido (imune a campos magnticos) idnticos aos exibidos na Figura 2.7.

FIGURA 2.7 SENSOR DE PRESENA

O sensor possui as seguintes caractersticas fsicas:

Compensao de temperatura; 02 nveis de sensibilidade de deteco; Lente de Fresnel translcida branca; Protetor plstico do piroeltrico; Fabricado com tecnologia SMD (Surface Mountaing Device); [20]

O sensor possui ainda as seguintes caractersticas tcnicas:

Duplo elemento piroeltrico; Deteco: 12 m de alcance x 110 de abertura;

41

Tempo de acionamento: 2 segundos; Tempo de estabilizao: 60 segundos; Compensao de temperatura: 10 a 45; Tenso de alimentao: 10 ~ 18V DC; Consumo: 15 mA (12V) Dimenses 70 mm x 105 mm x 39 mm (Largura x Altura x Profundidade) [20]

O sensor de presena um componente de extrema importncia para atingir um dos objetivos deste projeto, que a economia de energia. No modo econmico, ele o responsvel por enviar sinais ao Arduno, que tratar a informao identificando se h ou no presena e acionar ou no as lmpadas.

2.4.3 - ULN2003A

O dispositivo eletrnico ULN2003A, ilustrado na Figura 2.8, um circuito integrado, que um componente microeletrnico constitudo por um conjunto de transistores, diodos, resistncias e condensadores, fabricados ao mesmo tempo num mesmo processo, sobre uma substncia comum semicondutora de silcio designada comumente por chip. Os circuitos integrados revolucionaram o mundo da eletrnica e esto presentes em praticamente todos os dispositivos do gnero.

O ULN2003 apenas um drive, constitudo de 7 transistores Darlingtons NPN (Ligao lgica negativa), portanto no tem alimentao positiva. Ele apenas ''chaveia o GND para dispositivos externos, e estes dispositivos podem ser alimentados at a tenso suportada pelo coletor dos transistores internos do ULN2003 quando em estado de corte. O

42

pino 9 a juno dos catodos dos 7 diodos de proteo, reversamente polarizados, caso ele seja usado para chavear cargas indutivas, como bobinas de rels.

FIGURA 2.8 CIRCUITO INTEGRADO ULN2003A FONTE: [CI 2003A DATASHEET]

2.4.4. - REL

O rel um dispositivo comutador eletromecnico de extrema importncia no universo da tecnologia no ramo da robtica, domtica, eletrnica, mecatrnica e afins. Est presente na maioria dos dispositivos que fazem parte do dia a dia dos cidados e so muito comuns em eletrodomsticos, automveis, sistemas telefnicos, dispositivos mdicos e sistemas de automao atuando no controle eletrnico para desempenhar seu papel, seja ele ligar motores ou lmpadas.

O tipo mais comum de rel eletromecnico no o que est sendo abordado neste projeto. o rel de parede que utilizado em interruptores de energia para acender e apagar lmpadas. A diferena com este tipo de rel de parede que ele necessita de interveno

43

humana para ser acionado, enquanto o rel presente neste projeto no necessita de interveno humana para ser acionado.

O rel utiliza-se de princpios eletromagnticos para operar corretamente. O interior de um indutor composto de um indutor (bobina de cobre) que gera um campo magntico ao ser energizado com um pulso eltrico. A outra parte do indutor composta de braos metlicos que fazem os contatos fsicos da comutao. Quando o rel est desativado ou nenhum pulso eltrico lhe fornecido, seus braos esto em uma posio que conhecida como normalmente aberta (NA). Quando o rel est ligado ou um pulso eltrico lhe enviado, o brao metlico se move em direo ao outro contato fsico do rel. O brao fsico se move medida que o campo magntico gerado o impulsiona em direo ao indutor.

2.5. - AMBIENTE DE DESENVOLVIMENTO PARA O ARDUNO

A plataforma Arduno inclui ainda um meio de desenvolvimento que permite escrever programas usando uma linguagem denominada Processing, que uma linguagem derivada de um projeto de alunos do MIT (Instituto de Tecnologia de Massachusetts - EUA), que tem como grande objetivo facilitar o acesso de programadores ao mundo da programao de baixo nvel (exemplo de linguagem: Assembly), sem necessidade alguma de conhecer a linguagem de mquina, que trabalha diretamente com os registradores dos processadores. A linguagem de programao de alto nvel adotada pelo projeto Processing uma verso simplificada da linguagem C/C++.

Processing uma linguagem de programao de cdigo aberto para as pessoas que querem criar imagens, animaes, e interaes. Desenvolvido inicialmente para servir como um sketchbook do software e para ensinar os fundamentos da programao de computador

44

dentro de um contexto visual, Processing igualmente evoluiu em uma ferramenta para gerar trabalho profissional de qualidade em sua forma final. Atualmente, existem dezenas de milhares de estudantes, artistas, desenhadores, pesquisadores e entusiastas que utilizam a linguagem Processing para a aprendizagem, a prototipificao e a produo. [21]

Para desenvolver aplicaes utilizando a linguagem Processing, que funcionem em um microcontrolador, utilizado um conjunto de abstraes, de codinome Wiring. Muitos se referem a este conjunto como linguagem Wiring ou linguagem Arduno, mas na verdade so somente funes e bibliotecas escritas em C/C++

Segundo referncias acerca da linguagem de programao do Arduno disponveis no site da referida plataforma, os programas em Arduno podem ser divididos em trs partes principais: estrutura, valores (variveis e constantes) e funes. A linguagem Arduno baseada em C/C++. A referncia acerca da linguagem de programao no que tange sua aplicabilidade neste projeto se encontra no anexo desta monografia.

2.5.1. - APLICATIVO DE DESENVOLVIMENTO

O Arduno um ambiente multiplataforma e, como dito anteriormente, permite ser programado atravs dos trs principais Sistemas Operacionais: Microsoft Windows, Apple Macintosh iOS e GNU\Linux. Abaixo ser detalhado o procedimento para instalao do aplicativo de desenvolvimento no Sistema Operacional Microsoft Windows, bem como informaes sobre a interface, cdigo e parmetros.

45

2.5.2. - INSTALAO ARDUNO PARA WINDOWS

Primeiramente deve-se baixar o ambiente para o Arduno que pode ser encontrado no seguinte site: http://www.arduino.cc/en/Main/Software, em download clique em Windows e baixe o arquivo arduino-0019.zip (ou mais novo). Ser necessrio um programa capaz de descompactar o arquivo (exemplos: WinZip, WinRAR etc.). Certifique-se de preservar a estrutura da pasta. D um duplo clique na pasta para abri-la, haver uns arquivos e sub-pastas, clique no aplicativo arduno, este ser seu ambiente de desenvolvimento. [12]

Conecte a placa ao computador atravs do cabo USB, o LED verde na placa nomeado por PWR deve ascender, ele indica que a placa est ligada. O arduno seleciona automaticamente a fonte de alimentao adequada. [12]

Quando se conecta a placa, o Windows dever iniciar o processo de instalao do driver. No Windows Vista/Seven, o driver deve ser baixado e instalado automaticamente. No Windows XP, o assistente Adicionar Novo Hardware ser aberto: [12]

Quando o Windows perguntar se pode se conectar ao Windows Update para procurar o software, selecione no. Clique em Avanar. [12] Selecione personalizar, logo aps selecione instalar e clique em Avanar. [12] Certifique-se de procurar o melhor driver, desmarque a pesquisa de mdia removvel; selecione Incluir este local na pesquisa e procure os drivers /FTDI USB Drivers diretrios de distribuio do Arduno. Clique em Avanar. [12] O assistente ir procurar o driver e em seguida, dizer que um hardware foi encontrado. Clique em Concluir. [12]

46

O assistente de novo hardware abrir novamente, faa todos os passos da mesma maneira, desta vez, uma porta serial USB ser encontrada. [12]

2.5.3. - INTERFACE DO APLICATIVO DE DESENVOLVIMENTO

Para desenvolver um programa a ser executado no Arduno necessrio utilizar a interface de desenvolvimento da plataforma. A interface foi desenvolvida em Java e muito intuitiva. Para facilitar o entendimento, a funcionalidade de cada boto presente na interface de desenvolvimento explicada abaixo, com o auxlio da Figura 2.9.

FIGURA 2.9 AMBIENTE DE DESENVOLVIMENTO ARDUNO

Legenda dos cones (na ordem da esquerda para a direita):

47

Compilar; Parar processo de compilar; Novo; Abrir;


2.5.4. - LEITURA DA INTERFACE SERIAL

Salvar; Upload; Leitura da interface serial

Atravs da interface de desenvolvimento, possvel realizar a leitura e envio de dados utilizando a interface serial, conforme ilustrado na Figura 2.10.

FIGURA 2.10 LEITURA/ENVIO DE DADOS UTILIZANDO PORTA SERIAL FONTE: [SANTOS, 2009]

48

2.5.5. - CICLO DE DESENVOLVIMENTO

O ciclo de desenvolvimento para o Arduno bem definido e, conforme pode ser observado na Figura 2.11, no difere do ciclo de desenvolvimento de microcontroladores estudados ao longo do curso, como o PIC, por exemplo.

FIGURA 2.2 CICLO DE DESENVOLVIMENTO PARA PLATAFORMA ARDUNO FONTE: [SANTOS, 2009]

2.5.6. - ESTRUTURA DO SKETCH

A estrutura do cdigo para desenvolver um programa para o Arduno idntica ilustrada na Figura 2.12, e como pode ser observado, semelhante estrutura de qualquer cdigo em C.

49

FIGURA 2.3 ESTRUTURA DO SKETCH

2.5.7. - REFERNCIA DAS FUNES DA LINGUAGEM ARDUNO

Para desenvolver o cdigo inserido dentro do Arduno necessrio fazer uso de elementos de estrutura, elementos de funo e variveis prprias do Processing. possvel visualizar todos os elementos utilizados para desenvolver o cdigo nas Figuras 2.13, 2.14 e 2.15.

50

FIGURA 2.4 ELEMENTOS DE ESTRUTURA DA LINGUAGEM PROCESSING FONTE: [ARDUINO WEBSITE, 2010]

FIGURA 2.5 ELEMENTOS DE FUNO DA LINGUAGEM PROCESSING FONTE: [ARDUINO WEBSITE, 2010]

51

FIGURA 2.6 VARIVEIS DA LINGUAGEM PROCESSING FONTE: [ARDUINO WEBSITE, 2010]

Todas os elementos de funo e estruturas utilizadas para desenvolver o cdigo inserido no Arduno encontram-se referenciadas no Anexo 01, com detalhes acerca de sua funcionalidade.

2.6. - SISTEMA WEB

2.6.1. - XAMPP

O XAMPP [13] (Figura 2.16), pacote integrado de servidores que incluem o Apache [25] e o MySQL entre outros, um sistema altamente portvel, que pode ser executado sem a necessidade de instalao, ou seja, pode ser utilizado at mesmo atravs de um dispositivo de armazenamento portvel (Pendrive).

52

FIGURA 2.7 XAMPP

2.6.2. - PHP

O PHP uma linguagem de programao de uso geral criada especialmente para trabalhar em ambientes Web. Diferentemente de outras linguagens como o Javascript, o PHP executado no servidor. Com isso seu cdigo fonte nunca revelado ao usurio final. E, diferentemente de linguagens como C e Pascal, o PHP no uma linguagem compilada e sim interpretada, dispensando declaraes rgidas de variveis e permitindo uma mistura de cdigos em HTML (HyperText Markup Language) e PHP.

Criado em 1994, a partir do sucesso do Personal Home Page Tools de Rasmus Lerdof., o PHP chamou ateno de Zeev Suraski e, em 1997, se tornou um pr-processador de hipertexto chegando verso 3. Em 2000, o PHP atingiu a verso 4 trazendo consigo tecnologias da Zend Technologies, que permitiram funes mais complexas e maior interao com o usurio. [18]

53

O PHP j se mostrou superior em quesitos como simplicidade de conexo a bancos de dados, desempenho e gerenciamento de memria, alm de ser distribudo sob licena GPL e de rodar em inmeras plataformas. Essa licena torna o PHP open source e traz novas vantagens como o grande nmero de colaboradores distribudos pelo mundo e o custo extremamente baixo de implementao, sendo apenas necessrio investir no hardware e utilizar um conjunto completo de ferramentas gratuitas e open source.

Em sua verso mais recente - o PHP5 - foi introduzido um novo modelo de objetos e, com isso, foram implementadas muitas funes e caractersticas firmando o PHP como linguagem orientada a objetos, e o colocando a novos nveis de concorrncia com linguagens mais robustas, como o Java [01].

2.6.3. - HTTP

Como protocolo mais utilizado na troca de informaes da internet, o HTTP (Hypertext Transfer Protocol) efetua a comunicao transmitindo e recebendo arquivos na linguagem HTML. O canal de comunicao estabelecido entre o software cliente, muitas vezes representado pelo navegador e o servidor web. [18]

Em sntese, este protocolo da camada de aplicao do modelo OSI (Open Systems Interconnection), estabelece uma conexo TCP (Transmission Control Protocol) por uma porta especfica, e envia uma requisio como, por exemplo, GET / HTTP 1.1, que requisitaria a pgina padro ao servidor web. Essa requisio ento respondida com uma mensagem no formato HTML, que ento interpretada pelo navegador e apresentada ao usurio. Essa resposta contm cabealhos que permitem ao navegador identificar se a requisio foi um sucesso ou algum erro ocorreu.

54

2.6.4. - APACHE

O Projeto do Servidor Apache uma tentativa de desenvolver e manter um projeto de servidor de cdigo aberto para sistemas modernos, produzindo um servidor seguro, eficiente e expansvel, que esteja em sintonia com os padres atuais. [03]

O Servidor Apache gratuito e desenvolvido por voluntrios membros do Grupo Apache. Atualmente, o Apache possui 54% do mercado de servidores Web, dominando o mercado desde o ano de 1996 [16], fazendo dele o servidor mais popular.

O servidor web a ferramenta principal na atual estrutura da web. Ele responsvel por receber requisies de navegadores, processar e enviar os resultados de volta ao navegador que fez a requisio. Esse processamento pode contar com inmeras aes, tais como: buscar arquivos HTML, seguir referncias para imagens, convocar execuo de scripts PHP, e muitas outras.

O Apache possui uma estrutura modularizada com um mdulo central (conhecido como core) responsvel pelo recebimento e encaminhamento de requisies. Os outros mdulos so responsveis pelas outras funes, inclusive o mdulo responsvel pela interao com o PHP. [03]

2.6.5. - MYSQL

Trata-se de um banco de dados de cdigo aberto sendo atualmente, o mais popular de sua categoria. Sua arquitetura permite que seja extremamente rpido e simples de usar e sua distribuio gratuita um grande atrativo para programadores e empresrios que desejam publicar sites na internet.

55

Com uma estrutura robusta, embora simplificada pela ausncia de funes nativas do aplicativo SQL Server da Microsoft, o MySQL totalmente capaz de responder e atender solues web de pequeno a grande porte, com a vantagem de utilizar menos recursos do hardware, em comparao a servidores comercias. Mesmo com essas simplificaes, o banco implementa a linguagem SQL (Structured Query Language) amplamente utilizada na realizao de buscas em banco de dados. [18]
2.6.6. REFERNCIAS DAS FUNES PARA O SISTEMA WEB 2.6.6.1 PHP

Da mesma forma que foi necessrio fazer uso de funes da linguagem de programao Processing para desenvolver o cdigo para o Arduno, agora necessrio fazer uso de funes da linguagem PHP para desenvolver a interface web e tratar as informaes oriundas do Arduno para que o sistema funcione corretamente.

As funes relacionadas para a construo da interface e do controle da iluminao esto relacionadas no Anexo 02.
2.6.6.2 SQL

A linguagem utilizada para a criao do banco de dados e da tabela de alocao de cmodos e agendamento de horrios a SQL. As funes utilizadas para atingir este propsito esto referenciadas no Anexo 02.

56

CAPTULO 3 DESENVOLVIMENTO
3.1. APRESENTAO GERAL

O objetivo deste captulo apresentar o desenvolvimento da soluo de automao. O desenvolvimento est dividido em trs partes distintas: circuito eletrnico, cdigo do circuito e interface controladora informatizada.

O circuito eletrnico o responsvel pela interligao fsica entre o dispositivo a ser controlado luminrias e o computador. O circuito composto de diversos elementos resistor, sensor de presena, sensor de iluminao, rel, circuito integrado e o Arduno. Atravs do circuito que est sendo apresentado, possvel controlar at 08 luminrias. Caso haja necessidade de controlar mais luminrias, ser necessrio integrar outro Arduno Duemilanove ou substituir o presente por outro que possua mais pinos, como o Arduno Mega, por exemplo.

O Arduno Duemilanove pode integrar sua estrutura fsica, dispositivos (Shields) com suporte tecnologia Ethernet que permitem configur-lo para atuar como um servidor web. Entretanto, para a realizao deste projeto, foi proposta a utilizao de um microcomputador de uso pessoal para fins econmicos (uma vez que pressupe-se que o usurio j possua um PC - Personal Computer), e a integrao do Arduno Duemilanove com shields no faz parte do escopo deste projeto. Desta forma, o Arduno Duemilanove fica conectado ao PC atravs de uma interface USB para se comunicar com o servidor web que est instalado neste mesmo computador.

57

O cdigo do circuito a parte responsvel por interpretar e executar corretamente os comandos enviados atravs da interface controladora. O cdigo escrito em linguagem de programao Processing e est embarcado no Arduno.

A interface controladora informatizada desenvolvida utilizando-se as tecnologias PHP, MySQL e Apache. Sendo que essas trs tecnologias so instaladas atravs de um pacote denominado XAMPP. A interface controladora a responsvel por enviar comandos ao microcontrolador e informar o status de ao bem sucedida ou no, bem como o status de leitura dos dispositivos fsicos.

Atravs da unio destas trs partes, possvel que o operador interaja com o sistema de automao de forma eficiente. O projeto prev que o sistema seja capaz de executar as funes de acordo com o exposto no Quadro 02.
QUADRO 02 POSSIBILIDADES DE AES A SEREM EXECUTADAS PELO SISTEMA

Modo de Operao

Sensor de presena Ativado

Modo Automtico Desativado

Ativado Modo Manual Desativado

Modo Leitura

Ativado

Acionamento da luminria Luminria especfica Conjunto de luminrias Luminria especfica Conjunto de luminrias Luminria especfica Conjunto de luminrias Luminria especfica Conjunto de luminrias Luminria especfica

Ao Programar luminria(s) com temporizador para ligar/desligar a(s) lmpada(s) em X minutos. Programar luminria(s) sem temporizador para ligar/desligar a(s) lmpada(s) em X minutos. Acionar luminria(s) com temporizador para ligar/desligar a(s) lmpada(s) em X minutos. Acionar luminria(s) sem temporizador para ligar/desligar a(s) lmpada(s) em X minutos. Leitura de estado da lmpada e presena no ambiente.

58

Desativado

Conjunto de luminrias

Leitura de estado da lmpada no ambiente.

O sistema ir permitir que o usurio faa a monitoramento de seu ambiente e o controle de forma totalmente flexvel. Alm de o usurio contar com a interface para poder executar comandos de seu interesse remotamente, poder monitorar o estado de cada cmodo de seu ambiente. Ou seja, poder utilizar a interface para, distncia, ter conhecimento se h alguma presena no ambiente ou se as lmpadas esto acesas ou apagadas. A interface tambm ir mostrar ao usurio se o sistema est sendo operado em modo manual ou automtico independente de alguma ao ser executada.
3.1.1. FLUXOGRAMA GERAL

Aqui apresentado o fluxograma do sistema, que pode ser visualizado na Figura 3.1. Atravs do fluxograma, possvel observar a coerncia de sua estrutura com as informaes contidas no Quadro 02. O referido quadro e o fluxograma so essenciais para o desenvolvimento correto do cdigo de programao inserido no microcontrolador.

59

FIGURA 3.1 FLUXOGRAMA DO SISTEMA

60

O termo fluxograma designa uma representao grfica de um determinado processo ou fluxo de trabalho, efetuado geralmente com recurso a figuras geomtricas normalizadas e a setas unindo-as. Atravs desta representao grfica, possvel compreender de forma rpida e fcil a transio de informaes entre os elementos que participam no processo. [17]
3.1.2. VISO GERAL DO PROJETO

O Arduno o responsvel pela execuo de todas as aes vislumbradas no Quadro 02. o crebro do sistema e, por isto, todos os sensores, resistores e circuitos integrados esto ligados a ele. Segue abaixo, na Figura 3.2, uma viso geral do projeto de forma simplificada exibindo as ligaes realizadas entre os elementos do sistema.

FIGURA 3.2 DESENHO DO PROJETO NA PROTOBOARD

O Arduno executa as aes, comandadas atravs da interface web, de acordo com os sinais de entrada ligados s portas analgicas 2, 3, 4 e 5 (LDR) e s portas digitais 10, 11, 12 e

61

13 (sensor de presena). As instrues para acender/apagar as lmpadas saem das portas digitais 5, 6, 7 e 8 do Arduno, que so ligados a rels responsveis pelo acionamento fsico das lmpadas. 3.2. REL

O circuito eltrico do projeto est desenhado de tal forma que a(s) lmpada(s) est(o) conectada(s) ao(s) rel(s) atravs dos contatos COMUM e N/A (Normal Aberto). Desta forma, quando houver necessidade de ligar uma lmpada, o circuito ser fechado e a mesma ser ligada. De forma inversa acontecer quando for necessrio desligar uma lmpada o circuito ser aberto.

Os Rels esto ligados a diodos retificadores que cumprem o papel de evitar que a corrente volte em sentido contrrio.

Para o correto funcionamento do projeto, necessrio que os rels estejam ligados a uma fonte de 12 V. Neste projeto, os rels recebem a alimentao do Arduno, mas poderiam receber alimentao eltrica de outra fonte que no o Arduno. 3.3. SENSOR DE ILUMINAO

Os sensores de luminosidade esto conectado s portas analgicas 2, 3, 4 e 5 do Arduno.

A forma de ligao dos sensores nica a todos os sensores. Cada um dos sensores est ligado de forma serial a um resistor nico (o qual tem sua outra extremidade ligada ao plo negativo terra do Arduno) e a uma porta analgica especfica do Arduno. A outra extremidade do sensor est ligada ao plo positivo da fonte de alimentao do Arduno.

62

O LDR, que um transdutor de entrada, tem como principal funo atuar no controle da passagem de corrente eltrica para o Arduno, de forma que quando o ambiente est escuro, a resistncia aumenta e passa pouca corrente para o Arduno. Por outro lado, quando o ambiente recebe muita luz, a resistncia do LDR diminui e passa muita corrente para o Arduno. O Arduno recebe a corrente eltrica (energia luminosa convertida em energia eltrica) tratada pelo LDR e de acordo com a quantidade de corrente eltrica recebida executa uma ao. Atravs do uso de um aparelho para medio do nvel de luminosidade do ambiente Luxmetro - foi possvel elaborar um quadro comparativo entre o nvel de luminosidade do ambiente e o valor de leitura do LDR no momento. Esses dados so de extrema importncia para referenciar o valor de resistncia do LDR utilizado no cdigo de programao para determinar em qual momento a lmpada deve ser acesa ou apagada. As informaes comparativas podem ser visualizadas no Quadro 03.
QUADRO 03 VALORES DE LUMINNCIA DO LDR E LUXMETRO

HORRIO 12 h ~ 14 h

DESCRIO Luminosidade alta Luminosidade moderada Luminosidade baixa

OBSERVAO Sol a pino (sem iluminao artificial) (sem iluminao artificial) Com iluminao artificial

LUXMETRO (lx) 175 ~ 375

LDR (mA) 130 ~ 182

17 h ~ 18 h 19 h ~ 20 h

105 ~ 135 25 ~ 35

70 ~ 84 35 ~ 45

Os sensores de iluminao so referenciados na programao desenvolvida como LeLDR1, LeLDR2, LeLDR3 e LeLDR4.

63

No trecho do cdigo exibido na Figura 3.3, possvel observar que LeLDR1 utilizado para receber o valor da corrente eltrica tratada pelo sensor de iluminao e executar uma ao conforme programado no cdigo. No caso abaixo, criada uma estrutura de programao case que ir identificar se o valor da corrente eltrica est abaixo do valor 35 e caso esteja ir ligar um LED ou lmpada.

FIGURA 3.38 TRECHO DE CDIGO DO ARDUNO

3.4. SENSOR DE PRESENA

O sensor de presena atuar apenas como dispositivo de leitura, que ser utilizada pelo Arduno para execuo de comandos.

Os sensores esto ligados nos pinos digitais do Arduno, de nmeros 10, 11, 12 e 13 do Arduno. Da mesma forma que os rels, os sensores de presena esto ligados fonte de energia de 12 V do Arduno e ao pino terra.

Os sensores de presena so referenciados na programao desenvolvida como LePIR1, LePIR2, LePIR3 e LePIR4.

64

3.5. CONTROLE DO ARDUNO

O microcontrolador possui o controle de todas as aes ocorrentes no sistema, mas para isso, necessrio desenvolver uma programao capaz de identificar e tratar todas as informaes do sistema.
3.5.1. PROGRAMAO DE CONTROLE DO ARDUNO

A programao inserida dentro do Arduno, utilizada para controlar o sistema, foi desenvolvida em linguagem Processing (a qual baseada em C e C++). Para que o programa seja inteligvel tanto para o Arduno quanto para um humano, necessrio definir e nomear as portas do Arduno no programa de forma semelhante exibida na Figura 3.4.

FIGURA 3.49 TRECHO DO CDIGO NO ARDUNO

3.5.2. CDIGOS DE CONTROLE

Para que o projeto funcione de forma efetiva, necessrio utilizar cdigos de controle a fim de informar ao hardware qual ao deve ser executada e em qual ambiente. Estes cdigos encontram-se listados no Quadro 04.

65

QUADRO 04 CDIGOS DE CONTROLE

CDIGO DESCRIO 1 L luminosidade do ambiente L luminosidade do ambiente e desliga ou liga dependendo 2 da luminosidade 3 Liga lmpada 4 Desliga lmpada 5 L luminosidade do ambiente L luminosidade do ambiente e desliga ou liga dependendo 6 da luminosidade 7 Liga lmpada 8 Desliga lmpada A L luminosidade do ambiente L luminosidade do ambiente e desliga ou liga dependendo B da luminosidade C Liga lmpada D Desliga lmpada E L luminosidade do ambiente L luminosidade do ambiente e desliga ou liga dependendo F da luminosidade G Liga lmpada H Desliga lmpada $ Liga/Desliga Modo Econmico

AMBIENTE Ambiente 1

Ambiente 2

Ambiente 3

Ambiente 4 TODOS

3.5.3. INSERO DO ALGORITMO NO ARDUNO

Inserir o cdigo dentro da plataforma Arduno uma tarefa extremamente simples. Inicialmente, necessrio instalar os drivers para comunicao entre o Arduno e o computador. Como dito anteriormente, o Arduno possui um CI FTDI que faz a converso do protocolo RS-232 para o padro USB e, dessa forma, necessrio apenas conectar o Arduno atravs da conexo USB ao computador e instalar os drivers que acompanham o dispositivo. Aps o trmino da instalao, o computador ir apresentar uma porta de comunicao intitulada COM que uma interface RS-232 virtual emulada para se comunicar com o dispositivo atravs da interface USB.

66

Aps o trmino da instalao, uma porta COM ir aparecer no Gerenciador de Dispositivos do Microsoft Windows de forma semelhante exibida na Figura 3.5

FIGURA 3.5 PORTA VIRTUAL COM

Especificamente neste caso, a porta criada foi a COM5, mas o sistema operacional poderia ter atribudo outro nmero para a porta COM, como por exemplo, COM6, COM7 e assim sucessivamente. De posse da numerao da porta COM, deve-se ajustar o script

67

ardu_script.php informando corretamente o nmero da porta de comunicao, de forma semelhante exibida na Figura 3.6.

FIGURA 3.6 AJUSTE DA PORTA COM NO CDIGO

Para inserir o cdigo no Arduno necessrio utilizar a prpria interface de programao desenvolvida pela equipe do Arduno. A Figura 3.7 exibe a tela da interface de desenvolvimento e destaque para o boto de upload.

68

FIGURA 3.7 AMBIENTE DE DESENVOLVIMENTO ARDUNO

Upload;

Como dito anteriormente, aps a insero do cdigo no Arduno no necessrio reconectar o dispositivo ao PC para carrega o cdigo novamente. O Arduno ficar conectado ao PC neste projeto porque h necessidade de comunicao com um servidor web, que no caso o PC. Em futuras implementaes neste projeto, a ligao fsica entre o Arduno e o PC poder ser desfeita atravs da implementao de um Arduno Web Server. 3.6. APRESENTAO DO CIRCUITO

Aqui so descritas todas as ligaes entre os componentes eletrnicos para execuo do projeto. Para desenhar o circuito montado na protoboard (Figura 3.8), foi utilizado o

69

software Fritzing que um excelente software para desenhar circuitos eletrnicos. Este software tambm gera automaticamente uma viso esquemtica do circuito. Entretanto, os resultados visuais no foram satisfatrios para efeito didtico e o esquema do circuito (Figura 3.9) foi redesenhado utilizando o Adobe Photoshop, uma vez que softwares renomados como o Proteus, Eagle, Multisim, Smartdraw e outros ainda no possuem o Arduno duemilanove em sua base de dados para aplicao.

70

FIGURA 3.8 DESENHO DO PROJETO NA PROTOBOARD

71

FIGURA 3.9 CIRCUITO ELTRICO DO PROJETO

72

O Arduno est ligado a todos os elementos eletrnicos dos circuitos, direta ou indiretamente. Abaixo, segue detalhes das ligaes entre o Arduno e o circuito integrado, sensores, rels, diodos etc.

Os Pinos A2, A3, A4 e A5 do Arduno tratam sinais analgicos e esto ligados a resistores (resistores cermicos e fotoresistores) para efetuar a leitura do nvel de luminosidade dos ambientes. Uma das extremidades do resistor cermico est ligada ao pino terra, enquanto a outra est ligada extremidade do fotoresistor e ao pino analgico do Arduno. Da mesma forma, uma das extremidades do fotoresistor est ligada ao resistor cermico e ao pino analgico e o outro terminal est ligado fonte de alimentao do Arduno, de 9 V. Os pinos D5, D6, D7 e D8 do Arduno esto ligados ao circuito integrado ULN2003A nos pinos In 4, In 3, In 2 e In 1, respectivamente. Recapitulando, o ULN2003A responsvel por elevar a tenso para 12 V tenso mnima necessria para acionar o Rel. Os pinos In 4, In 3, In 2 e In 1 do circuito integrado ULN2003A esto ligados internamente aos pinos Out 4, Out 3, Out 2 e Out 1. Os pinos Out 4, Out 3, Out 2 e Out 1 circuito integrado ULN 2003A esto ligados cada um a um rel (que est conectado a um diodo retificador de forma paralela) para acionar os dispositivos de iluminao.

Aps realizada a correta ligao do circuito, ser necessrio apenas inserir o cdigo desenvolvido em linguagem Processing no Arduno e conect-lo a um PC para que o sistema funcione de forma correta.

73

3.7. INTERFACE DE GERENCIAMENTO

A interface de gerenciamento remota composta por uma aplicao web, que est publicada em um servidor. Atravs da internet possvel acessar a interface de gerenciamento do sistema de iluminao de forma remota. Acessando a interface possvel visualizar as informaes da residncia.

A interface foi desenvolvida utilizando-se linguagem de programao PHP, banco de dados MySQL e servidor de aplicao Apache. Todas as ferramentas necessrias para testes da aplicao foram instaladas atravs do pacote XAMPP, que engloba todos esses aplicativos.
3.7.1. CDIGO DA INTERFACE

A interface foi desenvolvida utilizando-se PHP e MySQL visando permitir o desenvolvimento da aplicao de forma rpida e fcil. O script, de codinome ardu_script.php, interage com o Arduno atravs da porta COM especificada, efetua a leitura do arquivo st_controle.txt (arquivo onde escrita a solicitao do sistema web) para saber o que escrever para o Arduno. O script tambm efetua a leitura do arquivo ardu_out.txt para determinar o valor de leitura do LDR, com o valor (ZERO) informando que a lmpada est ligada.

Na Figura 3.10 exibido trecho contido na programao desenvolvida para elaborar a interface web. Este trecho de cdigo est contido no arquivo ardu_script.php:

74

FIGURA 3.10 TRECHO DO CDIGO DA INTERFACE WEB ARDU_SCRIPT.PHP

O script index.php aponta para o arquivo my_layout.phtml, o qual contm a pgina da interface de gerenciamento em si, chamando o framework do layout e as chamadas de funes para o arquivo core.php. O script core.php contm as funes que efetuam chamadas no arquivo ardu_script.php, e parte do seu cdigo pode ser visualizado na Figura 3.11.

FIGURA 3.11 TRECHO DO CDIGO DA INTERFACE WEB CORE.PHP

75

Para armazenar as informaes sobre os ambientes que esto sendo controlados, como por exemplo, nome do ambiente, status de leitura do LDR, status da lmpada etc, utilizado o banco de dados MySQL, que de fcil entendimento e administrao de dados.

Na Figura 3.12 pode ser visualizado trecho do cdigo desenvolvido em SQL para criao de uma tabela:

FIGURA 3.12 TRECHO DO CDIGO DO BANCO DE DADOS

3.7.2. INICIALIZANDO O SISTEMA

Para inicializar o sistema necessrio que o servidor de pginas web e o banco de dados sejam inicializados. Para isso deve-se executar o pacote de servios XAMPP e inicializar os servios clicando no boto Start, que se encontra ao lado de cada um dos mdulos de servio. H tambm a opo de habilitar a funcionalidade de servio para que os mdulos sejam inicializados em conjunto com o Sistema Operacional. A tela do Painel de Controle do XAMPP exibida na Figura 3.13.

76

FIGURA 3.13 PAINEL DE CONTROLE DA APLICAO XAMPP

Feito isto, necessrio executar um script pr-configurado que ir navegar at os diretrios corretos e acionar o executvel do PHP para iniciar a interface de gerenciamento de automao. Veja a estrutura do script na Figura 3.14.

FIGURA 3.14 SCRIPT PARA INICIAR INTERFACE WEB

3.7.3. AMBIENTE DE GERENCIAMENTO

Observe nas imagens abaixo que a interface de gerenciamento simples e objetiva.

77

Na Figura 3.15 possvel observar o status da lmpada. Ou seja: se ela est apagada ou acesa.

FIGURA 3.105 INTERFACE DE GERENCIAMENTO (TELA INICIAL)

Observe na Figura 3.16 que, ao clicar em Cadastro, apresentada a opo de programar o horrio que a lmpada deve ser ligada ou desligada.

FIGURA 3.16 INTERFACE DE GERENCIAMENTO (TELA DE PROGRAMAO)

78

CAPTULO 4 APLICAO DA SOLUO COM RESULTADOS


4.2. DIFICULDADES ENCONTRADAS

Apesar de o Arduno ser uma excelente plataforma para execuo de projetos de automao e afins e ter servido muito bem ao propsito do projeto, o prprio Arduno acabou se tornando o foco das principais dificuldades encontradas durante a execuo do projeto.

Foi muito difcil encontrar literatura oficial sobre a plataforma Arduno em todos os seus aspectos: hardware, programao, projetos etc. Praticamente no existe literatura oficial no idioma portugus do Brasil. A grande fonte de informao oficial disponibilizada no idioma ingls e para documentar o projeto foi necessrio comprar livros em formato digital (ebooks).

Outro ponto que foi determinante para aumentar as dificuldades encontradas a falta de software de desenho de esquemas eletrnicos que suportam o hardware do Arduno Duemilanove. 4.3. AVALIAO DO PROJETO

O projeto de fcil implementao e de custo baixo, o que incentiva amadores a executarem o projeto em suas residncias ou em outros locais de interesse por conta prpria. No caso de implementao do projeto em algum ambiente que possua muitos pontos de iluminao, pode-se estudar a substituio do Arduno Duemilanove por outro, como o Arduno Mega que possui 4x a quantidade de conexes do Arduno Duemilanove ou pode se estudar o empilhamento dos Ardunos utilizando conexo USB.

79

Um ponto importante que deve ser ressaltado o fato de que, independente da quantidade de pontos de iluminao que seja controlada, no h necessidade de mudana dos componentes citados no projeto por outros mais caros, por exemplo.

80

CAPTULO 5 CONSIDERAES FINAIS


5.1. CONCLUSO

O objetivo do projeto foi automatizar sistemas de iluminao e gerenci-los remotamente atravs de uma interface computadorizada e para atingir o objetivo foi utilizado hardware e software open source de baixo custo de aquisio e de fcil implementao.

O projeto se mostrou eficaz no seu propsito, que foi permitir o gerenciamento remoto do sistema de iluminao e permitir a reduo do consumo de energia relacionado ao gasto com iluminao, uma vez que consta no projeto o inovador modo econmico, que prdefine que as lmpadas ficaro acesas somente quando houver movimento no ambiente.

A utilizao do Arduno propiciou uma fcil integrao com todos os dispositivos do sistema e obteve os mesmos resultados que teriam sido obtidos caso o projeto tivesse sido executado com o uso de outros microcontroladores, que teriam de ser esquematizados com diversos outros componentes para atingir o mesmo propsito do Arduno.

Os resultados obtidos foram satisfatrios e o sistema se mostrou til, podendo ser implementado em qualquer ambiente. Atingiu o objetivo de toda automao: propiciar comodidade e conforto para as pessoas.

81

5.2. SUGESTES PARA TRABALHOS FUTUROS

medida que o projeto foi sendo desenvolvido, surgiram vrias idias para agregar ao projeto e foram identificadas tecnologias para faz-lo com o mesmo objetivo, mas utilizando alguns componentes diferentes.

possvel aproveitar boa parte da estrutura do projeto e acrescentar outros dispositivos a serem controlados, como por exemplo: temperatura do ambiente, abertura/fechamento de portas e janelas, envio de mensagens atravs de e-mail ou SMS (Short Message Service) para alertar algo, alarme anti-furto, etc.

Uma forma de executar este projeto de forma diferente seria utilizar um shield com suporte tecnologia Ethernet para configurar um Webserver embarcado no arduno para eliminar a necessidade de o sistema ficar ligado a um computador de forma contnua, ou utilizar shields de comunicao sem fio para implementar a conexo entre os dispositivos de iluminao e o Arduno, eliminando, obviamente, a necessidade de reformas fsicas na estrutura do ambiente para receber as vrias malhas de fios necessrias para implementao do projeto.

82

REFERNCIAS BIBLIOGRFICAS
[01] ACHOUR, Mehdi et al.PHP Manual. Disponvel em: <http://www.php.net/manual/en/ index.php>. Acesso em: 10 abr. 2010. [02] AFRAC. Automao comercial: R$ 1,4 bi no Brasil. Disponvel em: <http://www.baguete. com.br/noticias/hardware/01/04/2010/automacao-comercial-r-14-bi-no-brasil>. Acesso em: 16 nov. 2010.

[03] APACHE. Disponvel em: <http://www.apache.org/>. Acesso em: 25 set. 2010. [04] ARDUINO. Arduino Duemilanove. Disponvel em: <http://www.arduino.cc/en/Main/Arduino BoardDuemilanove>. Acesso em: 11 set. 2010. [05] ARDUINO. Language Reference.

Disponvel

em:

<http://arduino.cc/en/Reference/

HomePage>. Acesso em: 06 set. 2010. [06] ATMEL DATASHEET. 8-bit AVR Microcontroller with 4/8/16/32K Bytes In-System Programmable Flash. Disponvel em: <http://www.atmel.com/dyn/resources/prod_documents/ doc8271.pdf>. Acesso em: 06 jul. 2010. [07] AURESIDE. Projeto de Interiores e Automao. Disponvel em: <http://www.aureside.org. br/artigos/default.asp?file=01.asp&id=72>. Acesso em: 18 nov 2010.

[08] BOLZANI, Caio Augustus Morais. Residncias Inteligentes. 1. ed. So Paulo, Brasil: Editora Livraria da Fsica, 2004.

[09] BRAGA, Newton C. Curso Bsico de Eletrnica. 5. ed. So Paulo, Brasil: Nova Saber, Julho, 2009. 208p

83

[10] CAMARGO, Roberto Abdeunur. Luz e Cena: Processo de Comunicao Co-Evolutivos, So Paulo. Tese de Doutorado. Programa de Comunicao e Semitica: PUC-SP, 2006

[11] DE MORAES, Ccero Couto. CASTRUCCI, Plnio de Lauro. Engenharia de Automao Industrial. 2. ed. So Paulo, Brasil: Editora LTC, 2001. 295p

[12] FONSECA, rika Guimares Pereira da Fonseca. BEPPU, Mathyan Motta. Apostila Arduino, Rio de Janeiro: Universidade Federal Fluminense, Outubro, 2010. [13] HALL, Mark. Computer World: MySQL Breaks Into the Data Center. Disponvel em: <http://www.computerworld.com/databasetopics/data/software/story/0,10801,85900,00.html>. Acesso em: 11 set. 2010.

[14] MANCINI, Ron. Op Amps for Everyone: Design Reference/Advanced Analog Products (SLOD006B). Estados Unidos da Amrica: Texas Instruments, August, 2002. [15] MOTOROLA. Motorola MC33269 Datasheet. [16] NETCRAFT August 2010 Web Server Survey. Disponvel em: <http://news.netcraft.com/ archives/2010/08/11/august-2010-web-server-survey-4.html>. Acesso em: 19 set. 2010.

[17] NUNES, Paulo; Artigo: Conceito de Fluxograma. Disponvel em: <http://www.knoow.net/ cienceconempr/ gestao fluxograma.htm>. Acesso em: 15 ago. 2010. [18] OLIVEIRO, Carlos Antonio Jos. Faa um site PHP4 com Base de Dados MySQL Orientado por Projeto, So Paulo: Editora rica, 2001

[19] OXER, Jonathan. BLEMINGS, Hugh. Practical Arduino: Cool Projects for Open Source Hardware (Technology in Action). Estados Unidos da Amrica: Apress, 2009. [20] PPA. Manual do Sensor de Presena.

84

[21] REAS, Casey. FRY, Ben. Getting Started with Processing. Estados Unidos da Amrica: OReilly Media, Junho, 2010. 208p.

[22] SANTOS, Nuno Pessanha. Apostila Introduo ao Arduno, Lisboa, Portugal: Escola Naval: Departamento de Engenheiros Navais Ramo de Armas e Elctronica. Disponvel em: <http://www.isegi.unl.pt/docentes/vlobo/escola_naval/MFC/Slides%20 Arduino.pdf>. Acesso em: 15 out. 2010.

[23] STOUT, David. Handbook of Operational Amplifier Circuit Design, Estados Unidos da Amrica: Editora McGraw-Hill Inc., Junho, 1976 [24] TEXAS INSTRUMENTS. CI 2003A Datasheet. Disponvel em: <http://www.datasheetcatalog .org/datasheet/texasinstruments/uln2003a.pdf>. Acesso em: 14 out. 2010.

[25] XAMPP. Disponvel em: <http://www.apachefriends.org/en/xampp.html>. Acesso em: 17 set. 2010.

85

APNDICE A PROGRAMA INSERIDO NO ARDUNO


#define ledPin 13 // Led de Sinalizao do Status do LDR

#define lePin1 1 // Porta de Leitura do LDR 1 #define lePin2 2 // Porta de Leitura do LDR 2 #define lePin3 3 // Porta de Leitura do LDR 2 #define lePin4 4 // Porta de Leitura do LDR 2

#define escrevePin1 8 //Aciona o Rele 1 #define escrevePin2 9 //Aciona o Rele 2 #define escrevePin3 10 //Aciona o Rele 3 #define escrevePin4 11 //Aciona o Rele 4

#define sensorPin1 4 //Sensor Amb 1 #define sensorPin2 5 //Sensor Amb 2 #define sensorPin3 6 //Sensor Amb 3 #define sensorPin4 7 //Sensor Amb 4

// Declaracao da Variavel de Leitura int LeLDR1 = 0; // Leitura do LDR 1 int LeLDR2 = 0; // Leitura do LDR 2 int LeLDR3 = 0; // Leitura do LDR 3 int LeLDR4 = 0; // Leitura do LDR 4

boolean ModoEco = false; // Controle do Modo/Economico int PirMov = 0; // PIR

86

int LuxEscuro = 35;

int LeSerial = 0; // Leitura da Serial

void setup() // Configuraes { Serial.begin(9600); // Starta a comunicao com a Serial (sada de informaes) pinMode(sensorPin1,INPUT); //setando sinal como entrada pino do sensor movimento digitalWrite(sensorPin1,HIGH); //setando *pull-up evitando ocilao sinal }

void loop() // Inicio Real do Programa { if (Serial.available() > 0) { LeSerial = Serial.read(); switch (LeSerial) { case 36: // $ // Efetua a verificacao para colocar em modo Economico if (ModoEco) { ModoEco = false; Serial.println('0'); // retorna o ack } else { ModoEco = true; Serial.println('1'); // retorna o ack }

87

break;

///////////////////////

case 49: // 1 //Efetuo somente a leitura do LDR 1 LeLDR1 = analogRead(lePin1); // Efetua a leitura da Porta do LDR e salva na variavel PirMov = digitalRead(sensorPin1); // Verifico se existe movimento no amb 1 if (ModoEco) { if (PirMov==HIGH) { // Existe Alguem no Ambiente } } Serial.println(LeLDR1); // Exibe o valor da variavel break; case 50: // 2 //Efetuo a Leitura do LDR e caso escuro liga rele e caso claro desliga rele LeLDR1 = analogRead(lePin1); // Efetua a leitura da Porta do LDR e salva na variavel Serial.println(LeLDR1); // Exibe o valor da variavel if (LeLDR1 < LuxEscuro) // O valor 35 foi considerado um ambiente escuro { if (ModoEco) { PirMov = digitalRead(sensorPin1); // Verifico se existe movimento no amb 1 if (PirMov==HIGH) { // Existe Alguem no Ambiente

88

digitalWrite(ledPin, HIGH); // Liga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para ligar a luz se necessrio digitalWrite(escrevePin1,HIGH); // Liga o Rele } } } else { digitalWrite(ledPin, LOW); // desliga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para desligar a luz se necessrio digitalWrite(escrevePin1,LOW); // Desliga o Rele } delay(1000); // Pausa delay(milisegundos) break; case 51: // 3 // Somente LIGA o rele independente do LDR ModoEco = digitalRead(sensorPin1); // Verifico se existe movimento no amb 1 if (ModoEco) { PirMov = digitalRead(sensorPin1); // Verifico se existe movimento no amb 1 if (PirMov==HIGH) { digitalWrite(escrevePin1,HIGH); // Liga o Rele digitalWrite(ledPin, HIGH); } Serial.println('!'); } break; case 52: // 4 // Somente DESLIGA o rele independente do LDR

89

digitalWrite(escrevePin1,LOW); // Desliga o Rele digitalWrite(ledPin, LOW); Serial.println('!'); // retorna o ack break;

//////////////////

case 53: // 5 //Efetuo somente a leitura do LDR 2 LeLDR2 = analogRead(lePin2); // Efetua a leitura da Porta do LDR e salva na variavel if (ModoEco) { if (PirMov==HIGH) { // Existe Alguem no Ambiente } } Serial.println(LeLDR2); // Exibe o valor da variavel break; case 54: // 6 //Efetuo a Leitura do LDR 2 e caso escuro liga rele e caso claro desliga rele LeLDR2 = analogRead(lePin2); // Efetua a leitura da Porta do LDR e salva na variavel Serial.println(LeLDR2); // Exibe o valor da variavel if (LeLDR2 < LuxEscuro) // O valor 35 foi considerado um ambiente escuro { if (ModoEco) { PirMov = digitalRead(sensorPin2); // Verifico se existe movimento no amb 1 if (PirMov==HIGH)

90

{ // Existe Alguem no Ambiente digitalWrite(ledPin, HIGH); // Liga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para ligar a luz se necessrio digitalWrite(escrevePin2,HIGH); // Liga o Rele } } } else { digitalWrite(ledPin, LOW); // desliga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para desligar a luz se necessrio digitalWrite(escrevePin2,LOW); // Desliga o Rele } delay(1000); // Pausa delay(milisegundos) break; case 55: // 7 // Somente LIGA o rele 2 independente do LDR if (ModoEco) { if (PirMov==HIGH) { digitalWrite(escrevePin2,HIGH); // Liga o Rele 2 digitalWrite(ledPin, HIGH); } } Serial.println('!'); break; case 56: // 8 // Somente DESLIGA o rele 2 independente do LDR

91

digitalWrite(escrevePin2,LOW); // Desliga o Rele digitalWrite(ledPin, LOW); Serial.println('!'); // retorna o ack break; ////////////

case 65: // A //Efetuo somente a leitura do LDR 2 LeLDR3 = analogRead(lePin3); // Efetua a leitura da Porta do LDR e salva na variavel if (ModoEco) { if (PirMov==HIGH) { // Existe Alguem no Ambiente } } Serial.println(LeLDR3); // Exibe o valor da variavel break; case 66: // B //Efetuo a Leitura do LDR 2 e caso escuro liga rele e caso claro desliga rele LeLDR3 = analogRead(lePin3); // Efetua a leitura da Porta do LDR e salva na variavel Serial.println(LeLDR3); // Exibe o valor da variavel if (LeLDR3 < LuxEscuro) // O valor 35 foi considerado um ambiente escuro { if (ModoEco) { PirMov = digitalRead(sensorPin3); // Verifico se existe movimento no amb 1 if (PirMov==HIGH) {

92

// Existe Alguem no Ambiente digitalWrite(ledPin, HIGH); // Liga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para ligar a luz se necessrio digitalWrite(escrevePin3,HIGH); // Liga o Rele } } } else { digitalWrite(ledPin, LOW); // desliga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para desligar a luz se necessrio digitalWrite(escrevePin3,LOW); // Desliga o Rele } delay(1000); // Pausa delay(milisegundos) break; case 67: // C // Somente LIGA o rele 2 independente do LDR if (ModoEco) { if (PirMov==HIGH) { digitalWrite(escrevePin3,HIGH); // Liga o Rele 2 digitalWrite(ledPin, HIGH); } } Serial.println('!'); break; case 68: // D // Somente DESLIGA o rele 2 independente do LDR digitalWrite(escrevePin3,LOW); // Desliga o Rele

93

digitalWrite(ledPin, LOW); Serial.println('!'); // retorna o ack break;

///////////////////

case 69: // E //Efetuo somente a leitura do LDR 2 LeLDR4 = analogRead(lePin4); // Efetua a leitura da Porta do LDR e salva na variavel if (ModoEco) { if (PirMov==HIGH) { // Existe Alguem no Ambiente } } Serial.println(LeLDR4); // Exibe o valor da variavel break; case 70: // F //Efetuo a Leitura do LDR 2 e caso escuro liga rele e caso claro desliga rele LeLDR4 = analogRead(lePin4); // Efetua a leitura da Porta do LDR e salva na variavel Serial.println(LeLDR3); // Exibe o valor da variavel if (LeLDR4 < LuxEscuro) // O valor 35 foi considerado um ambiente escuro { if (ModoEco) { PirMov = digitalRead(sensorPin4); // Verifico se existe movimento no amb 1 if (PirMov==HIGH) {

94

// Existe Alguem no Ambiente digitalWrite(ledPin, HIGH); // Liga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para ligar a luz se necessrio digitalWrite(escrevePin4,HIGH); // Liga o Rele } } } else { digitalWrite(ledPin, LOW); // desliga o Led 13 para dizer que o ambiente est escuro, onde ser enviado o sinal para desligar a luz se necessrio digitalWrite(escrevePin4,LOW); // Desliga o Rele } delay(1000); // Pausa delay(milisegundos) break; case 71: // G // Somente LIGA o rele 2 independente do LDR if (ModoEco) { if (PirMov==HIGH) { digitalWrite(escrevePin4,HIGH); // Liga o Rele 2 digitalWrite(ledPin, HIGH); } } Serial.println('!'); break; case 72: // H // Somente DESLIGA o rele 2 independente do LDR digitalWrite(escrevePin4,LOW); // Desliga o Rele

95

digitalWrite(ledPin, LOW); Serial.println('!'); // retorna o ack break;

default: // Se nao acontecer nenhuma das opes acima cai no default // default eh opcional break; } } }

96

APNDICE B CDIGO DA INTERFACE WEB


Cdigo do script ardu_script.php
<?php echo "\n\n INICIO DO SCRIPT \n\n"; // Para manter a porta aberta // Conecta na porta $port = fopen('com4', 'w+'); sleep(3); echo "\n\n Porta Iniciada \n\n";

$file_entrada = "st_controle.txt"; $file_saida = "ardu_out.txt";

$var_controle = "";

while ($var_controle != 'CLOSE') { // pega as informaes do arquivo 'st_controle.txt' if (file_exists($file_entrada)) { $fd = fopen ($file_entrada, "r");

if (filesize ($file_entrada) != 0) { $status = fread ($fd, filesize ($file_entrada)); fclose ($fd); $fp = fopen($file_entrada,"w"); // logo depois de ler zera o arquivo fwrite($fp,"");

97

fclose($fp); } } else { echo "\n\n !!! ARQUIVO NAO EXISTE !!! \n\n"; $var_controle = 'CLOSE'; $status = ""; }

switch ($status) { case '1' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'1\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz."!!! \n"; break; case '2' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'2\n'); sleep(1); // Efetua a leitura da porta

98

$codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz."!!! \n"; break; case '3' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'3\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case '4' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'4\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp);

99

echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break;

///////

case '5' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'5\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case '6' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'6\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break;

100

case '7' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'7\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case '8' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'8\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break;

///////

case 'A' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade

101

fwrite($port,'A\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'B' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'B\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'C' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'C\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema

102

$fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'D' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'D\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break;

///////

case 'E' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'E\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz);

103

fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'F' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'F\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'G' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'G\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break; case 'H' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade

104

fwrite($port,'H\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! \n"; break;

///////

case '$' : // Escrevo o cdigo do arquivo para efetuar a leitura da luminosidade fwrite($port,'$\n'); sleep(1); // Efetua a leitura da porta $codLuz = fgets($port); // Agora vou escrever no arquivo para o sistema $fp = fopen($file_saida,"w"); // abre o arquivo de resposta fwrite($fp,$codLuz); fclose($fp); echo "\n !!! ARDUINO OK - ".$codLuz." !!! $$$\n"; break;

///////

case '0' :

105

$var_controle = 'CLOSE'; //Fecho a porta echo "\n\n FECHANDO A PORTA \n\n"; fclose($port); break; default : break; } sleep(1); } echo "\n\n FIM DO SCRIPT \n\n"; ?>

Cdigo do script ardu_hora.php

<?php

echo "\n\n INICIALIZANDO SCRIPT DE HORA \n\n";

require_once ( 'core.php' );

// Tratamento com o Banco de Dados $mysql_con = mysql_connect('localhost', 'root', ''); if (!$mysql_con) { die('No foi possivel Conectar : ' . mysql_error()); } mysql_select_db("tcc_gustavo",$mysql_con) or die(mysql_error());

echo "\n\n CONEXAO COM BANCO EFETUADA \n\n";

106

while (1) {

$query = "SELECT * FROM comodos ORDER BY nome_comodo"; $resultado = mysql_query($query,$mysql_con); while ($linha = mysql_fetch_array($resultado)) { if ($linha['is_timer'] == 1) { if ((substr($linha['hora_ligar'],0,2) == date("H")) && (substr($linha['hora_ligar'],3,2) == date("i"))) { info_porta(chr($linha['id_comodos'] + 2)); echo "Enviou o Ligar \n"; } elseif ((substr($linha['hora_desligar'],0,2) == date("H")) && (substr($linha['hora_desligar'],3,2) == date("i"))) { info_porta(chr($linha['id_comodos'] + 3)); echo "Enviou o Ligar \n"; } } } sleep(30); } ?>

107

Cdigo do script core.php


<?php

function info_porta($codigo = '1') { $file_saida = "st_controle.txt"; $file_resposta = "ardu_out.txt"; $fp = fopen($file_saida,"w"); // logo depois de ler zera o arquivo fwrite($fp,$codigo); fclose($fp);

sleep(4);

if (file_exists($file_resposta)) { $fd = fopen ($file_resposta, "r"); if (filesize ($file_resposta) != 0) { $status = fread ($fd, filesize ($file_resposta)); fclose ($fd); $fp = fopen($file_resposta,"w"); // logo depois de ler zera o arquivo fwrite($fp,""); fclose($fp); } } else { $status = 99; }

108

return $status; }

Cdigo do script my_layout.phtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Interface de Gerenciamento de Automa&ccedil;&atilde;o de Ilumina&ccedil;&atilde;o.</title>

<link href="css/my_layout.css" rel="stylesheet" type="text/css"/> <!--[if lte IE 7]> <link href="css/patches/patch_my_layout.css" rel="stylesheet" type="text/css" /> <![endif]-->

<script language="javascript">

var show_div = true; var txt_div = '';

function show_hide_div(pass) { if (show_div) { show_div = false; txt_div = 'hidden'; }

109

else { show_div = true; txt_div = 'visible'; }

var divs = document.getElementsByTagName('div'); for(i=0;i<divs.length;i++) { //if they are 'see' divs if(divs[i].id.match(pass)) { if (document.getElementById) // DOM3 = IE5, NS6 divs[i].style.visibility=txt_div; //"hidden";// show/hide else if (document.layers) // Netscape 4 document.layers[divs[i]].display = txt_div; //'hidden'; else // IE 4 document.all.hideshow.divs[i].visibility = txt_div; // 'hidden'; } } } </script>

</head> <body> <!-- skip link navigation --> <ul id="skiplinks">

110

<li><a class="skip" href="#nav">Skip to navigation (Press Enter).</a></li> <li><a class="skip" href="#col3">Skip to main content (Press Enter).</a></li> </ul>

<?php

set_time_limit(60);

// Tratamento com o Banco de Dados $mysql_con = mysql_connect('localhost', 'root', 'vertrigo'); if (!$mysql_con) { die('No foi possivel Conectar : ' . mysql_error()); } mysql_select_db("tcc_gustavo",$mysql_con) or die(mysql_error());

require_once ( 'core.php' );

// Ligar ou desligar a luz de acordo com o Link

switch ($_GET['func']) { case 'acao' : $status = info_porta(chr($_GET['op'])); $_GET['func'] = ''; break; case 'cadastra' : $n_comodo = $_REQUEST["nome_comodo"]; $h_ligar = $_REQUEST["hora_ligar"];

111

$h_desligar = $_REQUEST["hora_desligar"]; if (($h_ligar == "") || ($h_desligar == "")) { $is_timer = 0; } else { $is_timer = 1; }

$query = "SELECT id_comodos FROM comodos"; $resultado = mysql_query($query,$mysql_con); while ($linha = mysql_fetch_array($resultado)) { $ultimo_id = $linha['id_comodos']; }

if ($ultimo_id == '') { $primeiro_id = 49; } else { if ($ultimo_id == 53) { $primeiro_id = 65; } else { $primeiro_id = $ultimo_id + 4;

112

} }

$query = "INSERT INTO comodos VALUES ('".$primeiro_id."','".$n_comodo."','".$h_ligar."','".$h_desligar."','".$is_timer."')";

if(mysql_query($query,$mysql_con)) { echo "<script>alert('Comodo cadastrado com sucesso!!!');</script>"; } else{ echo "<script>alert('Erro no cadastramento do comodo!!!');</script>"; } $_GET['func'] = ''; break; case 'eco' : // Verifico o Status do Modo Economico $status = info_porta('$'); if (trim($status) == '0') { $txt_eco = ""; // Modo Eco Desligado } else { $txt_eco = "class=\"active\""; // Modo Eco Ligado

} $status = ''; $_GET['func'] = '';

break;

113

$query = "SELECT nome_comodo, id_comodos FROM comodos ORDER BY id_comodos"; $resultado = mysql_query($query,$mysql_con); $i = 0; while ($linha = mysql_fetch_array($resultado)) { $arr_comodos[$i] = $linha['nome_comodo']; $arr_comodos_id[$i] = $linha['id_comodos']; $i++; }

//print_r($arr_comodos_id); $qtd_comodos = mysql_num_rows($resultado); // Para obter a quantidade de comodos cadastrados;

for ($i = 0; $i < $qtd_comodos; $i++) { echo "--->".$arr_comodos_id[$i]; // Verificao dos Status $status_porta = info_porta(chr($arr_comodos_id[$i])); if ($status_porta > 150) // Significa que a luz esta ligada { $arr_comodo_color[$i] = "#006400"; $arr_comodo_txt[$i] = "ON"; $arr_comodo_op[$i] = $arr_comodos_id[$i] + 3; // Vai somar mais 3 para enviar a opo de desligar. Ex.: ID[1] + 3 = 4 $arr_comodo_st[$i] = '1'; } else { $arr_comodo_color[$i] = "#8B0000";

114

$arr_comodo_txt[$i] = "OFF"; $arr_comodo_op[$i] = $arr_comodos_id[$i] + 2; // Vai somar mais 2 para enviar a opo de ligar. Ex.: ID[1] + 2 = 3 $arr_comodo_st[$i] = '0'; } sleep(3); }

?>

<div class="page_margins"> <div class="page"> <div id="header" role="banner"> <h1>Interface de Gerenciamento de Automa&ccedil;&atilde;o de Ilumina&ccedil;&atilde;o.</h1> <span>Projeto de Automa&ccedil;&atilde;o Resid&ecirc;ncial</span> </div> <!-- begin: main navigation #nav --> <div id="nav" role="navigation"> <div class="hlist"> <ul> <li><strong>P&aacute;gina Principal</strong></li> <li><a href="#" onclick="show_hide_div('col3');">Cadastro</a></li> <li><a href="#">Sobre</a></li> <li <?php echo $txt_eco."> <a href=\"".$PHP_SELF."?func=eco\">Modo Econ&ocirc;mico</a>"; ?> </li> </ul> </div> </div>

115

<!-- end: main navigation --> <!-- begin: main content area #main --> <div id="main"> <!-- begin: #col1 - first float column --> <div id="col1" role="complementary"> <div id="col1_content" class="clearfix"> <h2>Status</h2> <table width="300px" border="1px"> <?php for($i=0; $i < $qtd_comodos; $i++) { echo " <tr>

<td>".$arr_comodos[$i]."</td> <td bgcolor=".$arr_comodo_color[$i]."><a href=\"".$PHP_SELF."?func=acao&op=".$arr_comodo_op[$i]."\" >".$arr_comodo_txt[$i]."</a></td> </tr> "; } ?> </table> </div> </div> <!-- end: #col1 --> <!-- begin: #col2 second float column --> <div id="col2" role="complementary"> <div id="col2_content" class="clearfix"> <h2>Sobre</h2>

116

<p>Parte integrante do Projeto Final para obten&ccedil;&atilde;o de grau no curso de Engenharia de Computa&ccedil;&atilde;o do Centro Universit&aacute;rio de Bras&iacute;lia UniCEUB.</p> <p>Professor orientador: Jos&eacute; Julim&aacute; Bezerra J&uacute;nior</p> <p>Desenvolvido por <b>Gustavo Caetano de Almeida</b>.</p> </div> </div> <!-- end: #col2 --> <!-- begin: #col3 static column --> <div id="col3" role="main"> <div id="col3_content" class="clearfix" style="visibility: hidden;"> <h2>Cadastro</h2> <form id="form_cadastro" method="post" action="my_layout.phtml?func=cadastra"> <div id="campo_comodo" style="width:300px; height:60px;" onClick="style.backgroundColor='#FFFFE0';"> <h3>Nome do Comodo</h3><input id="nome_comodo" name="nome_comodo" style="background-color: #ADD8E6; border: 1px solid black; " type="text" maxlength="255" value=""/> </div> <div id="campo_hora_on" style="width:300px; height:60px;" onClick="style.backgroundColor='#FFFFE0';"> <h3>Hora Programada para Ligar</h3><input id="hora_ligar" name="hora_ligar" style="background-color: #ADD8E6; border: 1px solid black; " type="text" maxlength="5" value="08:00"/> </div> <div id="campo_hora_off" style="width:300px; height:60px;" onClick="style.backgroundColor='#FFFFE0';"> <h3>Hora Programada para Desligar</h3><input id="hora_desligar" name="hora_desligar" style="background-color: #ADD8E6; border: 1px solid black; " type="text" maxlength="5" value="20:00"/> </div> <input id="saveForm" style="background-color: #ADD8E6; font-weight: bold; font-size: 12px;" type="submit" name="submit" value="Salvar" />

117

</form> </div> <div id="ie_clearing">&nbsp;</div> <!-- End: IE Column Clearing --> </div> <!-- end: #col3 --> </div> <!-- end: #main --> <!-- begin: #footer --> <div id="footer" role="contentinfo"> Desenvolvido por <b>Gustavo Caetano de Almeida</b>.<br /> </div> <!-- end: #footer --> </div> </div> <!-- full skip link functionality in webkit browsers --> <script src="./yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> </body> </html>

Cdigo do script SQL


-- Servidor: localhost -- Verso do Servidor MySQL: 5.0.51 -- Verso do PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--- Banco de Dados: `tcc_gustavo`

118

-CREATE DATABASE `tcc_gustavo` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `tcc_gustavo`;

-- --------------------------------------------------------

--- Estrutura da tabela `comodos` --

CREATE TABLE IF NOT EXISTS `comodos` ( `id_comodos` int(11) NOT NULL, `nome_comodo` varchar(50) default NULL, `hora_ligar` time default NULL, `hora_desligar` time default NULL, `is_timer` tinyint(1) default NULL, PRIMARY KEY (`id_comodos`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

119

ANEXO 01 REFERNCIA DA LINGUAGEM PROCESSING


ELEMENTOS DE DESCRIO ESTRUTURA setup() A funo setup() chamada quando um programa comea a rodar. Use esta funo para inicializar as sua variveis, os modos dos pinos, declarar o uso de bibliotecas, etc. Esta funo ser executada apenas uma vez aps a placa Arduino ser ligada ou ressetada. Aps criar uma funo setup() que declara os valores iniciais, a funo loop() loop() faz exatamente o que seu nome sugere, entra em looping (executa sempre o mesmo bloco de cdigo), permitindo ao seu programa fazer mudanas e responder. Use esta funo para controlar ativamente a placa Arduino. ESTRUTURAS DESCRIO DE CONTROLE if (condicional) usado juntamente com um operador de comparao, verifica quando uma condio satisfeita. Operadores de x == y (x igual a y) x < y (x menor que y) comparao x > y (x maior que y) if / else switch / case Permite um controle maior sobre o fluxo de cdigo do que a sentena if bsica, tornando possvel que mltiplos testes sejam agrupados. Do mesmo modo que as sentenas if, as switch / case controlam o fluxo dos programas. Switch/case permite ao programador construir uma lista de "casos" dentro de um bloco delimitado por chaves. O programa checa cada caso com a vaivel de teste e executa o cdigo se encontrar um valor idntico. Switch / case um pouco mais flexvel que uma estrutura if/else de modo que o programador pode determinar se a estrutura switch deve continuar checando por valores idnticos na lista dos "casos" aps encontrar um valor idntico. Se a sentena break no encontrada aps a execuo do bloco de cdigo selecionado por um dos "casos", ento o programa vai continuar a checar por mais valores idnticos entre os "casos" restantes. Se uma sentena break encontrada o cdigo sai da estrutura do mesmo modo que em uma construo if/else if. break usado para sair de um bloco do, for, ou while, se sobrepondo condio normal de verificao. Tambm usado para sair de uma sentena switch. #define um componente muito til da linguagem C que permite ao programador dar um nome a uma constante antes que o programa seja compilado. Constantes definidas no Arduino no ocupam espao em memria no chip. O compilador substitui referncias a estas constantes pelo valor definido no momento da compilao. DESCRIO

break

#define

CONSTANTES

120

HIGH

O significado de HIGH (em referncia a um pino) pode variar um pouco dependendo se este pino uma entrada (INPUT) ou sada (OUTPUT). Quando um pino configurado como INPUT com pinMode, e lido com um digitalRead, o microcontrolador considera como HIGH se a voltagem for de 3 volts ou mais. Um pino tambm pode ser configurado como um INPUT com o pinMode, e posteriormente receber um HIGH com um digitalWrite, isto vai "levantar" o resistor interno de 20K que vai manter a leitura do pino como HIGH a no ser que ela seja alterada para LOW por um circuito externo. Quando um pino configurado como OUTPUT com o pinMode, e marcado como HIGH com o digitalWrite, ele est a 5 volts. Neste estado ele pode enviar corrente como por exemplo acender um LED que est conectado com um resistor em srie ao terra, ou a outro pino configurado como OUTPUT e marcado como LOW. O significado de LOW tambm pode variar dependendo do pino ser marcado como INPUT ou OUTPUT. Quando um pino configurado como um INPUT com o pinMode, e lido com o digitalRead, o microcontrolador considera como LOW se a voltagem for de 2 volts ou menos. Quando um pino configurado como OUTPUT com pinMode, e marcado como LOW com o digitalWrite, ele est a 0 volts. Neste estado ele pode "drenar" corrente como por exemplo para acender um LED que est conectado com um resistor em srie ao +5 volts, ou a outro pino configurado como OUTPUT e marcado como HIGH. Mudar o comportamento eltrico do pino para INPUT ou OUTPUT (respectivamente alta e baixa impedncia) DESCRIO Escreve um valor HIGH ou um LOW em um pino digital. Se o pino foi configurado como uma sada (output) com o pinMode(), sua voltagem ser determinada ao valor correspondente: 5V (ou 3.3V nas placas de 3.3V) para HIGH, 0V (terra) para LOW. Se o pino est configurado como uma entrada (input) escrever um HIGH levantar o resistor interno de 20K (tutorial de pinos digitais). Escrever um LOW rebaixar o resistor. L o valor de um pino analgico especificado. A placa Arduino contm um conversor analgico-digital de 10 bits com 6 canais (8 canais no Mini e no Nano). Com isto ele pode mapear voltagens de entrada entre 0 e 5 volts para valores inteiros entre 0 e 1023. Isto permite uma resoluo entre leituras de 5 volts / 1024 unidades ou 0,0049 volts (4.9 mV) por unidade. So necessrios aproximadamente 100 s (0.0001 s) para ler uma entrada analgica, portanto a velocidade mxima de leitura de

LOW

pinMode() FUNES digitalWrite()

analogRead()

121

aproximadamente 10.000 vezes por segundo. ESTRUTURA DE TEMPO delay(ms) DESCRIO Suspende a execuo do programa pelo tempo (em milisegundos) especificado como parmetro.

COMUNICAO DESCRIO SERIAL Serial.begin(int Ajusta o taxa de transferncia em bits por segundo (baud) para transmisso de dados pelo padro serial. Para comunicao com um velocidade) computador use uma destas taxas: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 57600, 115200. Voc pode, entretanto, especificar outras velocidades por exemplo para comunicao atravs dos pinos 0 e 1 com um componente que requer uma taxa especfica. int Obtm o nmero de bytes (caracteres) disponveis para leitura atravs da porta serial. Serial.available() int Serial.read() Serial.println(data) L dados que estejam entrando pela porta serial. Envia dados para a porta serial seguidos por um carriage return (ASCII 13, or '\r') e por um caractere de linha nova (ASCII 10, or '\n').

122

ANEXO 02 REFERNCIA DA LINGUAGEM PHP E SQL


PHP ELEMENTOS DE DESCRIO FUNO fopen Abre um arquivo ou uma URL fread fclose fwrite fgets file_exists filesize sleep Leitura binary-safe de arquivo Fecha um ponteiro de arquivo aberto Gravao em arquivos binary-safe Le uma linha de um ponteiro de arquivo Checa se um arquivo ou diretrio existe L o tamanho do arquivo Atrasa a execuo

SQL ELEMENTOS DE DESCRIO FUNO muda um parmetro de tempo de execuo SET CREATE Criar (banco de dados/tabela)

123

ANEXO 03 ESQUEMTICO DO ARDUNO DUEMILANOVE