La fonction setChannel est bien documenté sur Arduino, y est précisé ceci :
J"avais choisis 100. Ca fonctionne merveilleusement avec 2 Arduinos ou avec un Arduino et un ESP32 (qui dispose aussi du Wifi et du BT)entre 0 et 125 mais 0..83 peut être déjà pris par du wifi ou du bluetooth
Mais radio.setChannel (100) n'a aucun effet sur le Pi (et ne génère aucune erreur)
Un printDetails montre que le canal n'a pas changé.
Mais si je choisis 90, là, le numéro de canal est bien pris en compte. Donc je pense que sur la librairie Python RF24, il y a une limite mal documentée sur les canaux disponibles.
Ensuite : pb de vitesse du bus SPI
En Arduino, il tourne à 8Mhz. J'ai constaté que sur mon Pi, il tourne à 10Mhz par défaut
Les procédures classiques de modification de la vitesse du bus par spidev.spi sont sans effet (surement parce que le constructeur de l'objet RF24 l'utilise en entrée)
Mais en ouvrant le code en C de la bibliothèque Python, j'ai vu que le constructeur de l'objet RF24 accepte en entrée, de manière facultative, la vitesse du bus SPI à utiliser.
Et... Bingo ça cause !
Donc dans mon PI je dois mettre
Code : Tout sélectionner
radio = RF24(PINCSN, 0, 8000000)
Code : Tout sélectionner
radio = RF24(PINCSN, 0)
Code : Tout sélectionner
radio.setChannel(90)
Code : Tout sélectionner
radio.setChannel(100)
Mais le contenu des messages ne doit pas être du string mais une structure en C contenant des int et un longint. Ca fonctionne très bien entre mes Arduino et/ou avec l'ESP32 (ils sont codés en C et les structures c'est natif en C, comme en Pascal mais en Python , pas du tout.
Apparemment la bibliothèque pickle (ou struct) de python doit me le permettre. Donc prochaine étape : comprendre comment elles fonctionnent.