Gostaria de agradecer a todos aqui que me ajudaram a resolver esse problema.
estava com um dificuldade para conseguir conectar o Uno a um Pro mini pelo modulo WiFi NRF24L01.
vou deixar abaixo o código que usei.
Código do emissor.
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int dados[1]; //Armazena os dados enviados pelo rádio
int valor = 0;
RF24 radio(9,10); //Inicializa a placa nos pinos 9 (CE) e 10 (CS) do Arduino
const uint64_t pipe = 0xE14BC8F482LL; //Define o endereço para comunicacao entre os módulos
void setup()
{
Serial.begin(115200);
radio.begin(); //Inicializa a comunicação entre os módulos
radio.openWritingPipe(pipe); //Entra em modo de transmissao
}
void loop(){
if (Serial.available() > 0){
valor = Serial.parseInt();
}
if (valor == 1) //Envia o comando para disparo caso a Porta Digital 7 entre em nível baixo
{
Serial.print("Liga Led 1");
dados[0] = 1; // salva o valor 1 no índice dos valores enviados pelo rádio
radio.write(dados, 1); // escreve o valor 1 na variável dados
Serial.println("");
}
if (valor == 2)
{
Serial.print("Desliga Led 1");
dados[0] = 2;
radio.write(dados, 2);
Serial.println("");
}
if (valor == 3)
{
Serial.print("Liga Led 2");
dados[0] = 3;
radio.write(dados, 3);
Serial.println("");
}
if (valor == 4)
{
Serial.print("Desliga Led 2");
dados[0] = 4;
radio.write(dados, 4);
Serial.println("");
}
}
Código do Receptor.
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int recebidos[1];//Armazena os dados recebidos
int receb[1];
RF24 radio(9, 10); //Inicializa a placa nos pinos 9 (CE) e 10 (CS) do Arduino
const uint64_t pipe = 0xE14BC8F482LL; //Define o endereco para comunicaçao entre os módulos
int LED1 = 8; //Inclui a Porta Digital 5 na estrutura da programação do módulo
void setup()
{
pinMode(LED1, OUTPUT); //Define a Porta Digital 5 como saída de sinal para disparo do Dispositivo Secundário
radio.begin(); //Inicializa a comunicaçao entre os módulos
radio.openReadingPipe(1, pipe); //Entra em modo de recepcao
radio.startListening(); ////Entra em modo de recepcao
}
void loop()
{
/*
if (radio.available()) //Verifica se há sinal de radio
{
bool done = false; //determina a variável booleana como falsa
while (!done) //executa uma rotina determinada enquanto a variável booleana é negada
{
*/
if (radio.available()) {
radio.read(recebidos, 1); // Lê a variável transmitida
if (recebidos[0] == 1) //Se recebeu o numero 1, executa determinada ação
{
delay(10); //Tempo até executar a rotina de ativamento
digitalWrite(LED1, HIGH); //Ativa a Porta Digital 5 em nível alto para disparo do Dispositivo Secundário
}
if (recebidos[0] == 2)
{
digitalWrite(LED1, LOW); //Desativa Porta Digital 5 caso o valor recebido não seja igual ao valor 1
}
}
delay(100); //Tempo para reiniciar a verificação do sinal transmitido
/*
}
}
*/
}
Em anexo deixo a biblioteca RF24 que utilizei.
Tags:
Olá Raul,
Cara, parabéns pelos seus resultados é com esforço que alcançamos nossos objetivos.
Pooooooremm, deixa eu corrigir você só um pouco... Corrigindo o enunciado do seu post, você não realizou uma comunicação WIFI, você realizou uma comunicação WIRELESS.
Qual a diferença?: WIFI é o tipo de comunicação que utiliza um protocolo 802.11, se você estivesse se comunicando atraves desse protocolo poderia acessar seu computador atraves da rede de sua casa, ou até acessar a internet.
Já a comunicação WIRELESS criada com o NRF24L01 utiliza um protocolo chamado shockburst, o que possibilita que ele só converse com outros modulos que estejam utilizando o mesmo protocolo.
Pooooooooooremmmm, existe um figuraça que criou uma biblioteca chamada RF24ETHERNET que possibilita aos NRF24L01 acessarem a internet, controlar seu PC, e tudo que uma verdadeira rede wifi possibilita.
veja o video abaixo:
https://www.youtube.com/watch?v=rBAIqAaRu0g
Weider.
Obrigado pelo esclarecimento.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por