Connexion sans-fil avec de multiples Arduino

Bonsoir,

J'ai besoin, pour un projet, de placer divers capteurs en plusieurs endroits d'un bâtiment. J'ai donc cherché un peu, mais j'avoue être un peu perdu. J'aimerai avoir un Arduino "central" qui ferait office de récepteur sur lequel les valeurs des capteurs seraient envoyées par, très probablement, des Arduino Micro couplés avec des émetteurs.

J'ai donc découvert les modules RF433MHz, qui semble correspondre à mes attentes, mais seulement je ne sais pas s'il est possible de connecter plusieurs transmetteurs sur un seul récepteur. Apparemment cela risquerait de causer des conflits dans les données, ou que sais-je encore. S'il n'est pas possible de connecter plusieurs capteurs sur un seul récepteur, alors je pense qu'il doit être possible d'utiliser autant de récepteurs qu'il y a de capteurs, si du moins il y a moyen de régler une "fréquence" sur chaque couple émetteur/récepteur.

Lors de mes recherches, je suis tombé sur ce lien : http://hackspark.fr/fr/blog/2012/12/connecter-des-dispositifs-sans-fil-a-votre-arduino-ou-raspberry-pi-partie-1-reception-en-433mhz/. Ils ont branché un récepteur RF433 sur un Arduino, et ils arrivent à recevoir des signaux provenant de divers capteurs sans-fils du commerce; chacun de ces signaux étant identifié par un code unique.

Je vais donc vous poser quelques questions simples : - Est-il possible de placer un seul récepteur et de recevoir les signaux de plusieurs émetteurs qui seront identifiés par un code unique ? - Avec le tutoriel que j'ai cité, les informations transmises sont booléennes. Le signal est envoyé lorsque le capteur est activé, n'y-a-t-il pas moyen d'envoyer des valeurs numériques autres ? (températures par exemple). J'ai vu qu'il existait une librairie nommée Virtual Wire, mais je ne sais pas comment l'utiliser avec plusieurs capteurs. Est-ce possible ? - Dois-je envisager une autre solution plus adaptées ? Bluetooth ? 2.4GHz ? XBee ? - Pour ce qui est du XBee (Zigbee ?), est-ce possible de faire comme je désire faire, à savoir un "noeud central" sur lequel viennent se connecter les arduino capteurs ?

Merci d'avance, Rgehan ;)

Bonjour,

Beaucoup de solutions s'offrent à toi. Dans tous les cas il est quasiment toujours possible de faire un réseau. Rien ne t'empêche par exemple dans chaque message émis d'insérer une adresse. Le récepteur réagit ensuite ou non à ladite adresse.

Pour la gestion des conflit c'est pareil : soit "tout à la main", c'est à dire que tu crées toi-même ton protocole d'acquittement (le récepteur doit renvoyer un message à l'émetteur pour lui dire "ok bien reçu !", si l'acquittement n'est pas reçu, alors on réémet le message), soit utiliser des modems qui inclus toutes les fonctions nécessaires, par exemple CC1101, nrf905 ou nrf24l01. Ces derniers inclus entre autres des gestions de conflit, des canaux, des vérification d'intégrité du message ... Des petits modules tout prêt coutent à peine quelques euros sur ebay ou dealextreme. Les xBee coutent un bras et utilise les mêmes circuits ...

Tout les données quelle quel soit sont toujours binaires. Si on peut transmettre des 0 et des 1 on peut transmettre tout ce qu'on veut. 11 = 2 110 =6 ... Si maintenant je dis que le 2 c'est un O et que le 6 c'est un K alors j'ai transmis "OK". C'est le principe de la table ASCII par exemple.

Tout d'abord merci d'avoir répondu si vite, et de manière si précise.

J'ai regardé un peu les modules que tu m'as présenté, et il me semble que pour mon projet, le nRF24L01+ est adapté. Seulement n'y connaissant rien, j'aimerai clarifier quelques points avant de passer commande.

(J'envisage d'acquérir ceux-ci : "https://www.sparkfun.com/products/691")

D'après ce que j'ai compris, chaque module est à la fois transmetteur et récepteur (transceiver ?), il est donc possible de programmer chacun de mes capteurs pour qu'ils envoient, vers l'Arduino coordinatrice, un message toutes les x minutes contenant des informations comme le nom du capteur, et sa valeur.

Apparemment il existerait une librairie gérant ces modules, ce qui m'arrange plutôt bien. En regardant ses fonctions, je me suis interrogé sur le fonctionnement de ces modules.

  • Doit-on définir à la main l'adresse de chaque module ?
  • J'ai vu qu'ils étaient connectés en SPI, est-ce une sorte de connexion Serial ?
  • Cette connexion SPI empeche-t-elle d'utiliser la console Serial via le port USB ?

EDIT: Ces modules de chez DealExtreme, qui sont très peu chers, sont-ils équivalents de ceux dont je parle ? Merci d'avance :)

salut, j'ai comme projet également de faire des échanges entre arduino "maison" pour ma domotique. Pour le moment je joue avec de simple module 433MHz acheté sur ebay. Mais connais tu : http://lowpowerlab.com/moteino/ ?

Il y en a des moins cher encore ;) http://dx.com/p/2-4ghz-nrf24l01-wireless-communication-module-for-arduino-green-2-pcs-149255

Le SPI n'a rien à voir avec le serial sur quasiment tout les points. Dans le SPI il y a notamment un maitre (l'arduino ici) et un esclave (le nrf). Tu trouveras des infos un peu partout sur internet.

Pour les nrf en eux-même, on doit programmer l'adresse. Regarde ici à quoi ça ressemble : http://skyduino.wordpress.com/2012/01/20/tutoriel-arduino-mirf-v2-nrf24l01/ http://skyduino.wordpress.com/2012/02/01/arduino-transmission-valeur-analogique-par-nrf24l01/

Effectivement, c'est bien moins cher que ceux qu'on trouve ailleurs, je pense que je vais commander ceux-là. Par contre le lien à propos de la transmission de valeur analogiques pointe vers une erreur 404, c'est dommage :)

Merci beaucoup pour tout ça :)

Bonjour.

Le lien indiqué par B@tto mène à une page qui me semble mensongère : des NRF24L01 simples présentés comme des NRF24L01+ Ça n'a guère d'importance. J'utilise indiféremment les deux achetés sur eBay.

Je fais sans peine dialoguer 2 Arduinos. Quand j'ai voulu faire discuter un client avec 2 serveurs, j'ai eu la surprise de voir les serveurs discuter entre eux. Pourtant chaque message a un destinataire. C'était juste avant les vacances et je n'ai pas approfondi. Je pourrais à la rigueur apporter une correction "soft" dans les messages échangés.

Comme j'utilise des mega2560, j'ai été obligé d'ajouter des régulateurs de tension.

ma page est ici

Personnellement, je compte utiliser des Arduinos micros, il me semble qu'ils possèdent bien une sortie 3.3v donc cela devrait aller. En revanche je ne saisis pas trop la différence entre le NRF24L01+ et le NRF24L01. Serait-ce une différence de vitesse/portée ?

Etant donné que je ne compte utiliser qu'un arduino "serveur", je pense que n'aurai pas trop de soucis de messages doublons, puisqu'il recevra un message par capteurs toutes les x minutes.

Je vais aller jeter un coup d’œil à ta page :)

EDIT: J'ai encore moins cher (frais de port compris), j'ai commandé pour voir : http://dx.com/p/lc-nrf24l01-wireless-data-transmission-module-blue-234534 J’espère qu'ils feront l'affaire :)

Tant qu'à faire autant prendre des + ;) les simples ne sont plus produit

J'ai modifié mes liens ça devrait marcher

Avec tout ce que vous m'avez donner à lire, je vais bien arriver à faire quelque chose :)

Je n'ai plus qu'à attendre la livraison de DealExtreme, site que je ne connaissais pas et qui s'avère être super, et je pourrai commencer mes petits tests :)

Merci bien :)

C'est un site très fiable tu peux dormir tranquille ;)

Même ebay est très sûr. Je commande énormément de choses sur ces deux sites et j'ai jamais eu de problème

Oui j'ai regardé aussi un peu sur eBay, c'est incroyable la quantité de choses qu'il y a pour des prix très faibles et en plus ils offrent les frais de port souvent :)

Je vais avoir de quoi m'amuser ;)

Si t'as besoin d'avis sur n'importe quel module, n'hésite pas j'en ai énormément quelque soit le type

Bonjour B@tta, je souhaites utiliser des modules radio pour communiquer entre arduino, pourrais tu faire un retour ton expérience ? tu as testé différent module RF ?

Alors j'ai dans mes tirroirs des nrf905 (version 433 mhz des nrf24l01+) et des cc1101 de Texas Instrument (433 mhz). Pour l'heure je n'ai pu qu'étudier la datasheet, mais j'ai déjà collecté pas mal d'info : ce sont des modules en 433 mhz donc normalement la portée est bien supérieure au nrf24l01 et passe mieux les murs. J'ai vu une vidéo d'un test de portée par un type avec des cc1101, il a marché pendant 5 min avant que ça décroche ... Le nrf905 possède une lib : http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/ Le CC1101 lui est le plus perfectionné des 3 (et donc le plus compliqué à mettre en oeuvre) et la seul librairie qui semble y avoir est la panstamp mais c'est pas clair à 100%.

Dans tous les cas la mise en oeuvre avec arduino est tout à fait possible, à dire lequel est le mieux maintenant ... J'aurais tendance à résumer le choix aux NRF, mieux documentés, et du coup n'avoir qu'à choisir entre 2.4ghz ou 433 mhz. Je réserve le CC1101 aux personne plus aguerries. A noter que je dis 433 mhz, mais ces modules sont programmables pour du 868 et du 915 mhz.

Quand aux performances "brutes", je pense que c'est kiff kiff. Ce sont des chip de référence en la matière faits par des fabricants bien connus il sera donc difficile de trouver mieux dans le domaine (en tout cas dans cette gamme de produit)

merci de ta réponse, j’ai reçu mes NRF24L01+ ce matin, je teste ça et je reviens vers vous :slight_smile: