
Este exemplo mostra como o AVR64DD32 pode ser usado para criar um nó final de Lorawan que monitora a temperatura, a umidade, a pressão barométrica e a umidade do solo e transmite esses dados a cada três minutos a uma aplicação por meio da rede de coisas (TTN). O nó pode ser colocado entre dez metros e cinco quilômetros de um portal de Lorawan em ambientes urbanos, mas o alcance é mais amplo para locais suburbanos. O design demonstra como um nó final, mesmo a longo alcance, pode ser configurado para consumir energia muito baixa/ter uma duração de bateria longa, enquanto move dados valiosos com segurança. Esse projeto pode ser dimensionado facilmente para permitir a captura de dados de variabilidade do solo, colocando nós adicionais em um gráfico agrícola sem a necessidade de adicionar gateways ou infraestrutura adicionais.
Essa demonstração usa o módulo RN2903A, que opera na banda de frequência de 915 MHz e é adequado para projetos baseados nos EUA e na Austrália, mas o projeto é facilmente adaptado para trabalhar em outras regiões, selecionando um Board Alternate Click ™ e Gateway para sua região.
Adicione os componentes à placa do adaptador Nano.
Coloque o LR2 Clique no Mikrobus ™ 2 e o clique no MIKROBUS 1.
Conecte os cabos do sensor de umidade, como mostrado na Figura 1.
Por fim, adicione um fio de jumper entre (PA1) e PD1 para permitir a redefinição do clique em LR2. (PA1) não está conectado por padrão (pois já está conectado a um relógio externo), como resultado, este projeto permite que o pino PD1 acione o sinal de redefinição.
| Fio de jumper | Alfinete |
|---|---|
| VCC - fio vermelho do sensor de umidade | VCC |
| GND - fio preto do sensor de umidade | Gnd |
| AOUT - fio amarelo do sensor de umidade | PD2 |
| (PA1) - Coloque um jumper entre | PD1 |

Figura 1. Configuração de hardware

Figura 2. Abra o projeto em Mplab x
Depois que o projeto é aberto, comece calibrando os sensores.
Para calibrar o sensor de umidade, abra o arquivo application.c e altere o estado inicial para TEST_MOISTURE .

Figura 3. Definindo o estado inicial para test_moisture
Posteriormente, essas configurações podem ser específicas para as necessidades do solo e da planta, mas, para a brevidade, começam com os limites superior e inferior para medições testando em ar seco e em um copo de água.
Coloque o sensor para que esteja suspenso em ar seco.

Figura 4. Sensor posicionado em ar seco
Inicie o visualizador de dados com as seguintes configurações:
Taxa de transmissão: 9600
Comprimento de char: 8 bits
Paridade: Nenhum
Pare os bits: 1
Clique em Enviar para o terminal, depois faça e programe o dispositivo.

Figura 5. Visualizador de dados Enviar para o terminal

Figura 6. Faça e programe o dispositivo
Depois que o programa começar, você será solicitado a pressionar o botão para gerar uma leitura de conversor analógico-digital (ADC). Pressione o botão algumas vezes com o sensor em ar seco, depois coloque o sensor um copo de água e pressione o botão mais algumas vezes.
A Figura 7 mostra duas leituras. Ao coletar amostras de ar seco, a leitura do ADC é próxima de 3000. Ao coletar amostras de água, a leitura é próxima de 1400.

Figura 7. Valores de ADC no ar seco e em um copo de água
Observe seus resultados e abra o arquivo application.h . Substitua as definições para IN_MAX e IN_MIN usando seus resultados e use esses valores para calcular o CONVERSION_PERCENT usando a fórmula mostrada.

Figura 8. Definições de umidade do solo
Somente uma pequena mudança é necessária para calibrar o clique do tempo; O restante é resolvido no software. Para ter uma leitura precisa da pressão, o dispositivo precisa usar sua elevação atual acima do nível do mar. Digite esse valor na linha 24 do arquivo bme.h

Figura 9. Elevação para clique no tempo
Em seguida, configure o lado TTN do projeto.
Se você ainda não o fez, configure uma conta com TTN; A edição da comunidade é gratuita para uso justo. A conta configurada começa com a seleção de um cluster regional, clique aqui para começar.
Depois de configurar sua conta, navegue para o seu console e clique em Ir para aplicativos .

Figura 10. Configuração do aplicativo
Clique no botão Criar aplicativo e siga as instruções para criar um aplicativo.

Figura 11. Crie aplicativo
Clique nos formatados da carga útil e depois no uplink .

Figura 12. Aplicação Uplink Payload Formatter
Em Setup Formatter Type*, selecione Formatter JavaScript personalizado.

Figura 13. Selecione o formatador JavaScript personalizado
Substitua a função decodeUplink padrão pelo seguinte snippet:
function decodeUplink ( input ) {
var data = { } ;
data . temp = input . bytes [ 0 ] ;
data . humidity = input . bytes [ 1 ] ;
data . moisture = input . bytes [ 2 ] ;
data . pressure = ( input . bytes [ 3 ] + 900 ) ;
return {
data : data
} ;
}Figura 14. Snippet de código de uplink decodificado
Clique em Salvar e retorne à página Visão geral.
Na página Visão geral do aplicativo, clique no botão Registrar o dispositivo final .

Figura 15. Registrando um dispositivo final para OTAA
Para registrar o dispositivo, são necessários alguns detalhes do módulo. Abra o arquivo application.c novamente e altere o estado para se registrar.

Figura 16. Alterar o estado para se registrar
Inicie o visualizador de dados e crie e programe o dispositivo novamente. Quando o programa for executado, copie o HWEUI e observe a especificação Lorawan.

Figura 17. Detalhes do dispositivo final no visualizador de dados
Retorne à janela do dispositivo final do registro no TTN e selecione Digite as especificações do dispositivo final manualmente. Escolha seu plano de frequência com base na sua localização e selecione a especificação de Lorawan. Na seção Informações de provisionamento, digite todos os zeros para o campo JUNINEUI e clique em Confirmar .

Figura 18. Registrando um novo dispositivo
Cole o HWEUI que você copiou anteriormente no campo Deveui e clique em Gerate para gerar um novo AppKey.

Figura 19. Gere um novo AppKey
O dispositivo final agora está criado e precisará ter um formatador de carga útil.
A maneira mais rápida de configurar o formatador é usar o botão Formateira do aplicativo de pasta . Clique no botão Formatters da carga útil e selecione a opção Custom JavaScript Formatter e pressione o formatador do aplicativo Paste .

Figura 20. Cole o formatador de aplicação
No TTN, abra a página Visão geral do dispositivo final, existem dois campos para copiar e colar no arquivo de cabeçalho RN2XX3 para o projeto. Clique no Deveui e cole -o no campo HWEUI na definição RN2xx3.h . Copie o campo AppKey e cole -o na definição do AppKey.

Figura 21. Copie o Deveui e AppKey para a área de transferência

Figura 22. Atualize as definições HWEUI e AppKey
Este exemplo pressupõe que você tenha o Gateway TTN público perto de você ou configurou um por conta própria. Ter seu próprio gateway é muito útil para solucionar problemas se você tiver problemas. Se você deseja configurar seu próprio gateway, dois guias úteis podem ser encontrados em: Hackster Project e Rak Developer Gateway.
Depois de ter acesso a um gateway, continue o teste abrindo o arquivo application.c novamente e alterando o estado de volta para o init.

Figura 23. Volte para o init
Inicie o visualizador de dados novamente e reprograma o dispositivo.

Figura 24. Iniciar o Visualizador de dados
Quando o aplicativo é iniciado, os módulos serão inicializados. Pressione o botão para iniciar o procedimento TTN de junção.
A configuração do plano de frequência do canal levará cerca de dez segundos para ser concluída. Posteriormente, se a solicitação de junção for aceita, o dispositivo enviará sua primeira carga útil. Se o dispositivo não se conectar, algumas sugestões serão fornecidas. Problemas comuns estão sendo muito próximos de um gateway, chaves incorretas ou o gateway pode ter desconectado temporariamente. Normalmente, você deve ver uma saída como a da Figura 25.

Figura 25. Saída quando a solicitação de junção é aceita
Para este projeto, o nó envia novos dados a cada três minutos. Uma vez por dia, ele envia os dados como uma carga útil confirmada, como nesta primeira transmissão. As mensagens confirmadas exigem um reconhecimento da rede, mas também consomem tempo de antena no gateway e duração extra da bateria para o nó. Portanto, as próximas 479 mensagens todos os dias são enviadas como mensagens não confirmadas.
Este projeto envia todas as mensagens confirmadas na porta 10 e as mensagens não confirmadas na porta 11. Você pode ver na Figura 26 abaixo, mostrando a janela de dados ao vivo do aplicativo, que, após ingressar e enviar uma mensagem confirmada inicial, o nó envia posteriormente uma mensagem não confirmada para o aplicativo a cada três minutos.

Figura 26. Mensagens confirmadas na porta 10 e mensagens não confirmadas na porta 11
Este exemplo mostra como configurar um nó Lorawan End usando o AVR64DD32 com o clique Mikroe LR2, o clique do tempo Mikroe e um sensor de umidade do solo para compartilhar as condições do solo a longo alcance usando baixa potência.