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

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

SIGNIFICADO

01

Conector USB

02

Transistor

03

Regulador de tenso

04

Conector de energia eltrica

05

Pinos de fora

06

Pinos analgicos

07

Microcontrolador Atmel ATmega328

08

Cristal oscilador de 16 MHz

28

09

Boto de Reset

10

ICSP

11

Pinos digitais

12

LED (Light Emitting Diode) do pino 13

13

LEDs do dispositivo serial

14

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;

Salvar;

Parar processo de compilar;

Upload;

Novo;

Leitura da interface serial

Abrir;
2.5.4. - 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

DESCRIO

12 h ~ 14 h

Luminosidade
alta

17 h ~ 18 h
19 h ~ 20 h

Luminosidade
moderada
Luminosidade
baixa

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

LUXMETRO (lx)

LDR (mA)

175 ~ 375

130 ~ 182

105 ~ 135

70 ~ 84

25 ~ 35

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

break

#define

CONSTANTES

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

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.

LOW

pinMode()
FUNES
digitalWrite()

analogRead()

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

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()

L dados que estejam entrando pela porta serial.

Serial.println(data)

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

Leitura binary-safe de arquivo

fclose

Fecha um ponteiro de arquivo aberto

fwrite

Gravao em arquivos binary-safe

fgets

Le uma linha de um ponteiro de arquivo

file_exists

Checa se um arquivo ou diretrio existe

filesize

L o tamanho do arquivo

sleep

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

Você também pode gostar