Automação com Arduino parte 2 – ligando dispositivos usando iPhone

No post passado, falei do início do projeto para automatizar minha residência usando Arduino. Enquanto os componentes não chegam dos EUA, criei umas brincadeiras para testar a minha aplicação e o servidor WEB que modifiquei para receber comandos remotos.

Nesse pequeno vídeo abaixo, mostro como ligar e desligar uma lâmpada a partir do meu iPhone. Essa é a base para o processo de automação, já que cobre os passos necessários para gerenciar um dispositivo. A questão será apenas replicar.

Vale lembrar que pra mim não é a solução ideal, pois necessita passar cabos pela casa, para permitir que os sinais digitais de 5v cheguem aos pequenos circuitos ligados na corrente elétrica (110V).

O projeto é mais simples do que você pode imaginar. Para montar o que está aí no vídeo, você vai precisar:

  • Arduino Duemilanove ou Uno ( no projeto da minha casa vou usar o Arduino Mega );
  • Ethernet Shield;
  • 1 transistor Tip 31;
  • 1 diodo 1N4004;
  • 1 resistor de 1k ohm;
  • Relê 5VDC – aqui eu uso um finder – ref. 38.11.9.005.4001;
  • Jumpers em geral para ligar o Arduino ao circuito;
  • Fonte de 9v;
  • Protoboard ou uma placa de circuito que possibilite solda;
  • Fios em geral, alicate de corte;
Circuito montado - arduino, ethernet e rele

Circuito montado - arduino, ethernet e rele

iPhone controlando lâmpada através do arduino e shield de ethernet

iPhone controlando lâmpada através do arduino e shield de ethernet

Uma breve explicação sobre os componentes:

Ethernet shield conecta automaticamente no Arduino, estendendo a possibilidade de acesso a rede. Basta plugar um no outro, simples assim;

Transistor tip 31 amplifica a corrente enviada para o relê. Para acionar a bobina do mesmo, é necessário 5VDC + uma corrente mínima de alguns mili amperes, coisa que o Arduino não 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, além 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.

O diodo é um componente que permite passagem de corrente elétrica somente em um sentido. No circuito ele foi aplicado para proteger o arduino em caso de falha em algum componente.

Como montar o circuito ?

Basta seguir o esquema abaixo, retirado do site hobbyrobotics:

Circuito - rele, transistor, diodo e resistor

Circuito - rele, transistor, diodo e resistor

A figura mostra para ligar no pino3 do Arduino, mas por algum motivo eu liguei no pino 7. Se você ainda não brincou com seu Arduino, sugiro baixar a IDE que já vem com diversos exemplos.

Nesse caso, eu peguei o webserver, e modifiquei para o seguinte fluxo:

  1. Chega a requisição http;
  2. Verifico headers, se contém uma chave específica para acesso – apenas por segurança;
  3. Variável global guarda o estado da porta 7 e faço um not para inverter. Se está ligado, desliga – se estiver desligado, liga;

Em seguida, criei um simples aplicativo php que faz uma resquisição no ip do arduino, passando como parâmetro os headers de autenticação. Cada chamada – conforme passo 3 – liga ou desliga o dispositivo.

Vou consolidar os códigos fonte e disponibilizar para download em breve.

Espero que faça bom proveito e em caso de dúvidas ou sugestões, envie seu comentário.

Robson Dantas

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 7%

54 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 aplicação 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

  2. admin on December 15th, 2010

    Leandro,

    Sobre o arduino, sugiro comprar nos EUA. Olha os links logo após os vídeos. Comprando até 50 dolares vc não paga imposto, porém, mesmo pagando sai bem mais barato que comprar no Brasil. Imposto é calculado 50% sobre o valor declarado.

    Os sites que mais compro são: sparkfun (arduino, shields, componentes), ladyada (shields) e smarthome (x10). Componentes comuns compro na Santa Ifigênia aqui em São Paulo por ser mais barato.

    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.

    Se precisar de algo, avisa aí.

    abs

    Robson

  3. Douglas on December 15th, 2010

    Robson, tudo certo?

    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.

    Analizando os dados pela porta serial vi que o navegador recebia 2x os dados. Ou seja, assim que apertava o botão enviar, recebo o header, assim que ele pega os dados, recebo mais uma vez. Cheguei a verificar isso também pelos exemplos que vem com a IDE.

    Como você fez para manter a informação? Você encontrou este mesmo problema?

    Abraço!

  4. admin on December 20th, 2010

    Douglas,

    O PHP não roda no Arduino, roda dentro do meu iPhone. Recentemente eu mudei a forma com que trato as requisições e passei a fazer o servidor WEB ler os posts e assim escrevo a interface em HTML somente.

    Não tinha problemas em enviar 2x os comandos não, mesmo pq eu mesmo estou escrevendo o post pelo PHP. Vc está usando o sample que vem na IDE ? Como está chamando a página ?

    abs

    Robson

  5. Matheus on January 11th, 2011

    Opa! Fala Robson!

    Primeiro de tudo, parabéns pelo post e pelo projeto, está ficando show de bola, heim!

    Tenho uma dúvida. Moro em Santos e aqui tudo é 220v, tem alguma forma de fazer isso em 220v? Ou os produtos do x10 são somente para 110v?

    Grato.

  6. admin on January 13th, 2011

    Matheus,

    Tem x10 para 220V sim. Só pegar o padrão europeu que funciona sem crise. Tem alguns posts na internet de como modificar o x10 110v para 220v. Dá pra ver, mas não instalaria na minha casa :)

    Robson

  7. murilo on January 17th, 2011

    Olá amigo,parabens pela iniciativa,muito util para novatos como eu,tenho o duemilanueve e o ethernet shild,mas não sei como controlar mais que um rele pelo arduino,poderia me dar uma ajuda,não entendo para servem algumas funçoes no sketch para o ethernet shield.obrigado.

    Att:Murilo

  8. admin on January 26th, 2011

    Murilo,

    Poderia dar mais detalhes do que quer fazer ?

    abs

  9. Douglas on January 27th, 2011

    Robson,

    Sou o mesmo Douglas ali de cima.

    Depois que mandei o post, fui pesquisar, fiz um sisteminha show que não utiliza o computador.

    Utilizei também a biblioteca jqTouch para a interface móvel.

    Rodando 100% no Arduino.

    Chegou a realizar algum teste com comunicação por rede elétrica?

    Vou ver se gravo um vídeo dele funcionando direitinho para ter uma idéia de como ficou.

    Se estiver com tempo, me adiciona no MSN (email utilizado para comentário) e trocamos mais informações.

    Abraço!

  10. murilo on January 27th, 2011

    Então,pretendia automatizar meu quarto,ja fiz varios módulos,reles,push butons,sensores de temperatura,entre outros,mas estou apanhando com o ethernet shield,precisaba do basico
    abrir uma pagina no celular ou no pc onde aparece um formulário,———–
    lampada1 status ligado desligado
    2ampada1 status ligado desligado
    3ampada1 status ligado desligado….
    sensor 1 temp xºc

    seria isto,se puder me ajudar ficaria muito grato?
    obrigado
    seria issso
    mas não estou dando geito

  11. Douglas on February 5th, 2011

    Vou escrever em meu blog os avanços que tive e assim que estiver online aviso vocês.

  12. Nathalia on February 18th, 2011

    Poderia me ajudar…já assombro meu dispositivo Bluetooth no netbook e no meu iPhone,mas não consigo fazer transferências de música e fotos,o aviso diz que o mesmo não foi instalado com sucesso falta algo com php Bluetooth mais atualizado(meu net e um Windows 7)me ajude por favor responda no e-mail acima.Desde já fico grata

  13. Diego Garbs on March 10th, 2011

    Robson, achei muito legal seu post.
    Poderei disponibilizar mais informações sobre a utilização da Ethernet Shield?
    Vlw

  14. Nathalia on March 11th, 2011

    Oi!Não consigo fazer transferência de musicas e fotos do iPhone para outros telefones e o Windows 7,nada é compatível com ele…o que faço????me ajude por favor……..

  15. Romário on March 20th, 2011

    E ai Robson…cara faço ciencia da computaçao, e o ano passado comesamos a trabalhar com o arduino program-ME da Global Code, e surgia a ideia entre os alunos da sala em fazer a automaçao de uma casa usando o arduino, e essa ideia ja existia ou seja, a sua idea, achei o seu blog hj, e fikei vacinado, pq eu keria controlar o arduino por algum dispositivo movel, keria saber se vc poderia passar os FONTES e a documentaçao do seu trab, caso vc keria alguma especificaçao do nosso projeto, nome da faculdade, eu te passo, mas eu peso q vc possa colaborar com o nosso projeto, estou querendo trabalha com o arduino, mas eu nao conheço mto ele e a sua ajuda seria mto bom, meu email é romario_ocraque_32@hotmail.com ou romarioalbuquerque@bol.com.br, entre em contato cmg sobre os fontes e conti-me mais detalhes d como foi feito esse seu projeto, desde ja obrigado e fiko aguardando sua resposta
    abraço!

  16. jadson on March 21st, 2011

    vc tem o em arquivo os codigos usados para o progeto acender e apagar a luz usnado iPhone

  17. jadson on March 22nd, 2011

    vc tem como me dizer como faço 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 ???

  18. admin on March 23rd, 2011

    Baixa a IDE que eu falei no post.

    Você precisa do arduino ligado na usb também, para fazer isso.

  19. jadson on March 23rd, 2011

    admin é porque começamos a trabalhar com o arduina estamos prescisando q arquivos sobre codigos e linguagem do arduino n
    qualquer ajuda é bem vinda poderia nós ajudar ??
    o site do grupo ai http://arduinofsa.groups.live.com

  20. Matheus on April 8th, 2011

    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

  21. Leandro on May 11th, 2011

    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

  22. elvis on May 14th, 2011

    boa tarde amigo, sou iniciante em arduino e gostei do seu projeto, estou tendo problemas um pouco com a programação sera que a como você me dar algumas dicas?
    abraço

  23. admin on May 14th, 2011

    Quais as dúvidas ?

  24. murilo on May 14th, 2011

    Boa tarde amigo,ainda não consegui controlar varios pinos via wib,tem como me dar um exemplo?obrigado!

  25. Elvis on May 15th, 2011

    no meu caso estou fazendo um circuito para o portao abrir qnd for mandado o comando via web,creio que a programação eh semelhante mais nao estou conseguindo fazer, sera que tem como vc me mandar a programação, se nao for pedir mt?rsrsrs,
    grato

  26. Anderson on August 5th, 2011

    Bom dia Robson,

    Por acaso tem como agente trocar umas idéias sobre esse projeto,por favor entre em contato comigo,meu email é andersonlc_@hotmail.com

  27. Fabiano on August 8th, 2011

    Olá , sera que vc poderia disponibilizar o código que utilizou para fazer a relção entre arduino e o iphone??
    Grato

  28. Samuel on September 10th, 2011

    Prezado,
    Gostaria muito de aprender a programação para windows mobile acionando o Arduino. Não sei por onde iniciar.
    Poderia me ajudar com alguma informação?
    Abraço,
    Samuel.

  29. admin on September 10th, 2011

    Há algumas formas:

    1- Você conectar no arduino com cabo usb e usar comunicação serial;
    2- Comprar um shield e desenvolver um protocolo de comunicação com o arduino – pode ser via wifi, bluetooth, ou até cabo de rede;

    Não tem segredo!

    abs

  30. Samuel on September 11th, 2011

    A minha dúvida é a programação no windows mobile.
    Pretendo justamente a comunicação via rede ethernet wireless.
    Vi em chats que devo usar o Visual Studio. Mas a linha de código para acionamento e resposta eu estou em dúvida.
    Abraço,
    Samuel.

  31. Pedro Gama on October 5th, 2011

    \Robson,
    gostaria de usar bluetooth inves da internet. voce acha q e possivel ? vou encontrar mt problema no caminho ?

  32. Raphael on October 9th, 2011

    Robson, parabens pelo trabalho.

    Vc fala q a solução ideal pra vc, seria usando um shild wifi para o arduino, o q eliminaria alguns fios.

    Estou querendo fazer o mesmo projeto, e estou em duvida se compro o shild ethernet ou wifi, pois nao sei se a dificuldade em trabalhar com o shield wifi é maior, mto maior, a mesma, o q vc me diz?

    outra coisa, como é feita a comunicação com o “arduino wifi” e o iphone? ponto a ponto?

    vlw ai!

  33. admin on October 10th, 2011

    Raphael,

    A dificuldade é praticamente a mesma em usar wifi ou ethernet. A única coisa a mais do wifi é a antena, mas é tranquilo também.

    A comunicação com o arduino é feita via rede. No arduino roda um servidor web e meu iphone chama as paginas atraves dele, mandando comandos.

  34. admin on October 10th, 2011

    Pedro,

    Só comprar o shield de ethernet. Parear os dispositivos é simples, precisará apenas criar um protocolo para troca de mensagens entre o celular e o arduino e é claro, implementar algo no iphone para fazer automaticamente.

  35. Raphael on October 10th, 2011

    Continuando…

    Mas assim, como o iphone “acha” e se conecta ao shield wifi, é como se fosse uma rede wifi de um roteador, por exemplo?

    Pq pelo q eu entendi vc conectou ao wifi do roteador, ligado ao cabo ethernet no arduino, em seguida se conectou pelo navegador em um endereço IP, previamente configurado, estou certo?

    tem algum shield wifi melhor q o outro?pq encontrei mais de 1 modelo. E qual a diferença entre os arduinos(uno, 2009, etc.).

  36. Victormendes on October 19th, 2011

    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

  37. Samuel on November 10th, 2011

    Boa noite Rbson,
    Consegui desenvolver alguns programas no arduino. Estou usando ele como servidor dando um endereço IP.
    Quando abro a página no IP desejado aparece o status da minha saída.
    O problema agora é como acionar o led pela rede.
    Você têm algum programa como exemplo?
    Att,
    Samuel.

  38. Matheus on November 11th, 2011

    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 não determinada saída. 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 pretenção é acionar vários equipamentos e ter o status deles.
    Att,
    Samuel.

  40. Silvio on March 8th, 2012

    Ola, muito bom o projeto, mas ele teve conclusão?
    Poderia disponibilizar os códigos usados nesta etapa?
    Grato, Silvio

  41. DiegoFC on March 11th, 2012

    Olá, estou em um trabalho de faculdade e quero fazer algumas atuações sobre uma planta didática pela internet… a princípio, quero acender e apagar um LED pela página HTML, através de um botão… conseguindo isso eu consigo fazer o que quero… Matheus, poderia me encaminhar o programa que você fez para ligar as lâmpadas do seu quarto? Segue email: diegofc1986@gmail.com. Obrigado.

  42. admin on March 11th, 2012

    Silvio,

    Foi concluido sim. Faltou foi tempo para postar, devo fazer isso em breve e se precisar de algo, só falar.

    abs

  43. Diego on May 13th, 2012

    Amigo, muito bom o projeto. Têm como vc disponibilizar todos os códigos incluindo os passo de como montar o server e os códigos html?

  44. Hebel on May 24th, 2012

    Parabens pelo projeto,

    Estou contruindo algo similar, poderia disponibilizar o codigo fonte como exemplo?

  45. Andrea on July 13th, 2012

    Parabéns muito legal!!
    Porfavor Matheis, poderia também passar o código pra mim, estou tentando fazer um projeto, com uma Aplicação pra Android. Obrigada. meu email é :
    ivon-pm@hotmail.com

  46. Bruno on August 14th, 2012

    Parabéns pelo seu projeto, muito legal mesmo… sou iniciante com arduino e gostaria de fazer isso com meu quarto para começar 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.

  47. lucas on August 20th, 2012

    Bom dia Robson Dantas,

    Primeiramente gostaria de parabenizar pelo seu blog. Ficou muito legal! Como a maioria das pessoas que estão comentando, fiquei com um pouco de dúvida sobre como você fez em alguns passos e se complementou ou finalizou esse projeto?

    Minha primeira dúvida é como que funciona esse seu programa e como foi feita a interação entre o servidor web (apache) e o arduino?

    Minha outra dúvida é se após ligar a lâmpada se, pelo programa, você consegue ver o status atual dela (Ligada ou Desligada).

    E desculpe me intrometer também, mas seria possível disponibilizar o código? Meu email é lrehem@hotmail.com

    Obrigado pela atenção

  48. marcelo on August 21st, 2012

    Olá gostei muito do projeot e gostaria de saber se foi para frente?

    Outra coisa, poderia eu comprar essas placas : http://www.dealextreme.com/p/arduino-duemilanove-2009-atmega328-p-20pu-usb-board-blue-60cm-118078?item=3

    http://www.dealextreme.com/p/ethernet-shield-v1-1-for-arduino-66908?item=2

    Que o software funcionaria da mesma forma? O site é confiável o que não sei é se por serem genéricas tudo funcionaria normalmente.

    Teria como liberar os códigos para a gente?

    Abraços

  49. admin on August 25th, 2012

    Marcelo,

    Eu sempre compro na dealextreme. Obviamente que são clones do arduino, mas funcionam. Outra opção – mas mais caro, porém originais, é no site do sparkfun.com

    Sobre os fontes, e já respondendo pra todo mundo, assim que eu finalizar os trabalhos que estou executando eu posto.

    abs

  50. Robson Matos on August 28th, 2012

    Robson,
    Estou desenvolvendo um projeto com Arduino, porém 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, porém devido à sigilos não posso mencionar aqui na página.
    Podemos entrar em contato?
    Grato!

  51. Patrick on October 16th, 2012

    Robson, estou querendo desenvolver um sistema de captura de sinais (temperatura, pressao, voltagem….) do meu caminhao utilizando o arduino mas sou leigo no assunto e estou tendo dificuldade na aquisição das informações do motor. Ele trabalha com 24V. Pode me auxiliar ?

  52. Alfredo on October 26th, 2012

    Gostaria de saber com um unico circuito( com uma placa do arduino e uma do ethernet) eu consigo controlar varios dispositivos ou para cada equimamento eu tenha que ter um circuito? Lembando gostaria de comandar cada um separadamente

  53. Daniel Fernandes on January 15th, 2013

    Muito legal o seu projeto!
    Estou começando no mundo do “arduino” e gostaria de uma explicação; Queria saber se tem como controlar vários dispositivos (projetos) com um único arduino, por ex, acender uma lâmpada e ligar um microondas. Já me disseram que ñ tem como; sendo assim, o custo ficaria alto pois dependeria de comprar um arduino para cada projeto.
    Se possível gostaria da resposta no meu email,
    Obrigado

  54. Danielle on July 17th, 2013

    Olá Robson,

    gostei muito do seu projeto e gostaria de saber mais a respeito.
    Como funciona?
    Posso ligar diretamente na tomada?
    você disse sobre limites de vezes para utilização, já tem algo ilimitável?
    Isso tudo consigo fazer via iphone mesmo de longe?

    aguardo resposta.
    Muito obrigada e mais uma vez parabéns pelo projeto.

Vale Presente