Shield IoT Uno com LoRaWAN

Olá,

Foram adquiridas Shields Arduino Uno v1r1 com módulo de rádio LoRaWAN.
A shield tem número de série 4861 e módulo LoRaWAN 8207.
Não há o manual da shield no site e gostaria me enviassem uma cópia.

Observei que na placa do rádio indica LoRaMewsh mas o manual publicado no site está de acordo.
Mesmo assim liguei para o suporte que esclareceu que está coreto, mas orientou postar no forum a consulta.

A intenção é conectar ao serviço TTN.

Baixei a bibloteca LoRaWAN.h e o código LoRaWAN_OTAA_Example.ino, compilei e carreguei no Arduino.

Mantive as variáveis do código:
char APPKEY[] = “50:d1:ad:39:e5:b3:a6:fc:ff:db:3e:a6:3e:e6:5a:a4”;
char APPEUI[] = “d9:8c:fb:ab:a0:3a:7a:d2”;
char CHMASK[] = “00FF:0000:0000:0000:0001:0000”;
char str_counter[32];
int counter = 0;

No monitor serial recebo apenas as mensagens e pára após mostrar a segunda:

Initializing…
Sending JOIN.

Só isso.

Piscam os LEDS da placa LoRaWAN na sequência abaixo:
1 VD (verde)
2 VM (vermalho) VD
3 VM
4 VM
5 VD
6 VM VD
7 VM
8 VM
9 VD
10 VD
11 VM
12 VM

Pelo código deveria aparecer uma das mensgens abaixo:

“EndDevice has joined sucessfully.”

Ou

“Error joining the network.”

Mas não aparece nenhuma delas

Teria alguma sugestão para adicionar ou corrigir o código?

Atenciosamente,
Alexandre Falcão.

Faltou informar que tenho um gateway LoRaWAN registrado na TTN.

Inseri no código uma função para piscar um LED em alguns pontos do código original.

Abaixo o código completo.

// LoRaWAN_OTTA_Example.ino - Exemplo do GitHUB

#include <LoRaWAN.h>

#include <SoftwareSerial.h>
#include <stdint.h>

SoftwareSerial* hSerialCommands = NULL;

char APPKEY[] = “50:d1:ad:39:e5:b3:a6:fc:ff:db:3e:a6:3e:e6:5a:a4”;
char APPEUI[] = “d9:8c:fb:ab:a0:3a:7a:d2”;
char CHMASK[] = “00FF:0000:0000:0000:0001:0000”;
char str_counter[32];
int counter = 0;

void setup()
{
Serial.begin(9600); /* Initialize monitor serial */
Serial.println(“Initializing…”);
pisca(22, 2, 2, 1);
delay(10000);

hSerialCommands = SerialCommandsInit(7, 6, 9600);

SendAtCommand(AT_CHMASK, AtSet, CHMASK);
Serial.println(“Sending JOIN.”);
if(JoinNetwork(0) == RAD_OK)
{
Serial.println(“EndDevice has joined sucessfully.”);
}
else
{
Serial.println(“Error joining the network.”);
}
}

void loop()
{

pisca(22, 2, 2, 2);

sprintf(str_counter, “Counter: %d\r\n\0”, counter++);
Serial.println(str_counter);
SendString(str_counter, 2);
delay(15000);
}

void pisca (int pino, int alto, int baixo, int repete)
{
pinMode(pino, OUTPUT);
while (repete > 0)
{
digitalWrite(pino, HIGH); // turn the LED on (HIGH is the voltage level)
delay(alto1000); // wait for m seconds
digitalWrite(pino, LOW); // turn the LED off by making the voltage LOW
delay(baixo
1000); // wait for n seconds
repete–;
}
}

// Final do código

Olá ASFALCAO,
Neste código de exemplo, o EndDevice ficará tentando realizar o join. Somente após fazer o join começará a transmitir.
Então, se o EndDevice não estiver corretamente cadastrado no Gateway o Arduino ficará preso na rotina de join. Vamos melhorar isso assim que possível.
No exemplo do link abaixo foram colocadas algumas melhorias como a correção da máscara de canais, um primeiro pedido de join, comando de reset … etc.
http://download.radioenge.com.br/iot/Arduino_LoRaWAN_exemplo_OTAA.zip