Transmisión Inalámbrica Eficiente de 3 Pines con nRF24L01+ y ATtiny85
Componentes y materiales
| nRF24L01+ (módulo RF) | × | 2 |
| ATtiny85 | × | 1 |
| Arduino UNO (para programar el ATtiny85 y como receptor) | × | 1 |
| Condensador cerámico 10 nF | × | 1 |
| Resistencia de carbón 22 kΩ | × | 1 |
| Diodo de conmutación 1N4148 | × | 1 |
| Fuente de alimentación 3.3V | × | 1 |
| Zócalo adaptador para nRF24L01+ (opcional) | × | 1 |
Sobre el proyecto
Este proyecto continúa el anterior Programar ATtiny85 con Arduino Uno. Buscaba una forma económica de transmitir datos de sensores y encontré el nRF24L01+, un transceptor RF de bajo coste y consumo. El problema: el ATtiny85 tiene pocos pines y no permite conectar simultáneamente el nRF24L01+ y un sensor. La solución: controlar el nRF24L01+ con solo 3 pines del ATtiny85.
Módulos
Dos módulos: Transmisor (ATtiny85 + nRF24L01+) envía datos; Receptor (Arduino UNO + nRF24L01+) los recibe y muestra en el Monitor Serie. Se usa la librería RF24 (tmrh20.github.io/RF24/), instálala en el IDE de Arduino antes de empezar.
Transmisor
El ATtiny85 envía un número incremental cada segundo usando solo 3 pines para el nRF24L01+. La técnica sigue las indicaciones de Ralph Doncaster.
Componentes del transmisor
- ATtiny85
- nRF24L01+
- Condensador cerámico 10 nF
- Resistencia 22 kΩ
- Diodo 1N4148
Carga el código en el ATtiny85
(Consulta el proyecto anterior para ver cómo programar el ATtiny85 con Arduino UNO).
#define CE_PIN 3
#define CSN_PIN 3 // Mismo pin para CE y CSN en configuración de 3 pines
#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);
}
Conexiones del transmisor
Al alimentar, el transmisor comienza a enviar la secuencia cada segundo.
Receptor
El Arduino UNO recibe los datos y los muestra en el Monitor Serie (115200 baudios).
Componentes del receptor
- Arduino UNO
- nRF24L01+
- Zócalo adaptador nRF24L01+ (opcional)
Código del receptor
#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);
}
Conexiones del receptor
Importante: El nRF24L01+ debe alimentarse **siempre a 3.3V**. En algunos clones de Arduino UNO el pin 3.3V no entrega suficiente corriente. Soluciones:
- Usar una fuente 3.3V externa.
- Añadir un condensador de 10 µF entre VCC y GND del módulo.
- Usar el zócalo adaptador (que suele incluir regulador y condensador).
Prueba del sistema
- Alimenta el transmisor.
- Conecta el Arduino UNO al PC y abre el Monitor Serie (115200 baudios).
- Deberías ver "Got Payload X" cada segundo.
Hacerlo permanente
Se montó en placa perforada (perfboard) para una versión definitiva.
Este módulo demuestra cómo usar el nRF24L01+ con solo 3 pines del ATtiny85, dejando el resto libres para sensores. ¡Comentarios y sugerencias son bienvenidos!
Código
Los archivos de código están incluidos en las secciones anteriores (Transmisor y Receptor).
Esquemáticos
nRF24L01%2B(With%20Socket)%20Attiny85.fzz(Fritzing)nRF24L01%2B%20Arduino%20Uno.fzz(Fritzing)
Proceso de manufactura
- El rodillo de cocina: de los orígenes etruscos a la artesanía moderna
- La Evolución y la Artesanía de los Bolos de Bolera Modernos
- Cómo leer temperatura con un DS18B20 en Raspberry Pi 2
- Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
- Monitorización precisa de temperatura en armario de servidores con Raspberry Pi
- Posture Pal con Walabot: monitor distancia tiempo real para evitar dolor cuello y espalda
- Construye un Reconocedor de Dígitos con Raspberry Pi, TensorFlow y OpenCV
- Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
- Construye un Segway Autoequilibrado con Raspberry Pi
- Extensión de GoPiGo v2 en Windows 10 IoT Core para Raspberry Pi 3
- Circuito con interruptor: guía práctica de circuitos eléctricos básicos