Page 4 sur 8

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : jeu. 9 avr. 2015 19:24
par lawfix
Re à tous,

Je vais essayer de me concentrer uniquement sur le C car le portage de la library en python n'a pas l'air spécialement au point.

Je ne parviens pas du tout à faire fonctionner un code en dehors des exemples...

Pourtant si on défini les deux pipes, et les réglages de base je vois pas pourquoi ça ne fonctionne pas :(

es ce que quelqu'un aurait l'amabilité de me faire un exemple d'envoi de donnée depuis un arduino vers le pi en C que je puisse essayer de m'en inspirer, que je comprennes mes erreurs ?

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : jeu. 9 avr. 2015 20:33
par guillaume9344
Bonsoir,
je vois que l'on en est au même point. moi j’essaie d envoyer du rpi sur un µc. je joint les deux fichiers C (sans les dépendances) du rpi et du µc pour que l 'on compare. spi.cpp pour le rpi main.c pour le µc
Pour la configuration je suis parti de la config par defaut et j'ai juste modifier le minimum (ptx, prx, power up...)

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : jeu. 9 avr. 2015 20:53
par guillaume9344
Ha j'ai aussi un tuto qui peu aider:

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : ven. 10 avr. 2015 12:44
par lawfix
C'est gentil merci !

Bien on va tenter de s'aider alors !

Moi personnellement j'essaie de repartir des exemples fournis et de les changer pour parvenir à mes fin.

Par exemple je pars de l'exemple transfert qui fonctionne bien pour essayer d'introduire une demande de température sur la sonde et l'envoi vers le pi.

Je ne comprends pas qu'il n'y ai pas plus d'exemple que cela au vu du nombre de post que je vois et qui utilise cette configuration

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : ven. 10 avr. 2015 14:19
par guillaume9344
C est pas faut . Moi je peus meme pas partir des exemples, j ai pas d arduino mais des stm32.
Du cout je dois reécrir le driver et les lib en entier.

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : ven. 10 avr. 2015 20:36
par guillaume9344
Bonsoir, quand vous partez des exemples, qu es qui ne fonctionne pas?l la compilation ou l execution du programme?

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : lun. 13 avr. 2015 22:56
par lawfix
Hello,

En fait, quand on part des exemples on a beaucoup de mal à essayer de les transformer pour en faire ce que l'on souhaite, il manque des variables ou des choses qui pour le moment je ne vois pas encore leur utilité :

Voici le bout de code en C pour ma sonde sur laquelle je travail, rien d'exceptionnelle, en partant d'autres exemples sur le net :\

Code : Tout sélectionner


#include <SPI.h>
#include <RF24.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// ce,csn pins
RF24 radio(9,10);

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
    // init radio for writing on channel 76
    radio.begin();
    radio.setPALevel(RF24_PA_MAX);
    radio.setChannel(0x4c);
    radio.openWritingPipe(0xF0F0F0F0E1LL);
    radio.enableDynamicPayloads();
    radio.powerUp();

    sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement

    Serial.begin(9600);

}

void loop(void)
{

  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0));
  String temp = (sensors.getTempCByIndex(0));

  radio.write();
  
  // pause a second
  delay(1000);
}

Mais j'arrive pas à transmettre encore la variable string par le biais de radio.write

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : mar. 14 avr. 2015 10:05
par smba38
Bonjour,

Peut-être mettre une variable dans la fonction radio.write().
Pour lui indiquer quoi transmettre.

Cordialement.

SMBA38.

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : mar. 14 avr. 2015 10:42
par guillaume9344
+1 pour samba
si on ce refaire au getting started write s'utilise : radio.write(adresse du premier byte à transmettre, nombre de bytes à transmettre)
de plus, dans l initialisation de l 'adresse writing pipe, votre adresse est sur 6 bytes au li-eu de 5 maxi.
Attention également à avoir la même adresse en réception sur le module de réception.
Je vais paraitre un peu lourd, mais avez vous réussi à transmettre de l 'ardino vers le pi avec les exemples fournis?
Si ca fonctionne , dans getting started, c'est un unsigned long qui est transmit (représentant l'heure) vous pouvez commencer par le remplacer par votre fonction:
remplacer:

Code : Tout sélectionner

	unsigned long time = millis();
			bool ok = radio.write( &time, sizeof(unsigned long) );
par

Code : Tout sélectionner

	  String temp = (sensors.getTempCByIndex(0));
bool ok = radio.write( &temp, strlen(temp) );
si ca fonctionne on pourra épurer le fichier et modifier selon vos besoins.
@+

Re: nRF24L01 et B+ [tuto en fin de topic]

Posté : mar. 14 avr. 2015 14:17
par lawfix
Bonjour à tous,

Merci pour vos conseils.

Je testerais ça dès ce soir pour optimiser le code :)

Etant donné que je prends des bouts à gauche à droite c'est pas forcément très optimale, mais je commence un petit peu à comprendre comment elle fonctionne (il me semble... ).

Sinon concernant les exemples fournis avec les librairies, je peux transmettre dans les deux sens effectivement.

Je n'ai aucun soucis de fonctionnement avec les exemples, c'est comme ça que je vérifie mes câblages ^^