Passerelle NRF24 / Ethernet

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.

Principe de fonctionnement

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
Module W5500 et NRF24L01+

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.

Schéma

 

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

Support du circuit

 

Face avant et arrière

 

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.

POST /send HTTP/1.1
Host: 192.168.1.100:80
content-type: application/x-www-form-urlencoded
recipient=0120212325&data=0100000000FF55D00700000112FF00D007000001000000000000000000000000 

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 :

{
  "data": "1C00535412FF55D00700000112FF00D007000001000000000000000000000000",
  "gatewayId": 3
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *