Estratégia de módulo sem fio de baixa potência
Estou projetando módulos sensores de baixa potência que serão espalhados por uma área razoavelmente pequena. Os módulos são todos alimentados por bateria e devem operar por um período decentemente longo sem precisar recarregar / substituir as baterias (quanto mais, melhor, pense pelo menos algumas semanas, se não meses ou anos). A idéia é que a cada meia hora ou hora o módulo saia do modo de baixa energia, colete algumas amostras e transmita os dados para um data logger central. O data logger central provavelmente será alimentado na parede, portanto o consumo de baixa energia não é tão necessário. Não espero que nenhum módulo esteja a mais de 100 metros do registrador central, provavelmente muito menos.
Eu identifiquei alguns módulos possíveis de transceptores que potencialmente poderiam funcionar:
Pelo que li, todos esses módulos operam em bandas não regulamentadas pela FCC e devem ser seguros. Os módulos Alpha anunciam alcance de 300m, mas não consigo descobrir qual seria o alcance máximo esperado dos módulos de microchip. Como eu calcularia isso?
Além disso, como tenho minha banda escolhida, qual devo escolher e por quê (ou seja, o que eu ganho de 915 MHz acima de 433 MHz e o que eu perco)? Em ordem de quais parâmetros eu consideraria mais importante:
Faixa de transmissão (quanto mais, melhor, dentro da razão)
Imunidade a outros fatores ambientais (por exemplo, redes wifi / célula, fornos de microondas funcionando, paredes / obstáculos físicos, temperatura, etc.). O uso alvo é em um ambiente residencial e provavelmente haverá variações significativas de temperatura (por exemplo, -20 ° C a 50 ° C).
Taxa de dados. Isso não é muito importante, pois espero muito poucos dados por amostra (no mínimo, alguns bytes).
Outra pergunta que tenho é como lidar com vários módulos tentando transmitir dados ao mesmo tempo. Tenho alguns pensamentos sobre como mitigar isso, mas não tenho certeza de qual solução prosseguir:
Use um deslocamento de tempo aleatório para quando os dados forem transmitidos. A esperança é que as colisões sejam simplesmente evitadas. Isso provavelmente seria o mais simples de implementar e potencialmente consumirá menos energia. No entanto, isso não garante que não haverá colisões. Além disso, obter uma boa fonte de aleatoriedade ou semente pseudo-aleatória exclusiva pode causar problemas, embora não seja insolúvel.
Ao acordar e tentar transmitir, verifique se há alguma transmissão atualmente em andamento. Basta aguardar o final da transmissão antes de enviar dados. O problema passa a ser a forma como ligo com vários sensores no estado de espera, pois eles podem decidir que a última transmissão terminou e começar a transmitir ao mesmo tempo.
Observe que o alcance de 300m é para comunicação 'Clear Line of Sight', e geralmente isso pode cair para 50 ou 100m (ou até menos) em ambientes fechados, dependendo do número. e tipo de paredes entre Tx / Rx. Eu usei um par de 433MHz ASK / OOK Tx / Rx em um projeto, com perfil de uso semelhante, fora de 4x1.5VDC AA (padrão sem mercúrio), por mais de 6 meses.
Quanto ao manuseio de várias transmissões simultâneas, suas primeiras soluções estão próximas do que eu uso. No meu caso, meu transmissor usa uma entrada não calibrada do sensor de temperatura como semente PRNG para converter em um deslocamento de até 3000ms e, em seguida, também uso retransmissões.
Eu tenho um código-fonte aberto e um sensor de hardware aberto que lhe dariam um ponto de partida: ele é conectado à Internet e transmite sua temperatura, umidade e tensão da bateria a cada dois minutos e dura 3-5 anos com baterias 2xAA. É baseado no módulo M12 6LoWPAN .
Vou tentar o meu melhor para abordar todas as suas perguntas:
Em relação à troca de banda:
O alcance versus o tamanho da antena é a clara desvantagem aqui. A perda de caminho no espaço livre é uma função do comprimento de onda, de modo que as frequências mais baixas viajam muito mais longe para a mesma atenuação. MAS, para aproveitar isso, você também precisará de uma antena adequada, que também seja dimensionada com o comprimento de onda. A antena de 2,4 Ghz no M12 ocupa cerca de 2 cm2 de área de PCB.
Um segundo fator é o licenciamento. 2.4GHz pode ter estações não licenciadas em todo o mundo. 915MHz é apenas não licenciado nos EUA (é uma banda GSM em qualquer outro lugar). Não tenho certeza das restrições em 433MHz.
A taxa de dados também é efetuada pela escolha da frequência, de acordo com o teorema de Shannon – Hartley ; você pode colocar mais dados em uma banda de frequência mais alta. Isso nem sempre é usado para mais taxa de dados final. O 802.15.4, por exemplo, possui 4 bits de redundância para cada bit real visto na camada de dados. Os 32 símbolos são pseudo-ortogonais, portanto você deve corromper vários bits de baixo nível para causar um erro. Isso permite que o 802.15.4 opere sob o piso de ruído (a pesquisa sugere em -5dB SNR) e o torna relativamente robusto a interferências.
Agora, para o próximo tópico difícil,
operação de rádio de baixa potência :
Comparado às fontes de bateria domésticas (por exemplo, alcalinos AA), mesmo os SoCs de "baixa energia", como o mc13224v, não são de baixa potência. Os transmissores são de cerca de 30mA a 2-3,5V e os receptores são de aproximadamente 25mA. Sem desligar o rádio e colocar a CPU no modo de suspensão, essa carga consumirá 2 AAs em alguns dias. O alto consumo de energia do receptor costuma surpreender as pessoas e provavelmente a maior dor no desenvolvimento de sistemas de rádio de baixa potência. A implicação é que, durante anos, você quase nunca pode transmitir ou ouvir.
O objetivo de obter uma operação "ao longo do ano" a partir de alcalinos 2xAA é obter uma corrente média do sistema <50uA. Isso o coloca em anos e em relação aos efeitos secundários das baterias, como a descarga automática e a vida útil de 7 anos das baterias domésticas.
A melhor maneira de ficar abaixo da média <50uA é se o seu transceptor não precisar receber. Se isso for verdade, você poderá "agrupar" os dados o mais rápido possível e colocar o sistema no modo de baixa energia (por exemplo, aproximadamente 10uA) durante a maior parte do tempo. O TH12 , por exemplo, transmite por cerca de 10 ms, mas há outras sobrecargas no sistema em relação ao tempo de processamento e aos tempos de configuração do sensor envolvido. Os detalhes podem ser elaborados com uma sonda e planilha atual:
Medições de corrente de vigília
A partir desse tipo de análise, você pode descobrir qual será a vida útil (supondo que você tenha uma curva de descarga precisa para sua bateria).
Se você precisar receber dados do lado de baixo consumo de energia (por exemplo, para fazer um roteador sonolento em uma rede mesh), o estado da arte atual se concentrará nas técnicas de divisão de tempo. Alguns sincronizam firmemente a rede, como os sinalizadores 802.15.4, e outros usam um sistema "frouxo", como o ContikiMAC (que pode ser mais fácil de implementar, especialmente se o seu hardware não tiver uma base de tempo estável).
Independentemente disso, minha experiência mostra que esses métodos têm uma média de 400uA, o que o coloca no tempo de execução de "meses a talvez um ano" com 2xAAs.
Meu conselho: não se preocupe com eles por enquanto. Em outras palavras, faça "aloha" (sua opção 1) para onde, se você tiver dados, envie-os. Se colidir, talvez reenvie. (isso depende de seus objetivos). Se você não precisar garantir que todas as amostras sejam recebidas, tente apenas uma vez e durma imediatamente.
Você descobrirá que o problema do consumo de energia é tão difícil que a única solução será uma rede que não está transmitindo muita coisa. Se você apenas tentar, provavelmente conseguirá. Caso contrário, você pode tentar novamente mais tarde.
Se você não precisa ter certeza de todos os datagramas obtém através, então você vai ter que fazer algum tipo de esquema de ACK. No mundo 6LoWPAN, você pode usar o TCP, que continuará tentando novamente até que a bateria esteja descarregada. Há também o CoAP, que usa UDP e possui um mecanismo de nova tentativa (mas não promete entrega). Mas todas as opções aqui terão impacto no tempo de execução. Se você estiver operando por anos, o impacto será em meses.
Sua opção 2 está integrada no hardware 802.15.4 como CCA. A idéia é que o receptor ligue 8 símbolos e retorne verdadeiro ou falso. Então você pode tomar uma decisão sobre o que fazer em seguida. Você pode jogar com esses esquemas o dia todo / semana. Mas toda vez que você faz algo assim, economiza mais semanas do tempo de execução. É por isso que sugiro começar simples por enquanto. Funcionará muito bem se você estiver tentando por longos períodos de execução.
Seu link não funciona!
Eu gostaria de adicionar a este Microchip XLP Estimator , que mostrará o tempo de execução esperado para várias configurações de baterias e estados / períodos de execução. Além disso, se todos os sensores forem transcievers, você poderá implementar um esquema de 'round-robin' ou 'token-ring' em que o mestre peça repetidamente ao dispositivo 0 parann"Qualquer coisa para mim?" O sensor espera sua vez (digamos 10ms), transmite e depois desliga. Eu recomendo usar algum tipo de soma de verificação CRC, para evitar a aceitação de dados ilegíveis.
Você pode estar interessado no JeeNodes, que é basicamente um Arduino Uno emparelhado com um módulo de rádio RFM-12B do HopeRF. Se você escrever seu código diretamente nos "nós" remotos, poderá facilmente obter meses de um conjunto de baterias, dependendo de seus sensores, etc.
Confira o site dele, o consumo de energia é algo que está bem documentado. O ideal é que você possa usar bibliotecas padrão do arduino para seus sensores ou usar os sensores na loja jeelabs e usar a biblioteca JeeLib, o que torna tudo muito fácil.
JeeLabs - Finalizando
Fiz um pequeno controle remoto para uma lâmpada de um JeeNode v6 e desliguei uma bateria Nokia antiga (cerca de 1 Ah, mas provavelmente menos agora), ela está em funcionamento há 3 meses e a tensão da bateria ainda está acima de 3,9V (ou seja, ainda bem cheio). Ele fica lá em baixo consumo de energia, acordando a cada poucos ms para verificar se os botões estão pressionados.
Comprei os PCBs da loja JeeLabs, mas obtive todos os componentes de lugares como o ebay, element14 etc., acabou um pouco mais barato dessa maneira.
Com um pouco de atenção ao design da antena, aparentemente você pode obter algumas centenas de metros delas, linha de visão. É fácil obter cobertura em toda a casa com um simples fio vertical.
— Josh Pirihi
TAXA DE DADOS "A taxa de dados também é afetada pela escolha da frequência, de acordo com o teorema de Shannon-Hartley; você pode colocar mais dados em uma faixa de frequência mais alta". Errado!!!
A taxa de dados tem a ver com largura de banda e não com a frequência da operadora. Você pode ter uma baixa frequência de operadora, mas uma alta largura de banda e alta taxa de dados.
FREQUÊNCIA DA TRANSPORTADORA Freqüência mais baixa da transportadora é boa para o alcance. Se a frequência for reduzida pela metade, o alcance aumentará quatro vezes. Mas o tamanho da antena também aumentaria. Normalmente, as antenas são lamba / 2 ou lambda / 4 (lambda é o comprimento de onda em metros).
CONTENÇÃO DO CANAL Isso parece bastante óbvio à primeira vista, mas pode ser complicado. Como outros salientaram, a estratégia mais simples seria acordar e transmitir uma vez e depois dormir. Se o número de transmissores não for tão grande e a duração do sono for muito maior que a duração da transmissão, isso funcionaria. Mas você deve estar pronto para perder alguns dados em casos raros.