collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por Njay
[Hoje às 18:28]


Ajuda Projecto IR / RF por pmj_pedro
[Hoje às 16:23]


CNC Laser 60w por nandotx
[15 de Outubro de 2017, 19:01]


Equipar laboratorio por LVirtual
[13 de Outubro de 2017, 08:34]


Arranjo de Berbequim por jm_araujo
[13 de Outubro de 2017, 08:34]


Escolher ligações por dropes
[08 de Outubro de 2017, 23:26]


Perfis V-Slot vs C-Beam vs Bosch vs 8020 por senso
[08 de Outubro de 2017, 18:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Outubro de 2017, 22:12]


Meu projecto - Arm Robot com arduino por Diogo Bento
[05 de Outubro de 2017, 20:54]


Alimentar arduino nano com 12V por helderjsd
[05 de Outubro de 2017, 16:26]

Autor Tópico: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)  (Lida 2973 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Boas

Andei aqui durante muito tempo para construir/montar uma rede de domótica.
Achei que a melhor forma de o fazer seria utilizando um arduino minimalista, que seria apenas orientado para essa função.
Acabei por construir o kastduino que já vai na versão 3.02 e que ainda tem muito para evoluir. Agradeço ao pessoal aqui do fórum que me tem ajudado em muito.

Neste momento cada nó é composto por:

1x Kastduino (podem seguir o desenvolvimento do arduino aqui: http://lusorobotica.com/index.php?topic=3080.0)
1x NRF24L01
1x dc-boost

Código do Nó:
Código: [Seleccione]
/* NO DE DOMOTICA v0.05
 
 */

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"


//
// Configuração do NRF24L01
//

 
RF24 radio(10,9); // Define o RF24L01 radio em bus SPI bus mais os pinos 10 (CE) & 9 (CSN)

struct payload_t
 {
   byte id;                  // ID do nó
   unsigned long bstatus;    // Estado da bateria/pilha
   unsigned long n_tms;      // Numero de transmissões
   unsigned long n_ftms;     // Numero de falhas de transmissoes
   payload_t(void): id(),bstatus(),n_tms(),n_ftms() {}
 };

payload_t payload;
long bat;

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; // Radio pipe addresses for the 2 nodes to communicate.

void setup(void)
{
  payload.id=1; //alterar o numero do no aqui
  payload.n_tms=0;
  payload.n_ftms=0;
  Serial.begin(57600);

  pinMode(A0, INPUT);
  Serial.print("DOMOTICA NO\n\r");
  Serial.print("\n\r");
 
  radio.begin(); 
  radio.setChannel(101);   
  radio.setAutoAck(true);
  radio.setDataRate(RF24_250KBPS);
 
  radio.setPayloadSize(sizeof(payload)); // define tamanho máximo da var a transmitir
  radio.setRetries(15,15); //define n de tentativas e tempo entre elas
 
//falta definir a potência de emissão
 

  radio.openReadingPipe(1,pipes[0]); // abre o pipe para receber
  radio.openWritingPipe(pipes[1]);  // abre o pipe para enviar
 
  radio.printDetails(); //Mostra os detalhes do radio
  Serial.print("ID do nó ");
  Serial.print(payload.id);
  Serial.print("\n\r");
 
  radio.startListening(); // inicia a escuta
  radio.stopListening();  // Necessario para comecar a enviar dados
 
  Serial.print("\n\rA escuta ...\n\r");
  Serial.print("\n\r");
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
}


void loop(void)
{
 
  bat=analogRead(A0);

  payload.bstatus=bat*5080/1023; //envia o resultado em milivolts //falta mudar para percentagem
 
  radio.powerUp(); //necessario devido ao power down no fim do loop
 
  Serial.print("Enviando... ");
  bool ok = radio.write( &payload , sizeof(payload));
  payload.n_tms++;
  if (ok)
  {
     Serial.print("ok ");

     Serial.print("ID ");
     Serial.print(payload.id);
     Serial.print(" Bateria ");
     Serial.print(payload.bstatus);
     Serial.print(" Transmissões ");
     Serial.print(payload.n_tms);
     Serial.print(" Falhas de transmissoes ");
     Serial.println(payload.n_ftms);   
     
     digitalWrite(8, HIGH);
     delay(1);
     digitalWrite(8, LOW);
  }
  else
  {
     payload.n_ftms++;
     Serial.println("Erro na transmissão !!!");
  }


radio.powerDown(); // coloca o radio em stand-by
delay(10000);       // espera 5 segundos

}
Não tenho mais nada ligado ao nó. Neste momento apenas se encontram a transmitir para servidor:

1- ID
2- Estado da bateria
3- Número de transmissões efectuadas
4- Número de transmissões falhadas

Próximos updates:
- Colocar o kastduino em stand-by entre o envio dos dados.
- Gravar na EEPROM o id, número de transmissões efectuadas e número de transmissões falhadada.

Próximos upgrades:
- Shield para colocar sensor de temperatura, humidade, luminosidade, PIR e sensor de gases.
Os electrões são nossos amigos !!! :D

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.397
  • Helpdesk do sitio
Re: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)
« Responder #1 em: 14 de Outubro de 2012, 23:28 »
Conheces os JeeNodes do JeeLabs?
É basicamente o que queres fazer, mas muito, muito mais maduro, e com uma quantidade de utilizadores razoavel.
Avr fanboy

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)
« Responder #2 em: 14 de Outubro de 2012, 23:32 »
Conheço, já há muito tempo que sigo o blog.

A segunda versão do kastduino levava um RFM12B. Mas tinha alguns problemas de funcionamento.
Também experimentei com jeenodes mas não são tão estáveis como apregoados.
Também tenho alguns RFM12, mas os NRF24L01 só pecam mesmo pelo fraco alcance.
Os NRF24L01 parecem-me muito mais faceis de utilizar do que os RFM12.
E claro os RFM12 custam mais do triplo dos NRF24L01.

« Última modificação: 15 de Outubro de 2012, 02:30 por kast »
Os electrões são nossos amigos !!! :D

Offline npereira

  • Mini Robot
  • *
  • Mensagens: 95
  • Abstuntis Majoris
    • Site Pessoal
Re: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)
« Responder #3 em: 25 de Outubro de 2012, 11:34 »
Boas Kast,

qual o alcance máximo que consegues com os NRF24L01? Tenho um projecto idêntico ao teu a funcionar com um WebServer baseado numa PIC(com stack TCP/IP da microchip) + ENC28j60 e neste momento estou a fazer um log das temperaturas adquidas e tava a pensar precisamente nesses módulos wireless para meter os sensores à distância. Incluindo o RS que está no exterior:
Nelson Pereira
Automação, Robótica e Controlo Industrial

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)
« Responder #4 em: 04 de Janeiro de 2013, 20:13 »
Boas

Primeiro que tudo desculpa pelo "GRANDE" atrasado.

Segundo, com os módulos normais já consegui uns 50-70m com linha de vista, mas já adquiri uns módulos melhores  embora ainda não os tenha testado, mas de acordo com as especificações dão cerca de 1km com 250kbps.
Os electrões são nossos amigos !!! :D