collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Domótica - NRF24L01, Sensor de temperatura, Sensor de humidade, etc - (Nó)  (Lida 5816 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.733
  • 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