Transmissão Eficiente de Sensor Sem Fio com 3 Pinos usando nRF24L01+ e ATtiny85
Componentes e Materiais
| nRF24L01+ | ×2 |
| ATtiny85 | ×1 |
| Arduino UNO | ×1 |
| Capacitor Cerâmico 10nF | ×1 |
| Resistor de Filme de Carbono 22kΩ | ×1 |
| Diodo de Comutação 1N4148 | ×1 |
| Fonte de Alimentação 3.3V | ×1 |
| Soquete Adaptador nRF24L01+ (Opcional) | ×1 |
Sobre o Projeto
Esta é a continuação do meu projeto anterior "Programando ATtiny85 com Arduino Uno". Com o ATtiny85 mais barato no lugar, busquei formas mais econômicas de transmitir dados de sensores, o que me levou ao nRF24L01+ — um transceptor RF de baixo custo e baixo consumo. Parecia a solução ideal, mas havia um problema: a limitação de pinos do ATtiny85. Não consigo conectar tanto o nRF24L01+ quanto o sensor nele. Buscando soluções, encontrei "controle nRF24L01+ com 3 pinos ATtiny85". Aqui explico como implementei.
Módulos
Há dois módulos: transmissor (ATtiny85 enviando dados) e receptor (Arduino Uno recebendo via nRF24L01+). Utilizo a biblioteca RF24 (tmrh20.github.io/RF24/). Siga as instruções lá para adicioná-la à Arduino IDE. Não entrarei em detalhes sobre a RF24, pois sua documentação é excelente.
Transmissor
O transmissor envia um número incrementado a cada segundo. O ATtiny85 transmite via nRF24L01+ usando apenas 3 pinos. Sigo as instruções de Ralph Doncaster para implementação.
Componentes do Transmissor
- ATtiny85
- nRF24L01+
- Capacitor Cerâmico 10nF
- Resistor de Filme de Carbono 22kΩ
- Diodo de Comutação 1N4148
Carregue o código abaixo no ATtiny85 (consulte meu projeto anterior se precisar saber como).
Código do Transmissor (sender.ino)
#define CE_PIN 3
#define CSN_PIN 3 // Configuração de 3 pinos: mesmo pino para CE e CSN
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
radio.begin();
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.openWritingPipe(address);
}
void loop(void){
payload++;
radio.write(&payload, sizeof(unsigned long));
delay(1000);
}
Conexões do Transmissor
Ao conectar a fonte, o transmissor inicia o envio da sequência numérica a cada segundo.
Receptor
O receptor recebe os dados do transmissor e exibe no Monitor Serial.
Componentes do Receptor
- Arduino Uno
- nRF24L01+
- Soquete Adaptador nRF24L01+ (Opcional)
Código do Receptor (receiver.ino)
#define CE_PIN 7
#define CSN_PIN 8
#include <SPI.h>
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
Serial.begin(115200);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.openReadingPipe(1, address);
radio.startListening();
}
void loop(void){
radio.stopListening();
radio.startListening();
radio.read(&payload, sizeof(unsigned long));
if(payload != 0){
Serial.print("Got Payload ");
Serial.println(payload);
}
delay(1000);
}
Conexões do Receptor
Importante: Vcc deve ser sempre 3.3V. Em alguns clones de Arduino Uno, o pino 3.3V pode não fornecer corrente suficiente, fazendo o nRF24L01+ não funcionar. Soluções recomendadas:
- Use uma fonte 3.3V separada
- Adicione capacitor de 10µF entre Vcc e GND no próprio módulo
- Use um Soquete Adaptador nRF24L01+
Testando
Com transmissor e receptor prontos: ligue o transmissor, conecte o Arduino Uno ao PC, abra o Monitor Serial (115200 baud). Deverá ver os payloads recebidos a cada segundo.
Tornando Permanente
Com conhecimentos básicos de solda, montei em placa perfurada (perfboard).
Este módulo demonstra como usar o nRF24L01+ com apenas 3 pinos do ATtiny85, liberando os demais para leitura de sensores. Feedbacks e sugestões são bem-vindos!
Esquemáticos (Arquivos Fritzing)
nRF24L01%2B(With%20Socket)%20Attiny85.fzznRF24L01%2B%20Arduino%20Uno.fzz
Processo de manufatura
- Circuito com Chave: Guia Prático para Circuitos Elétricos Básicos
- O Rolo de Massa: Das Origens Etruscas à Arte Moderna
- Como Ler Temperatura com DS18B20 no Raspberry Pi 2
- Medição de Temperatura no Raspberry Pi com Sensores Maxim 1‑Wire e Bridge I2C DS2482
- Monitoramento Preciso de Temperatura em Closet de Servidores com Raspberry Pi
- Posture Pal com Walabot – Monitoramento de Distância em Tempo Real para Evitar Dor no Pescoço e Costas
- Construa um Reconhecedor de Dígitos no Raspberry Pi com TensorFlow e OpenCV
- Primeiros Passos com TJBot: Construa, Configure e Controle por Voz seu Próprio Robô de IA
- Construa um Segway Auto-Equilibrado com Raspberry Pi
- Estendendo GoPiGo v2 no Windows 10 IoT Core para Raspberry Pi 3