texto simples (teste).
Eu adicionei um DHT11 para coletar temperatura e humidade que pela serial também respondem perfeitamente.
O problema é que não estou conseguindo enviar a temperatura e humidade no lugar do texto, alguem tem alguma dica?
Codigo do transmissor:
#include //INCLUSÃO DE BIBLIOTECA#include //INCLUSÃO DE BIBLIOTECA
#include //INCLUSÃO DE BIBLIOTECA
#include "DHT.h"
#define DHTPIN 3 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
RF24 radio(9, 10); //CRIA UMA INSTÂNCIA UTILIZANDO OS PINOS (CE, CSN)
const byte address[6] = "00002"; //CRIA UM ENDEREÇO PARA ENVIO DOS DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO)
void setup() {
radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO
radio.openWritingPipe(address); //DEFINE O ENDEREÇO PARA ENVIO DE DADOS AO RECEPTOR
radio.setPALevel(RF24_PA_HIGH); //DEFINE O NÍVEL DO AMPLIFICADOR DE POTÊNCIA
radio.stopListening(); //DEFINE O MÓDULO COMO TRANSMISSOR (NÃO RECEBE DADOS)
Serial.begin(9600);
dht.begin();
}
void loop() {
// A leitura da temperatura e umidade pode levar 250ms!
// O atraso do sensor pode chegar a 2 segundos.
float h = dht.readHumidity();
float t = dht.readTemperature();
// testa se retorno é valido, caso contrário algo está errado.
if (isnan(t) || isnan(h))
{
Serial.println("Failed to read from DHT");
}
else
{
Serial.print("Umidade: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
}
const char text[] = "Teste"; //VARIÁVEL RECEBE A MENSAGEM A SER TRANSMITIDA
radio.write(&text, sizeof(text)); //ENVIA AO RECEPTOR A MENSAGEM
delay(2000); //INTERVALO DE 2 SEGUNDOS
}
Codigo do Receptor:
#include //INCLUSÃO DE BIBLIOTECA#include //INCLUSÃO DE BIBLIOTECA
#include //INCLUSÃO DE BIBLIOTECA
RF24 radio(9, 10); //CRIA UMA INSTÂNCIA UTILIZANDO OS PINOS (CE, CSN)
const byte address[6] = "00002"; //CRIA UM ENDEREÇO PARA ENVIO DOS DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO)
void setup() {
Serial.begin(9600); //INICIALIZA A SERIAL
radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO
radio.openReadingPipe(0, address); //DEFINE O ENDEREÇO PARA RECEBIMENTO DE DADOS VINDOS DO TRANSMISSOR
radio.setPALevel(RF24_PA_HIGH); //DEFINE O NÍVEL DO AMPLIFICADOR DE POTÊNCIA
radio.startListening(); //DEFINE O MÓDULO COMO RECEPTOR (NÃO ENVIA DADOS)
}
void loop() {
if (radio.available()) { //SE A COMUNICAÇÃO ESTIVER HABILITADA, FAZ
char text[32] = ""; //VARIÁVEL RESPONSÁVEL POR ARMAZENAR OS DADOS RECEBIDOS
radio.read(&text, sizeof(text)); //LÊ OS DADOS RECEBIDOS
Serial.println(text); //IMPRIME NA SERIAL OS DADOS RECEBIDOS
}
}
…
s pessoas já usam e consequentemente as dificuldades que surgirem têm maiores chances de serem solucionadas.
Já quando o módulo é pouco popular (seja por causa do preço proibitivo, seja por causa do pouco tempo de mercado), ocorre de poucas pessoas já terem vivenciado alguma experiência com ele e então qualquer nova dificuldade talvez seja mais difícil de ser solucionada.
Não fique chateado porque vc não conseguiu ajuda. Aqui vc mesmo já percebeu, o pessoal colabora com vontade sempre tentando ajudar um ao outro. Se vc não conseguiu ajuda, acho muito mais provável que isso tenha ocorrido devido à falta de experiência dos colegas do que porque alguém está escondendo o leite
Dá uma olhada sobre os pedidos de ajuda do xbee, cc3000, yun, nRF24L01, ESP8266 etc... são módulos/shields que poucas pessoas se aventuraram ainda e vai demorar pra conseguir ajuda assim de bate-pronto, como por exemplo é o caso do ethernet shield w5100…
e os emissores enviam no pacote de dados.
O senhor poderia me dizer o que acha do programa? Testei apenas com 2 nrf24l01, só vou poder testar com mais de 2 na quinta.
minha dúvida é se pode haver conflito enquanto ele estiver recebendo os sinais, ele pode receber até 6 sinais de uma vez, não é verdade?
ex:
//pacote de dados que ele recebe
struct dado_d{ unsigned long modulo; unsigned long valor;};
// No void loop usei:
network.update();
if ( network.available() ) { RF24NetworkHeader force(no_peri_1); dado_d dado; network.read(force,&dado,sizeof(dado));
if (dado.modulo == 1) { Serial.print("Recebendo dados 1 : "); Serial.println(dado.valor); } else { Serial.println("Esperando dados 1 : "); } if (dado.modulo == 2) { Serial.print("Recebendo dados 2 : "); Serial.println(dado.valor); } else { Serial.println("Esperando dados 2 : "); }
} else { Serial.println("Esperando dados ..."); } }…
trumentista( possuo registro CREA) tenho estudado a instrumentação sem fio, mas apesar de parecer uma coisa simples, a coisa é bem complexa, pois tem muita coisa.
Basicamente os estudos sao divididos em 3 etapas, O INICIO- captação, filtragem, conversao ADC e digitalizacao dos dados O MEIO - a comunicacao sem fio, o FINAL- recepcao, demultiplexacao , conversao DAC
Vamo lá, na parte de de inicio tenho estudado amplificacao operacional, amplificacao de instrumentacao, conversao ADC mais detalhadamente.
No meio a comunicacao sem fio, tenho estudado os NRF24L01, os Xbee, comprei os ESP8266 e tao na fita, assim como a super novidade nesse mercado os radios LORA SX-1276 esses tambem chegaram essa semana tao na fita pra estudo.
Na ponta de saida ta a reconversao de dados em analogicos.
Resumindo, tô apostando em estudar e me preparar pra minha área, não acredito que o mundo vai ficar estancado assim pra sempre, e se a gente aproveitar esse momento pra se preparar, na hora certa estaremos a frente.
…
Adicionado por Weider Duarte ao 23:27 em 7 junho 2016
PI ( 10-SS , 11-MOSI , 12-MISO, 13-SCK )
Então tenho 2 duvidas:
1- Existe alguma outra forma de trocar dados entre dois arduinos, com fio, alem dos três descritos acima ?
2- Os modulos NRF24L01 se comunicam via SPI, e normalmente transitam seus dados em arrays (matrizes), logo, diante de um projeto onde o radio esta conectado ao arduino 1, e esse recebe os dados, mas que se deseja passar esses dados para um segundo arduino, ou seja, colocar uma placa com dois nucleos atmega328, sendo que o protocolo SPI já esta sendo utilizado pelos radios, e esse depende de interromper a transmissão para se poder acessar varios perifericos no mesmo barramento, porem, as bibliotecas dos radios não nos dão esse acesso, logo, o SPI estaria descartado, ai fica a duvida, qual o melhor protocolo pra transmitir os dados recebidos por radio do atmega328-1 para o atmega328-2 ?…
Adicionado por Weider Duarte ao 22:49 em 3 abril 2016
ultimo andar.
A ideia seria colocar alem do altimetro, dois sensores ultrasonicos, um no fundo do poço e outro no topo, a finalidade deles seria tão somente medir dentro da escala deles em quantos metros o elevador realmente se encontra e com base nisso fazer uma aferição automatica.
Parece meio louco, mas acho que mais louco seria o bicho chegar no terreo e o altimetro dizer que ele tá a 10 metros, dai o lance seria fazer uma comunicação sem fio atraves de modulos nrf24l01 que ajudariam o altimetro a ter noção de que altura realmente ele esta, e como o altimetro utiliza-se de uma variavel de grandeza para alcançar o real resultado de altura essa combinação ajudaria nos resultados.
Ao Tuan Gomes,
Amigo, o proposito da discussão é encontra um meio de medir metro a metro o deslocamente de um elevador, simplesmente colocar sensores hall ou seja qual outro for seria algo irreal, pois em prédios muito altos a coisa seria fora da realidade.…
Adicionado por Weider Duarte ao 0:06 em 11 outubro 2014
variáveis de acionamento com nomeclaturas personalizadas, dai mesmo que o comando de um radio acionador seja captado pelo receptor de outro apartamento, ele primeiro verifica se o codigo é o que faz ele acionar, se náo for, não faz nada.
Como disse, tô meio enferrujado com os nrf mas isso eu lembro, vou tentar explicar melhor.
Digamos que você tenha uma lampada no apartamento 103 do 5 andar, ai você criaria uma variavel de acionamento pra ela assim
lamp_1_103_5 ou seja lampada 1 do apartamento 103 5º andar.
dai pra acionar essa lampada os emissores emitiriam um comando tipo lamp_1_103_5_1 , e pra desligar lamp_1_103_5_0
No arduino que estiver acoplado ao nrf dessa lampada, naturalmente você informara que ele analise e compare toda infomação que chegar, se o codigo que chegar pela rede bater com o codigo dela, ai é só fazer a ação.
Outra coisa rogerio, porque comprar tanto arduino e não desenvolver suas proprias placas ?
…
Adicionado por Weider Duarte ao 0:49 em 5 julho 2015
A questão é que se pretendemos verdadeiramente evoluir para projetos de comunicação sem fio periféricos e independentes alimentados por baterias, a depender de questões como limitação de espaço, teremos todos que uma hora ou outra responder essa questão.
No meu caso não há um projeto especifico, trata-se de aprendizagem, senão os resultados que já obtive com a versão DIP seriam suficientes, mas vejo que devemos estar preparado e com respostas para qualquer coisa que nos seja apresentado.
Por exemplo, recebi recentemente da china um modulo NRF24L01 SMD de 1.200 m de alcance(segundo o fabricante) ele tem cerca de 1/4 a 1/5 do tamanho físico de um Xbee e 1/3 a 1/4 do tamanho de um ESP8266 ou seja, ele é muito pequeno e muito poderoso.
Para um projeto em miniaturização, seria inprescidivel o desenvolvimento das placas utilizando tambem o atmega328 em SMD.
Pense no poder de algo tão diminuto e tão poderoso! imagine as possibilidades de um radio de mais de 1km que cabe em uma unha! loucura não?…
Adicionado por Weider Duarte ao 12:42 em 26 agosto 2015