Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi und nRF24L01+ Funkmodul


von Jens K. (mister232)


Lesenswert?

Hallo Leute,

ich versuche nun schon seit einigen Tagen eine Ansteuerung für ein 
nRF24L01+ Funkmodul auf meinem Raspberry Pi zu realisieren. Ich nutze 
zur Ansteuerung eine modifizierte Version der RF24.h, welche ich im 
Internet gefunden habe. Passend dazu habe auch ein fertiges Programm im 
Internet gefunden, welches ich ein wenig abgeändert habe:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <unistd.h>
4
#include <string.h>
5
#include <string>
6
#include <getopt.h>
7
#include <cstdlib>
8
#include <iostream>
9
#include "/home/pi/RF24/librf24-rpi/librf24/RF24.h"
10
11
using namespace std;
12
RF24 radio("/dev/spidev0.0",8000000,25); //spi device, speed and CSN,only CSN is NEEDED in RPI
13
const int role_pin = 7;
14
const uint64_t pipes[1] = { 0xF0F0F0F0E1LL };
15
16
void setup(void)
17
{
18
  //Prepare the radio module
19
  printf("\nPreparing interface\n");
20
  radio.begin();
21
  printf("Started\n");
22
  radio.setRetries( 15, 15);
23
  radio.setChannel(0x4c);
24
  radio.setPALevel(RF24_PA_MAX);
25
  radio.setPALevel(RF24_PA_MAX);
26
27
  radio.openWritingPipe(pipes[0]);
28
  radio.openReadingPipe(1,pipes[1]);
29
  radio.startListening();
30
  radio.printDetails();
31
}
32
33
void switchLight(void)
34
{
35
  //This function send a message
36
37
  unsigned long message = 2;
38
  
39
  //Send the message
40
  bool ok = radio.write( &message, sizeof(unsigned long) );
41
  if (ok)
42
    printf("ok...");
43
  else
44
    printf("failed.\n\r");
45
}
46
47
int main( int argc, char ** argv)
48
{
49
  uint8_t i;
50
  
51
  setup();
52
53
  for(i = 0; i < 1000; i++)
54
  {
55
      printf("Sending message...\n");
56
      switchLight();
57
      printf("Done...\n");
58
  }
59
}

Ursprünglich war es ein Programm um ein Licht per Funk einzuschalten. 
Nun soll das Programm ganz einfach immer wieder eine 2 an den 
Kommunikationspartner senden. Das hat soweit nur den Sinn, dass ich auf 
dem Oszi sehen möchte ob sich überhaupt was am SPI-Port des RPi tut.

Wenn ich das Program in der Konsole Kompeliere, so kommt folgende 
Ausgabe:

Preparing interface
can't open device: no such file or directory

Hat sich schon mal einer von euch mit dem Thema befasst und kann mir 
weiterhelfen?

Ich entschuldige mich schonmal im Voraus für den Programmierstill, aber 
ich möchte erstmal einfach nur das es läuft. Danach werde ich dann alles 
sauber Programmieren.

von Florian (Gast)


Lesenswert?

Hay,

ich bin zur Zeit leider bei dem gleichen Problem =D. Die Anleitungen 
dafür sind einfach viel zu undetailiert ...

Ich vermute aber, dass irgendwas mit dem foldenden Teil nicht stimmt:
RF24 radio("/dev/spidev0.0",8000000,25);

Da
"/dev/spidev0.0"
bei mir zumindest erst garnicht existiert.


In welchem Teil der Anleitung das installiert werden sollte? Keine 
Ahnung. Ich glaube der Teil ist in der Anleitung der ich gefolgt bin 
leider weggefallen.


http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/

von Florian (Gast)


Lesenswert?

Problem bei mir gelöst:
Methode 2 bei der GPIO-Einrichtung funktioniert nicht zu 100% =D

Ich habe Methode 1 inklusive des Reboots hinterhergeschoben und es 
funktioniert nun. Ob es jetzt lediglich an dem Reboot lag kann ich im 
Nachhinein nicht sagen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.