45
Automação Residencial com Arduino na Prática - Parte 1 (Introdução) Nos últimos eventos e treinamentos da Globalcode, fizemos muitas palestras e demonstrações de como utilizar o Arduino para controlar dispositivos eletrônicos tais como lâmpadas, motores, fitas de leds RGB, etc. A intenção deste post é mostrar a vocês algumas ideias de como podemos implementar na prática tudo o que foi apresentado, ou seja, não só ver a coisa funcionando na bancada mas implementar de forma funcional e definitiva para que seja possível utilizar no dia a dia. Nos últimos meses, dediquei um pouco do meu tempo livre trabalhando no desenvolvimento de algumas placas para automatizar as coisas no meu apartamento. O objetivo principal durante esse desenvolvimento, foi tornar possível a automatização sem a necessidade da passagem de novos fios na instalação elétrica, e da forma mais simples possível para que qualquer pessoa com um conhecimento básico de elétrica conseguisse executar. Criei então uma pequena central de automação baseada em Arduino que se comunica por protocolo ZigBee (usei módulos XBee) com os diversos módulos espalhados pela casa. Esses módulos têm a função de ler os comandos solicitados pelos usuários informando para a central. A central analisa o tipo de comando recebido e envia a ação para o módulo correspondente à solicitação. A central também recebe comandos do celular/IPad via internet, dispensando a necessidade de um servidor. CENTRAL A central é formada por uma placa Arduino, um shield ethernet (responsável pela conectividade para o mundo externo via internet por celular, tablet ou browser), um módulo XBee para comunicação com os módulos de controle espalhados pela residência e um display OLED que fornece informações de funcionamento do sistema tais como:

Automação Residencial com Arduino na Prática

Embed Size (px)

Citation preview

Page 1: Automação Residencial com Arduino na Prática

Automação Residencial com Arduino na Prática - Parte 1 (Introdução)

Nos últimos eventos e treinamentos da Globalcode, fizemos muitas palestras e demonstrações de como utilizar o Arduino para controlar dispositivos eletrônicos tais como lâmpadas, motores, fitas de leds RGB, etc. A intenção deste post é mostrar a vocês algumas ideias de como podemos implementar na prática tudo o que foi apresentado, ou seja, não só ver a coisa funcionando na bancada mas implementar de forma funcional e definitiva para que seja possível utilizar no dia a dia.

Nos últimos meses, dediquei um pouco do meu tempo livre trabalhando no desenvolvimento de algumas placas para automatizar as coisas no meu apartamento.

O objetivo principal durante esse desenvolvimento, foi tornar possível a automatização sem a necessidade da passagem de novos fios na instalação elétrica, e da forma mais simples possível para que qualquer pessoa com um conhecimento básico de elétrica conseguisse executar.

  Criei então uma pequena central de automação baseada em Arduino que se comunica por protocolo ZigBee (usei módulos XBee) com os diversos módulos espalhados pela casa. Esses módulos têm a função de ler os comandos solicitados pelos usuários informando para a central. A central analisa o tipo de comando recebido e envia a ação para o módulo correspondente à solicitação. A central também recebe comandos do celular/IPad via internet, dispensando a necessidade de um servidor.

CENTRAL

A central é formada por uma placa Arduino, um shield ethernet (responsável pela conectividade para o mundo externo via internet por celular, tablet ou browser), um módulo XBee para comunicação com os módulos de controle espalhados pela residência e um display OLED que fornece informações de funcionamento do sistema tais como:- IP origem do comando (dispositivo OSC, IPAD ou celular)- Tipo de comando (ON, OFF, %dimmer)- Dispositivo que originou o comando- Mensagens API do XBee (Debug).

Podemos opcionalmente acoplar também um módulo RTC que permitirá ligar e desligar equipamentos em horários determinados automaticamente.

Abaixo temos fotos da central básica que instalei na parede da cozinha aqui em casa:

Page 2: Automação Residencial com Arduino na Prática

MÓDULOS DE CONTROLE

Cada módulo de controle é responsável pelo controle de um ou mais dispositivos, sendo que desenvolvi 4 tipos de módulos:

Módulo MA02

O MA02 permite o controle de dois relés e também a leitura de 6 chaves, sendo que duas das seis chaves podem ser substituídas por sensores analógicos tais como temperatura, umidade e distância.

Este módulo tem como núcleo um XBee que, com a configuração adequada, permite monitorar as chaves reportando automaticamente para a central quando alguma delas for pressionada. Podemos também acoplar sensores analógicos no lugar de duas das chaves

Page 3: Automação Residencial com Arduino na Prática

e configurar o módulo XBee para executar amostragens desses sensores em intervalos programáveis e enviar para a central.O MA02 possui uma fonte chaveada On-Board que permite alimentarmos ele diretamente com os 110 volts da rede elétrica, evitando assim a necessidade da passagem de uma rede DC de alimentação ou instação de uma fonte acoplada ao módulo.

Foto do módulo MA02

Modulo DIMMER

O módulo dimmer além de acomodar um dimmer digital que pode ser controlado remotamente ou através de um sensor de distância IR acoplado na placa, permite também o controle de um relê e a leitura de uma chave. O núcleo deste módulo é um microcontrolador ATMEGA328 (mesmo utilizado no Arduino). Nele roda um programa que controla o dimmer, sendo que nesta última versão do programa otimizei o código para ajustar automaticamente o ângulo de disparo do TRIAC conforme a frequência da rede, evitando assim aquelas piscadinhas indesejadas das versões anteriores. O controle do relê e a leitura da chave são executados pelo próprio XBee diretamente com suporte da central.

No lugar do sensor de distância deste módulo podem ser conectados outros tipos de sensores caso o dimmer  utilize apenas o controle remoto via celular/tablet.

Este módulo também possui a fonte chaveda On-Board, permitindo alimentação direta em 110 volts.

Page 5: Automação Residencial com Arduino na Prática

Módulo IR/RGB

Este módulo também permite controlar um relé e leitura de uma chave como no módulo dimmer (funções controladas pelo XBee). A comunicação com a central ocorre também por Xbee.Ele também possui como núcleo um ATMEGA328 que é responsável pela recepção e transmissão de sinais IR permitindo controlar dispositivos como televisores, ar condicionado, etc. Ele também possibilita controlar as luzes da casa usando por exemplo o controle remoto da TV. Temos também nesse módulo 3 transistores conectados a portas PWM do ATMEGA. Isto nos permite executar o controle de fitas de iluminação RGB, servo motores, etc.

Foto Módulo IR/RGB

Page 6: Automação Residencial com Arduino na Prática

Módulo de Comando

O módulo de comando é destinado aos locais onde não temos pontos de controle de lâmpadas mas que gostaríamos de ter. Ele também permite a instalação de sensores em qualquer ponto da casa, necessitando apenas de alimentação 110 volts. A comunicação com a central ocorre também por Xbee. Este módulo tem dimensões bem reduzidas. Ele tem capacidade para monitoramento de 6 chaves e 2 sensores analógicos. Esse módulo está atualmente em fase de produção da placa de circuito impresso, por isso ainda não tenho a foto da placa montada, apenas o desenho.

Foto módulo de comando

Page 7: Automação Residencial com Arduino na Prática

Todos os módulos de controle foram desenvolvidos de forma que possam ser acondicionados nas caixas 4x2 ou 4x4 existentes nas instalações residenciais.

Foto placa instalada dentro da caixa

Uma vez que instalamos esses módulos nas caixas existentes, não temos mais espaço para os interruptores originais, então desenvolvi a placa abaixo que encaixa nos espelhos PIAL da linha PLUS, (modelo bastante utilizado na maioria das construções novas), e que permite acomodar até 6 chaves de comando em caixas 4x2 e 12 chaves de comando em caixas 4x4.

Fotos placa SWB-6 (chaves de comando)

Page 8: Automação Residencial com Arduino na Prática

Foto placa SWB-6 (chaves de comando)-parte traseira

Obs: Podemos montar as chaves em diversos tipos de combinação para 1, 2, 3, 4, 5 e 6 comandos.

Foto conexão da placa de chaves ao módulo de controle

Page 10: Automação Residencial com Arduino na Prática

Para o acabamento final, desenhei em Autocad alguns modelos de paineis com configurações de 2, 3, 4e 6 chaves que foram cortadas a laser em acrílico branco, dando assim um acabamento bem legal junto com o espelho original.

Fotos acabamentos chaves

Page 11: Automação Residencial com Arduino na Prática

Foto montagem da placa de chaves no espelho Pial Legrand

Foto montagem painel acrílico

Page 13: Automação Residencial com Arduino na Prática

Uma vez automatizada, cada caixa permite o comando de até 6 lâmpadas diferentes.O legal deste sistema é que, como a leitura das chaves é enviada para a central e esta define qual relê será acionado, podemos configurar qualquer lâmpada que foi automatizada para ser controlada por qualquer botão de qualquer caixa.Por exemplo: Na caixa de comando acima que eu tinha apenas o controle da lâmpada do hall de entrada do meu apartamento, agora posso a partir dela acender e apagar as lâmpadas da sala de estar, sala de jantar, aquário, cozinha, terraço da sala além da lâmpada original do hall de entrada.

Controle utilizando celular ou Tablet

Além do controle pelas chaves de comando existentes nos módulos, podemos comandar todo o sistema de qualquer lugar que tenha conexão com internet. Para isso podemos utilizar um celular, tablet e até mesmo via browser em um PC.

No caso do controle via celular ou tablet, optei pela utilização do protocolo OSC (OPEN SOUND CONTROL) que é uma evolução do protocolo MIDI que foi desenvolvida para usar interfaces de rede mais modernas. Esse protocolo é excelente para controle em automação, pois ele tem uma resposta muito rápida. Além disso existe uma biblioteca pronta para Arduino chamada ARDOSC que facilita a utilização desse protocolo. No celular ou tablet podemos usar a aplicação TouchOSC. Para isso temos o aplicativo TouchOSC Editor que nos permite a customização das interfaces de comando com layout e botões personalizados sem a necessidade de se saber desenvolver em IOS ou Android.

Abaixo temos exemplos das telas de comando que desenvolvi para controle das lâmpadas aqui em casa.

Telas de comando para IPhone

Page 15: Automação Residencial com Arduino na Prática

Ao utilizar um tablet como IPAD, como as dimensões da tela são mais generosas, podemos agrupar todos os comandos em uma única tela e até colocá-los em um layout que reproduza fielmente a planta do imóvel (veja modelo que fiz para meu apartamento onde tenho o comando de todas as lâmpadas na foto abaixo).

Tela de comando para IPad

Page 17: Automação Residencial com Arduino na Prática

- áreas delimitadas por linha vermelha definem os cômodos do apartamento.- áreas delimitadas por linhas verdes definem as áreas de comandos touch para lâmpadas de teto.- áreas delimitadas por linhas azuis definem as áreas de comandos touch para lâmpadas outros tipos.- áreas delimitadas por linhas roxas definem as áreas de comandos touch para lâmpadas dimerizadas.

Estou preparando um vídeo com uma demonstração prática do funcionamento de alguns comandos sendo executados via chave e via celular/Ipad que em breve colocarei aqui no post.

Esta primeira parte foi uma introdução da ideia de como automatizar com o Arduino.Nos próximos posts darei mais detalhes do funcionamento de cada módulo e também mostrarei exemplos dos códigos.

Espero que gostem da ideia e que se divirtam como eu.

Abraços

Page 18: Automação Residencial com Arduino na Prática

Automação Residencial com Arduino na Prática - Parte 2 (Interface OSC)

Neste post vou descrever o processo de configuração para a comunicação entre o dispositivo móvel de comando (Iphone/Ipad/Ipod/Android) e o Arduino que é o núcleo da central de Automação.

Para estabelecer essa comunicação utilizaremos  o protocolo OSC (Open Sound Control) que é uma evolução do protocolo MIDI adaptada para transporte via TCPIP.

Mais informações sobre o protocolo OSC podem ser obtidas aqui.

As principais vantagens de usar esse protocolo são as seguintes:

Apresenta resposta rápida aos comandos Biblioteca ARDOSC disponível para Arduino Disponibilidade de ferramenta simples para o desenvolvimento de interfaces gráficas customizadas para Iphone, Ipad, Ipod, e Android chamada TouchOSC Editor. Com essa ferramenta, não é necessário conhecer nada de programação IOS para desenvolver interfaces gráficas de comando para automação.

A biblioteca recotanaARDOSC trabalha em conjunto com a biblioteca Ethernet oficial do Arduino, sendo assim qualquer shield ethernet baseado no chip W5100 deve funcionar sem problemas.

A versão da Lib ARDOSC indicada no link acima é compatível com a IDE 1.0 do Arduino, sendo que recomendo utilizarem essa versão.

A biblioteca ARDOSC torna bastante simples a configuração da comunicação OSC no Arduino, pois além

Page 19: Automação Residencial com Arduino na Prática

das definições de interface de comunicação, temos apenas que definir quais são as rotinas que devem ser executadas para cada comando OSC recebido.

Para executar esta demonstração de comunicação OSC , serão necessários os seguintes componentes:

Arduino Shield Ethernet 2 leds 2 resistores de 1K 2 chaves tactil fios para conexão protoboard Roteador WiFi (pode ser o existente na sua rede

residencial) dispositivo móvel (Iphone,Ipad,Ipod ou Android)

A idéia básica é ligar e desligar 2 leds conectados ao arduino, a partir da tela de um dispositivo móvel (Iphone, Ipad, Ipod ou Android). Além disso poderemos também controlar os leds a partir de duas chaves conectadas diretamente no Arduino, sendo que neste caso o status dos Leds deverão ser atualizados na tela do dispositivo móvel.

1o Passo  (Criar a interface gráfica de comando no TouchOSC Editor)

Neste primeiro passo criaremos uma tela customizada para o dispositivo de controle, que pode ser um IPhone,Ipad,Ipod ou Android. Para isso utilizaremos o aplicativo TouchOSC Editor que está disponível aqui .

Depois de baixar e instalar a versão do aplicativo TouchOSC Editor compatível com o seu sistema operacional, abra o aplicativo.

Page 20: Automação Residencial com Arduino na Prática

Na janela abaixo, selecione as opções de “Layout Size“ e ”Layout Orientation” confome seu dispositivo móvel .

Adicionar legenda

Obs: O campo "Page Name" não é importante neste teste, porém ele pode ser utilizado num sistema de automação mais elaborado para identificar o ambiente controlado pelos comandos da página. (ex: cozinha. sala, dormitórios, etc). Toda vez que for selecionada uma página diferente, um comando OSC será enviado para o Arduino com o "Page Name" correspondente a página selecionada. Essa informação poderá ser utilizada no Arduino para devolver para o celular o status das lâmpadas daquela página .

Clicando na aba cinza com o botão direito do mouse, podemos adicionar outras páginas a nossa interface e cada página pode conter botões de comandos diferentes, semelhante as telas que mostrei no primeiro post deste tema. Podemos assim dividir a casa em setores, onde cada página contem os comandos de um setor da residência.

Para inserir os controles na página, clique com o botão direito do mouse na parte preta da tela e selecione o tipo de controle desejado. (neste caso use o ”toggle button”)

Page 21: Automação Residencial com Arduino na Prática

Surgirá um objeto do tipo ”toggle button” na tela que poderá se dimensionado confome desejado.

Defina um nome para o togge button no campo "Name"

Selecione a cor desejada para o botão em Color   Desmarque a opção auto em OSC e na caixa logo

abaixo digite o commando OSC que deseja associar a esse botão (neste caso vamos usar  "/ard/led1"  (sem aspas))

Defina Value Range como (From=0 e To=1) * 

* (esses são os valores de argumento que serão enviados com o comando OSC ”/ard/led1” quando o botão mudar de estado)Neste caso:Botão desligado: envia 0Botão acionado: envia 1

Para criar o segundo segundo botão de controle, clicar novamente com o botão direito do mouse na parte preta da tela e selecionar ”toggle button”

Page 22: Automação Residencial com Arduino na Prática

Configurar o Segundo toggle buttom conforme figura acima:

Uma vez finalizado clique em ”save “, escolha onde quer salvar e dê um nome para o layout .

Existem vários outros tipos de objetos de comando que podem ser utilizados, inclusive labels que podem identificar os botões e incrementar o aspecto visual da interface, porém neste exemplo vamos criar apenas os dois toggle buttons necessários para a nossa demostração.

Page 23: Automação Residencial com Arduino na Prática

Para disponibilizar o layout que criamos e transferir para o dispositivo móvel, basta clicar em ”Sync” no TouchOSC Editor e em seguida executar no Iphone, Ipad ou Ipod o procedimento descrito abaixo .

2o passo   (Instalar e configurar o TouchOSC no dispositivo móvel)

Baixar o TouchOsc para seu dispositivo móvel na apple store ou na Google Play.

Ao executar o TouchOSC pela primeira vez aparecerá a janela abaixo:

Selecione a primeira opção “OSC: Not Configured” 

Page 24: Automação Residencial com Arduino na Prática

Posicione a opção Enabled em ON. Indique em Host o IP definido para o seu Arduino.  Em Port (outgoing) indique a porta definida para

serverPort no código do Arduino. Em Port (incoming) indique a porta definida para

destPort no código do Arduino.

O campo Local IP Address é o IP atribuido atualmente ao dispositivo móvel. Ele é informado automaticamente pelo aplicativo TouchOSC.

Toque em TouchOSC no canto superior esquerdo da tela para retornar ao menu inicial (tela abaixo).

Page 25: Automação Residencial com Arduino na Prática

As opções MIDI Mobilizer e CoreMIDI podem ficar em Disabled.

Para adicionar ao dispositivo móvel o novo layout que criamos no TouchOSC Editor, toque em Layout (Simple) e então na tela abaixo clique em Add.

Page 26: Automação Residencial com Arduino na Prática

Neste momento deverá aparecer uma tela semelhante a esta abaixo, porém indicando que um host foi encontrado. (será indicado o nome do seu PC onde está o layout que criamos).

Importante: o PC e o dispositivo móvel deverão estar conectados na mesma rede para que seja possível transferir o layout.

Page 27: Automação Residencial com Arduino na Prática

Toque no host que foi encontrado e o layout será transferido para o dispositivo móvel.

Toque então em Layout e selecione o novo layout que foi transferido.

Depois toque em Done.

O layout novo que criamos será apresentado na tela e já estará pronto para usar.

Mais detalhes sobre esta configuração podem ser obtidos na documentação do TouchOSC que pode ser consultada aqui.

Para layouts customizados para dispositivos Android, consultar a documentação aqui.

3o Passo  (montar o circuito no Arduino e carregar o código)

Bem agora só falta montar os componentes adicionais e carregar o código no Arduino para ele interpretar as mensagens OSC e controlar os LEDs.

A montagem dos componentes no Arduino deverá ser executada conforme foto abaixo:

Page 28: Automação Residencial com Arduino na Prática

A seguir temos o código arduino que utilizaremos nesta demonstração onde comentei cada linha para facilitar o entendimento:

Page 30: Automação Residencial com Arduino na Prática

O código acima permite controlarmos os 2 leds do circuito a partir da tela do celular.

Na primeira parte do código, temos as definições da interface Ethernet e portas utilizadas pelo protocol OSC.

Notem que temos as portas serverPort e destPort.

Serverport é a porta que o Arduino receberá as mensagens OSC que o dispositivo móvel (Iphone/Ipad/Ipod/Android) envia.

DestPort é a porta que o arduino vai usar para enviar mensagens OSC para o dispositivo móvel (Iphone/Ipad/Ipod/Android).

O arduino poderá enviar mensagens OSC para o dispositivo móvel quando for necessário atualizar o status dos LEDs. Isso acontecerá quando eles forem ligados ou desligados a partir das chaves tactil conectadas no Arduino.

No cenário real de automação essas chaves estarão nos módulos remotos (MA02, Comando, Dimmer ou IR/RGB) que terão comunicação ZIBEE com o módulo central através dos XBees.Este tema será abordado no próximo post (parte 3).

No método "setup", fazemos a associação dos comandos OSC com as rotinas que deverão ser executadas para cada um deles.

  server.addCallback("/ard/led1",&func1);  //define que a rotina "func1" sera executada para o comando OSC "/ard/led1"

Page 31: Automação Residencial com Arduino na Prática

  server.addCallback("/ard/led2",&func2);  //define que a rotina "func2" sera executada para o comando OSC "/ard/led2"

No método "setup" também são configurados os modos de operação das portas dos leds e ativados os resistores de PullUps internos para as portas das chaves.

Finalmente no método loop temos leituras das chaves e as rotinas específicas para cada comando OSC.

Os comandos OSC podem conter valores dos seguintes tipos:

- Int32- Float- String

No nosso exemplo vamos receber argumentos Float por isso utilizaremos (int)_mes->getArgFloat(0)

Basicamente uma mensagem OSC tem as seguintes informações:

OSCAdr (identificação do comando que se quer enviar) destIP  (endereço IP do destino da mensagem) destPort  (porta utilizada para envio da mensagem) Arg (argumento associado ao OSCAdr que pode ser do tipo

Int32, Float ou String)

Para montar e enviar uma mensagem OSC no Arduino, usamos as seguintes linhas de comando:

OSCMessage txMes;  //cria uma nova mensagem OSCtxMes.setAddress(destIP,destPort);  //define endereço IP e porta do destino da mensagem OSCtxMes.beginMessage("/ard/led1");  //define comando

Page 32: Automação Residencial com Arduino na Prática

OSC

txMes.addArgFloat(!state);  //define argumento Float que sera enviado client.send(&txMes);  //envia mensagem OSC 

Para adicionar argumentos na mensagem OSC podemos usar as seguintes opções:

txMes.addArgInt32(int);txMes.addArgFloat(float);txMes.addArgString(string);

Abaixo temos um diagrama com as associações entre os parâmetros inseridos no TouchOSC e o código no Arduino:

Page 33: Automação Residencial com Arduino na Prática

Abaixo um video demonstrando o funcionamento do que foi apresentado nesta parte 2 do tópico Automação Residencial com Arduino na Prática .

Page 34: Automação Residencial com Arduino na Prática

Conectando Xbee ao ArduinoPublicado: 15 de setembro de 2010 em Xbee, ZigBee - Xbee

0

Xbee são módulos de rádio para efetuar comunicação serial entre dois pontos (ponto a ponto, ponto a multiponto e etc), conta com protocolo Zigbee e assim garante fidelidade na conexão. Estes são produzidos pela DIGI (antiga MaxStream) e possui duas versões a série 1 e 2. Série 1 e 2 não se comunicam entre si e ambas possuem modelos bem semelhantes:

Xbee 1mW, antena tipo fio, RSPMA ,UFL e chip. A distância de comunicação chega até 40m em ambientes fechados e 100m em ambientes abertos.

XbeePRO 50mW, antena tipo fio, RSPMA ,UFL e chip. A distância de comunicação chega até 300m em ambientes fechados e 1600m em ambientes abertos.

Xbee 1mW

Page 35: Automação Residencial com Arduino na Prática

 Xbee Shield para Arduino

O Xbee utiliza o protocolo ZigBee que este por sua vez utiliza como base o protocolo IEEE 802.15.4.

Utilizações:Automação Residencial: Controle de Iluminação, Alarmes, Controle de Temperatura;Automação Predial: Controle de Temperatura, Telemetria Elevadorista, Controle Elétrico;Automação industrial: Telecontrole de Sensores, Terminais Inteligentes, Comunicação com Centrais.Automação Comercial: Geradores de Senhas, Terminais Inteligentes, Software simultâneo;

Em nosso caso vamos criar uma conexão entre dois Xbee utilizando o Arduino e o PC.

Materiais Necessários:2 Shield Xbee para Arduino;2 Arduino (um deles sem o microcontrolador, cuidado ao retirar para não entortar os seus pinos);2 Módulos Xbee;1 Bateria 9V para alimentar o Arduino extra;1 Caso USB (A-B) para conectar o Arduino ao PC;

Configuração InicialDe fábrica cada módulo Xbee vem configurado com uma PANID (número que identifica a rede) de número 3332 e configurados com uma taxa de transmissão de 9600 baud, com dados de 8 bits sem paridade e 1 bit de parada.

Cada Xbee Shield tem um par de jumpers para definir se a comunicação serial se realiza pela porta USB ou pelao próprio Xbee. Como primeira tentativa vamos configura-lo para interagir com a porta USB, isso significa colocar os jumpers na posição externa dos pinos, na figura abaixo pode-se ver como ficaria.

Page 36: Automação Residencial com Arduino na Prática

Configuração dos jumpers do shield

Podemos utilizar o programa HyperTerminal do Windows para começar a configurar o módulo Xbee. Outra alternativa seria usar o Serial Monitor que vem integrado com a IDE do Arduino ou o programa Bray++ Terminal.

O comando necessário para começar a programar o módulo é “+++”, ou seja três simbolos de soma consecutivos. Teclando-os devemos receber como resposta um “OK”.

Bray++ Terminal estabelecendo conexão com Xbee

Page 37: Automação Residencial com Arduino na Prática

Uma vez estabelecida a conexão só temos 5 segundos para interagir com o módulo. Depois deste tempo, o módulo regressa a seu estado nativo e para voltar a conexão deve redigitar “+++”.

Cada comando que mandamos ao Xbee deve ser precedido pelas letras AT (de AT Command = Comando AT)

A tabela de comandos mais usuais pode ser encontrado na página dedicada no site do Arduino.

Usaremos para conexão ao PC a placa Arduino sem o microcontrolador ATMEGA. A razão para isto é que desta maneira podemos diretamente interagir pelo USB com o módulo Xbee.

Para este exemplo proponho a seguinte configuração: uma PANID de 3332, um módulo com endereço ‘0’ e o outro com ‘1’. O módulo com endereço ‘0’ será o que  vai estar conectado ao PC e o módulo com endereço ‘1’ será o módulo remoto.

Para configurar o primeiro com a endereço ‘0’, 9600 baud, 8 bits, sem paridade, com 1 bit de parada e comunicação com o módulo de ID1 usamos os seguintes comandos:

ATID3332DH0DL1MY0BD3WRCN

As letras AT indicam ao Xbee que vamos lhe enviar comandos.ID3332: Define PANID de 3332;DH0: Define direção ‘1’, com quem o Xbee estará se comunicando;    DL1: Define direção ‘1’, com quem o Xbee estará se comunicando; MY0: Define endereço ‘0’, próprio endereço;BD3: Define velocidade em 9600 baud;WR: Faz a gravação do módulo;CN: Encerra conexão com o módulo;

Passo seguinte é conectar o segundo Xbee Shield ao Arduino sem microcontrolador. Configuramos da mesma maneira:ID3332: Define PANID de 3332;DH0: Define endereço ‘1’, com quem o Xbee estará se comunicando;    DL1: Define endereço ‘1’, com quem o Xbee estará se comunicando; MY0: Define endereço ‘1’, próprio endereço;BD3: Define velocidade em 9600 baud;WR: Faz a gravação do módulo;CN: Encerra conexão com o módulo;

Depois de terminada a configuração dos módulos estamos aptos de estabelecer uma conexão cpm os módulos.

Page 38: Automação Residencial com Arduino na Prática

Programando o Arduino remotoVamos colocar o módulo Xbee com endereço ‘1’ no Arduino que tem o microcontrolador e vamos programar nele um código que envia via Serial um número. Também vamos incluir uma leitura da porta serial para saber se foi recebido um caracter em particular e se caso for afirmativos iremos trocar o estado de um LED conectado ao pino digital 13.

É importante remover o módulo Xbee dete Arduino enquanto programamos, para que possamos estabelecer a comunicação serial.

int numero = 0;char recepcao;int estado = 1;

void setup() {Serial.begin(9600);}

void loop() {Serial.print(numero);Serial.println();delay(1000);numero++;// ler da serialrecepcao = Serial.read();if (recepcao == ‘x’){estado = !estado;digitalWrite(13,estado);}}

Depois de carregar este código podemos testa-lo abrindo uma conexão serial entre o Arduino. Devemos observar o numero ascendente e quando enviamos o caracter ‘x’ devemos observar uma troca do estado do LED conectado ao pino 13

Provando a comunicação sem fioUma vez programado o Arduino vamos desconectar o jumper USB e colocar no outro, aonde possamos alimenta-lo com uma bateira 9V. Também vamos conectar o Xbee para que possa começar a comunicação serial sem fio. Devemos nos assegurar que os jumpers do interior do Arduino estejam em ‘Xbee”’. No PC vamos conectar o Arduino sem microcontrolador com o Xbee shield de endereço ‘0’ e vamos abrir o Hyper Terminal, depois de alguns segundos devemos começar a observar o numero recebido do endereço ‘1’ em ascendencia e quando teclamos a tecla ‘x’ conferimos se o LED mudou de estado.

Page 39: Automação Residencial com Arduino na Prática

Recebendo os dados pelo Hyper Terminal do Windows

Espero que gostem do exemplo e o desenvolvam com sabedoria. Xbee é uma ferramenta implantada no Brasil em meados de 2007 e está em plena expansão

Em caso de dúvidas, fiquem a vontade para fazer perguntas, tanto nos comentários como por email.

Até lá.