Na verdade, é possível permitir nós inativos sem a necessidade de sincronização de horário. A idéia básica é enviar uma mensagem várias vezes até que o nó finalmente acorde. É claro que há muito espaço para otimização inteligente; portanto, existem centenas de abordagens da camada MAC com base nessa idéia.
Mas como sua pergunta pede especificamente camadas MAC, onde um nó sabe quando transmitir com antecedência, ou seja, TDMA (Time Division Multiple Access), focarei nessas abordagens.
Como você já mencionou, um problema é o desvio do relógio; portanto, os dispositivos precisam acordar regularmente para sincronizar a hora. Nas aplicações sem fio de curto alcance típicas de que estamos falando, a duração da propagação do sinal em um único salto não é um grande problema. Portanto, é suficiente que um coordenador central envie um farol, incluindo o horário atual, em intervalos regulares de tempo conhecidos pelos nós.
Em uma rede multi-hop, fica mais complicado. Apenas encaminhar o farol não funcionará, porque a latência é muito alta. A solução é que vários nós (se não todos) enviem beacons, ou seja, recebam um beacon de um nó mais próximo do coordenador, corrijam o próprio desvio do relógio e enviam um próprio beacon com o tempo corrigido. Você apenas tem que evitar a construção de círculos (esteve lá, fez isso ....).
Como agora todos os nós da rede têm a mesma noção de tempo, existe um segundo problema: como um nó sabe quando deve acordar para transmitir ou receber? Existem basicamente quatro abordagens, que também podem ser combinadas:
Slot comum : Todos os nós são ativados ao mesmo tempo e usam um método de acesso baseado em contenção para transmitir seus pacotes. Vantagem : Fácil (se você souber fazer CSMA / CA). Desvantagem : Propenso a colisões, menor rendimento.
Predefinido : para um número restrito de nós, você pode apenas atribuir slots fixos aos nós. Por exemplo, o nó 2 pode enviar para o nó 1 no primeiro intervalo de tempo e o nó 3 pode enviar para o nó 2 no segundo intervalo de tempo. Vantagem : Slots dedicados e sem colisões. Desvantagem : A topologia precisa ser corrigida (muito difícil em redes de malha sem fio).
Centralizado : um coordenador central solicita informações dos nós sobre a topologia, calcula um planejamento global e os distribui novamente aos nós. Vantagem : Nenhuma topologia predefinida é necessária. Desvantagem : Dimensiona mal e é propenso a alterações na topologia (todo o processo deve ser reiniciado).
Descentralizado : Dois nós que desejam se comunicar negociam eles próprios o slot. É bastante complexo, porque eles precisam garantir que nenhum dispositivo vizinho transmita ao mesmo tempo. Vantagem : Dimensiona bem, porque a negociação é local. Desvantagem : complexo de implementar.
Existem duas técnicas relacionadas incluídas no padrão IEEE 802.15.4 que atualmente encontram muita atenção à pesquisa: TSCH e DSME.
TSCH em si é bastante básico. Ele só resolve o problema de sincronização de tempo, mas deixa o problema de atribuição de slot para uma camada superior. Há o 6TiSCH que tenta preencher essa lacuna, mas ainda está em andamento. Existem implementações, por exemplo, incluídas no Contiki ou no OpenWSN .
O DSME, por outro lado, já fornece um mecanismo para negociação descentralizada de slots. Na verdade, criamos uma implementação de código aberto chamada openDSME . Embora exista um tutorial em vídeo para executar uma simulação, infelizmente a implementação do hardware ainda está mal documentada. Faça outra pergunta ou entre em contato diretamente se desejar usá-lo.