Passerelle NRF24 / Ethernet
Beaucoup des projets présentés sur ce blog utilisent un module nrf24l01+ pour la transmission des données sans fil… c’est bien, encore faut-il avoir quelque chose à l’autre bout pour les recevoir. Le but du billet d’aujourd’hui est de construire une passerelle faisant la liaison dans les deux sens entre un réseau Ethernet et des modules nrf24l01+. Le paquet transmis par un capteur pourra ainsi être envoyé vers une API hébergée sur un NAS ou sur un serveur internet via une box connectée au réseau. A l’inverse, une page web pourra appeler l’API de la passerelle pour envoyer un paquet à un capteur.
Liste du matériel utilisé
- Un module Nrf24l01+ amplifié avec connecteur SMA pour l’antenne (modèleE01 ML01DP5)
- Un module W5500
- Un écran OLED 128X64 I2C SSD1306 0.96″
- Un boitier aluminium 100x75x36mm
Schéma du circuit
Le microcontrôleur est cette fois ci un ATMega1284P qui dispose de plus de RAM que l’ATMega328P souvent utilisé sur les autres posts. Il y a peu d’autres composants, le module W5500 et le module NRF24 sont tous les deux connectés au bus SPI, l’écran sur l’I2C. Trois sorties pour des LED étaient prévus mais finalement elles ne sont pas utilisées. Un régulateur fournit les 3.3V nécessaires au NRF24 à partir des 5V de l’alimentation. Bien qu’alimentés en 3.3V, le NRF24 et le W5500 ont des I/O compatibles 5V.
U4 | Module W5500 (avec support femelle 2×5) |
J4 | Pin header femelle 1×2 (optionel, prévu pour un adaptateur pour un autre module sans fil type Lora, RFM69…) |
U3 | Module nRF24L01+ (avec support femelle 2×4) |
J1 | Jack-DC |
U2 | ATMEGA1284P-PU + Support |
C1 | 470µF |
C4,C5,C8,C2,C10 | 100nF (CMS 0805) |
C6,C7 | 22pF (CMS 0805) |
J2 | Pin header 1×4 (écran) |
R1,R2,R3 | 560Ω |
R4 | 10kΩ |
R5,R6 | 4.7kΩ |
Y1 | 16MHz |
J3 | Pin header 1×4 (Led inutilisées) |
P1 | Pin header 1×4 (programmation port série) |
C3,C9 | 10uF |
U1 | LM1117-3.3 ou AMS1117-3.3 ou équivalent |
Fichiers typon pour le circuit imprimé avec le masque de soudure, attention c’est un double face !
Le boitier
Le boitier est composé d’un corps en aluminium (Enclosure Electronic Project Case 100x76x35mm), d’une face avant et d’une face arrière réalisés à l’imprimante 3D en PLA noir. À l’intérieur un support également imprimé tient le circuit imprimé, la prise RJ45 et l’écran. Il est réalisé avec OpenScad.
Sources du boitier : Nrf24Gateway_Enclosure.zip
Assemblage
Le programme
Pour programmer l’ATmega1284P, il faut d’abord installer la librairie MightyCore (https://github.com/MCUdude/MightyCore) en suivant les instructions, ce qui permet d’ajouter ce microcontrôleur comme carte Arduino dans l’éditeur.
Télécharger le firmware : Nrf24Gateway
Librairies utilisées :
Fonctionnement
Sur l’écran en façade on y trouve :
- Le module radio utilisé (ici RF24, mais on peut adapter la passerelle pour un autre module radio 🙂
- L’id de la passerelle
- Le canal radio utilisé
- L’adresse IP
- L’adresse du NRF24
- Le nombre de paquets transmis/reçus avec succès et en erreur.
Envoyer des données
Via une requête GET (oui c’est mal niveau REST) : http://192.168.1.100/send?recipient=0120212325&data=0100000000FF55D00700000112FF00D007000001000000000000000000000000 ou recipient est l’adresse du nrf24 destinataire en hexadécimal, et data le paquet de 32 octets en hexadécimal également.
Recevoir des données
La passerelle reçoit automatiquement les messages radios et les envoie via un requête POST en json à l’adresse du serveur configurée dans le firmware :
2 réflexions sur « Passerelle NRF24 / Ethernet »
Bonjour votre projet m’intéresse beaucoup mais je ne sais pas trop comment faire imprimer le PCB. Pouvez vous me guider ?
Merci
Bonjour,
J’ai utilisé le site JlcPcb pour le faire imprimer. Vu que c’est par lot de 5 minimum, j’ai quelques circuits imprimés en trop que je n’utilise pas. Si vous en voulez un, je peux vous envoyer un.
Je peux ajouter les fichiers gerber sur la pagesi vous voulez le faire fabriquer.