Strategia del modulo wireless a bassa potenza


8

Sto progettando moduli sensore a bassa potenza che saranno distribuiti su un'area ragionevolmente piccola. I moduli sono tutti alimentati a batteria e dovrebbero funzionare per un tempo decentemente lungo senza dover ricaricare / sostituire le batterie (più a lungo è meglio, pensa almeno qualche settimana se non mesi o anni). L'idea è che ogni mezz'ora o ora il modulo si riattiva dalla modalità a basso consumo, preleva alcuni campioni e trasmette i dati a un data logger centrale. Il data logger centrale sarà probabilmente alimentato a parete, quindi il consumo a bassa potenza non è necessario. Non mi aspetto che nessun modulo si trovi a più di 100 metri dal logger centrale, probabilmente molto meno.

Ho identificato alcuni possibili moduli transceiver che potenzialmente potrebbero funzionare:

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

Da quello che ho letto, questi moduli funzionano tutti in bande non regolamentate FCC e dovrebbero essere sicuri da usare. I moduli Alpha pubblicizzano una portata di 300 m, ma non riesco a capire quale sarebbe la portata massima prevista dei moduli Microchip. Come farei per calcolare questo?

Inoltre, dal momento che ho la mia scelta di bande, quale dovrei scegliere e perché (cioè cosa ottengo da 915 MHz su 433 MHz e cosa perdo)? In ordine di quali parametri considererei più importanti:

  1. A bassa potenza
  2. Gamma di trasmissione (più è meglio, entro limiti ragionevoli)
  3. Immunità ad altri fattori ambientali (ad es. Reti wifi / cellulari, funzionamento di forni a microonde, pareti / ostacoli fisici, temperatura, ecc.). L'uso target è in un ambiente residenziale e probabilmente ci saranno variazioni di temperatura significative (diciamo da -20 ° C a 50 ° C).
  4. Velocità dei dati. Questo non è molto importante poiché mi aspetto pochissimi dati per campione (pochi byte al massimo).

Un'altra domanda che ho è come gestire più moduli cercando di trasmettere dati contemporaneamente. Ho qualche idea su come mitigarlo, ma non sono sicuro su quale soluzione procedere:

  1. Utilizzare un time offset casuale per quando i dati vengono trasmessi. La speranza è che le collisioni vengano semplicemente evitate. Questo sarebbe probabilmente il più semplice da implementare e potenzialmente utilizzerà la minima potenza. Tuttavia, ciò non garantisce che non ci saranno collisioni. Inoltre, ottenere una buona fonte di casualità o un seme pseudo-casuale unico può causare problemi, sebbene non irrisolvibili.

  2. Al risveglio e tentando di trasmettere, controllare se ci sono trasmissioni attualmente in corso. Aspetta la fine della trasmissione prima di inviare i dati. Il problema diventa quindi come gestire più sensori nello stato di attesa, in quanto entrambi potrebbero potenzialmente decidere che l'ultima trasmissione è terminata ed entrambe iniziano a trasmettere contemporaneamente.

  3. Qualche altra soluzione.


Si noti che la portata di 300 m è per la comunicazione "Clear Line of Sight" e di solito può scendere a 50 o 100 m (o anche meno) in ambienti chiusi, a seconda del n. e tipo di pareti tra Tx / Rx. Ho usato una coppia ASK / OOK Tx / Rx a 433 MHz in un progetto, con un profilo d'uso un po 'simile, fuori da 4x1.5VDC AA (standard senza mercurio), per oltre 6 mesi.
Icarus74,

Per quanto riguarda la gestione delle molteplici trasmissioni simultanee, le tue prime soluzioni sono vicine a quelle che utilizzo. Nel mio caso, il mio trasmettitore utilizza un input di sensore di temperatura non calibrato come seme PRNG per convertire in un offset fino a 3000 ms, quindi uso anche ritrasmissioni.
Icarus74,

Risposte:


9

Ho un sensore open source e hardware aperto che ti darebbe un punto di partenza funzionante: è connesso a Internet e trasmette la sua temperatura, umidità e tensione della batteria ogni due minuti e durerà per 3-5 anni con batterie 2xAA. Si basa sul modulo M12 6LoWPAN .

Farò del mio meglio per afferrare tutte le tue domande:

Per quanto riguarda il compromesso della band:

433 MHz, 915 MHz, 2,4 GHz

La portata rispetto alla dimensione dell'antenna è il chiaro compromesso qui. La perdita del percorso nello spazio libero è una funzione della lunghezza d'onda, quindi le frequenze più basse viaggiano molto più lontano per la stessa attenuazione. MA, per capitalizzare su questo, avrai anche bisogno di un'antenna adatta che si ridimensiona anche con la lunghezza d'onda. L'antenna da 2,4 Ghz sull'M12 occupa circa 2 cm2 di superficie PCB.

Un secondo fattore è la licenza. 2.4GHz può avere stazioni senza licenza in tutto il mondo. 915MHz non è concesso in licenza negli Stati Uniti (è una banda GSM ovunque). Non sono sicuro delle restrizioni su 433MHz.

La velocità dei dati viene effettuata anche per scelta della frequenza secondo il teorema di Shannon – Hartley ; puoi stipare più dati in una banda di frequenza più alta. Tuttavia, questo non viene sempre utilizzato per una maggiore velocità dei dati finali. 802.15.4, ad esempio, ha 4 bit di ridondanza per ogni bit reale visto a livello di dati. I 32 simboli sono pseudo-ortogonali, quindi è necessario corrompere diversi bit di basso livello per causare un errore. Ciò consente a 802.15.4 di operare sotto il rumore di fondo (la ricerca suggerisce a -5dB SNR) e lo rende relativamente robusto alle interferenze.

Passiamo al prossimo argomento difficile,

funzionamento radio a bassa potenza :

Rispetto alle fonti di batterie domestiche (ad es. Batterie alcaline AA), anche i SoC "a bassa potenza" come mc13224v non sono a bassissima potenza. I trasmettitori sono circa 30 mA a 2-3,5 V e i ricevitori sono circa 25 mA. Senza spegnere la radio e mettere in pausa la CPU, questo carico scaricherà 2 AA in pochi giorni. L'elevato consumo di energia del ricevitore è spesso sorprendente per le persone e probabilmente il più grande dolore nello sviluppo di sistemi radio a bassa potenza. L'implicazione è che per funzionare per anni, non puoi quasi mai trasmettere o ascoltare.

L'obiettivo di ottenere un funzionamento "annuale" dagli alcalini 2xAA è di ottenere una corrente media del sistema <50uA. In questo modo ti mette a anni e contro gli effetti secondari delle batterie come l'autoscarica e l'autonomia di 7 anni per le batterie domestiche.

Il modo migliore per ottenere una media inferiore a 50uA è se il ricetrasmettitore non deve ricevere. Se questo è vero, puoi "cinguettare" i dati il ​​più rapidamente possibile e mettere il sistema in modalità a basso consumo (diciamo circa 10uA) per la maggior parte del tempo. Il TH12 , ad esempio, trasmette per circa 10ms, ma ci sono altri costi generali nel sistema per quanto riguarda il tempo di elaborazione e i tempi di impostazione per il sensore interessato. I dettagli possono essere elaborati con una sonda e un foglio di calcolo correnti:

Da quel tipo di analisi puoi capire quale sarà la durata (supponendo che tu abbia una curva di scarica accurata per la tua batteria).

Se è necessario ricevere dati sul lato a bassa potenza (ad es. Per creare un router assonnato in una rete mesh), l'attuale stato dell'arte si concentra sulle tecniche di divisione del tempo. Alcuni sincronizzano strettamente la rete, come i beacon 802.15.4, e altri usano un sistema "loose" come ContikiMAC (che può essere più facile da implementare specialmente se il tuo hardware non ha una base dei tempi stabile).

Indipendentemente da ciò, la mia esperienza dimostra che questi metodi hanno una media di circa 400uA, il che ti mette nel tempo di esecuzione "da mesi a forse un anno" con 2xAA.

Collisioni :

Il mio consiglio: non preoccuparti per loro per ora. In altre parole, fai "aloha" (la tua opzione n. 1) dove se hai i dati invialo. Se si scontra, forse rinvialo. (questo dipende dai tuoi obiettivi). Se non è necessario assicurarsi che venga ricevuto ogni campione, provare una volta sola e andare a dormire immediatamente.

Scoprirai che il problema del consumo di energia è così difficile che l'unica soluzione sarà una rete che non trasmette molto. Se ci provi, probabilmente ci riuscirà. In caso contrario, puoi sempre riprovare più tardi.

Se non è necessario per assicurarsi che ogni datagramma passa attraverso allora si dovrà fare qualche tipo di regime ACK. Nel mondo 6LoWPAN, è possibile utilizzare TCP che continuerà a riprovare fino a quando la batteria è scarica. Esiste anche CoAP che utilizza UDP e ha un meccanismo di tentativi (ma non promette la consegna). Ma ogni scelta qui avrà un impatto sul tempo di esecuzione. Se si opera da anni, l'impatto sarà tra mesi.

L'opzione n. 2 è integrata nell'hardware 802.15.4 come CCA. L'idea è che il ricevitore si accende per 8 simboli e restituisce vero o falso. Quindi puoi prendere una decisione su cosa fare dopo. Puoi giocare con questi schemi tutto il giorno / settimana. Ma ogni volta che fai qualcosa del genere, ti tagli più settimane dal runtime. Ecco perché suggerisco di iniziare in modo semplice per ora. Funzionerà abbastanza bene se stai provando per lunghi periodi di tempo.


Il tuo link non funziona!
Ryan Griggs

Vorrei aggiungere questo Estimatore XLP Microchip , che mostrerà il tempo di funzionamento previsto per varie configurazioni di batterie e stati / periodi di funzionamento. Inoltre, se tutti i sensori sono transcievers, è possibile implementare uno schema "round robin" o "token-ring" in cui il master chiede ripetutamente al dispositivo 0 din"Niente per me?" Il sensore attende il suo turno (diciamo 10ms), trasmette, quindi si spegne. Consiglio di utilizzare un qualche tipo di checksum CRC, per evitare di accettare dati confusi.
rdtsc,

1

Potresti essere interessato a JeeNodes, che è fondamentalmente un Arduino Uno associato a un modulo radio RFM-12B di HopeRF. Se scrivi il tuo codice direttamente sui "nodi" remoti, puoi facilmente ottenere mesi da un set di batterie, a seconda dei tuoi sensori ecc.

Dai un'occhiata al suo sito web, il consumo di energia è qualcosa che è ben documentato. Una cosa ideale su questi è che puoi usare le librerie arduino standard per i tuoi sensori, oppure usare i sensori nel negozio jeelabs e usare la libreria JeeLib che rende tutto molto semplice.

Ho realizzato un piccolo telecomando per una lampada da un JeeNode v6 e ho spento una vecchia batteria Nokia (circa 1 Ah ma probabilmente meno ora), è andata in carica per 3 mesi e la tensione della batteria è ancora superiore a 3,9 v (ovvero ancora abbastanza pieno). Si trova lì in modalità di sospensione a basso consumo, svegliarsi ogni pochi ms per verificare se i pulsanti sono premuti.

Ho comprato i PCB dal negozio JeeLabs, ma ho ottenuto tutti i componenti da luoghi come ebay, element14 ecc., È risultato leggermente più economico in quel modo.

Con un po 'di attenzione al design dell'antenna, a quanto pare, riesci a distanziarne di qualche centinaio, a vista. Ottengo facilmente una copertura per tutta la casa con un semplice filo verticale.


0

DATA RATE "La velocità dei dati viene effettuata anche dalla scelta della frequenza secondo il teorema di Shannon – Hartley; è possibile raggruppare più dati in una banda di frequenza più elevata." Sbagliato!!!

La velocità dei dati ha a che fare con la larghezza di banda e non con la frequenza portante. È possibile avere una frequenza portante bassa, ma una larghezza di banda elevata e una velocità di trasmissione dati elevata.

FREQUENZA PORTANTE La frequenza portante inferiore è buona per la portata. Se la frequenza viene dimezzata, l'intervallo aumenterebbe di quattro volte. Ma aumenterebbe anche la dimensione dell'antenna. In genere le antenne sono lamba / 2 o lambda / 4 (lambda è la lunghezza d'onda in metri).

CONTENUTO DEL CANALE A prima vista questo sembra abbastanza ovvio, ma può diventare complicato. Come altri hanno sottolineato, la strategia più semplice sarebbe quella di svegliarsi e trasmettere una volta e poi andare a dormire. Se il numero di trasmettitori non è così grande e la durata del sonno è molto maggiore della durata della trasmissione di quanto funzionerebbe. Ma devi essere pronto a perdere alcuni dati in rari casi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.