Problemas configuração OTAA com Arduino

Olá,
estou usando o código exemplo disponibilizado pela própria RadioEnge para OTAA (https://github.com/Radioenge/LoRaWAN), mas algumas coisa não deram muito certo.
Vale lembra que quando conectado o end device no programa LoRaWan v1r3s35, consigo uma resposta da TTN image

Segue uma imagem do código, como configurei:
OBS: o APPEUI é o que me estranhou um pouco, já que no código anterior ele era hexa, e quando peço as informações do app esta em binario, posso estar com algo errado aqui!
image

Outra coisa que julgo ser importante, configurei o end device, usando do manual, que tem no site e estou testando junto do Shield USB e um Arduino Uno.

Obrigado pela atenção,
José Felipe

Olá Felipe,
Estou com um problema com essa versão de firmware. Se enviar 10 bytes de payload a informação vai na boa.
Se for 11 bytes vai uma vez mas depois não os payloads seguintes não são transmitidos.
Monitorando o gateway percebo que não chegam nele.
Mas se no loop enviar um pacote menor, por exemplo 2 bytes, esperar uns 30 segundos e enviar um pacote de 11 bytes dentro do loop funciona OK.
Se enviar 12 ou mais bytes não vai e aí trava.
Estou usando SENDRAW com a string char payLoad[] = “AT+SENDB=83:xxxxxxxx”.

Da biblioteca uso só o SENDRAW com AT+comando para qualquer coisa e a código if(JoinNetwork(10) == RAD_OK) {…} else {…} para testar se o JOIN foi OK ou não.

O APPEUI envio assim:

char appEUI[] = “AT+APPEUI=00:00:00:00:00:00:00:00”;

SendRaw(appEUI);

Tenho dois módulos diferentes um com a versão mais recente do firmware e outro com a versão 1.3.28B1.
Mantive o mesmo código carregado no Arduino Uno e com a mesma shield e troquei apenas o módulo com a versão mais nova por outro com a versão antiga.
O módulo com versão antiga está funcionando perfeito (fiz isso às 10h e são 14:10) e o com a versão nova funcionava por cerca de uma hora e depois o gateway não recebia mais informação.
Há algo errado, no meu modo de ver, não com a biblioteca mas sim como firmware.

Oi, a versão que estou utilizando é a 1.3.22, acredito que seja mais antiga.
Teria como me passar o teu código do arduino como exemplo? Apenas para realizar os testes. Estou agora pegando para mexer nesse módulo agora e testei pelo exemplo, mas mesmo assim ainda não consegui realizar a conexão.

Eu tava usando essa versão uns 2 anos atrás e fiz upgrade para 1.3.28B1, que resolveu diversos problemas de conexão.

Em relação ao código envio noutro post.

/* Teste de paramentros de configuracao, estabelece conexao OTAA e transmite pacote periodicamente para TTN v3 */

/* Includes */

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

/* SoftwareSerial handles */

SoftwareSerial* hSerialCommands = NULL;

/* Variables */

char payLoad[] = “AT+SENDB=83:0248656C6C6F20576F77”;

char appEUI[] = “AT+APPEUI=00:00:00:00:00:00:00:00”; // Mudar
char appKey[] = “AT+APPKEY=C4:03:40:B3:AC:F9:D1:D2:B2:48:21:DD:8B:B4:65:84”; // mudar
char chMask[] = “FF00:0000:0000:0000:0001:0000”; // Banda 2 AUS
char joinNet[] = “AT+JOIN”;
char rstLWM[] = “ATZ\r\n”;
char setMode[] = “AT+NJM=1\r\n”; // 0 = ABP e 1 = OTAA

char resposta [40];
uint8_t tamanho;

char *pontResp;
uint8_t *pontTam;

void setup()
{
pontResp = &resposta[0];
pontTam = &tamanho;

Serial.begin(9600);
Serial.println("\n\nIniciando…");

hSerialCommands = SerialCommandsInit(7, 6, 9600);

Serial.print("Reset interface LoRaWAN: "); Serial.println(rstLWM);
SendRaw(rstLWM);
delay(1000);

SendRaw(setMode);
delay(1000);

SendRaw(appKey);
delay(1000);

SendRaw(appEUI);
delay(1000);

SendRaw(chMask);
delay(1000);

Serial.print("Enviando Join: "); Serial.println(joinNet);
SendRaw(joinNet);
delay(1000);

if(JoinNetwork(10) == RAD_OK)
{
Serial.println(“EndDevice has joined sucessfully.”);
}
else
{
Serial.println(“Error joining the network.”);
}

SendRaw(“AT+NJS=?”);
delay(1000);
if (ReceivePacketCommand(pontResp, pontTam, 2000) == RAD_OK)
Serial.println(“Radio OK”);
else
Serial.println(“Radio nOK”);
Serial.print("Resposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

}

/* Loop ---------------------- */

void loop()
{
SendRaw(“AT+DEUI=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+DADDR=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.println(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+APPKEY=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+APPSKEY=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+NWKSKEY=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+APPEUI=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+VER=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+CFM=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+DR=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+RX1DL=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(“AT+RX2DL=?”);
delay(1000);
for (int i=0; i < 40; i++) resposta[i] = 0x00;
ReceivePacketCommand(pontResp, pontTam, 2000);
Serial.print("\nResposta: "); Serial.print(resposta);
Serial.print("Tamanho: "); Serial.println(tamanho);

SendRaw(payLoad);
Serial.print("\nWait\n");
delay(30000);

}

Uso a IDE 1.8.15 do Arduino.

Só retornando, consegui resolver, o meu problema estava sendo no Shield USB, estava usando para testar antes de montar, após montar em um protoboard e direto para o arduino resolveu. Muito obrigado pela ajuda