Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

nRF24L01+ met ATtiny85 3 pins

Componenten en benodigdheden

nRF24L01+
× 2
ATtiny85
× 1
Arduino UNO
× 1
Keramische condensator - 10nF
× 1
Koolstoffilmweerstand - 22kΩ
× 1
Schakeldiode - 1n4148
× 1
Power Source - 3v3
× 1
nRF24L01+ Socket Adapter
Optioneel
× 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.ino

Sluit 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.ino

Sluit 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:

  1. Gebruik een aparte 3v3-voeding
  2. Voeg een 10uF condensator toe tussen Vcc en Gnd in de module zelf.
  3. 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.fzz

Productieproces

  1. Circuit met een schakelaar
  2. Deegrol
  3. Bowlingspeld
  4. Temperatuur aflezen met DS18B20 | Raspberry Pi 2
  5. Temperatuur meten met RASPBERRY PI
  6. Temperatuur bewaken met Raspberry Pi
  7. Posture Pal met Walabot
  8. AI-cijferherkenning met PiCamera
  9. Aan de slag met TJBot
  10. Een segway bouwen met Raspberry Pi
  11. GoPiGo v2 met Windows IoT