Pages: 1 ... 19 20 [21] 22 23 ... 30   Go Down
Author Topic: Automação residencial em módulos  (Read 65272 times)
0 Members and 1 Guest are viewing this topic.
aracaju/se
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

holdman_2004,

bem-vindo ao clube smiley-grin

Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Olá a todos, depois de ler este topico e outros forums tambem estou como voces a tentar descobrir qual a solução ideal para uma automação residencial.
Em tempo já trabalhei com uma empresa portuguesa que fazia a implementação de domotica em casas em fase de construção o que parede ser o caso de alguns.
Pois bem em minha opiniao e pela experiancia que tive a melhor opção é sem sombras de duvida um barramento rs485 e alimentação de caixa em caixa eles utilizavam um cabo com 2x1mm preto e vermelho para os 12V e dois 0,5 entrelançados para os dados. Uma fonte de 12v para todos os modulos e posso dizer-vos que a maior parte das casas já funcionam a mais de 5 anos sem problemas, as vezes uma ou outra fonte vão ao ar mas isso é normal.
A grande entrave era o preço, daí eu andar por aqui a tentar desenvolver o  sistema para a minha casita que tem que ser uma coisa low-cost.

Eu não discordo do que dizes que uma rede com fios é melhor que uma rede wireless. Prova disso é o facto que aplicações wireless ainda não são muito utilizadas na indústria e sempre que possível é usado um profibus ou semelhante baseado no RS-485.
Mas para algumas aplicações ou em casas velhas, passar canalizações novas incorre num custo que pode ser proibitivo para o benefício que se tira do sistema.

Esta solução dos rádios nRF24L01 creio ser boa... mas ainda não vi como funciona em rede. Até agora só usei de ponto a ponto.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No meu caso a aplicação é nova, estou colocando eletrodutos entre todos os nós, então o RS-485 possível sem muitos problemas. Mas me assustei quando fiz o teste de bancada com 3 nós (1 master e 2 slaves) e a falha de um nó (na alimentação) causou falha na comunicação dos outros dois nós. Não sei se o fato de eu estar utilizando o CI SN17576, que é bem antigo, foi o problema, mas fiquei com um pé atrás em utilizar o RS-485, pois se for dessa forma mesmo, uma falha em um nó vai causar toda a rede a parar de funcionar, e descobrir qual é o nó problemático vai ser complicado.

Por conta disso e pensando deixar a rede mais "robusta" (mais facilmente expansível e com mais possibilidades), estou começando a estudar o nRF24L01+, que é um padrão wireless relativamente seguro e difundido, com bastante possibilidades e barato (o módulo sai por pouco mais de 1 dólar!). Vou começar a fazer alguns experimentos essa semana, já encomendei um módulo com antena externa, vamos ver qual a capacidade de comunicação desses bichinhos. Mas de último caso, existem bibliotecas que implementam rede mesh com comunicação full duplex. Há limitações, mas acredito que é uma boa solução.
Logged

aracaju/se
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Finalmente tive tempo. Esta aí minha primeira versão da placa de interruptor Simples (caixa 4x2).
Tem controle de duas cargas, 2 molex para botão touch + led e 3 molex para sensores analógico ou digital.
Ainda falta a malha GND.

Sugestões?


* teste1.png (116.42 KB, 805x1265 - viewed 98 times.)
Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Parabéns, mardden, ficou muito organizado! Queria conseguir organizar desse jeito xD.

Também consegui um tempo, no meu caso fiz experimentos com o nRF24L01+. Depois de quebrar a cabeça para entender porque o exemplo só funcionava quando queria (linhas comentadas demais), achei o resultado bem satisfatório. O alcance foi melhor do que eu esperava, para módulos tão pequenos. Essa semana deve chegar o módulo com antena, daí testo tanto o alcance de transmissão quanto de recepção.

E se o módulo com antena não resolver o problema, devo utilizar o RF24Network. Mas mesmo que o alcance seja bom com a antena, e não seja necessário fazer uma rede (o master consegue se comunicar diretamente com todos os slaves), a vantagem de utilizar a RF24Network é que o master não vai precisar questionando sempre os slaves sobre os estados: quando houver algum evento, o slave pode se reportar diretamente ao master, o que com o RS485 não é possível.

Gostei tanto que fiz uma outra PCI, dessa vez utilizando o nRF24L01+ e um módulo LM2596 externo para fornecer 3.3V para o sistema (não me senti muito confortável com o LM2576, uma de minhas placas já estava com problema no step-down, e o custo iria sair maior do que comprar essas placas prontas).

Depois de uma revisão nas placas, devo encomendar algumas para teste smiley-grin.

edit: testei a classe RF24Network, e pelo menos a comunicação entre dois pontos funciona muito bem! Tempos pequenos entre comando e resposta, biblioteca simples de usar, estou cada vez mais decidido a ficar no nRF24L01+ mesmo smiley-grin.


* Slave TRIAC nRF24L01+.png (100.51 KB, 835x578 - viewed 80 times.)
« Last Edit: September 29, 2013, 09:17:54 pm by LegendBR » Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E quanto ao módulo com antena externa com amplificador de sinal (nRF24L01 + PA + LNA), será que ele além de ter mais potência de transmissão também tem um maior alcance de recepção?

Respondendo minha própria pergunta: acho que esses módulos só funcionam com alcance estendido em par/rede. Testei comunicar um módulo com antena e outro sem, e o alcance é praticamente o mesmo se estivesse utilizando dois módulos sem antena. Então vai na topologia de árvore mesmo, mas não devo ter problema.

O próximo passo é testar essa topologia. Depois vou testar três módulos (raiz - tronco - folha) para ver se a biblioteca funciona bem mesmo.
Logged

aracaju/se
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Opa LegendBR, Obrigado. Fiz o roteamento manualmente módulo por módulo. Primeiro a fonte, depois os triacs+moc, rs485 e por último o atmel. No início você acha que não vai caber tanto componente na plaquinha, mas no final consegui deixando as trilhas em apenas uma face. Fiz uns testes com dryfilm na confecção da pcb e gostei muito do resultado. Acho que eu mesmo vou confeccionar as pcb's. No final de semana vou fazer uma com esse layout e posto as fotos aqui.

A proposta do nRF24L01 é muito boa, principalmente para usar em casas já construídas. Não precisa fazer muita mudança na estrutura.

Como estou construindo praticamente do zero, tive mais liberdade na distribuição dos eletrodutos. Atualmente a parte de conduítes, reboco esta tudo pronto. O pedreiro começou a colocar o revestimento hoje. Ou seja, estou bem atrasado no projeto smiley-sad

Vou continuar seguindo o raciocínio da rede RS485 e fonte chaveada com LM2576. Alias já comprei todos os componentes menos os atmel. Minha idéia é alimentar os circuitos com uma fonte de computador (de boa qualidade claro) pegando a saída de 12V. Caso uma fonte não seja suficiente por causa da distância, colocarei outra no meio do caminho (deixei espaço para isso).

LegendBR, você tem exemplo ou fez algum documento sobre a última versão de sua lib do rs485?

Sobre sua placa, a luz do led não vai atrapalhar a iluminação dos botões touch? O espelho é outra coisa que estou pensando em como fazer. Acho que vou desenhar e levar para alguma gráfica que faz plotagem com vinil. A liberdade na criação esta limitada apenas na imaginação. Vi um conceito muito interessante de interruptor que tinha o formato da planta da casa. Cada cômodo seria um botão. Pensei em fazer uma outra pcb onde iria os leds smd + antena touch e colar atrás do espelho.

Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

LegendBR, não tiveste problemas com falhas de comunicacão?

Eu usando a biblioteca do ManiacBug de quando em vez tinha pacotes que chegavam, outras que o feedback não chegava.
Quando me aventurei em fazer código com a biblioteca tinha um pacote que chegava e perdia prai uns 20 para esse chegar. Foi quando percebi que a funcão de envio desligava o chip e aí, depois de mudar a lib, as coisas melhoraram mas ainda caíam pacotes.
Tu notaste isso?

O que eu reparo é que estes chips são algo difíceis para estabelecer uma comunicacão bidireccional uma vez que o chip ou fala ou ouve a cada instante. Então numa configuracão como a que vocês estão a criar vai ser um desafio interessante de conseguir escalonar isso. smiley



Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@mardden

Fiz o roteamento manual também, mas mesmo assim não consegui fazer ficar tão bom quanto o seu, hehehe. E as minhas vou mandar fazer fora mesmo, o custo no final das contas deve ficar quase a mesma coisa do que se eu fosse fazer, e fica muito mais bem feita.

No meu caso, que estou construindo do zero e também passei eletrodutos extra por todas as caixas de luz, vou acabar ficando com o nRF24L01+ mesmo. Se no futuro quiser colocar o RS485, é possível, assim fico com mais liberdade. O que me desanimou no RS485 foram meus testes com 3 nós (2 slaves e 1 master), onde quando a parte elétrica de um módulo deu problema, toda a comunicação deixou de funcionar. Não sei se o problema foi o chip utilizado (SN17576), mas fiquei com um pé atrás, pois no caso de falha de um nó, identificar o nó defeituoso seria muito difícil! Se tivesse mais de um, então, nem quero pensar no trabalho!

Eu até tenho exemplo da lib sim, documentação não cheguei a fazer, mas quando chegar em casa envio para você com em breve explicação smiley-wink.

O espelho estou pensando em mandar fazer de acrílico, com os botões já desenhados. Pensei nessa solução porque quando falei com um amigo que os botões poderiam ser brancos, ele me lembrou que eles poderiam sujar e dificultar a limpeza, o que é fato. Mas se eu fizer de acrílico, com os botões desenhados por dentro, é tranquilo, sem contar que não terei o trabalho de fazer um por um (colar o vinil, cortar cada um, etc.). O difícil é descobrir a(s) empresa(s) daqui de Aracaju que façam esse serviço, hehehe.

Sobre os botões do interruptor, fiz um teste com 6 botões capacitivos em uma moldura para caixa de 4"x4", e o resultado é um pouco aleatório. Ele começa funcionando bem, depois começa a não funcionar, enfim, não fiquei muito satisfeito. Então comprei uma tela touch-screen para fazer um teste, acho que vai ficar legal e vai ser muito mais confiável. Vamos ver como vai ficar.

Sobre o led da placa, acho que não vai atrapalhar não, pois vou colocar um conezinho atrás do botão para direcionar a luz do led de cada um, então esse cone deve bloquear a luz do led da placa.


@bubulindo

Então, no começo dos meus testes eu tinha comentado a linha do powerdown(), como você falou, porque também estava tendo problema de comunicação. Mas depois que descobri qual era o problema (linhas comentadas no exemplo, no setup()), tirei o comentário do powerdown (se não me engano) e passou a funcionar sem problemas. Só não consigo feedback quando as placas estão muito distantes, ou o intervalo entre as perguntas são MUITO curtos (do tipo perguntou-respondeu-perguntou-respondeu, praticamente sem intervalo entre eles), aí perco algumas respostas. Mas tendo um intervalo entre as perguntas, funciona bem.

Ah, e o meu mega funciona 100% com o nRF24L01+,  ele mesmo alimentando os 3.3V.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok...
É estranho. Eu dava um segundo entre pergunta e resposta. Isso devia ser suficiente, creio.

Quanto ao mega... o meu é Chiduino, por isso, pode ser esse o problema. Eu li que havia mais gente com problemas, mesmo com oficiais, mas isso é sempre uma sorte, né?

Vou tentar fazer mais testes quando chegar a casa. Desta vez tentando ter mais nós ligados... quando chegar já devo ter uns quantos Nano à minha espera. smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

O meu também não é o oficinal não, é esse aqui: http://dx.com/p/mega-2560-r3-atmega2560-16au-board-usb-cable-for-arduino-black-blue-215579

edit: entre pergunta e resposta eu só dava um delay de 1 ms, pode ser isso...
« Last Edit: October 01, 2013, 08:05:51 am by LegendBR » Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Acabei de testar o RF24Network, e funciona direitinho mesmo. Segue código:

Master:

Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9,10);

RF24Network network(radio);

#define THIS_NODE 00

#define INTERVAL 1000
#define TIMEOUT 500

struct message_t
{
  unsigned long ms;
  unsigned long counter;
};

unsigned long lastTimeSent;

byte OTHER_NODE = 01;

void setup(void)
{
  Serial.begin(115200);
 
  SPI.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.begin();
  network.begin(90, THIS_NODE);
 
  lastTimeSent = 0;
   
}

void loop()
{
  network.update();
 
  unsigned long now = millis();
 
  if ((now - lastTimeSent) >= INTERVAL)
  {
    message_t message = {now, 1};
    RF24NetworkHeader header(OTHER_NODE);
   
    lastTimeSent = now;
   
    if (network.write(header, &message, sizeof(message)))
    {
     
      while (!network.available() && ((millis() - now) < TIMEOUT))
      {
        network.update();
      }
     
      if ((millis() - now) < TIMEOUT)
      {
        while (network.available())
        {
          RF24NetworkHeader headerReceived;
          message_t receivedMessage;
          network.read(headerReceived,&receivedMessage,sizeof(receivedMessage));
         
          Serial.print("Sent: ");
          Serial.print(message.ms);
          Serial.print(", received: ");
          Serial.print(receivedMessage.ms);
          Serial.print(", from node: ");
          Serial.print(headerReceived.from_node);
          Serial.print(". It took: ");
          Serial.println(millis()-now);
        }
       
      }
      else
      {
        Serial.print("TIMEOUT! Node ");
        Serial.println(OTHER_NODE);
      }
    }
    else
    {
      Serial.print("Falha no envio!!! Node ");
      Serial.println(OTHER_NODE);
    }
   
    if (OTHER_NODE == 01) OTHER_NODE = 011;
    else                 OTHER_NODE = 01;
   
  }
 
}

Slave 1:

Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9,10);

RF24Network network(radio);

#define THIS_NODE 01

struct message_t
{
  unsigned long ms;
  unsigned long counter;
};

void setup(void)
{
  Serial.begin(115200);
 
  SPI.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.begin();
  network.begin(90, THIS_NODE);
 
  pinMode(4, OUTPUT);
 
}

void loop()
{
  network.update();
 
  while (network.available())
  {
    message_t receivedMessage;
    RF24NetworkHeader header;
   
    network.read(header, &receivedMessage, sizeof(receivedMessage));
   
    digitalWrite(A0, HIGH);
    delay(20);
    digitalWrite(A0, LOW);
   
    Serial.print("Received ms: ");
    Serial.print(receivedMessage.ms);
    Serial.print(", from node: ");
    Serial.print(header.from_node);
   
    RF24NetworkHeader sendHeader(header.from_node);
    receivedMessage.ms += 35;
       
    if (network.write(sendHeader, &receivedMessage, sizeof(receivedMessage)))
    {
      Serial.println(" ... answer sent.");
    }
    else
    {
      Serial.println(" ... error sending answer.");
    }   
   
  }
}

Slave 2:

Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9,10);

RF24Network network(radio);

#define THIS_NODE 011

struct message_t
{
  unsigned long ms;
  unsigned long counter;
};

void setup(void)
{
  Serial.begin(115200);
 
  SPI.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.begin();
  network.begin(90, THIS_NODE);
 
  pinMode(4, OUTPUT);
 
}

void loop()
{
  network.update();
 
  while (network.available())
  {
    message_t receivedMessage;
    RF24NetworkHeader header;
   
    network.read(header, &receivedMessage, sizeof(receivedMessage));
   
    digitalWrite(A0, HIGH);
    delay(20);
    digitalWrite(A0, LOW);
   
    Serial.print("Received ms: ");
    Serial.print(receivedMessage.ms);
    Serial.print(", from node: ");
    Serial.print(header.from_node);
   
    RF24NetworkHeader sendHeader(header.from_node);
    receivedMessage.ms += 35;
       
    if (network.write(sendHeader, &receivedMessage, sizeof(receivedMessage)))
    {
      Serial.println(" ... answer sent.");
    }
    else
    {
      Serial.println(" ... error sending answer.");
    }   
   
  }
}

Estava apanhando porque estava tentando usar o segundo nó com o endereço 11, mas deveria colocar 011. O que esse 0 na frente muda não sei, mas que precisa dele, precisa...
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

o 0 indica qual é o Master... como isto é uma topologia em árvore, tu podes colocar outro Arduino com o numero 1 e ele fica no mesmo patamar que o teu 0 ou master.
Ao não colocares lá isso, ele procura um nó 1 como master. Não havendo, dá erro.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Não, acho que você não entendeu. A parte da topologia em árvore, com um nó 0 (central / master) e os outros derivando dele (1...5, 11...51, 121...521, etc.) eu entendi e estou fazendo da forma correta (nó 1 e nó 31). O problema é que para o Arduino (pelo menos nunca tinha ouvido falar nesse fato em outra linguagem) 031 != 31!

Faça o teste:

Code:
Serial.println(31);
Serial.println(031);

O resultado será:

Code:
31
25

É a primeira vez que vejo o zero a direita fazer diferença smiley-yell.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Isso é realmente esquisito...
Terá a ver com as flags de tipo como o 0x, ou 0b?
Vou pesquisar isso. eh eh
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Pages: 1 ... 19 20 [21] 22 23 ... 30   Go Up
Jump to: