quarta-feira, 24 de novembro de 2021

NB-IoT - UDP ou TCP ?

Imagine a seguinte situação:

Operador 1: Estamos prontos para ligar 1.000 novos sensores de temperatura hoje?

Operador 2: Tudo pronto! Já temos 1.000 sensores de temperatura existentes. Dobrar os sensores deve ser moleza!

Operador 1: OK ligando 1.000 novos sensores ... Espere, temos um erro ... CONEXÃO RECUSADA ... SERVIDOR MQTT MUITO OCUPADO

Operadora 2: Que estranho ... Esses sensores estão apenas se conectando ao servidor MQTT pela rede móvel 5G, enviando uma mensagem curta de dados do sensor periodicamente, enquanto mantém a conexão ativa. O que poderia ter dado errado?

Operadora 1: O QUÊ ??? Por que não usamos 4G LTE com NB-IoT? Não tem conexão e pode lidar com mais sensores!

Operadora 2: Mas a entrega da mensagem não é garantida com NB-IoT! Então, novamente, talvez não precisemos realmente receber todas as mensagens do sensor ...

Operador 1: TODOS os nossos sensores de temperatura estão DESCONECTADOS! Os aquecedores estão acelerando e soprando AR QUENTE em nossas plantações! Nossos tomates frescos estão fritando! OOOO NÃO!


Vamos enfrentá-lo - NB-IoT é difícil! Mas podemos não perceber que a NB-IoT (ou Internet das coisas de banda estreita ) é difícil porque requer uma mudança de mentalidade ...

Quando os telefones foram criados, seu objetivo era conectar pessoas a outras pessoas para que pudéssemos conversar. Hoje, nossas redes 4G LTE ainda carregam os mesmos conceitos orientados à conexão, mas apresentam uma nova reviravolta: um novo método sem conexão chamado NB-IoT ...

O NB-IoT se concentra especificamente na cobertura interna, baixo custo, longa duração da bateria e alta densidade de conexão . O NB-IoT usa um subconjunto do padrão LTE, mas limita a largura de banda a uma única banda estreita de 200 kHz.

Você está conectado? Ou sem conexão?

Como alcançamos “baixo custo, longa vida útil da bateria e alta densidade de conexão” com o NB-IoT? Da próxima vez que você for a uma festa, tente isto ...

Junte-se ao máximo de pessoas que puder. Ouça o que TODOS têm a dizer.

Quando uma conversa se torna chata, apenas saia sem dizer nada.

Não se sinta obrigado a continuar nenhuma conversa. É seu direito ouvir o quanto quiser. Você NÃO tem o compromisso de permanecer CONECTADO a nenhuma pessoa na festa.

Sim, seus amigos vão achar você estranhamente anti-social. Você perderá algumas ótimas histórias de seus amigos, mas, novamente, eles provavelmente estão repetindo as mesmas velhas histórias.

MAS você aprenderá muito mais, com mais pessoas . E me sinto menos esgotado .

Essa é a melhor maneira ... a maneira SEM CONEXÃO!

Temos usado TCP (Transmission Control Protocol) desde o início da Internet para conectar nossos gadgets ( HTTP e MQTT são dois protocolos populares baseados em TCP). No entanto, o TCP é orientado à conexão - quando dois dispositivos são conectados via TCP, eles precisam permanecer conectados ... ou serão penalizados .

Se algum pacote for descartado (devido à cobertura insuficiente da rede ou congestionamento) ou atrasado, ambos os dispositivos precisarão sincronizar novamente suas janelas TCP retransmitindo seus pacotes. O que pode levar a problemas graves, como o congestionamento do servidor MQTT.

The Connectionless Way: Change TCP to UDP

Em uma rede sem conexão, não há compromisso de permanecer conectado a qualquer dispositivo: basta transmitir ou receber uma mensagem. E siga em frente . (Como nossa festa sem conexão!)


Em vez de estabelecer uma conexão TCP, transmitimos um pacote UDP (User Datagram Protocol) sem esperar a confirmação . Mas, como não têm conexão, os pacotes UDP não têm entrega garantida .

A maioria dos pacotes UDP é entregue corretamente, mas se algum pacote for descartado (devido à cobertura insuficiente da rede ou congestionamento), os dispositivos UDP não tentam ressincronizar e retransmitir os pacotes perdidos.

Não é um problema sério quando os pacotes desaparecem em nossa rede IoT? Bem, realmente precisamos receber todas as leituras do sensor? Em vez de sofrer uma falha de servidor ou congestionamento de rede, poderíamos nos comprometer descartando algumas mensagens do sensor ? É assim que alcançamos alta densidade de conexão no NB-IoT!

Quando vamos sem conexão, nossos gadgets se tornam muito mais simples de construir ... nada de protocolos de janela deslizante bagunçados e esperando para sempre! Portanto, nossos gadgets NB-IoT são de baixo custo e desfrutam de longa vida útil da bateria!

UDP

No seu computador, abra um emulador de terminal (como ). Conecte-se à porta UART a 9600 bps, 8 bits de dados, sem bit de paridade, 1 bit de parada.

Ao inserir os comandos AT abaixo, certifique-se de que seu emulador de terminal envie CR (Ctrl-M ou ) e LF (Ctrl-J ou ) no final da linha.

Rever Profiles

NINA ACESSANDO REDE CELULAR: uBlox SARA-R410M - Primeiros passos (nina-gsm.blogspot.com)

AT+CFUN=1Enable full functionality
OKNow we may start attaching to the network
AT+CGATT=1Attach to the NB-IoT network
OKAttach operation begins
AT+CEREG?Are we registered to the NB-IoT network?
=+CEREG:0,1
OK
0,1 means we have been registered
0,2 means we should wait a few seconds then recheck via AT+CEREG?
AT+CGATT?Are we attached to the NB-IoT network?
=+CGATT:1
OK
1 means we are attached to the NB-IoT net


Enviando pacote UDP

Quando você enviar um desses comandos, o modem responderá com OK ou com um erro. Para saber o que deu errado e causou uma resposta de erro, podemos ativar informações extras usando este comando:

AT+CMEE=1

O valor 1 permite a saída numérica.

por exemplo: CMEE error 4 é valor numérico para "Operação não suportada"

Você pode encontrar a lista desses códigos de erro no manual de configuração de comando.

Quando este valor for definido como 2, ele permitirá a representação "verbose".

Configurações de modem

Em seguida é definir os valores do NCONFIG, esta é uma operação única por modem. Vamos começar com uma reinicialização limpa:

AT+NRB

Lendo os valores:

AT+NCONFIG=?

Precisamos verificar se a conexão automática está ativada. Se este não for o caso, habilite-o!

AT+NCONFIG="AUTOCONNECT", "TRUE"

Para nossa rede (proximus) também habilitamos esses parâmetros:

AT+NCONFIG="CR_0354_0338_SCRAMBLING", "TRUE"

AT+NCONFIG="CR_0859_SI_AVOID", "TRUE"

E estamos prontos para nos conectar à rede!

Sequência de inicialização

Eu sempre começo uma conexão reiniciando o modem. (AT+NRB)

Em seguida, autenticamos para a rede proximus definindo o APN:

AT+CGDCONT=1,"IP","m2minternet.proximus.be"

Em seguida, pesquisamos o status de anexo para a rede usando este comando:

AT+CGATT?

Fazemos isso a cada segundo até que o modem retorne "+CGATT: 1", isso significa que estamos conectados.

Para verificar nossa qualidade de sinal usamos o comando CSQ:

AT+CSQ

Para converter esse valor para o formato dBm, você pode usar a seguinte fórmula

-113 + 2 * csq_value

Enviando uma mensagem UDP

Vamos abrir um soquete no modem:

AT+NSOCR="DGRAM",17,14000

17 significa UDP, 14000 é o porto local.

Agora vamos enviar uma mensagem UDP para um IP disponível público!
AT+NSOST=0,"12.34.56.78",44444,3,"AABBCC"
44444 é a porta do servidor UDP externo e 12.34.56.78 é o IP.

A mensagem é um "AABBCC" de hex-string e você precisa definir o tamanho do pacote que é 3 bytes no nosso caso (0xAA, 0xBB e 0xCC).

Parabéns! Estamos agora falando de UDP sobre NB-IoT!

Fontes:


DÚVIDAS BÁSICAS

suporte@smartcore.com.br

Sobre a SMARTCORE

A SmartCore fornece módulos para comunição wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br