Efficiënte 3-pins draadloze sensoroverdracht met nRF24L01+ en ATtiny85
Onderdelen en benodigdheden
- nRF24L01+ module (2x)
- ATtiny85 (1x)
- Arduino UNO (1x) — voor programmeren van de ATtiny85
- Keramische condensator 10 nF (1x)
- Koolfilmweerstand 22 kΩ (1x)
- Schakeldiode 1N4148 (1x)
- Voeding 3V3 (1x)
- nRF24L01+ socket adapter (1x, optioneel)
Over dit project
Dit project is een vervolg op "Programmeren van ATtiny85 met Arduino Uno". Nu de goedkopere ATtiny85 beschikbaar is, zoekte ik naar een goedkope manier om sensordata te verzenden. De nRF24L01+ is een goedkope, lage-verbruik RF-transceiver — de ideale oplossing. Maar de ATtiny85 heeft te weinig pinnen om zowel de nRF24L01+ als een sensor aan te sluiten. Ik ontdekte de "nRF24L01+ besturing met 3 ATtiny85 pinnen"-techniek van Ralph Doncaster. Hier leg ik uit hoe ik dit implementeerde.
Modules
Er zijn twee modules: een zender (ATtiny85 die data verstuurt via nRF24L01+ met slechts 3 pinnen) en een ontvanger (Arduino Uno die de data ontvangt via nRF24L01+). Ik gebruik de RF24-bibliotheek (tmrh20.github.io/RF24/). Volg de installatie-instructies en voeg de bibliotheek toe aan de Arduino IDE.
Zender (Transmitter)
De zender stuurt elk seconde een oplopend getal. De ATtiny85 gebruikt slechts 3 pinnen voor de nRF24L01+.
Benodigde componenten:
- ATtiny85
- nRF24L01+
- Keramische condensator 10 nF
- Koolfilmweerstand 22 kΩ
- Schakeldiode 1N4148
Upload de onderstaande code naar de ATtiny85 (zie mijn eerdere project voor programmeren via Arduino Uno).
Code: sender.ino
#define CE_PIN 3
#define CSN_PIN 3 // 3-pins configuratie: dezelfde pin voor CE en 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);
}
Aansluitschema zender



Bij aangesloten voeding begint de zender elke seconde een getal te versturen.
Ontvanger (Receiver)
De ontvanger ontvangt de data en toont deze in de Serial Monitor.
Benodigde componenten:
- Arduino Uno
- nRF24L01+
- nRF24L01+ Socket Adapter (optioneel)
Code: 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);
}
Aansluitschema ontvanger


Let op: Vcc moet altijd 3V3 zijn. Sommige Arduino Uno-clones leveren onvoldoende stroom op de 3V3-pin, waardoor de nRF24L01+ niet werkt. Oplossingen:
- Gebruik een aparte 3V3-voeding
- Plaats een 10 µF condensator tussen Vcc en GND op de module
- Gebruik een nRF24L01+ Socket Adapter
Testen
Zet de voeding van de zender aan. Verbind de Arduino Uno met de PC en open de Serial Monitor in de Arduino IDE. Je zou de ontvangen payloads moeten zien.
Permanent maken
Ik heb de schakeling permanent gemaakt op een experimenteerprintje (perfboard).



Dit is een eenvoudige module die demonstreert hoe de nRF24L01+ met slechts 3 pinnen van de ATtiny85 verbonden kan worden, zodat de overige pinnen vrijblijven voor sensoren. Feedback en suggesties zijn welkom!
Code
Zie bovenstaande codeblokken voor zender (sender.ino) en ontvanger (receiver.ino).
Schema's
- Fritzing-bestand: nRF24L01%2B(With%20Socket)%20Attiny85.fzz
- Fritzing-bestand: nRF24L01%2B%20Arduino%20Uno.fzz
Productieproces
- De Deegroller: Van Etrusken tot Moderne Vakmanschap
- De Evolutie en Vakmanschap van Moderne Bowlingpinnen
- Hoe Temperatuur Te Lezen Met Een DS18B20 Op Raspberry Pi 2
- Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Posture Pal met Walabot – Realtime afstandsmonitoring om nek- en rugpijn te voorkomen
- Bouw een Raspberry Pi Cijferherkenner met TensorFlow en OpenCV
- Aan de slag met TJBot: Bouw, Configureer en Stem-bedien Je Eigen AI-robot
- Een Zelf-balancerende Segway Bouwen met Raspberry Pi
- GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
- Circuit met een schakelaar: Praktische gids voor basis elektrische circuits