Stratégie de module sans fil basse consommation

8

Je conçois des modules de capteur à faible puissance qui seront répartis sur une zone raisonnablement petite. Les modules sont tous alimentés par batterie et devraient fonctionner pendant une période décemment longue sans avoir à recharger / remplacer les batteries (plus c'est long, mieux c'est, pensez au moins quelques semaines sinon des mois ou des années). L'idée est que toutes les demi-heures ou heures, le module sortira du mode basse consommation, prendra des échantillons et transmettra les données à un enregistreur de données central. L'enregistreur de données central sera probablement alimenté par un mur, donc une faible consommation d'énergie n'est pas aussi nécessaire. Je ne m'attends pas à ce que les modules soient à plus de 100 m de l'enregistreur central, probablement beaucoup moins.

J'ai identifié certains modules émetteurs-récepteurs qui pourraient potentiellement fonctionner:

  1. ALPHA-TRX433S, 433 MHz
  2. ALPHA-TRX915S, 915 MHz
  3. Microchip MRF89XAM8A, 868 MHz
  4. Microchip MRF89XAM9A, 915 MHz

D'après ce que j'ai lu, ces modules fonctionnent tous dans des bandes non réglementées par la FCC et devraient être sûrs à utiliser. Les modules Alpha annoncent une portée de 300 m, mais je ne peux pas comprendre quelle serait la portée maximale attendue des modules Microchip. Comment pourrais-je calculer cela?

De plus, comme j'ai le choix des bandes, lesquelles dois-je choisir et pourquoi (c'est-à-dire qu'est-ce que j'obtiens de 915 MHz sur 433 MHz et qu'est-ce que je perds)? Dans l'ordre des paramètres que je considérerais comme les plus importants:

  1. Batterie faible
  2. Plage de transmission (plus c'est mieux, dans des limites raisonnables)
  3. Immunité aux autres facteurs environnementaux (par ex. Réseaux wifi / cellulaires, fours à micro-ondes en fonctionnement, murs / obstacles physiques, température, etc.). L'utilisation cible est dans un environnement résidentiel et il y aura probablement des variations de température importantes (disons -20C à 50C).
  4. Débit de données. Ce n'est pas très important car j'attends très peu de données par échantillon (quelques octets au maximum).

Une autre question que j'ai est de savoir comment gérer plusieurs modules en essayant de transmettre des données en même temps. J'ai quelques réflexions sur la façon d'atténuer cela, mais je ne suis pas sûr de la solution à suivre:

  1. Utilisez un décalage temporel aléatoire lorsque les données sont transmises. L'espoir est que les collisions seront simplement évitées. Ce serait probablement le plus simple à mettre en œuvre et utiliserait potentiellement le moins d'énergie. Cependant, cela ne garantit pas qu'il n'y aura pas de collisions. De plus, obtenir une bonne source de caractère aléatoire ou une graine pseudo-aléatoire unique peut causer des problèmes, mais pas insoluble.

  2. Au réveil et lors d'une tentative de transmission, vérifiez s'il y a actuellement une transmission en cours. Attendez la fin de la transmission avant d'envoyer des données. Le problème devient alors comment gérer plusieurs capteurs dans l'état d'attente, car ils pourraient potentiellement tous les deux décider que la dernière transmission est terminée et les deux commencer à transmettre en même temps.

  3. Une autre solution.

helloworld922
la source
Notez que la portée de 300 m est destinée à la communication «Clear Line of Sight», et généralement elle peut chuter à 50 ou 100 m (ou même moins) à l'intérieur, en fonction du no. et type de murs entre Tx / Rx. J'ai utilisé une paire 433MHz ASK / OOK Tx / Rx dans un projet, avec un profil d'utilisation quelque peu similaire, hors 4x1.5VDC AA (sans mercure standard), pendant plus de 6 mois.
icarus74
Quant à la gestion des multiples transmissions simultanées, vos premières solutions sont proches de ce que j'utilise. Dans mon cas, mon émetteur utilise une entrée de capteur de température non étalonnée comme graine PRNG pour se convertir en un décalage jusqu'à 3000 ms, puis j'utilise également des retransmissions.
icarus74

Réponses:

9

J'ai un capteur open source et matériel ouvert qui vous donnerait un point de départ fonctionnel: il est connecté à Internet et transmet sa température, son humidité et sa tension de batterie toutes les deux minutes et durera de 3 à 5 ans avec des piles 2xAA. Il est basé sur le module M12 6LoWPAN .

Je ferai de mon mieux pour saisir toutes vos questions:

Concernant le compromis de bande:

433 MHz, 915 MHz, 2,4 GHz

La portée en fonction de la taille de l'antenne est ici le compromis évident. La perte de chemin dans l'espace libre est fonction de la longueur d'onde, de sorte que les fréquences plus basses se déplacent beaucoup plus loin pour la même atténuation. MAIS, afin de tirer parti de cela, vous aurez également besoin d'une antenne appropriée qui évolue également avec la longueur d'onde. L'antenne 2,4 GHz sur le M12 prend environ 2 cm2 de surface PCB.

Un deuxième facteur est l'octroi de licences. 2,4 GHz peuvent avoir des stations sans licence dans le monde entier. 915 MHz n'est autorisé qu'aux États-Unis (c'est une bande GSM partout ailleurs). Je ne suis pas sûr des restrictions sur 433 MHz.

Le débit de données est également affecté par le choix de la fréquence selon le théorème de Shannon – Hartley ; vous pouvez entasser plus de données dans une bande de fréquences plus élevée. Cependant, cela n'est pas toujours utilisé pour un débit de données plus final. Le 802.15.4, par exemple, a 4 bits de redondance pour chaque bit réel vu au niveau de la couche de données. Les 32 symboles sont pseudo-orthogonaux, vous devez donc corrompre plusieurs bits de bas niveau pour provoquer une erreur. Cela permet au 802.15.4 de fonctionner sous le plancher de bruit (la recherche suggère un SNR de -5 dB) et le rend relativement robuste aux interférences.

Passons maintenant au prochain sujet difficile,

fonctionnement radio à faible puissance :

Par rapport aux sources de batteries domestiques (par exemple les alcalines AA), même les SoC "à faible puissance" tels que le mc13224v ne sont pas très faibles. Les émetteurs sont d'environ 30mA à 2-3,5V et les récepteurs sont à 25mA environ. Sans éteindre la radio et mettre le CPU en veille, cette charge drainera 2 AA en quelques jours. La forte consommation d'énergie du récepteur est souvent surprenante pour les gens et probablement la plus grande difficulté à développer des systèmes radio à faible puissance. L'implication est que pour fonctionner pendant des années, vous ne pouvez presque jamais transmettre ou écouter.

L'objectif d'obtenir un fonctionnement "sur une année" à partir d'alcalines 2xAA est d'obtenir un courant moyen du système <50uA. Cela vous met à des années et contre les effets secondaires des batteries tels que l'autodécharge et l'autonomie de 7 ans pour les batteries domestiques.

La meilleure façon de descendre en dessous de la moyenne <50uA est si votre émetteur-récepteur n'a pas besoin de recevoir. Si cela est vrai, vous pouvez "gazouiller" les données aussi rapidement que possible et mettre le système en mode basse consommation (disons environ 10 uA) la plupart du temps. Le TH12 , par exemple, transmet pendant environ 10 ms, mais il existe d'autres frais généraux dans le système concernant le temps de traitement et les temps de configuration du capteur impliqué. Les détails peuvent être élaborés avec une sonde et un tableur actuels:

À partir de ce type d'analyse, vous pouvez déterminer quelle sera la durée de vie (en supposant que vous ayez une courbe de décharge précise pour votre batterie).

Si vous avez besoin de recevoir des données sur la faible puissance (par exemple pour faire un routeur endormi dans un réseau maillé), l'état de l'art actuel se concentre sur les techniques de division du temps. Certains synchronisent étroitement le réseau, comme les balises 802.15.4, et d'autres utilisent un système "lâche" tel que ContikiMAC (qui peut être plus facile à mettre en œuvre, surtout si votre matériel n'a pas de base de temps stable).

Quoi qu'il en soit, mon expérience montre que ces méthodes se situent autour de la moyenne de 400uA, ce qui vous met dans le délai d'exécution de "mois à peut-être un an" avec 2xAA.

Collisions :

Mon conseil: ne vous en faites pas pour l'instant. En d'autres termes, faites "aloha" (votre option n ° 1) où si vous avez des données, envoyez-les. S'il entre en collision, renvoyez-le peut-être. (cela dépend de vos objectifs). Si vous n'avez pas besoin de vous assurer que chaque échantillon est reçu, essayez simplement une fois et allez vous coucher immédiatement.

Vous constaterez que le problème de consommation d'énergie est si difficile que la seule solution sera un réseau qui ne transmet pas beaucoup du tout. Si vous essayez simplement, cela passera probablement. Si ce n'est pas le cas, vous pouvez toujours réessayer plus tard.

Si vous ne devez vous assurer que tous les datagrammes passe à travers vous devrez faire une sorte de système ACK. Dans le monde 6LoWPAN, vous pouvez utiliser TCP qui continuera à réessayer jusqu'à ce que votre batterie soit morte. Il existe également CoAP qui utilise UDP et dispose d'un mécanisme de nouvelle tentative (mais ne promet pas la livraison). Mais chaque choix ici aura un impact sur l'exécution. Si vous opérez depuis des années, l'impact sera en mois.

Votre option n ° 2 est intégrée au matériel 802.15.4 en tant que CCA. L'idée est que le récepteur s'allume pour 8 symboles et renvoie vrai ou faux. Ensuite, vous pouvez décider quoi faire ensuite. Vous pouvez jouer avec ces régimes toute la journée / la semaine. Mais chaque fois que vous faites quelque chose comme ça, vous vous rasez de plus en plus de semaines. C'est pourquoi je suggère de commencer simplement pour l'instant. Cela fonctionnera très bien si vous essayez de longues durées.

Mariano Alvira
la source
Votre lien ne fonctionne pas!
Ryan Griggs
Je voudrais ajouter à cet estimateur Microchip XLP , qui vous montrera le temps d'exécution prévu pour diverses configurations de batteries et états / périodes de fonctionnement. De plus, si tous les capteurs sont des émetteurs-récepteurs, vous pouvez implémenter un schéma de type "round-robin" ou "token-ring" où le maître demande à plusieurs reprises au périphérique 0 den"N'importe quoi pour moi?" Le capteur attend son tour (disons 10 ms), transmet, puis s'éteint. Je recommanderais d'utiliser un certain type de somme de contrôle CRC, pour éviter d'accepter des données tronquées.
rdtsc
1

Vous pouvez être intéressé par JeeNodes, qui est essentiellement un Arduino Uno couplé à un module radio RFM-12B de HopeRF. Si vous écrivez votre code directement sur les «nœuds» distants, vous pouvez facilement obtenir des mois avec un jeu de piles, selon vos capteurs, etc.

Consultez son site Web, la consommation d'énergie est quelque chose de bien documenté. Une chose idéale à ce sujet est que vous pouvez utiliser des bibliothèques Arduino standard pour vos capteurs, ou utiliser les capteurs sur la boutique Jeelabs et utiliser la bibliothèque JeeLib qui rend tout très facile.

J'ai fabriqué une petite télécommande pour une lampe à partir d'un JeeNode v6 et éteint une vieille batterie Nokia (environ 1 Ah mais probablement moins maintenant), cela dure depuis 3 mois et la tension de la batterie est toujours supérieure à 3,9 V (c'est-à-dire encore assez plein). Il reste juste en veille à faible puissance, se réveillant toutes les quelques ms pour vérifier si les boutons sont enfoncés.

J'ai acheté les PCB dans le magasin JeeLabs, mais j'ai obtenu tous les composants d'endroits comme ebay, element14, etc., cela a été un peu moins cher de cette façon.

Avec un peu d'attention à la conception de l'antenne, vous pouvez apparemment en sortir quelques centaines de mètres en ligne de mire. J'obtiens facilement une couverture à l'échelle de la maison avec un simple fil vertical.

Josh Pirihi
la source
0

TAUX DE DONNÉES "Le débit de données est également affecté par le choix de fréquence selon le théorème de Shannon-Hartley; vous pouvez entasser plus de données dans une bande de fréquence plus élevée." Faux!!!

Le débit de données est lié à la bande passante et non à la fréquence porteuse. Vous pouvez avoir une fréquence porteuse faible, mais une bande passante élevée et un débit de données élevé.

FRÉQUENCE PORTEUSE La fréquence porteuse inférieure est bonne pour la portée. Si la fréquence est divisée par deux, la plage augmenterait de quatre fois. Mais la taille de l'antenne augmenterait également. Les antennes sont généralement lamba / 2 ou lambda / 4 (lambda est la longueur d'onde en mètres).

CONTENTION DU CANAL Cela semble assez évident à première vue mais peut devenir délicat. Comme d'autres l'ont souligné, la stratégie la plus simple serait de se réveiller et de transmettre une fois, puis de s'endormir. Si le nombre d'émetteurs n'est pas si grand et que la durée du sommeil est beaucoup plus grande que la durée de transmission, cela fonctionnerait. Mais vous devez être prêt à perdre certaines données dans de rares cas.

Yasir Ahmed
la source