Effiziente 3-Pin-Funkübertragung mit nRF24L01+ und ATtiny85
Komponenten und Zubehör
| nRF24L01+ Modul | × | 2 |
| ATtiny85 | × | 1 |
| Arduino UNO (zum Programmieren des ATtiny85) | × | 1 |
| Keramikkondensator 10 nF | × | 1 |
| Kohleschichtwiderstand 22 kΩ | × | 1 |
| Schaltdiode 1N4148 | × | 1 |
| 3,3 V Spannungsquelle | × | 1 |
| nRF24L01+ Socket Adapter (optional) | × | 1 |
Projektbeschreibung
Dieses Projekt baut auf dem vorherigen „Programming ATtiny85 with Arduino Uno“ auf. Ziel: Sensordaten mit minimaler Hardware per Funk übertragen. Der nRF24L01+ ist ein günstiger, stromsparender 2,4-GHz-Transceiver. Das Problem: Der ATtiny85 hat nur 5 I/O-Pins – zu wenig für nRF24L01+ (normal 5 Pins: SPI + CE + CSN) und Sensor gleichzeitig. Lösung: 3-Pin-Betrieb des nRF24L01+ (CE und CSN auf einem Pin, MISO wird nicht benötigt).
Module
Zwei Module: Sender (ATtiny85 + nRF24L01+) sendet alle Sekunde einen Zählerwert; Empfänger (Arduino UNO + nRF24L01+) gibt empfangene Daten am Serial Monitor aus. Verwendet wird die RF24 Library (in Arduino IDE installieren).
Sender (Transmitter)
Bauteile: ATtiny85, nRF24L01+, 10 nF Kerko, 22 kΩ Widerstand, 1N4148 Diode, 3,3 V Quelle.
Code auf ATtiny85 flashen (siehe vorheriges Projekt für Programmier-Anleitung).



Bei Spannungsversorgung sendet der Sender jede Sekunde einen inkrementellen Zählerwert.
Empfänger (Receiver)
Bauteile: Arduino UNO, nRF24L01+, Socket-Adapter (optional).
Code auf UNO flashen.


Wichtig: nRF24L01+ muss mit 3,3 V versorgt werden. Der 3,3-V-Regler mancher Arduino-Klone liefert zu wenig Strom. Abhilfe:
- Separate 3,3-V-Quelle nutzen.
- 10 µF Kondensator zwischen VCC und GND am Modul.
- Socket-Adapter mit eigener Reglerstufe verwenden.
Test: Sender mit Strom versorgen, UNO per USB an PC, Serial Monitor (115200 Baud) öffnen → empfangene Zählerwerte sollten erscheinen.
Dauerhafte Ausführung (Perfboard)



Das Modul demonstriert, wie nRF24L01+ mit nur 3 Pins am ATtiny85 betrieben wird, sodass die restlichen Pins für Sensoren frei bleiben. Feedback willkommen.
Code
Sender (Transmitter)
#define CE_PIN 3
#define CSN_PIN 3 // 3-Pin-Konfiguration: CE und CSN auf Pin 3
#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);
}
Empfänger (Receiver)
#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);
}
Schaltpläne (Fritzing)
Herstellungsprozess
- Schaltung mit Schalter: Praktischer Leitfaden zu grundlegenden elektrischen Schaltungen
- Das Nudelholz: Von etruskischen Ursprüngen bis zur modernen Handwerkskunst
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- Posture Pal mit Walabot – Echtzeit-Entfernungsüberwachung gegen Nacken- und Rückenschmerzen
- Raspberry Pi Ziffernerkennung mit TensorFlow & OpenCV selbst bauen
- TJBot starten: Bauen, konfigurieren und per Sprache steuern
- Selbstbalancierenden Segway mit Raspberry Pi bauen
- GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern