collapse

* Links de Robótica

* Posts Recentes

Procuro resistências 220 Ohm de 1% por brunus
[Hoje às 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[Hoje às 11:19]


Printer 3D barata por almamater
[Hoje às 09:27]


Videos hipnoticos de mecanica industrial por TigPT
[Hoje às 00:07]


FPV Drone Racing? por brunus
[Hoje às 00:00]


Decodificar cabo por Hugu
[Ontem às 23:11]


Ajuda para replicar e reparar um Dimmer por brunus
[30 de Novembro de 2016, 23:23]


Adaptar impressora 3D a Drill Maschine por Hugu
[30 de Novembro de 2016, 23:20]


Módulo gsm por dio123
[30 de Novembro de 2016, 13:39]


RAM SO-DIMM 256 MB por Hugu
[29 de Novembro de 2016, 22:52]

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

0 Membros e 3 Visitantes 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: 8.988
  • 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