Arduino Mega 2560 | Arduino Micro | nRF24L01+

In diesem Beispiel übertragen wir Werte von einem Arduino zu einem anderen mittels nRF24L01+ Module. Der Wert wird über einen analogen Eingang am Arduino Mega 2560 eingelesen und zu einem Arduino Micro gesendet der diesen am Serial Monitor anzeigt.

Ich denke dieses Tutorial bietet viele Möglichkeiten den Code zu erweitern oder zu verbessern. Da ich selber 2 Tage gebraucht habe bis ich alles zusammen gegoogelt hatte (das ist für mich sehr lange da ich vom Fach bin) habe ich mir gedacht es könnte euch weiter helfen (insbesondere denen ohne Englisch Kenntnisse). Auch ich habe nur zusammen gefasst was schon irgendwo mal stand und im Internet öffentlich zugänglich war. Also unter Quellen könnt ihr dann selber nachlesen und in den Kommentaren viel zum Troubleshooting erfahren.

Schritt 1: Alles lesen!!! mirf.zip (http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01) downloaden und in den Library Ordner unter Dokumente => Arduino => Library entpacken. Dieser Ort kann von Benutzer zu Benutzer variieren.

Schritt 2: nach unten aufgeführter Tabelle Arduinos und nRF24l01+ Module mit einander verbinden. Poti auf A0 am Arduino Mega 2560 anschließen. Wer nicht mehr weiß wie man Potis anschließt >>> http://arduino.cc/en/Tutorial/AnalogReadSerial

Schritt 3: Code auf Arduinos kopieren und am Poti langsam drehen gebannt auf den Serial Monitor starren1 (dieser sollte dann mit dem Arduino Micro verbunden sein)

Schritt 4: Tut nicht? Alles gelesen und beachtet/ausprobiert? >>> Noch mal lesen und gegebenenfalls ausprobieren!!! Tut es? ja. >>> Schritt 5

Schritt 5: singen und klatschen und wer kann darf seinen Namen tanzen.

Hinweise / Probleme / troubleshooting

Signal nRF24L01 Pin Arduino Mega 2560 PIN Arduino Mirco Pin
GND 1 GND GND
VCC 2 3.3V 3.3V
CE 3 48 8(default)
CSN 4 49 7(default)
SCK 5 52(SCK) SCK
MOSI 6 51(MOSI) MO(MOSI)
MISO 7 50(MISO) MI(MISO)
IRQ 8

Sollte der Empfänger im Serial Monitor nichts empfangen (der Monitor bleibt leer) schließen sie am Arduino Mega 2560 eine externe Stromversorgung an oder betreiben sie das nRF24L01+ Modul mit 3.3V aus einer externen Stromversorgung.

Ist der Empfänger Arduino richtig verkabelt und mit dem richtigen Code bespielt so bleibt der Serial Monitor leer (hierzu den Arduino Mega 2560 kurz von der Energieversorgung trennen).

Zeigt der Monitor scheinbar willkürlich -1, 0 oder Zahlen im Raum um 16962 an haben sie wahrscheinlich CE und CSN am Empfänger nicht richtig angeschlossen kontrollieren sie nach der obigen Tabelle.

Ich habe mir für die nRF24L01+ Module kleine breakout boards gebastelt so das sie auf ein Breadboard gesteckt werden können. Vollkommen ausreichen tuen aber 14 Female to Male Kabel für Breadboards.

nrf24L01+ Modul  Das mit den Leitungen war ungeschickt -,-

Eingekauft habe ich bei exp-tech für 4,50€ pro Modul (http://www.exp-tech.de/Shields/ITead-Studio-2-4G-Wireless-nRF24L01–Module.html)geht aber auch billiger an anderen Stellen im Netz einfach “nRF24L01+” suchen. Reichweite ist ca 25-30 meter allerdings gibt es den großen Bruder mit 1km Reichweite (http://www.exp-tech.de/Shields/NRF24L01-with-PA-and-LNA-Module.html).

Zusätzlich habe ich dieses Goldstück gefunden:

http://www.exp-tech.de/Zubehoer/Kabel/SparkFun-Cerberus-USB-Cable-6ft.html

Ein Kabel mit 3 USB anschlüssen ohne HUB Funktion!!!

USB B, mini B, micro B

Die funktionieren meines erproben nach mit den Arduinos. Allerdings kann man keine Smartphones damit synchronisieren (iPhone 5 mit microUSB auf Lightning-Adapter lädt nur am Ladegerät am USB-Port am PC sagt es nix) sondern NUR aufladen!!! auch wenn sie vollwertige USB Kabel sind mit anderen Produkten in Verbindung. Ich denke es liegt an der Kabellänge (1,8m).

Quellen:

http://www.bajdi.com/playing-with-nrf24l01-modules/

http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

Arduino Mega Sender

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
int rate=100;
 int rate2 =1;
void setup(){
 
  Serial.begin(9600);
  Mirf.cePin = 48; //ce pin am Mega 2560, diese Zeile ist wichtig wenn du einen Arduino Mega 2560 hast
  Mirf.csnPin = 49; //csn pin am Mega 2560, diese Zeile ist wichtig wenn du einen Arduino Mega 2560 hast
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"clie1");
  Mirf.payload = sizeof(rate);
  Mirf.config();
}
 
void loop()
{
  rate = analogRead(A0);
  Mirf.setTADDR((byte *)"serv1");
  Mirf.send((byte *) &rate);
  while(Mirf.isSending()){}
  Serial.println("Ich bin ein Arduino Mega 2560");
} 

Arduino Micro Empfänger

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
int rate;
 
void setup(){
 
  Serial.begin(9600);
 
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"serv1");
  Mirf.payload = sizeof(rate);
  Mirf.config();
}
 
void loop(){
 
  while(!Mirf.dataReady()){}
  Mirf.getData((byte *) &rate);
  Serial.println(rate);
  delay(100);
}

6 thoughts on “Arduino Mega 2560 | Arduino Micro | nRF24L01+

  1. Vielen Dank.
    1a Tutorial, funzt auf Anhieb🙂

    … und meinen Namen hab ich schon mehrmals getanzt😉

  2. Hallo,

    ich habe ein kleines Problem, mir stehen nämlich nur zwei Mega zur Verfügung,
    wie kann ich da eine Nachricht senden?
    Habe schon alle varianten ohne Erfolg versucht.

    Danke im voraus.

    • schließe beide Mega gleich an. Und stelle sicher das bei beiden folgende Zeilen Code stehen:

      Mirf.cePin = 48;
      Mirf.csnPin = 49;

      Dann bist du auf der sicheren Seite. Denn der Arduino MEGA hat CE und CSN auf anderen PINs als der Micro.

  3. Hallo,

    hat der Mini die selbe Pin Belegung die auch der Micro.
    Oder muss ich das Programm dann anpassen???

    Danke

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s