nRF24L01+ met ATtiny85 3 pins
Componenten en benodigdheden
| × | 2 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Over dit project
Dit zou de voortzetting zijn van mijn vorige project ATtiny85 programmeren met Arduino Uno. Nu ik de goedkopere ATtiny85 had geïnstalleerd, zocht ik naar goedkopere manieren om de sensorgegevens te verzenden. Dat bracht me bij de nRF24L01+, een goedkope RF-transceiver met een laag vermogen. Dit leek mij de betere oplossing. Maar er was één probleem, beperking van het aantal pinnen in ATtiny85. Ik kan niet zowel de nRF24L01+ als de sensor erin aansluiten. Dus ik was op zoek naar oplossingen en kwam "nrf24l01+ controle met 3 ATtiny85-pinnen" tegen. Hier bespreek ik hoe ik het heb geïmplementeerd.
Modules
Er zullen twee modules in de zender en ontvanger zitten. De zender zou een ATtiny85 zijn die wat gegevens verzendt en de ontvanger zou Arduino Uno zijn die de gegevens ontvangt via nRF25L01+. Ik gebruik de RF24-bibliotheek (http://tmrh20.github.io/RF24/). Volg de instructies die daar worden gegeven en voeg deze toe aan Arduino IDE voordat je hiermee aan de slag gaat. Ik zal niet veel uitleggen over RF24, want er is een zeer goede documentatie over.
Zender
De zender zendt elke seconde een oplopend nummer uit. De ATtiny85 verzendt de gegevens via nRF24L01+ met slechts 3 pinnen. Ik volg de instructies van Ralph Doncaster bij het implementeren ervan.
De benodigde componenten zijn
- ATtiny85
- nRF24L01+
- Keramische condensator - 10nF
- Koolstoffilmweerstand - 22kΩ
- Schakeldiode - 1n4148
Upload de onderstaande code naar ATtiny85 (raadpleeg mijn vorige project ATtiny85 programmeren met Arduino Uno als je wilt weten hoe)
afzender.inoSluit de componenten aan zoals hieronder weergegeven



Als de stroombron is aangesloten, begint de zender elke seconde een reeks nummers te verzenden.
Ontvanger
De ontvanger ontvangt de gegevens die door de zender zijn verzonden en de ontvangen gegevens kunnen worden bekeken in de seriële monitor.
De benodigde componenten zijn
- Arduino Uno
- nRF24L01+
- nRF24L01+ stopcontactadapter (optioneel)
Upload de onderstaande code naar Uno
ontvanger.inoSluit de componenten aan zoals hieronder weergegeven


Als dit niet duidelijk is, raadpleeg dan het fritzing-bestand dat bij dit project is gevoegd. Houd er rekening mee dat Vcc altijd 3v3 moet zijn. In sommige Arduino Uno-klonen heeft de 3v3-voeding mogelijk niet genoeg stroom, waardoor de nRF24L01+ niet werkt. Een van de onderstaande methoden wordt aanbevolen om dit op te lossen:
- Gebruik een aparte 3v3-voeding
- Voeg een 10uF condensator toe tussen Vcc en Gnd in de module zelf.
- Gebruik een nRF24L01+ socketadapter
Met de zender en ontvanger klaar nu is het tijd om te testen. Zorg ervoor dat de voeding naar de zender AAN staat. Sluit de Arduino Uno aan op de pc en open de seriële monitor in arduino ide. Het zou moeten werken zoals hieronder
Permanent maken
Met mijn weinig kennis van solderen heb ik het permanent gemaakt met perfboard.



Dit is een eenvoudigere module om te demonstreren hoe de nRF24L01+ werkt en hoe we slechts 3 pinnen van ATtiny85 kunnen gebruiken om hem aan te sluiten, zodat de rest van de pinnen beschikbaar zijn voor het lezen van sensorgegevens. Feedback/suggesties zijn welkom.
Code
- Zender
- Ontvanger
ZenderC/C++
#define CE_PIN 3#define CSN_PIN 3 //Aangezien we een 3-pins configuratie gebruiken, zullen we dezelfde pin gebruiken voor zowel CE als CSN#include "RF24.h"RF24 radio(CE_PIN, CSN_PIN);byte address[11] ="SimpleNode"; niet-ondertekende lange payload =0; ongeldige setup () { radio.begin (); // Start de radio radio.setAutoAck(1); // Zorg ervoor dat autoACK is ingeschakeld radio.setRetries (15,15); // Max. vertraging tussen nieuwe pogingen en aantal pogingen radio.openWritingPipe (adres); // Schrijf naar apparaatadres 'SimpleNode'}void loop(void){payload++; radio.write(&payload, sizeof(unsigned long)); //Stuur gegevens naar 'Ontvanger' elke seconde vertraging (1000);}
OntvangerC/C++
#define CE_PIN 7#define CSN_PIN 8#include#include "RF24.h"RF24 radio(CE_PIN, CSN_PIN);byte address[11] ="SimpleNode";unsigned long payload =0;void setup() {Serial.begin(115200); radio.begin(); // Start de radio radio.setAutoAck(1); // Zorg ervoor dat autoACK is ingeschakeld radio.setRetries (15,15); // Max. vertraging tussen nieuwe pogingen en aantal pogingen radio.openReadingPipe (1, adres); // Schrijf naar apparaatadres 'SimpleNode' radio.startListening();}void loop(void){ radio.stopListening(); radio.startListening(); radio.read(&payload, sizeof(unsigned long) ); if(payload!=0){ Serial.print("Got Payload"); Serial.println(lading); } vertraging(1000);}
Schema's
nRF24L01%2B(Met%20Socket)%20Attiny85.fzz nRF24L01%2B%20Arduino%20Uno.fzzProductieproces
- Circuit met een schakelaar
- Deegrol
- Bowlingspeld
- Temperatuur aflezen met DS18B20 | Raspberry Pi 2
- Temperatuur meten met RASPBERRY PI
- Temperatuur bewaken met Raspberry Pi
- Posture Pal met Walabot
- AI-cijferherkenning met PiCamera
- Aan de slag met TJBot
- Een segway bouwen met Raspberry Pi
- GoPiGo v2 met Windows IoT