Raspberry


Jouer avec les ondes radiofréquence à base de NRF2401 - Réceptions

Publié le 23/12/2018



Cela fait déjà plusieurs mois que je réfléchis à ce projet de domotique. En effet, qui n'a jamais rêvé d'allumer (ou éteindre) une lampe sans bouger à l'aide de son smartphone ou de sa tablette !



Mon projet est plus complexe que cela car j'ai eu plusieurs besoins qui me simplifierai la vie:

- Par exemple connecter mes lumières extérieures pour les allumer d'un simple clic sur mon smartphone



- Contrôler la VMC de la maison en fonction de l'hydrométrie intérieure (histoire de faire quelques économies en passant !)



- Propager la chaleur de mon poêle à bois qui a le défaut de chauffer (surchauffer) ma pièce principale. Une ventilation (type VMC) doit se mettre en route en fonction de la température pour "évacuer" la chaleur dans les autres pièces de la maison.



- Mettre en route la pompe de la piscine en fonction de la température extérieure (encore quelques économies en perspective), relever la température de l'eau, le taux de chlore...



- Mettre en place un détecteur de courrier: Quoi de plus frustrant que d'aller chercher son courrier sous la pluie quand la boite aux lettres est vide?

- Des projets j'en ai des tonnes en attente...





Cette publication va de paire avec la publication Arduino - Jouer avec les ondes - Emission.





Le but de cette publication est de pouvoir réceptionner les ondes envoyées par un autre module NRF2401 (Voir section Arduino - Jouer avec les ondes - Emission).



On aurait très bien pu utiliser une carte Arduino pour la réception, mais dans mon cas, je souhaitais utiliser le Raspberry Pi pour centraliser toutes les réceptions (de plusieurs modules NRF2401) afin de mettre à jour une base de données MySQL hébergée sur un PC sous environement Linux (Ubuntu).





J'ai donc développé un format de trame de dialogue qui permet de transmettre les informations entre module de façon sécurisée afin d'éviter toutes interférences et limiter autant que possible le piratage des trames.





Dans la vidéo vous pourrez voir la configuration du composant NRF2401, suivi d'une réception de trame correspondant à l'allumage d'une lumière (trame émise par un Arduino, voir la section Arduino - Jouer avec les ondes - Emission), puis 30 secondes plus tard d'une nouvelle trame correspondant cette fois à l'extinction de cette même lumière (la lumière est programmée pour être allumée au minimum 30 secondes après la dernière détection de présences).



Le module NRF24L01+ est un émetteur-récepteur (= transceiver) RF 2.4 GHz à très basse consommation et très faible coût qui convient particulièrement bien pour les applications DIY.



Il fonctionne avec une tension d'alimentation de 3.3 V, mais ses signaux sont tolérants au 5 V.



Quelques caractéristiques du NRF2401:

* Fréquence : 2.4 GHz band

* Tension d'alimentation : 1.9 à 3.6 V

* Interface SPI jusqu'à 10 Mb/s (tolérant 5 V)

* Vitesses de transmission : 250 kb/s¹, 1 Mb/s et 2 Mb/s (la distance est inversement proportionnel à la vitesse)

* Très basse consommation (plusieurs mois, voire années avec une pile bouton ou des piles AA/AAA). 900 nA deep sleep mode. 13.3 mA Radio RX at 2 Mb/s on-air data-rate.



Portée : quelques mètres avec une antenne PCB et jusqu'à plusieurs centaines de mètre avec une antenne externe.



Le NRF2401 utilise un protocole propriétaire Enhanced ShockBurst qui permet la communication bidirectionnelle avec mise en mémoire tampon des paquets de données, confirmation des paquets reçus et retransmission automatique des paquets perdus.



A noter: La présence du condensateur de 10µF est nécessaire pour une meilleur stabilité du composant NRF2401.



Le programme a été écrit en c. Il nécessite d'être lancé avec les droit sudo comme vous pourrez le voir dans la vidéo. Cela est nécessaire pour pouvoir communiquer avec le module NRF2401.



On peut également visualiser via internet sur son smartphone l'état de chacun des modules.


Liste des composants nécessaires pour la réalisation du circuit :

  • raspberry1
  • NRF24011
  • condensateur 10µF1


Schéma du montage électronique :


Pour les amateurs d'impression 3D, j'ai fait quelques templates qui permettent d'imprimer divers boitiers pouvant accueillir les divers composants utilisés dans mes tutoriels.
- Pour un composant PIR, vous trouverez le boitier à imprimer ici.

    Il faut compter environ 4h pour imprimer les composants de ce boitier.


- Pour un relais, vous trouverez le boitier à imprimer ici.
    Il faut compter environ 2h pour imprimer les composants de ce boitier.




L'ensemble des impressions 3D a été réalisé sur une imprimante Creality3D Ender-3 pro avec les réglages standards suivants:

Pour obtenir plus d'informations, les codes sources et tout ce qui est nécessaire au bon fonctionnement de cette publication, et pour toutes les heures de recherches passées, merci pour votre généreuse contribution !

Nombre de vue(s): 2453

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...