Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MICHEL R. ISERHARDT
Bag, RS
2010
MICHEL R. ISERHARDT
Bag, RS
2010
AGRADECIMENTOS
RESUMO
ABSTRACT
NDICE DE FIGURAS
LISTA DE ABREVIATURAS
C Graus celsius
- Ohm
A - Ampre
AD Active Directory
AREF Analog reference pin for the A/D Converter
ASC American Standard Code
AVCC Supply voltage pin for the A/D Converter
BR - Brasil
COM - Communications
CPD Centro de Processamento de Dados
DHCP - Dynamic Host Configuration Protocol
E - Enable
EEPROM - Electrically-Erasable Programmable Read-Only Memory
EXT Alimentao externa
FTDI - Future Technology Devices International
Gnd Ground
I Corrente eltrica
IP Internet Protocol
K - Quilo-ohm
Kbyte Kilobyte
LAN Local Area Network
LCD Liquid Crystal Display
LED - Light Emitting Diode
m metros
mA - miliampre
MIT Massachusetts Institute of Technology
NPN Negativo / positivo / negativo
PB Port B
PC Port C
PD Port D
PNP Positivo / negativo / positivo
PWM Pulse-Width Modulation
PWR Power
R Resistncia eltrica (ohm )
R/W Read / Write
10
SUMRIO
INTRODUO .......................................................................................................... 12
1 DATACENTER ....................................................................................................... 16
1.1 TEMPERATURA IDEAL DE UM DATACENTER ................................................ 17
1.2 SOLUES PARA GERENCIAMENTO DE TEMPERATURA DE
DATACENTER .......................................................................................................... 17
1.3 ESTRUTURA DO DATACENTER DA REITORIA DA UNIPAMPA ..................... 21
2 ARDUINO............................................................................................................... 23
2.1 Estrutura do Arduino ........................................................................................... 24
2.2 O LANAMENTO MAIS RECENTE DA FAMILIA ARDUINO .............................. 30
2.3 CLONES DO ARDUINO ...................................................................................... 31
2.3.1 Freeduino BR ........................................................................................... 32
3 LINGUAGEM PROCESSING................................................................................. 33
3.1 SETUP ................................................................................................................ 33
3.2 LOOP .................................................................................................................. 33
3.3 DRAW ................................................................................................................. 34
3.4 DECLARAO DE VARIVEIS .......................................................................... 34
3.5 ALGUNS COMANDOS UTILIZADOS FREQUENTEMENTE .............................. 35
4 COMPONENTES NECESSRIOS PARA O DESENVOLVIMENTO DO
GERENCIADOR DE TEMPERATURA DIGITAL UTILIZANDO ARDUINO.............. 38
4.1 PROTOBOARD ................................................................................................... 39
4.2 SHIELD ............................................................................................................... 40
4.3 O SENSOR DE TEMPERATURA LM35.............................................................. 42
4.4 O VISOR LCD HITACHI HD44780 ...................................................................... 44
4.5 RESISTORES E POTENCIOMETROS ............................................................... 45
4.6 ALARME SONORO ............................................................................................. 47
4.7 LED ..................................................................................................................... 48
5 DESENVOLVIMENTO DO GERENCIADOR DE TEMPERATURA DIGITAL ........ 50
5.1 MEDIO DA TEMPERATURA .......................................................................... 50
5.2 INSTALAO DO VISOR LCD ........................................................................... 51
5.3 DESENVOLVIMENTO DO ALARME .................................................................. 52
11
6 PRODUTO FINAL E IMPLANTAO ................................................................... 54
6.1 PRODUTO FINAL ............................................................................................... 54
6.2 IMPLANTAO ................................................................................................... 56
CONCLUSO ........................................................................................................... 59
REFERNCIAS BIBLIOGRFICAS ......................................................................... 62
ANEXOS ................................................................................................................... 64
ANEXO A CDIGOS FONTE COMENTADOS ...................................................... 65
ANEXO B CIRCUITO ELETRNICO ..................................................................... 75
ANEXO C TABELA DE CUSTOS ........................................................................... 76
12
INTRODUO
13
OBJETIVO GERAL
OBJETIVOS ESPECIFICOS
JUSTIFICATIVA
porte.
Isso
faz
do
desenvolvimento
de
um
equipamento
para
14
METODOLOGIA
eletrnicos
definir
uma
sequncia
para
do
sistema
embarcado
para
gerenciamento
de
CARACTERIZAO DA PESQUISA
ESTRUTURA DO TRABALHO
15
melhor desempenho e utilizao dos equipamentos do datacenter localizado no
prdio da reitoria da Unipampa. Tambm sero citadas algumas solues
encontradas no mercado para executar o processo de gerenciamento de
temperatura de datacenters;
O captulo Arduino apresentar a placa Arduino, sua finalidade, reas de
atuao e seus principais componentes. Tambm sero citados alguns projetos
similares que surgiram partir do Arduino, em especial o Freeduino BR, que
fabricado no Brasil;
No captulo Linguagem Processing sero apresentados alguns conceitos
sobre esta linguagem de programao que , atualmente, a mais utilizada em
projetos envolvendo o Arduino;
No captulo Componentes Necessrios para o Desenvolvimento do
Gerenciador de Temperatura Digital Utilizando Arduino sero apresentados alguns
instrumentos da rea de eletrnica que faro parte do circuito que dar incio ao
processo de desenvolvimento do Gerenciador de Temperatura Digita;
O captulo Desenvolvimento do Gerenciador de Temperatura Digital
mostrar como se dar o desenvolvimento deste equipamento que dever ser a
soluo para um problema comum na maior parte das organizaes de pequeno
porte;
O captulo Produto Final e Implantao apresentar os ajustes necessrios e
os primeiros testes executados com o Gerenciador de Temperatura Digital.
A Concluso abordar aspectos positivos e negativos de cada uma das
solues e se houve sucesso na escolha pelo desenvolvimento do Gerenciador de
Temperatura Digital.
16
1 DATACENTER
Segundo o site da Wikipedia (2010), um datacenter, ou Centro de
Processamento de Dados (CPD), o local onde so concentrados os equipamentos
de processamento e armazenamento de dados de uma empresa ou organizao.
O tamanho do datacenter pode variar de acordo com a estrutura de tecnologia
de informao que a empresa dispe. Empresas que trabalham com uma grande
quantidade de informaes tendem a ter datacenters de grande porte, como o
mostrado na figura abaixo.
17
18
para executar qualquer funo dentro de uma organizao s vivel se satisfeitas
as seguintes condies: o mercado atual no dispe de um produto que atenda as
necessidades e, se dispe, tem preo superior ao que dever ser aplicado no
desenvolvimento do Gerenciador de Temperatura.
Alguns modelos de rack para datacenter j possuem um termmetro de
temperatura instalado, que no o caso do que foi adquirido pela reitoria da
Unipampa. Uma soluo para este problema poderia ser a aquisio e posterior
instalao de um termmetro digital.
19
Equipamento
Valor ($)
460,67
Sensor AP9335T
69,11
114,91
Custo total:
644,69
20
A tabela acima mostra que o custo total da soluo, nos Estados Unidos, $
644,69. Este valor no inclui os custos de importao e frete. Mais informaes
sobre este produto podem ser encontradas no site http://www.provantage.com.
A importadora SoloStocks vende um produto chamado Datalogger Registrador de Temperatura ITLOG-70. Este produto faz a leitura da temperatura e a
exibe em um visor localizado em sua parte frontal. A ele tambm podem ser
configuradas regras de temperaturas mxima e mnima, de forma que, se ultrapassar
algum dos limites, ascender-se- uma luz vermelha do tipo Light Emitting Diode
(LED). O registrador possui ainda uma memria interna que pode armazenar as
quatro mil ltimas temperaturas. A sua faixa de trabalho vai de -30 a 70 graus celsius
(C).
Uma soluo um pouco mais sofisticada que tambm comercializada pela
SoloStocks o Termmetro IP para datacenter, que no possui visor frontal para
mostrar a temperatura atual, porm utiliza o protocolo Internet Protocol (IP) para
enviar notificaes caso esta esteja fora do seu estado normal. Este produto possui
um pequeno servidor web integrado que mantm um histrico das ltimas 100
medies de temperatura. Quanto conectividade, basta conect-lo rede Local
Area Network (LAN) com IP fixo ou como cliente Dynamic Host Configuration
Protocol (DHCP).
A tabela abaixo mostra o custo de cada uma das solues da importadora
SoloStocks.
Equipamento
Valor (R$)
Datalogger
273,60
Termmetro IP
880,00
21
Mais informaes sobre estes produtos podem ser encontradas no site
http://www.solostocks.com.br.
Analisados os produtos disponveis no mercado, tem-se que uma soluo
interessante o desenvolvimento de um sistema personalizado, fabricado com base
nas especificaes elencadas pelo prprio administrador de redes. Para idealizar tal
soluo, utilizar uma placa controladora como o Arduino torna-se uma opo vivel.
Com um investimento relativamente baixo, aliados a conhecimentos de eletrnica e
programao, possvel desenvolver um projeto satisfatrio. Esses foram os
argumentos que foram levados em conta para escolher, como mais vivel, a opo
de se desenvolver um sistema prprio para gerenciamento de temperatura.
1.3 ESTRUTURA DO DATACENTER DA REITORIA DA UNIPAMPA
A Universidade Federal o Pampa (Unipampa), com sede na cidade de BagRS, caracteriza-se por ser uma universidade multicampi, abrangendo tambm as
cidades de Jaguaro, Dom Pedrito, Santana do Livramento, Caapava do Sul, So
Gabriel, Alegrete, Itaqui, So Borja e Uruguaiana.
na cidade de Bag que fica o prdio da Reitoria, onde est localizado o
datacenter no qual ser feita a implantao do gerenciador de temperatura.
Este prdio conta hoje com cerca de 70 computadores clientes do tipo
desktop e quatro impressoras em rede. Tambm fazem parte da estrutura um
equipamento de Video Conferncia (VC) e trs computadores servidores, so eles:
a) servidor de voz sobre Internet protocol (VoIP), marca Itautec, modelo
InfoWay;
b) servidor Proxy/Firewall, marca Lenovo, modelo ThinkCentre;
c) servidor Active Directory (AD), marca Dell, modelo PowerEdge 2950.
22
A figura abaixo ilustra a relao de equipamentos constantes no datacenter,
com exceo do Equipamento de VC e da Rede Interna, que aparecem na imagem
apenas por questes de melhor entendimento estrutural da rede.
23
2 ARDUINO
O projeto do Arduino comeou em 2005 na cidade de Ivrea, na Itlia. O
objetivo inicial era desenvolver uma ferramenta de baixo custo e fcil manuseio, j
que estas eram duas fortes limitaes que impediam muitos estudantes, escolas e
pesquisadores de iniciar atividades relacionadas robtica em seus laboratrios.
Segundo Rafael Quines (2010), o Arduino pode ser usado para desenvolver
objetos interativos, tomando entradas de vrios switches ou sensores, e controlando
uma variedade de luzes, motores, mecanismos, entre outras sadas. Os projetos do
Arduino podem tanto ser autnomos, como se comunicar com softwares.
Por possuir licena totalmente open-source, no que se refere a hardware e
software, alguns profissionais da rea de eletrnica fazem questo de montar seu
prprio Arduino.
Todos os componentes podem ser adquiridos separadamente, e j
encontram-se diversas comunidades com o objetivo de ajudar os desenvolvedores
nos processos de montagem. Ainda assim, o mtodo mais comum de aquisio,
atualmente, a compra direta atravs dos revendedores autorizados espalhados
pelo mundo.
A poltica open-source trouxe muitas vantagens, pois motivou o surgimento de
outros projetos similares que desenvolvem placas com a mesma arquitetura
encontrada no Arduino.
Segundo Marcelo Leite (2010), open-source um conceito de distribuio de
software, que estabelece como fundamentais, os princpios de desenvolvimento
compartilhado, distribuio na forma de cdigo fonte e licenciamento gratuito.
Qualquer trabalho desenvolvido em open-source pode ser modificado para
atender novas necessidades, desde que o trabalho derivado seja disponibilizado a
todos, tambm de forma gratuita. A integridade e notoriedade dos autores
preservada, sendo registrado o nome de cada um dos colaboradores nas verses
subsequentes.
Em relao ao Arduino, sua arquitetura formada basicamente por um
microcontrolador e vrias entradas e sadas analgicas e digitais. Os modelos mais
atuais possuem uma interface Universal Serial Bus (USB) para conexo com um
computador hospedeiro, de onde so enviadas as linhas de cdigo para o
24
microcontrolador. Nos modelos mais antigos essa conexo era feita pelo padro
Serial/RS-232.
O Arduino pode ser usado para desenvolver objetos interativos, tomando
entradas de vrios switches ou sensores, e controlando uma variedade de luzes,
motores, mecanismos, entre outras sadas. Os projetos do Arduino podem tanto ser
autnomos, como se comunicar com softwares (Rafael Quines 2010).
A linguagem de programao utilizada Processing, que muito semelhante
linguagem de programao C/C++.
A programao toda feita no microcontrolador da placa, normalmente da
marca Atmega. Os mais comuns, atualmente, so os modelos Atmega 168 e 328.
Mais detalhes sobre esses microcontroladores sero vistos no decorrer desta obra.
Na categoria dos equipamentos eletrnicos, o Arduino pode ser muito til para
o desenvolvimento de sistema embarcado. Um sistema embarcado (ou sistema
embutido) um sistema microprocessado no qual o computador completamente
encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferente de
computadores de propsito geral, como o computador pessoal, um sistema
embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos
especficos. J que o sistema dedicado a tarefas especficas, atravs de
engenharia
pode-se
otimizar
projeto
reduzindo
seu
tamanho,
recursos
25
26
tenso de 5V, a placa converter para o seu valor mximo de trabalho em bits
1024. Se utilizar o mesmo raciocnio, tem-se que 0V equivale a 0 bits.
Tambm ficam situados na parte inferior os pinos de sada de energia, que
dividem-se em dois: um de 5V, um de 3,3V ambos para alimentao de
instrumentos que venham a ser conectados ao Arduino. Dois pinos identificados
como Gnd (ground) funcionam como aterramento.
Ainda existe um pino descrito como vin que deve ser utilizado em caso de
necessidade de utilizar uma outra fonte de energia, que no seja por USB ou fonte
de alimentao de 5V, que so os padres do Arduino.
No lado esquerdo da figura ficam localizadas as entradas de alimentao, por
fonte de energia de 5V ou entrada USB. Caso o sistema depois de pronto fique
independente do computador, ou seja, no possua qualquer tipo de interao com o
seu hospedeiro no funcionamento, pode-se optar pela alimentao da placa atravs
de uma fonte de alimentao de energia de 9V. Porm, se o Arduino estiver
constantemente ligado a um computador hospedeiro, a prpria conexo USB se
encarregar de manter a placa energizada e em funcionamento.
A seleo do tipo de alimentao da placa, por fonte ou USB, varia de um
modelo para o outro. Os mais modernos, como o Arduino Duemilanove, j
identificam automaticamente o mtodo como a placa est sendo alimentada. J os
modelos mais antigos necessitam que um jumper, posicionado ao lado da porta
USB, defina essa diretriz.
27
28
29
A imagem mostra o que cada um dos pinos do microcontrolador faz. Muitos
deles so vistos no Arduino, o que explica o porqu de alguns autores afirmarem que
o microcontrolador o crebro da placa. Ele o responsvel pelo tratamento das
informaes. Os pinos dividem-se em Port B (PB), Port C (PC), Port D (PD), Ground
(Gnd), supply voltage pin for the A/D converter (AVCC), analog reference pin for the
A/D converter (AREF) e Power supply voltage (VCC).
Abaixo, um mapeamento da comunicao entre os pinos do microcontrolador
e do Arduino, conforme a figura 9, identificando a relao que h entre eles:
Pino 1 PC6 Reset
Pino 20 AVCC
Pino 7 VCC
Pino 21 AREF
Pino 8 Gnd
Pino 22 Gnd
Pino 9 PB6
Pino 10 PB7
Na parte central da placa ficam localizados trs diodos de luz do tipo light
emitting diode (LED).
30
Neste ano de 2010 foi feito o lanamento oficial do Arduino UNO. Conforme
informaes contidas no site oficial do Arduino (2010), o nome, de origem italiana, foi
escolhido devido ao fato de ser esta considerada a verso 1.0, que dever servir de
referncia para as prximas placas a serem fabricadas.
O modelo similar ao Duemilanove. Assim como ocorre com o seu
antecessor, o UNO tambm possui 14 pinos de entrada/sada digital (dos quais 6
31
podem ser usados como sadas PWM), 6 entradas analgicas, uma conexo USB e
uma entrada de alimentao. O microcontrolador utilizado o Atmega 328.
Segundo o site oficial do Arduino (2010), a principal diferena est no chip de
converso de sinal USB para serial, que agora utiliza o Atmega 8U2 em vez do
produto da Future Technology Devices International (FTDI).
Esteticamente a placa tambm apresenta uma aparncia mais limpa e clara.
A imagem abaixo mostra o Arduino UNO.
32
2.3.1 Freeduino BR
O Freeduino comeou como um projeto open-source com o objetivo de
desenvolver uma placa compatvel fisicamente e eletronicamente com o Arduino,
porm com um preo mais acessvel. Este projeto conta hoje com colaboradores
espalhados por diversas partes do mundo
A verso brasileira do Freeduino, o Freeduino BR, fabricada na cidade de
Curitiba-PR pelo engenheiro eletrnico Srgio Duarte. Sua estrutura similar do
Arduino Diecimila, um dos mais utilizados atualmente. Segundo registros do site
oficial do projeto, a primeira placa foi desenvolvida em junho de 2008. Abaixo, a
imagem do Freeduino BR.
33
3 LINGUAGEM PROCESSING
O Processing uma linguagem de programao open-source que foi
projetada em 2001 no Grupo de Esttica e Computao do Massachusetts Institute
of Technology (MIT) Media Lab por Casey Reas e Benjamin Fry, sob orientao de
John Maeda. Porm a verso 1.0, considerada estvel, s veio a ser lanada em
novembro de 2008 (processing.org 2010).
Hoje a linguagem caracteriza-se tambm por ser interpretada e rodar sobre
uma plataforma Java.
Segundo Bem Fry (2009), o objetivo inicial era desenvolver uma linguagem
focada na criao de imagens, animaes e interaes. A facilidade na interao
com equipamentos eletrnicos fez com que a linguagem ganhasse um amplo espao
na rea de sistemas embarcados. Hoje ela comumente utilizada por
instrumentistas, cientistas e profissionais da rea de eletrnica no desenvolvimento
de suas atividades.
O cdigo fonte desenvolvido em Processing claro e objetivo. Divide-se em
trs funes principais: Setup, Loop e Draw.
Nos pargrafos abaixo sero mostrados alguns conceitos e comandos
extrados do site oficial da linguagem de programao Processing (processing.org).
3.1 SETUP
O Setup a primeira etapa a ser executada. a nica que obrigatoriamente
deve fazer parte do cdigo fonte.
Sua funo principal definir os parmetros iniciais do programa, ou seja, a
preparao para que as demais linhas do cdigo sejam executadas. O Setup
executado uma nica vez no incio do programa.
3.2 LOOP
O Loop onde so executados os comandos contnuos, ou seja, aqueles que
sero executados durante todo o perodo em que o programa est funcionando. No
caso de um sistema embarcado, como o do projeto em questo, loop conter tudo
que ser executado constantemente enquanto o equipamento estiver ligado.
34
3.3 DRAW
O Draw, como o prprio nome diz, a etapa onde, entre outras, so definidas
as funes grficas do programa. Assim como ocorre na funo Loop, os comandos
contidos em Draw so executados continuamente. Por esse motivo, quando o cdigo
fonte ser executado no computador hospedeiro, usa-se a funo Draw em vez de
Loop. Desenhos, grficos e animaes so criados neste espao.
Um exemplo de comando que deve ser executado dentro da funo Draw :
Size (480,120);
Point (240,60);
O exemplo acima desenha uma janela de 480 por 120 pixels, e no interior dela
desenha um ponto bem no centro, atravs da indicao das coordenadas X e Y,
onde X representa a largura (240) e Y a altura (60).
As funes so declaradas conforme a sintaxe abaixo:
Tipo retornado + Nome da funo + (Parmetros) + ;
Um exemplo tpico seria:
void setup ();
Onde void indica que no h qualquer tipo de retorno, o Setup a funo a
ser utilizada e o () indica que no sero passados parmetros iniciais para a
execuo da funo.
Uma outra caracterstica da linguagem Processing que cada comando
executado deve ser encerrado com ponto e vrgula (;).
35
No exemplo acima int especifica que a varivel do tipo inteira, o nome
atribudo var e seu valor inicial 5.
Outros comandos
Tambm existem comandos de iterao (for e while) de condio (if...else), de
relao (>, <, == e !=), de sada de informaes (print e println), entre outros. A
sintaxe destes comandos, como j citado anteriormente, muito similar utilizada na
linguagem de programao C++.
36
A exemplo do que acontece com os comandos citados no pargrafo acima, o
exit() tambm no usa parmetros de entrada para a execuo das suas funes.
Quando este executado o programa encerrado.
O comando keypressed() utilizado para definir o que deve ser executado
quando uma tecla do teclado pressionada. A sintaxe correta :
keypressed() { o que deve ser feito quando uma tecla pressionada}
Todos os comandos acima, com exceo do keypressed() devem ser
finalizados com um ponto-e-vrgula (;).
A figura abaixo mostra o editor de programao Processing e um famoso
cdigo fonte utilizado no Arduino. Destaque para a declarao da varivel ledPin, do
tipo inteira, e para as funes Setup e Loop.
37
Ele
pode
ser
baixado
no
site
oficial
do
Arduino
baixar
instalar
driver
da
placa,
encontrado
no
site
38
O sensor dever ser ligado ao Arduino atravs de uma porta analgica, que
receber um pulso eltrico. A este pulso eltrico devero ser aplicadas funes, as
quais faro parte do cdigo fonte inserido no microcontrolador, que dever convertlas em sinais digitais. Estes sinais digitais devero ser convertidos para o padro
ASC (American Standard Code), para que o valor correspondente temperatura seja
mostrado no visor LCD. O visor LCD dever ser conectado ao Arduino atravs de
sete pinos de sada digital, que sero explicados no decorrer desta obra.
39
O pargrafo acima explica, basicamente, como o processo pode ser feito. Na
prtica a complexidade aumenta consideravelmente,
principalmente se for
considerada a idia principal do trabalho, que criar algo novo, que se adapte a
requisitos e necessidades elencados pelos prprios administradores de redes,
auxiliando-os no gerenciamento do processo de refrigerao do datacenter.
4.1 PROTOBOARD
40
4.2 SHIELD
De acordo com o site oficial do Arduino (2010), shield nada mais do que
uma placa que pode ser plugada na parte superior do Arduino.
Muitos modelos de shield, para diversas finalidades, so encontrados no
mercado. Um modelo bastante conhecido o Ethernet shield, que serve para anexar
uma interface de rede ao Arduino.
41
42
43
44
4.4 O VISOR LCD HITACHI HD44780
Pino
Nome
Funo
Conexo com
nmero
Arduino
Vss
Aterramento
Gnd
Vdd
Alimentao 5V
5V
Vee
Contraste
Uso opcional
Registrador
Pino digital
Leitura e escrita
Pino digital
Enable (E)
Habilitao
Pino digital
D0
Transmisso de dados
No aplicvel
D1
Transmisso de dados
No aplicvel
D2
Transmisso de dados
No aplicvel
10
D3
Transmisso de dados
No aplicvel
45
11
D4
Transmisso de dados
Pino digital
12
D5
Transmisso de dados
Pino digital
13
D6
Transmisso de dados
Pino digital
14
D7
Transmisso de dados
Pino digital
15
LED+
No aplicvel
16
LED-
No aplicvel
46
de 10 ligado numa fonte de 9V, a corrente que passar por ele ser de 0,6A, pois
10 / 9V = 0,6A.
De acordo com as afirmaes vistas nos pargrafos acima, e seguindo o
raciocnio iniciado por Burgos, um resistor tem a funo de reduzir a corrente eltrica
e a tenso em vrios pontos do circuito. So feitos de materiais mau condutores
como grafite, nquel-cromo e filme metlico. Quanto maior o valor do resistor, menor
a corrente no circuito. Nos casos em que o valor da resistncia oferecida pelo
resistor passar de 1000, pode-se converter para quilo-ohm (k), onde, por
exemplo, 1500 equivale a 1,5k.
47
O modelo de potencimetro mostrado atualmente o mais comum encontrado
no mercado. Ele equipa diversos produtos eletrnicos que necessitam de constantes
ajustes por parte do utilizador, como por exemplo o volume do aparelho de som.
Porm, em alguns casos, os potencimetros so instalados internamente junto ao
circuito, de forma intencional para que apenas tcnicos possam fazer uso destes em
caso de manuteno. Para esta finalidade aconselhvel o uso de um trimpot.
Um trimpot, do ingls trimmer potentiometer, um potencimetro miniatura
ajustvel. Ele ajustado quando instalado em algum dispositivo, e normalmente fica
em local que o usurio no o veja, de modo que eventuais ajustes somente sejam
feitos por tcnicos (Wikipedia 2010).
48
Dessa forma, o uso de um alarme que emita um som quando a temperatura
estiver fora dos padres de trabalho extremamente relevante, visto que o
administrador no dispe de tempo suficiente para fazer um acompanhamento
contnuo da temperatura do datacenter.
Para realizar tal soluo, foi retirado o alto-falante speaker de um computador
que j havia cado em desuso, por ter se tornado obsoleto em relao aos padres
atuais de hardware e software. Ainda que o modelo de alto-falante utilizado seja de
baixa potncia, sua fabricao foi feita especificamente para a gerao de bips de
alarme caso haja alguma falha no funcionamento do computador no qual ele est
instalado, que o mesmo princpio deste projeto. Outra vantagem alcanada com o
reaproveitamento deste alto-falante foi a no necessidade de investimento financeiro
para sua aquisio.
Para a instalao deste alarme necessrio utilizar um pino digital e um pino
de aterramento (Gnd) no Arduino. Como o speaker possui dois conectores, cada um
deles deve ser ligado a um dos pinos citados anteriormente. Assim, com o circuito
fechado, a passagem de corrente eltrica pelo alto-falante gerar um som que,
dependendo da frequncia utilizada, poder ser mais grave ou mais agudo.
4.7 LED
49
A exemplo do que ocorre com o speaker, o LED usa um pino digital e um pino
de aterramento (Gnd) do Arduino para seu funcionamento. A diferena que no
caso do speaker os pinos podem ser ligados de forma invertida que o som ser
transmitido sem problemas. J o LED, obrigatoriamente, deve ter o plo positivo
(mais comprido) ligado ao pino digital e o negativo ao aterramento.
50
5 DESENVOLVIMENTO DO GERENCIADOR DE TEMPERATURA DIGITAL
iniciar
construo
do
circuito
eletrnico,
deve-se
conectar
respectivamente os pinos +Vs, Gnd e Vout do LM35 aos pinos +5V, Gnd e Analgico
0 (ou qualquer outro pino analgico entre 0 e 5) do Arduino. Dessa forma, o primeiro
pino ser o responsvel por manter o LM35 energizado e o segundo ser o
aterramento. J o terceiro far a leitura da energia que ser enviada pelo sensor.
imprescindvel o uso de um resistor de 100K entre as conexes analgico e
Gnd. Segundo Jeronimo Avelar Filho, a no utilizao deste pode acarretar em
falhas de leitura, tornando inconsistentes as informaes recebidas do sensor LM35.
Os pinos analgicos do Arduino possuem resoluo de 10 bits, ou seja,
devolvem um valor entre 0 e 1023. O valor de referncia nesse caso 5, pois a
tenso em que o LM35 trabalha 5V. Assim sendo, se o pino analgico ler 1024,
significa que a tenso enviada pelo LM35 5V.
Ao microcontrolador do Arduino deve ser feito upload do cdigo fonte que far
a leitura da temperatura. Neste cdigo fonte o valor da temperatura em graus clsius
51
ser gerado atravs da seguinte equao: temperatura = (5 * valor lido no LM35 *
100) /1024.
Como j falado anteriormente, o valor referncia 5 devido ao fato do LM35
trabalhar com tenso de 5V. O valor referncia 1024, que tambm fixo,
corresponde aos 10 bits utilizados pelo pino analgico do Arduino para fazer a
leitura. O valor 100 serve para transformar o resultado em decimal (Jeronimo Avelar
Filho 2010).
52
extremidade aos pinos Gnd do Arduino e Vss do LCD, e a conexo central ao pino
Vee do LCD. No desenvolvimento do Gerenciador de Temperatura Digital foi
utilizado um potencimetro do tipo trimpot, pois espera-se que depois que o visor
LCD estiver com seu contraste regulado, no haver necessidade de novo ajuste.
No cdigo fonte inserido no microcontrolador da placa deve constar a
biblioteca LiquidCrystal, que a responsvel pela comunicao entre o Arduino e o
visor LCD.
Um caracter utilizado na escrita de valores de temperatura o indicador
ordinal (), parte da abreviao de graus celsius (C). Este caracter no
reconhecido pelo visor LCD, por isso deve ser criado por cdigo fonte em
Processing, conforme abaixo:
byte caracter[8] = {B00100, B01010, B00100, B00000, B00000, B00000,
B00000, B00000 };
Cada nmero corresponde a um pixel de caracter, que no visor LCD est
dividido em oito linhas e cinco colunas. Os pixels com nmero 1 representam
preenchido, de forma a desenhar o caracter desejado.
53
Onde, digitalWrite o nome da funo, 13 o nmero do pino digital
utilizado e HIGH quer dizer para gerar energia (ligar o LED). Para finalizar a
gerao de energia (desligar o LED) deve-se trocar HIGH por LOW.
Assim como ocorre com a instalao do LED, o alto-falante tambm possui
duas conexes. Uma delas deve ser ligada ao pino digital e outra ao pino Gnd que,
no caso especfico do speaker, no h diferena se as conexes forem ligadas
invertidas, o som ser gerado de qualquer forma.
O comando em linguagem Processing (que deve ser inserido no cdigo-fonte
do microcontrolador) que liga o alto-falante e gera o som no Arduino :
tone(8, 500, 1000) ;
Onde, tone o nome da funo, 8 o nmero do pino digital utilizado e
1000 a durao do som em milisegundos.
A figura abaixo mostra o alarme do Gerenciador de Temperatura Digital feito
sobre uma protoboard, ainda em fase experimental.
54
6 PRODUTO FINAL E IMPLANTAO
Aps concluda a fase experimental, feita sobre uma protoboard, deve-se
comear o desenvolvimento definitivo do produto. Nesse momento tudo que est
ligado ao microcontrolador deve ser soldado na shield. Isso dar ao Gerenciador de
Temperatura Digital uma aparncia mais profissional e garantir, atravs dos pontos
de solda, uma transmisso de energia confivel. O sucesso na implantao depende
diretamente da qualidade do produto final.
55
mais elevada, sendo que nesta ltima tambm constar o horrio em que ocorreu.
Essas informaes sero importantes no momento em que se fizer necessria a
averiguao de algum incidente envolvendo a temperatura interna do datacenter. A
figura abaixo mostra como esses relatrios so acessados por uma estao de
trabalho via rede interna.
56
6.2 IMPLANTAO
57
58
59
CONCLUSO
60
Os produtos encontrados no mercado, ainda que muito bons, no se
mostraram fiis na relao custo/benefcio. Este foi um dos motivos que motivaram o
desenvolvimento de um Gerenciador de Temperatura Digital, que trouxe ao projeto a
possibilidade de se criar algo novo, aproveitando vantagens de cada uma das
solues.
Assim como ocorre no mdulo NetBotz 200, o Gerenciador de Temperatura
Digital d a possibilidade de se conectar at seis sensores de temperatura, sendo
que cada sensor sai por um preo consideravelmente menor que o do produto da
APC. Um sensor de temperatura AP9335T para mdulo NetBotz 200 custa $ 69,11,
enquanto que um sensor de temperatura LM35, utilizado no Gerenciador de
Temperatura Digital, com resistores e alguns metros de fio, custa cerca de R$ 10,00.
O Gerenciador de Temperatura Digital hoje carece de um sistema para
acesso e configurao via web, como possuem o NetBotz 200 e o Temmetro IP. A
soluo para isso poderia ser a instalao de uma Ethernet Shield, que prov acesso
via rede ao Arduino. Uma placa como esta custa em torno de R$ 140,00 no site
mercadolivre.com.br. No est afastada a possibilidade de projetos futuros com a
instalao de uma Ethernet Shield ao Gerenciador de Temperatura Digital, pois
ainda assim o custo/benefcio mais satisfatrio em relao s demais solues. J
est em pauta o desenvolvimento de uma nova verso do produto com um servidor
web incluso.
O Datalogger possui um registro das quatro mil ltimas leituras de
temperatura, que podem ser vistas somente no visor do produto. Essa caracterstica
tambm foi otimizada no Gerenciador de Temperatura Digital, que registra no
computador hospedeiro um histrico com a hora e a temperatura a cada 30
segundos, apresentando tambm informaes qualificadas como temperatura mais
alta do dia, com o respectivo horrio, e temperatura mdia.
O Gerenciador de Temperatura Digital ainda possui algumas caractersticas
nicas, como utilizao de material reciclvel em parte do seu desenvolvimento,
instalao do visor LCD externamente ao rack de servidores e alarme com alertas
visual e sonoro.
Considerando apenas aspectos tcnicos de cada soluo fica difcil saber qual
delas se enquadra melhor para suprir a necessidade em questo. Porm, quando se
considera o custo/benefcio, o desenvolvimento do Gerenciador de Temperatura
Digital torna-se a opo mais vantajosa para a Reitoria da Unipampa, que foi o local
61
escolhido para a implantao desta soluo. A figura abaixo mostra um grfico
aproximado de valores de cada um dos produtos.
62
REFERNCIAS BIBLIOGRFICAS
Sergio.
Site
oficial
Freeduino
BR.
Disponvel
em:
63
INFOPLAY.
Blog
sobre
tecnologia.
Disdponvel
em:
LIVRE,
site
de
compras.
Disponvel
em:
DIGITAL.
Arduino,
robtica
para
iniciantes.
Disponvel
em:
SUPERSTORE,
site
de
compras.
Disponvel
em:
IT
SOLUTIONS,
site
oficial.
Disponvel
em
<http://www.
64
ANEXOS
65
ANEXO A CDIGOS FONTE COMENTADOS
A1 Cdigo fonte em linguagem de programao Processing inserido no
microcontrolador do Arduino, para a apresentao da monografia. Para o
desenvolvimento deste cdigo foi utilizado o editor de programao Arduino 018.
66
lcd.setCursor(3,1); //escreve no LCD C depois do valor da temperatura.
lcd.write(0);
lcd.setCursor(4,1);
lcd.print(C);
if (temperatura > 24){
//se temperatura alta:
tone(8, SOM, 1000);
//liga alarme;
digitalWrite(ledPin_red, HIGH); //ascende led vermelho;
}
else{
//se temperatura normal:
digitalWrite(ledPin_red, LOW); //apaga led vermelho.
}
delay(6000); //aguarda 6 segundos.
piscaled();
}
//abaixo a funo que faz o led azul piscar.
void piscaled() {
digitalWrite(ledPin, HIGH); //ascende led azul.
delay(50);
//aguarda 0,5 segundos.
digitalWrite(ledPin, LOW); //apaga led azul.
}
hospedeiro,
para
apresentao
da
monografia.
Para
67
float media;
float i = -1; //valor de -1 devido primeira leitura no ser computada para a mdia
Serial myPort;
void setup() {
println(Serial.list());
//a linha abaixo seleciona a porta nmero 2, que a utilizada pelo Arduino conforme a lista
//de endereos. Este valor pode variar de um computador para o outro. 9600 a taxa de
//transferncia de dados.
myPort = new Serial(this, Serial.list()[2], 9600);
//a linha abaixo cria um arquivo texto que servir de log. No nome constam informaes de
//horrio, que o diferenciar dos demais logs.
output = createWriter("log_temperatura_"+hour()+"_"+minute()+".txt");
//As linhas abaixo j fazem parte do contedo do arquivo: cabealho, hora e temperatura.
output.println("Relatrio: "+day()+"/"+month()+"/"+year()+" - "+hour()+":"+minute());
output.println();
output.println("Hora - Temperatura");
output.print(hour() + ":" + minute() + ":" + second() + " - ");
h_corrente = hour();
m_corrente = minute();
s_corrente = second();
h = minute(); //armazena o minuto atual, conforme o relgio do computador hospedeiro.
}
//em draw ficam as linhas de cdigo que sero executadas continuamente, similar ao que
//ocorre em loop no cdigo inserido no microcontrolador.
void draw() {
while (myPort.available() > 0) { //se houver transmisso de dados
int val_serial = myPort.read(); //armazena na varivel val_serial.
String val_c = Integer.toString(val_serial);
if ((val_serial != 10) && (val_serial != 13)){ //diferente de nova linha e retorno de carrinho
switch (val_serial){ //descobrir qual o dgito que foi enviado pela porta serial
case 48:
//atravs de seu cdigo ASC.
temp_it = "0";
break;
case 49:
temp_it = "1";
break;
case 50:
68
temp_it = "2";
break;
case 51:
temp_it = "3";
break;
case 52:
temp_it = "4";
break;
case 53:
temp_it = "5";
break;
case 54:
temp_it = "6";
break;
case 55:
temp_it = "7";
break;
case 56:
temp_it = "8";
break;
case 57:
temp_it = "9";
break;
}
temp_c = (temp_c + temp_it);
}
if (val_serial == 13){ //se retorno de carrinho
temp_i = int(temp_c);
soma = soma + temp_i; //definindo soma total das temperaturas
i++;
if (temp_i > maior_temp){ //registrar maior temperatura e horrio em que ocorreu
maior_temp = temp_i;
h_maior = h_corrente;
m_maior = m_corrente;
s_maior = s_corrente;
}
temp_c = "";
temp_i = 0;
}
temp = char(val_serial);
print(temp);
if (val_serial == 10) { //se nova linha escrever a hora para a nova leitura de temperatura
output.print(hour() + ":" + minute() + ":" + second() + " - ");
h_corrente = hour();
m_corrente = minute();
s_corrente = second();
}
69
if ((val_serial != 13) && (val_serial != 10)){ //diferente de nova linha e retorno de carrinho
output.print(temp); //escreve valor no relatrio de log
}
if (val_serial == 13){ //se retorno de carrinho pular para prxima linha
output.println();
if (h != minute()){ //se trocar para minuto seguinte
media = soma / i; //tirar a mdia
output.println();
output.println("Temperatura mais alta: " + maior_temp); //temperatura mais alta
output.println("Hora: " + h_maior + ":" + m_maior +":" + s_maior); //hora
output.println();
output.println("Temperatura mdia: " + media); //temperatura mdia
output.flush();
output.close(); //finaliza relatrio
h_corrente = 0; //zera valores
m_corrente = 0;
s_corrente = 0;
maior_temp = 0;
soma = 0;
media = 0;
i = 0;
//cria novo relatrio de log para o minuto seguinte
output = createWriter("log_temperatura_"+hour()+"_"+minute()+".txt");
output.println("Relatrio: "+day()+"/"+month()+"/"+year()+" - "+hour()+":"+minute());
output.println();
h = minute();
}
}
}
}
void keyPressed() { //encerra execuo do programa se alguma tecla for pressionada.
output.close();
exit();
}
70
int ledPin_red = 7; //varivel que representa o LED vermelho, conectado ao pino 7 digital.
int analogPin = 0; //varivel que representa o LM35, conectado ao pino 0 analgico.
int valAnalog; //varivel que armazenar o valor lido pelo LM35.
int temperatura; //varivel que armazenar o valor da temperatura gerada.
byte caracter[8] = { //criao do caracter para escrever C no LCD
B00100,
B01010,
B00100,
B00000,
B00000,
B00000,
B00000,
B00000
};
LiquidCrystal lcd (12, 10, 11, 5, 4, 3, 2) //define pinos do LCD que sero utilizados
void setup()
{
pinMode(ledPin, OUTPUT); //define pino 13 (led) como sada digital.
pinMode(ledPin_red, OUTPUT); //define pino 7 (led vermelho) como sada digital.
Serial.begin(9600); //determina a velocidade de transmisso da porta serial.
}
void loop() //linhas de cdigo que sero executadas continuamente
{
lcd.begin (16,2); //inicia o LCD com 2 linhas e 16 colunas para caracteres.
lcd.print(Temperatura:); //escreve a palavra temperatura na primeira linha do LCD.
valAnalog = analogRead(analogPin);
temperatura = (5 * valAnalog * 100) / 1024; //frmula da temperatura.
Serial.println(temperatura); //envia temperatura para host.
lcd.setCursor (0, 1); //posiciona o cursor do LCD na linha 2 (1) e coluna 1 (0).
lcd.print(temperatura); //imprime a temperatura no LCD.
lcd.setCursor(3,1); //escreve no LCD C depois do valor da temperatura.
lcd.write(0);
lcd.setCursor(4,1);
lcd.print(C);
if (temperatura > 25){
//se temperatura alta:
tone(8, SOM, 1000);
//liga alarme;
digitalWrite(ledPin_red, HIGH); //ascende led vermelho;
}
else{
//se temperatura normal:
digitalWrite(ledPin_red, LOW); //apaga led vermelho.
}
delay(30000); //aguarda 30 segundos.
71
piscaled();
}
//abaixo a funo que faz o led azul piscar.
void piscaled() {
digitalWrite(ledPin, HIGH); //ascende led azul.
delay(50);
//aguarda 0,5 segundos.
digitalWrite(ledPin, LOW); //apaga led azul.
}
hospedeiro,
para
apresentao
da
monografia.
Para
void setup() {
println(Serial.list());
//a linha abaixo seleciona a porta nmero 2, que a utilizada pelo Arduino conforme a lista
//de endereos. Este valor pode variar de um computador para o outro. 9600 a taxa de
//transferncia de dados.
myPort = new Serial(this, Serial.list()[2], 9600);
72
//a linha abaixo cria um arquivo texto que servir de log. No nome constam informaes de
//data, que o diferenciar dos demais logs.
output = createWriter("log_temperatura_"+year()+"_"+month()+"_+day()+.txt");
//As linhas abaixo j fazem parte do contedo do arquivo: cabealho, hora e temperatura.
output.println(Unipampa Reitoria);
output.println(Datacenter 01 - Medio de temperatura);
output.println();
output.println("Relatrio: "+day()+"/"+month()+"/"+year());
output.println();
output.println("Hora - Temperatura");
output.print(hour() + ":" + minute() + ":" + second() + " - ");
h_corrente = hour();
m_corrente = minute();
s_corrente = second();
d = day(); //armazena o dia atual, conforme informaes do computador hospedeiro.
}
//em draw ficam as linhas de cdigo que sero executadas continuamente, similar ao que
//ocorre em loop no cdigo inserido no microcontrolador.
void draw() {
while (myPort.available() > 0) { //se houver transmisso de dados
int val_serial = myPort.read(); //armazena na varivel val_serial.
String val_c = Integer.toString(val_serial);
if ((val_serial != 10) && (val_serial != 13)){ //diferente de nova linha e retorno de carrinho
switch (val_serial){ //descobrir qual o dgito que foi enviado pela porta serial
case 48:
//atravs de seu cdigo ASC.
temp_it = "0";
break;
case 49:
temp_it = "1";
break;
case 50:
temp_it = "2";
break;
case 51:
temp_it = "3";
break;
case 52:
temp_it = "4";
break;
case 53:
temp_it = "5";
break;
73
case 54:
temp_it = "6";
break;
case 55:
temp_it = "7";
break;
case 56:
temp_it = "8";
break;
case 57:
temp_it = "9";
break;
}
temp_c = (temp_c + temp_it); //descobrir a temperatura em String
}
if (val_serial == 13){ //se retorno de carrinho
temp_i = int(temp_c);
soma = soma + temp_i; //definindo soma total das temperaturas
i++;
if (temp_i > maior_temp){ //registrar maior temperatura e horrio em que ocorreu
maior_temp = temp_i;
h_maior = h_corrente;
m_maior = m_corrente;
s_maior = s_corrente;
}
temp_c = "";
temp_i = 0;
}
temp = char(val_serial);
print(temp);
if (val_serial == 10) { //se nova linha escrever a hora para a nova leitura de temperatura
output.print(hour() + ":" + minute() + ":" + second() + " - ");
h_corrente = hour();
m_corrente = minute();
s_corrente = second();
}
if ((val_serial != 13) && (val_serial != 10)){ //diferente de nova linha e retorno de carrinho
output.print(temp); //escreve valor no relatrio de log
}
if (val_serial == 13){ //se retorno de carrinho pular para prxima linha
output.println();
if (d != day()){ //se trocar para dia seguinte
media = soma / i; //tirar a mdia
output.println();
output.println("Temperatura mais alta: " + maior_temp); //temperatura mais alta
output.println("Hora: " + h_maior + ":" + m_maior +":" + s_maior); //hora
74
output.println();
output.println("Temperatura mdia: " + media); //temperatura mdia
output.flush();
output.close(); //finaliza relatrio
h_corrente = 0; //zera valores
m_corrente = 0;
s_corrente = 0;
maior_temp = 0;
soma = 0;
media = 0;
i = 0;
//cria novo relatrio de log para o dia seguinte
output = createWriter("log_temperatura_"+hour()+"_"+minute()+".txt");
output.println(Unipampa Reitoria);
output.println(Datacenter 01 - Medio de temperatura);
output.println();
output.println("Relatrio: "+day()+"/"+month()+"/"+year());
output.println();
d = day();
}
}
}
}
void keyPressed() { //encerra execuo do programa se alguma tecla for pressionada.
output.close();
exit();
}
75
ANEXO B CIRCUITO ELETRNICO
76
Quant. Valor
Valor
Unit. (R$)
total (R$)
Freeduino BR
75,00
75,00
Resistor 100k
0,50
0,50
Led vermelho
0,75
0,75
Visor LCD
16x2
15,00
15,00
Sensor LM35
4,50
4,50
Protoshield
10,00
10,00
Speaker
Trimpot 10k
2,50
2,50
Cabos
5,00
Obs.
Retirado de um
computador que
j estava em
desuso.
77
Custo individual das solues citadas nesta obra:
Produto
Valor
Obs.
$ 644,69
O valor no inclui
custo de frete e
e Luz de alarme
importao.
AP9324
DataLogger
R$ 273,60
Termmetro IP
R$ 880,00
Gerenciador de
R$ 113,25
Temperatura Digital
Soldador
20,00
Multmetro
15,00
Protoboard
22,00