- Le module RF nRF24L01
- Schéma
- Programmation de Raspberry Pi pour envoyer un message à l'aide de nRF24l01
- Programmation d'Arduino UNO pour recevoir un message à l'aide de nRF24l01
Les concepteurs utilisent de nombreux systèmes de communication sans fil tels que Bluetooth Low Energy (BLE 4.0), Zigbee, modules Wi-Fi ESP8266, modules RF 433 MHz, Lora, nRF etc. Et le choix du support dépend du type d'application dans lequel il est utilisé. Parmi tout, un moyen sans fil populaire pour la communication de réseau local est le nRF24L01. Ces modules fonctionnent sur 2,4 GHz (bande ISM) avec un débit en bauds de 250 Kbps à 2 Mbps, ce qui est légal dans de nombreux pays et peut être utilisé dans des applications industrielles et médicales. Il est également affirmé qu'avec des antennes appropriées, ces modules peuvent transmettre et recevoir des signaux jusqu'à une distance de 100 mètres entre eux. Nous avons précédemment utilisé nRF24L01 avec Arduino pour contrôler le servomoteur et créer une salle de discussion.
Ici, nous utiliserons le module émetteur-récepteur RF nRF24L01 - 2,4 GHz avec Arduino UNO et Raspberry Pi pour établir une communication sans fil entre eux. Le Raspberry pi agira comme un émetteur et Arduino Uno écoutera Raspberry Pi et imprimera le message envoyé par Raspberry Pi en utilisant nRF24L01 sur un écran LCD 16x2. Le nRF24L01 a également des capacités BLE intégrées et il peut également communiquer sans fil en utilisant BLE.
Le didacticiel est divisé en deux sections. La première section inclura l' interfaçage de nRF24L01 avec Arduino pour agir en tant que récepteur et la deuxième section inclura l' interfaçage de nRF24L01 avec Raspberry Pi pour agir en tant qu'émetteur. Le code complet des deux sections avec vidéo de travail sera joint à la fin de ce didacticiel.
Le module RF nRF24L01
Les modules nRF24L01 sont des modules émetteurs - récepteurs, ce qui signifie que chaque module peut à la fois envoyer et recevoir des données, mais comme ils sont semi-duplex, ils peuvent envoyer ou recevoir des données à la fois. Le module possède le circuit intégré générique nRF24L01 de semi-conducteurs nordiques qui est responsable de la transmission et de la réception des données. L'IC communique en utilisant le protocole SPI et peut donc être facilement interfacé avec n'importe quel microcontrôleur. Cela devient beaucoup plus facile avec Arduino car les bibliothèques sont facilement disponibles. Le brochage d'un module nRF24L01 standard est illustré ci-dessous
Le module a une tension de fonctionnement de 1,9 V à 3,6 V (généralement 3,3 V) et consomme très moins de courant de seulement 12 mA en fonctionnement normal, ce qui le rend efficace sur la batterie et peut donc même fonctionner sur des piles bouton. Même si la tension de fonctionnement est de 3,3 V, la plupart des broches sont tolérantes à 5 V et peuvent donc être directement interfacées avec des microcontrôleurs 5 V comme Arduino. Un autre avantage de l'utilisation de ces modules est que chaque module possède 6 pipelines. Cela signifie que chaque module peut communiquer avec 6 autres modules pour transmettre ou recevoir des données. Cela rend le module adapté à la création de réseaux en étoile ou maillés dans les applications IoT. En outre, ils ont une large plage d'adresses de 125 ID uniques, donc dans une zone fermée, nous pouvons utiliser 125 de ces modules sans interférer les uns avec les autres.
Schéma
nRF24L01 avec Arduino:
Le schéma de circuit pour connecter nRF24L01 avec Arduino est facile et ne contient pas beaucoup de composants. Le nRF24l01 sera connecté par l'interface SPI et l'écran LCD 16x2 est interfacé avec le protocole I2C qui n'utilise que deux fils.
nRF24L01 avec Raspberry Pi:
Le schéma de circuit pour connecter nRF24L01 avec Raspberry Pi est également très simple et seule l'interface SPI est utilisée pour connecter Raspberry Pi et nRF24l01.
Programmation de Raspberry Pi pour envoyer un message à l'aide de nRF24l01
La programmation du Raspberry Pi se fera en utilisant Python3. Vous pouvez également utiliser C / C ++ comme Arduino. Mais il existe déjà une bibliothèque disponible pour nRF24l01 en python qui peut être téléchargée depuis la page github. Notez que le programme python et la bibliothèque doivent être dans le même dossier ou le programme python ne pourra pas trouver la bibliothèque. Après avoir téléchargé la bibliothèque, il suffit d'extraire et de créer un dossier dans lequel tous les programmes et fichiers de la bibliothèque seront stockés. Lorsque l'installation de la bibliothèque est terminée, commencez simplement à écrire le programme. Le programme commence par l'inclusion de bibliothèques qui seront utilisées dans le code comme l'importation de la bibliothèque GPIO pour accéder aux GPIO Raspberry Pi et le temps d'importation pour accéder aux fonctions liées au temps. Si vous êtes nouveau sur Raspberry Pi, revenez à la mise en route de Raspberry pi.
import RPi.GPIO en tant que GPIO importation heure importation spidev à partir de lib_nrf24 importation NRF24
Réglez le mode GPIO dans " Broadcom SOC channel". Cela signifie que vous faites référence aux broches par le numéro "Broadcom SOC channel", ce sont les chiffres après "GPIO" (par exemple GPIO01, GPIO02…). Ce ne sont pas les numéros de carte.
GPIO.setmode (GPIO.BCM)
Ensuite, nous allons configurer l'adresse du tuyau. Cette adresse est importante pour communiquer avec le récepteur Arduino. L'adresse sera dans le code hexadécimal.
tuyaux =,]
Commencez la radio en utilisant GPIO08 comme CE et GPIO25 comme broches CSN.
radio.begin (0, 25)
Définissez la taille de la charge utile sur 32 bits, l'adresse du canal sur 76, le débit de données de 1 Mbps et les niveaux de puissance au minimum.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Ouvrez les tubes pour commencer à écrire les données et imprimez les détails de base de nRF24l01.
radio.openWritingPipe (tuyaux) radio.printDetails ()
Préparez un message sous forme de chaîne. Ce message sera envoyé à Arduino UNO.
sendMessage = list ("Hi..Arduino UNO") while len (sendMessage) <32: sendMessage.append (0)
Commencez à écrire sur la radio et continuez à écrire la chaîne complète jusqu'à ce que la radio soit disponible. Parallèlement, notez l'heure et imprimez une déclaration de débogage de la remise des messages.
while True: start = time.time () radio.write (sendMessage) print ("Envoyé le message: {}". format (sendMessage)) send radio.startListening ()
Si la chaîne est terminée et que le tube est fermé, imprimez un message de débogage indiquant que le délai est dépassé.
while not radio.available (0): time.sleep (1/100) if time.time () - start> 2: print ("Timed out.") # print message d'erreur si radio déconnectée ou ne fonctionne plus break
Arrêtez d'écouter la radio et fermez la communication et redémarrez la communication après 3 secondes pour envoyer un autre message.
radio.stopListening () # close radio time.sleep (3) # donne un délai de 3 secondes
Le programme Raspberry est simple à comprendre si vous connaissez les bases de python. Le programme Python complet est donné à la fin du tutoriel.
Exécution du programme Python dans Raspberry Pi:
L'exécution du programme est très simple après avoir suivi les étapes ci-dessous:
- Enregistrez le programme Python et les fichiers de la bibliothèque dans le même dossier.
- Mon nom de fichier de programme pour l'expéditeur est nrfsend.py et tous les fichiers sont dans le même dossier
- Accédez au terminal de commande de Raspberry Pi. Et localisez le fichier programme python en utilisant la commande «cd».
- Ensuite, ouvrez le dossier et écrivez la commande " sudo python3 votre_programme.py " et appuyez sur Entrée. Vous pourrez voir les détails de base du nRf24 et la radio commencera à envoyer les messages toutes les 3 secondes. Le débogage du message s'affiche une fois l'envoi terminé avec tous les caractères envoyés.
Maintenant, nous allons voir le même programme que le récepteur dans l'Arduino UNO.
Programmation d'Arduino UNO pour recevoir un message à l'aide de nRF24l01
La programmation de l'Arduino UNO est similaire à la programmation du Raspberry Pi. Nous suivrons des méthodes similaires mais avec un langage de programmation et des étapes différents. Les étapes comprendront la partie lecture de nRF24l01. La bibliothèque pour nRF24l01 pour Arduino peut être téléchargée à partir de la page github. Commencez par inclure les bibliothèques nécessaires. Nous utilisons un écran LCD 16x2 utilisant I2C Shield, incluez donc la bibliothèque Wire.h et le nRF24l01 est interfacé avec SPI, incluez donc la bibliothèque SPI.
#comprendre
Inclut la bibliothèque RF24 et LCD pour accéder aux fonctions RF24 et LCD.
#comprendre
L'adresse LCD pour I2C est 27 et il s'agit d'un écran LCD 16x2 alors écrivez ceci dans la fonction.
LCD LiquidCrystal_I2C (0x27, 16, 2);
Le RF24 est connecté avec des broches SPI standard avec CE dans la broche 9 et CSN dans la broche 10.
Radio RF24 (9, 10);
Démarrez la radio, réglez le niveau de puissance et réglez le canal sur 76. Définissez également l'adresse du tuyau comme Raspberry Pi et ouvrez le tuyau pour lire.
radio.begin (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t pipe = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, pipe);
Commencez la communication I2C et initialisez l'écran LCD.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print ("Prêt à recevoir");
Commencez à écouter la radio pour les messages entrants et définissez la longueur du message sur 32 octets.
radio.startListening (); char reçuMessage = {0}
Si la radio est connectée, commencez à lire le message et enregistrez-le. Imprimez le message sur le moniteur série et imprimez également sur l'écran jusqu'à ce que le message suivant arrive. Arrêtez la radio pour écouter et réessayez après un certain intervalle. Ici, c'est 10 micro secondes.
if (radio.available ()) { radio.read (receiveMessage, sizeof (receiveMessage)); Serial.println (receiveMessage); Serial.println ("Éteindre la radio."); radio.stopListening (); String stringMessage (receiveMessage); lcd.clear (); retard (1000); lcd.print (stringMessage); }
Téléchargez le code complet donné à la fin sur l'Arduino UNO et attendez que le message soit reçu.
Ceci termine le tutoriel complet sur l'envoi d'un message à l'aide de Raspberry Pi & nRf24l01 et sa réception à l'aide d'Arduino UNO & nRF24l01. Le message sera imprimé sur l'écran LCD 16x2. Les adresses de tuyaux sont très importantes à la fois dans Arduino UNO et Raspberry Pi. Si vous rencontrez des difficultés lors de la réalisation de ce projet, veuillez commenter ci-dessous ou accéder au forum pour une discussion plus détaillée.
Consultez également la vidéo de démonstration ci-dessous.