Escolar Documentos
Profissional Documentos
Cultura Documentos
Depois de um longo tempo sem inventar alguma coisa, resolvi voltar a ativa e fazer algo
que dessa vez possa usar para automatizar minha casa, e assim, controlar uma srie de
coisas atravs do iPhone, Android, Web, ou qualquer dispositivo que possa abrir uma
pgina web.
Mas antes de comear com os assuntos tcnicos, vou falar um pouco sobre a soluo e
um pouco do histrico
Aquilo para mim foi um feito incrvel. Alm de escrever uma aplicao WEB 100% em
C++, aprendi muita coisa de eletrnica, e que no fazia parte do meu currculo escolar.
Mas de alguma forma eu no fiquei satisfeito com a soluo, e achava que usar um
computador para realizar tarefas relativamente simples, era inaceitvel.
Com o PIC, tive um pouco mais de dificuldade, principalmente por causa dos mdulos
para conectar o mesmo em uma LAN muita coisa depende de pura codificao, e com
o pouco tempo disponvel, acabei abandonando. No comeo do ano passado (fev/2009),
comecei a brincar com o Arduino, e foi a que minha curiosidade aumentou, at o ponto
que resolvi voltar a brincar oficialmente com meu projeto.
Se voc nunca ouviu falar do Arduino (e gosta de hardware), sugiro que v atrs: um
projeto fantstico, e opensource. O conceito tambm matador o dispositivo bsico
com sadas e entradas digitais, porta serial nativa, entrada usb, e todo sistema de
proteo de um bom hardware. Mas o que o torna matador o conceito de shields,
onde voc pode acoplar outros mdulos de uma maneira bem fcil, como se estivesse
montando um LEGO.
Neste tutorial, vamos mostrar como utilizar o XBEE com Arduino, utilizando o XBEE Shield e XBEE Explorer disponveis no XBEE Wireless Kit
Retail. O XBEE utiliza a frequncia de 2.4Ghz e o padro IEEE 802.15.4 (a mesma utilizada no Zigbee). Com o XBEE possvel fazer
comunicao entre microcontroladores, computadores ou qualquer dispositivo que tenha porta serial! Pode-se fazer conexes de ponto-a-ponto ou
at multi-conexes de rede.
Primeiramente, vamos conectar o XBEE no XBEE Explorer USB para configur-lo:
Agora conecte o XBEE Explorer USB no seu computador e instale o driver FTDI. Este driver pode ser encontrado dentro da pasta "drivers"
localizado dentro da pasta da IDE do Arduino. Utilizando um programa de comunicao como o PUTTY, vamos acess-lo para configur-lo.
Selecione "Serial" em "Connection type", em "serial line" coloque a porta (COMx, ttyUSBx,ttyACMx) em que o XBEE Explorer USB est conectado.
Deixe o "Speed" como 9600 e clique "Open". Ir abrir uma nova janela, nesta janela onde vamos colocar os comandos para configur-lo.
Ao digitar +++, o Xbee dever retornar "OK". Depois digite ATID e aperte "Enter", voc ver um nmero. Este nmero o identificador de rede.
Digite +++ novamente e depois ATBD e aperte "Enter". Ir aparecer o nmero 3, este nmero refere-se a velocidade de transmisso. Caso queira
mudar esses paramtros, clique aqui e aqui para ver os comandos.
Deixe o XBEE Explorer USB conectado no pc com o xbee e o PUTTY aberto. Agora conecte o outro xbee no XBEE Shield e depois o XBEE Shield
no Arduino. Na placa existe uma chave, coloque a chave para "DLINE". Abra a IDE (verso 1.0) do Arduino, v para File/Example/SoftwareSerial e
abra SoftwareSerialExample. Faa as mudanas destacadas em vermelho:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup()
{
Serial.begin(9600);
Serial.println("XBEE Example!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Conecte o Arduino com o XBEE Shield no seu computador, selecione a verso da sua placa Arduino (UNO, Duemilanove,etc),a porta (COMx,
ttyUSBx, ttyACMx) e clique em UPLOAD. Abra a Serial Monitor e selecione 9600 em baud e "No line ending".
Volte para o PUTTY (se for o caso reabra seguindo o procedimento novamente, mas sem digitar +++), e digite uma letra qualquer. Esta letra ir
aparecer no Serial Monitor do Arduino e vice-versa.
Pronto!
O projeto:
Andei fazendo testes com diversos componentes, para entender a melhor forma de
implementar o projeto. Os formatos que andei pesquisando:
Usar rels de 5v, que sero acionados pelas sadas digitais do Arduino, e assim,
controlar dispositivos que so em corrente alternada (TV, luzes, por exemplo).
Esse foi o modelo que usei no meu projeto de faculdade, mas que tem uns
pontos que eu considero ruins: desgaste dos contatos dos rels, que com o tempo
precisaro de troca, e excesso de fios passando pela casa. Por outro lado, uma
soluo barata.
Usar rels de estado slido, que so baseados em induo magntica (e no
mecnica como o acima), onde o desgaste bem menor. Tem o mesmo
problema de excesso de fios passando, e o custo desse tipo de rel
relativamente superior.
Usar X10 - que um protocolo desenvolvido pela X10, e que usa a rede eltrica
como meio de propagao de sinais, atravs de um mdulo que comunica com o
Arduino atravs de RS232. Esse mdulo o TW523. O custo de uma certa
forma maior que os rels mecnicos, e menores que os rels magnticos, e o uso
de fios passando em casa nulo. Porm, nesse modelo, o volume de cdigo para
Arduino bem maior. Mas para um hardcoder que nem eu, no ser um
problema ;
Baseado na estratgia acima, decidi que vou para a linha do X10. Ainda no testei
questes de segurana do protocolo j vi gente reclamando que ele no 100% seguro
mas acho que o melhor caminho para seguir. Se voc se interessou pelo projeto,
fique ligado no blog, que a medida que eu for montando os componentes e testando, vou
postando.
E se eu de alguma forma iluminei seu caminho, sugiro utilizar 2 sites para comprar
equipamentos:
H um nmero de constantes adicionados para tornar mais fcil X10. Eles so como se segue:
Como Funciona
Como qualquer dispositivo de transmisso serial, os bit so enviados um um, sequencialmente, e normalmente com bit menos
significante primeiro (LSB). Por ser um protocolo assncrono isto , sem uma linha de relgio (clock), responsabilidade do transmissor e
do receptor efetuarem controles de tempo para saber quando cada bit inicia e finaliza.
Na sua forma padro o RS-232 utiliza dois sinais de controle, o RTS (ready to send) e o CTS (clear to send) para efetuar o controle de
fluxo via hardware. Basicamente, quando o transmissor deseja comear um envio ele sinaliza atravs do pino RTS. O receptor, ao perceber
que o transmissor deseja enviar algum dado, prepara-se para recebe-lo e seta o pino CTS. Apenas depois de receber o sinal CTS o
Para cada byte existem bit de start e stop; o mais comum utilizar-se 1 bit de incio (start bit) e 1 bit de parada (stop bit), mas possvel
encontrar aplicaes que utilizam 1,5 ou 2 bit de incio/parada. A figura abaixo mostra como a transmisso de um byte ocorre:
Como j citado anteriormente, esta transmisso assncrona. Tendo a velocidade de comunicao ajustada nos dois dispositivos
inicialmente, cada um deles sabe quanto tempo um bit demora para ser transmitido, e com base nisto que a identificao dos bit
possvel.
No transmissor o envio basicamente resume-se enviar um bit de incio, aguardar um tempo, e enviar os prximos 8 bit + bit de parada,
No receptor, aps a primeira borda de descida (nvel lgico de "1" para "0") (start bit) o receptor sabe que uma sequencia de mais 8 bit de
dados + bit de parada chegar. Ele tambm conhece a velocidade de transmisso, ento tudo que ele precisa fazer aguardar o tempo de
transmisso entre cada bit e efetuar a leitura. Aps receber o bit de parada, a recepo encerra-se e ele volta aguardar o prximo start
bit.
Nos microcontroladores modernos todo este trabalho normalmente efetuado por uma UART (Universal Asynchronous Receiver
Transmitter). Este perifrico encarrega-se de efetuar todo o controle e apenas gerar interrupes quando um byte recebido. No entanto,
algumas vezes o microcontrolador utilizado no possui uma UART, ou mesmo ela est sendo utilizada. Nestes casos possvel implementar
uma interface serial atravs de software, tratando a seqncia de transmisso e recepo descrita anteriormente.
Na interface RS232 o nvel lgico "1" corresponde uma tenso entre -3V e -12V e o nvel lgico "0" uma tenso entre 3V e 12V. Valores
de tenso entre -3V e +3V so indefinidos e precisam ser evitados. O estado idle da linha 1 lgico (-V).
Porm a grande maioria dos perifricos que trabalham com portas seriais no utilizam o padro RS232 para nveis eltricos diretamente.
Portanto sempre necessrio um circuito de converso de nvels TTL/RS232. O circuito integrado mais comum para efetuar esta
Abaixo voc pode ver os dois conectores mais utilizados no padro RS-232, o DB9 e o DB25, com seus respectivos pinos:
DCD Data Carrier Detected (Tone from a modem) [DCE > DTE]
DSRS Data Signal Rate Selector [DCE > DTE] (Not commonly used)
NC No Connection
SG Signal Ground
Grande parte da confiabilidade do padro deve-se sua boa imunidade rudos, por ter nveis eltricos diferenciais em suas linhas. Mesmo
assim, o padro RS-232 destinado aplicaes de curto alcance. Outras interfaces, como RS-485 so mais recomendadas quando
No post passado, falei do incio do projeto para automatizar minha residncia usando
Arduino. Enquanto os componentes no chegam dos EUA, criei umas brincadeiras para
testar a minha aplicao e o servidor WEB que modifiquei para receber comandos
remotos.
Nesse pequeno vdeo abaixo, mostro como ligar e desligar uma lmpada a partir do meu
iPhone. Essa a base para o processo de automao, j que cobre os passos necessrios
para gerenciar um dispositivo. A questo ser apenas replicar.
Vale lembrar que pra mim no a soluo ideal, pois necessita passar cabos pela casa,
para permitir que os sinais digitais de 5v cheguem aos pequenos circuitos ligados na
corrente eltrica (110V). Formatted: Font: 9 pt
O projeto mais simples do que voc pode imaginar. Para montar o que est a no
vdeo, voc vai precisar:
Transistor tip 31 amplifica a corrente enviada para o rel. Para acionar a bobina do
mesmo, necessrio 5VDC + uma corrente mnima de alguns mili amperes, coisa que o
Arduino no fornece. O tip 31 um transistor NPN (negativo, positivo, negativo), que
significa que ao polarizar com corrente positiva a base, ele permite a passagem de
corrente negativa do emissor para o coletor. Funciona como uma chave nesse caso.
O rel permite que voc ligue 5VDC na bobina, alm de possibilitar 10A de 110/220V.
Ao ligar a energia 5V no rel, ele permite passagem de energia para o outro lado,
permitindo ligar ou desligar a luz.
A figura mostra para ligar no pino3 do Arduino, mas por algum motivo eu liguei no
pino 7. Se voc ainda no brincou com seu Arduino, sugiro baixar a IDE que j vem
com diversos exemplos.
Em seguida, criei um simples aplicativo php que faz uma resquisio no ip do arduino,
passando como parmetro os headers de autenticao. Cada chamada conforme passo
3 liga ou desliga o dispositivo.
Espero que faa bom proveito e em caso de dvidas ou sugestes, envie seu comentrio.
Robson Dantas
Bookmarks
Popularity: 6%
Postado em Arduino
Posts relacionados
51 Comments so far
1. Leandro on December 13th, 2010
Robson..
Primeiro de tudo, parabens pelo projeto mto legal mesmo Tava com uma ideia
bem parecida com a sua para um projeto com aplicao um pouco diferente..
ia utilizar o PIC que estou habituado, mas olhando os templates do arduino
parece ser realmente bem mais facil de implemetar, principalmente a parte de
rede Sobre os componentes que voce comprou, foi pelo smarthome? qual o
prazo deles?
Tem algum limite de valor para eles entregarem no BR? E o arduino, tem algum
fornecedor por aqui?
Quando tiver entao os codigos fontes vou dar uma bisolhada rs..
abs
Leandro,
Sobre o arduino, sugiro comprar nos EUA. Olha os links logo aps os vdeos.
Comprando at 50 dolares vc no paga imposto, porm, mesmo pagando sai
bem mais barato que comprar no Brasil. Imposto calculado 50% sobre o valor
declarado.
O prazo de entrega depende do frete que voc escolher. Normalmente leva 2-3
semanas, mas agora com Natal, vai esperar por volta de 5 semanas para liberar
aqui no Brasil.
abs
Robson
Depois que vi este artigo, logo comprei meu kit Arduino. J tinha ouvido muito
dele
No seu post, voc diz que utilizou PHP, este PHP roda dentro do Arduino?
Estou fazendo um teste com ele, utilizando form no html, mandando os dados
por get. O problema que at funcionou, quando mando o comando, ele acende
o led, mas depois apaga.
Como voc fez para manter a informao? Voc encontrou este mesmo
problema?
Abrao!
Douglas,
abs
Robson
Primeiro de tudo, parabns pelo post e pelo projeto, est ficando show de bola,
heim!
Tenho uma dvida. Moro em Santos e aqui tudo 220v, tem alguma forma de
fazer isso em 220v? Ou os produtos do x10 so somente para 110v?
Grato.
Matheus,
Tem x10 para 220V sim. S pegar o padro europeu que funciona sem crise.
Tem alguns posts na internet de como modificar o x10 110v para 220v. D pra
ver, mas no instalaria na minha casa
Robson
Att:Murilo
Murilo,
abs
Robson,
Depois que mandei o post, fui pesquisar, fiz um sisteminha show que no utiliza
o computador.
Vou ver se gravo um vdeo dele funcionando direitinho para ter uma idia de
como ficou.
Abrao!
Vou escrever em meu blog os avanos que tive e assim que estiver online aviso
vocs.
vc tem como me dizer como fao esses progaminas para executar com o arduino
o codigos eu sei fazer agora pra fazer um progama toh baiando vc pode de dar
uma dica ???
Olha Robson,
goataria de saber como voce direcionou a variavel global criada na web em php
para o arduino.. Voce poderia disponibilizar os codigos fontes pra gente?
Valeuuuu
Ol Robson..
Sou o Leandro ali de cima, j havia postado anteriormente.. bom, finalmente
chegou meu arduino.. utilizando push butons ja consigo controlar os
equipamentos que desejo, mas estou tendo dificuldades com o ethernet. Voce
teria o codigo de exemplo que voce usou? A mensagem do iphone para o
arduino voce envia TCP ou UDP?
Obrigado,
Leandro
Quais as dvidas ?
Boa tarde amigo,ainda no consegui controlar varios pinos via wib,tem como me
dar um exemplo?obrigado!
no meu caso estou fazendo um circuito para o portao abrir qnd for mandado o
comando via web,creio que a programao eh semelhante mais nao estou
conseguindo fazer, sera que tem como vc me mandar a programao, se nao for
pedir mt?rsrsrs,
grato
Por acaso tem como agente trocar umas idias sobre esse projeto,por favor entre
em contato comigo,meu email andersonlc_@hotmail.com
Ol , sera que vc poderia disponibilizar o cdigo que utilizou para fazer a relo
entre arduino e o iphone??
Grato
Prezado,
Gostaria muito de aprender a programao para windows mobile acionando o
Arduino. No sei por onde iniciar.
Poderia me ajudar com alguma informao?
Abrao,
Samuel.
H algumas formas:
1- Voc conectar no arduino com cabo usb e usar comunicao serial;
2- Comprar um shield e desenvolver um protocolo de comunicao com o
arduino pode ser via wifi, bluetooth, ou at cabo de rede;
No tem segredo!
abs
\Robson,
gostaria de usar bluetooth inves da internet. voce acha q e possivel ? vou
encontrar mt problema no caminho ?
Vc fala q a soluo ideal pra vc, seria usando um shild wifi para o arduino, o q
eliminaria alguns fios.
outra coisa, como feita a comunicao com o arduino wifi e o iphone? ponto
a ponto?
vlw ai!
Raphael,
Continuando
Mas assim, como o iphone acha e se conecta ao shield wifi, como se fosse
uma rede wifi de um roteador, por exemplo?
tem algum shield wifi melhor q o outro?pq encontrei mais de 1 modelo. E qual a
diferena entre os arduinos(uno, 2009, etc.).
Robson,
Primeiramente gostaria de parabenizar o blog. Muito interessante.
Estou fazendo um projeto deste no meu quarto. So que optei por utilizar um
Bluetooth + iTouch, so que os produtos da mac nao acha nenhum outro
bluetooth. Gostaria de saber se vc ja passou por essa situacao, se sabe se tem
uma interface boa pra fazer isso, ou como desbloqueia o bluetooth !
Obrigado
Samuel, eu tenho um programa que fiz pra ligar as lampadas do meu quarto pela
rede. O arduino funciona como um servidor web, quando entro no ip dele tem o
botao para acionar a lampada, quando aperto neste botao ele envia um valor
numa variavel pelo browser. O arduino le esse valor, dependendo de qual for o
valor ele aciona ou no determinada sada. Se quiser saber mais me passa seu
email que eu te mando!
39. samuel on November 11th, 2011
Obrigado Mateus.
segue meu email: samuelpereiraoliveira@hotmail.com
Minha preteno acionar vrios equipamentos e ter o status deles.
Att,
Samuel.
Silvio,
Foi concluido sim. Faltou foi tempo para postar, devo fazer isso em breve e se
precisar de algo, s falar.
abs
Parabns pelo seu projeto, muito legal mesmo sou iniciante com arduino e
gostaria de fazer isso com meu quarto para comear com um arduino uno, que
eu ja tenho aqui. Teria como me enviar todos os codigos e os passos para montar
o server e os codigos html, por favor?
Obrigado.
Primeiramente gostaria de parabenizar pelo seu blog. Ficou muito legal! Como a
maioria das pessoas que esto comentando, fiquei com um pouco de dvida
sobre como voc fez em alguns passos e se complementou ou finalizou esse
projeto?
Minha primeira dvida como que funciona esse seu programa e como foi feita
a interao entre o servidor web (apache) e o arduino?
Minha outra dvida se aps ligar a lmpada se, pelo programa, voc consegue
ver o status atual dela (Ligada ou Desligada).
http://www.dealextreme.com/p/ethernet-shield-v1-1-for-arduino-66908?item=2
Abraos
Marcelo,
Eu sempre compro na dealextreme. Obviamente que so clones do arduino, mas
funcionam. Outra opo mas mais caro, porm originais, no site do
sparkfun.com
abs
Robson,
Estou desenvolvendo um projeto com Arduino, porm estou encontrando
algumas dificuldades. Tem algum e-mail ou outra forma de contato que
poderiamos nos falar?
Parabens pelo trabalho acima.
O que eu pretendo desenvolver muito parecido, porm devido sigilos no
posso mencionar aqui na pgina.
Podemos entrar em contato?
Grato!
Este Blog tem como objetivo apresentar um projeto que estou desenvolvendo para que voc
tambm possa automatizar a sua casa de maneira simples e rpida, assim como trocar
informao para melhorar o sistema e implantar novas ideias.
J pensou em poder controlar toda a sua casa pelo Celular ou em qualquer computador ligado
a internet ?
Ascender ou apagar qualquer luz de sua casa em qualquer lugar que esteja, apenas com um
simples toque no celular ?
Programar o ascendimento automtico das luzes que desejar quando no estiver em casa.
Controlar a sua TV, o seu som e qualquer outro aparelho que hoje utiliza com controles
remotos que as vezes nem se sabe qual liga o que, unificando tudo em um nico controle
acessando pelo prprio celular ?
J pensou se as suas janelas abrissem quando estivesse muito calor para ventilar a sua casa e
fechassem quando estivesse chovendo ou escurecendo sem que tivesse a necessidade de faze-
las manualmente uma a uma.
J pensou estar voltando do trabalho e poder ligar a cafeteira pelo celular, chegando em casa
poder tomar um cafezinho fresquinho ? ou ao amanhecer poder ligar a cafeteira sem sair da
cama, se arrumar j sentindo o cheirinho do caf fresquinho sendo feito ?
J pensou poder estender as roupas no varal quando estiver sol e sair de casa tranquila
sabendo-se que quando comear a chover ela se esconder da chuva automaticamente,
mantendo as roupas secas ?
E quando voltar a ter um bom tempo ela volta ao no sol novamente, sem que voc esteja l
para faze-las ?
J pensou em criar cenrios prontos e apenas com um simples cliques gerar varias aes como
exemplo.
"Sair de Casa" --> Deliga todas a luzes internas deixando apenas a da entrada acesa, coloca as
luzes externas modo automtico (quando escurecer elas acendem), fecha todas as janelas e
liga alarme.
Para tornarse acessivel esta tecnologia a muitas pessoas, consegui desenvolver este projeto
com baixo custo e facil instalao.
Estou disponibilizando o cdigo fonte usado no Arduino para aqueles que queiram instalar
esta tecnologia em sua residencia.