Interroger plusieurs modules nrf24l01

Bonjour,

Voici ma question :

J'utilise deux nrf24l01 pour transmettre et recevoir via deux nanos des données de température. J'utilise la bibliothèque rf24. Tout va bien.

Maintenant j'aimerais mesurer deux températures en deux lieux distincts donc utiliser un couple (nrf24/nano) comme récepteur et deux couples (nrf24/nanos) omme émetteurs.

Comment procéder ? La bibliothèque rf24 fait-elle l'affaire ou dois-je opter pour rf24network ou autre chose ?

A plus

Bonjour,

Pourquoi tu utilise 2 modules nrf24l01 pour transmettre et recevoir?
Un seul module nrf24l01 peut fonctionné comme récepteur et émetteur.

ben,je penses qu'il voulait dire un module dans le salon par exemple et un module dans une chambre et l'autre a l'exterieur ( c'est qu'un exemple) mais oui c'est possible d'en avoir plusieurs jusqu'a 128 :)

tu peux utiliser la blibliotheque Mirf aussi qui fait l'affaire.

Oui c'est ça, un module dans le salon et un autre dans une serre. Comme je possède deux serres et un jardin, je souhaitais remplacer mon dispositif actuel (un récepteur fonctionnant à 868 mHz peu puissant avec 3 émetteurs, un dans chaque serre et un dans le jardin ) par des nrf24 qui me donnent tout satisfaction et dont je peux maîtriser totalement le fonctionnement contrairement au produit manufacturé que j'utilise actuellement.

Je me plonge dans le lib mirf. J'avais opté pour la lib rf24 que je trouvais plus simple à mettre en oeuvre.

Merci des réponses

Cordialement

tu as un exemple ici: https://itechnofrance.wordpress.com/2013/05/24/utilisation-du-module-nrf24l01-avec-larduino/

mais google te donnera d'autre exemple si tu met arduino nrf24l01 mirf suffit de rajouteer temperature

si tu veux faire acquisition de temperature.

bonjour,

je me permets de faire une remarque sur ces modules que je teste depuis plusieurs jours pour la même application (voir mon appli ici) :

je pensais que Mirf.setRADDR((byte *) “nrf02”); suffisait à identifier le module emetteur par son adresse (au passage, c’est 5 octets maxi donc on peut mettre 02 comme adresse ça marche tres bien) hé bien non ! tous les emetteurs qui envoient au même recepteur seront captés et lus (à condition de ne pas arriver en même temps !) bref si on veut identifier quel emetteur envoie, il faut :

  • soit utiliser un canal différent (un peu lourd comme solution),
  • soit transmettre l’adresse ds le message

le setRADDR ne sert qu’au recepteur qui veut renvoyer vers le bon emetteur une éventuelle réponse…

si quelqu’un sait comment identifier un emetteur autrement et plus simplement, je suis preneur car je ne trouve rien sur ce sujet…

sinon rien a redire sur ces petites merveilles sinon que c’est encore trop gros au niveau connectique : j’attends impatiemment qu’on sorte un pro mini 3.3v avec un NRF 24l01 integré !!

Rien de plus simple avec Module, l'alternative à Arduino,

Code source d'une sonde de température dans le jardin:

#include "../module/AnalogRead.h"
#include "../module/Nrf24l01p.h"

int main()
{
    AnalogRead temperatureGarden = AnalogRead (15);
    Nrf24l01p channelGarden = Nrf24l01p (1);

    Nrf24l01p::start (11, 1524003746, true);

    while (true)
    {
        temperatureGarden.read();
        channelGarden.transmit (temperatureGarden.value);
    }

    return 0;
}

Code source d'une sonde de température dans la cuisine:

#include "../module/AnalogRead.h"
#include "../module/Nrf24l01p.h"

int main()
{
    AnalogRead temperatureKitchenRoom = AnalogRead (15);
    Nrf24l01p channelKitchenRoom = Nrf24l01p (2);

    Nrf24l01p::start (11, 1524003746, true);

    while (true)
    {
        temperatureKitchenRoom.read();
        channelKitchenRoom.transmit (temperatureKitchenRoom.value);
    }

    return 0;
}

Code source du récepteur:

#include "../module/Nrf24l01p.h"

int main()
{
    Nrf24l01p channelGarden = Nrf24l01p (1);
    Nrf24l01p channelKitchenRoom = Nrf24l01p (2);

    Nrf24l01p::start (11, 1524003746, true);

    while (true)
    {
        channelGarden.receive();
        channelKitchenRoom.receive();
    }

    return 0;
}

Pour plus d'infos sur la classe Nrf24l01p: http://sylvainmahe.xyz/exempleNrf24l01p.html

edit: voila je viens de faire le test grandeur nature chez moi avec 3 nRF24L01P, ça marche nickel ;) J'ai soudé une carte avec un 328p dessus pour l'occasion, coté nrf j'en avais 4 en rab. Si vous voulez je peux faire le test avec 4 nRF24L01P, mais à priori pour votre projet il n'y en a pas besoin.

Libre aux gens de faire comme ils veulent, avec arduino de se compliquer la vie si ils le veulent, et d'avoir des choses moins performantes et moins ergonomiques à manipuler et à programmer si ils le veulent comparé a des systèmes tierces.

Mais le point fondamental c'est de ne pas censurer l'information et brider la créativité en faisant croire aux gens qu'il n'existe qu'une seule chose possible pour animer un ATmega328P !