Dear Community , Thenks in advance for who will help me .
I bought wisblock kit for a project with Lora, because i need a gps tracker and lora don’t have enought public gateway in my area i decide to modify my project adding Rak5860 Iot Module, and for reduce the trubles, i had order Hologram sim.
I took from examples Hologram_Tcp.ino, i’m happy that Gps work, but my problem is that it doesn’t connect to the network .
I live in italy but i think it doesen’t matter , i’d tried the SIM on a old Galaxy S6 and it work fine , but from module, it don’t connect to the network … some idea ?
serial output :
07:12:55.598 → +QGPSLOC: 051254.000,4532.1126N,1158.0636E,1.4,44.5,3,0.00,0.0,0.0,0
07:12:57.585 →
07:12:57.585 → OK
07:12:57.585 →
07:12:57.585 → {“k”:"+C7pOb8=",“d”:4532.1126N,1158.0636E,“t”:“TOPIC1”}
07:13:00.525 →
07:13:03.509 →
07:18:04.507 → Send test data to Hologram via TCP!
07:18:24.019 →
07:18:24.019 → OK
07:18:24.019 →
07:18:46.493 →
07:18:46.493 → +QGPSLOC: 051845.000,4532.1201N,1158.0307E,1.4,-19.-7,3,0.00,0.0,0.1
07:18:46.493 →
07:18:48.481 →
07:18:48.481 → OK
07:18:48.481 →
07:18:48.481 → {“k”:"+C7pOb8=",“d”:4532.1201N,1158.0307E,“t”:“TOPIC1”}
07:18:51.421 →
07:18:54.410 →
07:23:55.414 → Send test data to Hologram via TCP!
07:24:14.947 →
07:24:14.947 → OK
07:24:14.947 →
07:24:40.314 →
07:24:40.314 → +QGPSLOC: 052439.000,4532.1062N,1158.0950E,2.9,23.0,3,0.00,0.0,0.0,5
07:24:42.307 →
07:24:42.307 → OK
07:24:42.307 →
07:24:42.307 → {“k”:"+C7pOb8=",“d”:4532.1062N,1158.0950E,“t”:“TOPIC1”}
07:24:45.207 →
07:24:48.191 →
07:29:49.225 → Send test data to Hologram via TCP!
07:30:08.741 →
07:30:08.741 → OK
07:30:08.741 →
07:30:49.785 →
07:30:49.785 → +QGPSLOC: 053049.000,4532.1004N,1158.0759E,1.5,14.3,3,0.00,0.0,0.0,0
07:30:51.735 →
07:30:51.735 → OK
07:30:51.735 →
07:30:51.735 → {“k”:"+C7pOb8=",“d”:4532.1004N,1158.0759E,“t”:“TOPIC1”}
07:30:54.682 →
07:30:57.671 →
07:35:58.675 → Send test data to Hologram via TCP!
07:36:18.209 →
07:36:18.209 → OK
07:36:18.209 →
07:36:30.915 →
07:36:30.915 → +QGPSLOC: 053630.000,4532.0978N,1158.0722E,1.5,30.7,3,0.00,0.0,0.0,1
07:36:32.856 →
07:36:32.856 → OK
07:36:32.856 →
07:36:32.856 → {“k”:"+C7pOb8=",“d”:4532.0978N,1158.0722E,“t”:“TOPIC1”}
07:36:35.778 →
07:36:38.803 →
07:41:39.775 → Send test data to Hologram via TCP!
07:41:59.313 →
07:41:59.313 → OK
07:41:59.313 →
07:46:54.255 →
07:46:54.255 → OK
07:46:54.255 →
07:46:54.255 → {“k”:"+C7pOb8=",“d”:,“t”:“TOPIC1”}
07:46:57.173 →
07:47:00.174 →
07:52:01.178 → Send test data to Hologram via TCP!
07:52:20.720 →
07:52:20.720 → OK
07:52:20.720 →
07:54:12.047 →
07:54:12.047 → +QGPSLOC: 055411.000,4532.1137N,1158.0580E,2.0,9.5,3,0.00,0.0,0.0,3
07:54:14.017 →
07:54:14.017 → OK
07:54:14.017 →
07:54:14.017 → {“k”:"+C7pOb8=",“d”:4532.1137N,1158.0580E,“t”:“TOPIC1”}
07:54:16.936 →
07:54:19.936 →
07:59:20.959 → Send test data to Hologram via TCP!
07:59:40.472 →
07:59:40.472 → OK
07:59:40.472 →
08:03:29.015 →
08:03:29.015 → +QGPSLOC: 060328.000,4532.1116N,1158.0669E,2.2,41.6,3,0.00,0.0,0.0,
08:03:30.954 →
08:03:30.954 → OK
08:03:30.954 →
08:03:30.954 → {“k”:"+C7pOb8=",“d”:4532.1116N,1158.0669E,“t”:“TOPIC1”}
08:03:33.910 →
08:03:36.882 →
08:08:37.869 → Send test data to Hologram via TCP!
08:08:57.445 →
08:08:57.445 → OK
08:08:57.445 →
08:10:32.166 →
08:10:32.166 → +QGPSLOC: 061031.000,4532.1042N,1158.0821E,2.3,47.6,3,0.00,0.0,0.0,4
08:10:34.115 →
08:10:34.115 → OK
08:10:34.115 →
08:10:34.115 → {“k”:"+C7pOb8=",“d”:4532.1042N,1158.0821E,“t”:“TOPIC1”}
08:10:37.040 →
08:10:40.031 →
08:15:41.035 → Send test data to Hologram via TCP!
08:16:00.560 →
08:16:00.560 → OK
08:16:00.560 →
08:20:55.499 →
08:20:55.499 → OK
08:20:55.499 →
08:20:55.499 → {“k”:"+C7pOb8=",“d”:,“t”:“TOPIC1”}
08:20:58.432 →
08:21:01.457 →
08:26:02.418 → Send test data to Hologram via TCP!
08:26:21.957 →
08:26:21.957 → OK
08:26:21.957 →
08:31:16.922 →
08:31:16.922 → OK
08:31:16.922 →
08:31:16.922 → {“k”:"+C7pOb8=",“d”:,“t”:“TOPIC1”}
08:31:19.837 →
08:31:22.820 →
Code :
/**
@file Hologram_Tcp.ino
@author rakwireless.com
@brief BG77 tcp test with Hologram, send gps data to server
@version 0.1
@date 2020-12-28
@copyright Copyright (c) 2020
**/
#define BG77_POWER_KEY WB_IO1
#define BG77_GPS_ENABLE WB_IO2
String bg77_rsp = “”;
//Hologarm tcp message format is jason. Remember to replace the card key in type k.
//About key details: Device keys – Hologram
//About message details: Embedded APIs | References | Hologram
String hologram_msg_pre = “{“k”:”+C7pOb8=",“d”:";
String hologram_msg_suff = “,“t”:“TOPIC1”}”;
String hologram_msg = “”;
String send_data_length_at = “”;
String gps_data = “”;
void setup()
{
time_t serial_timeout = millis();
Serial.begin(115200);
while (!Serial)
{
if ((millis() - serial_timeout) < 5000)
{
delay(100);
}
else
{
break;
}
}
Serial.println(“RAK11200 Cellular TEST With Hologram sim card!”);
//BG77 init , Check if the modem is already awake
time_t timeout = millis();
bool moduleSleeps = true;
Serial1.begin(115200);
delay(1000);
pinMode(BG77_GPS_ENABLE, OUTPUT);
digitalWrite(BG77_GPS_ENABLE, 1);
Serial1.println(“ATI”);
//BG77 init
while ((millis() - timeout) < 6000)
{
if (Serial1.available())
{
String result = Serial1.readString();
Serial.println(“Modem response after start:”);
Serial.println(result);
moduleSleeps = false;
}
}
if (moduleSleeps)
{
// Module slept, wake it up
pinMode(BG77_POWER_KEY, OUTPUT);
digitalWrite(BG77_POWER_KEY, 0);
delay(1000);
digitalWrite(BG77_POWER_KEY, 1);
delay(2000);
digitalWrite(BG77_POWER_KEY, 0);
delay(1000);
}
Serial.println(“BG77 power up!”);
//active and join to the net, this part may depend on some information of your operator.
bg77_at(“AT+CFUN=1,0”, 500);
delay(2000);
bg77_at(“AT+CPIN?”, 500);
delay(2000);
bg77_at(“AT+QNWINFO”, 500);
delay(2000);
bg77_at(“AT+QCSQ”, 500);
delay(2000);
bg77_at(“AT+CSQ”, 500);
delay(2000);
bg77_at(“AT+QIACT=1”, 3000);
delay(2000);
//open tcp link with Hologram server
bg77_at(“AT+QIOPEN=1,0,“TCP”,“cloudsocket.hologram.io”,9999,0,1”, 5000);
delay(2000);
}
void parse_gps()
{
int index1 = gps_data.indexOf(’,’);
if(strstr(gps_data.c_str(),“E”) != NULL)
{
int index2 = gps_data.indexOf(‘E’);
gps_data = gps_data.substring(index1+1,index2+1);
}
if(strstr(gps_data.c_str(),“W”) != NULL)
{
int index3 = gps_data.indexOf(‘W’);
gps_data = gps_data.substring(index1+1,index3+1);
}
}
void get_gps()
{
int gps_count = 300;
int timeout = 1000;
while(gps_count–)
{
Serial1.write(“AT+QGPSLOC?\r”);
timeout = 1000;
while (timeout–)
{
if (Serial1.available())
{
gps_data += char(Serial1.read());
}
delay(1);
}
if(strstr(gps_data.c_str(),“CME ERROR”) != NULL)
{
gps_data = “”;
continue;
}
if(strstr(gps_data.c_str(),“E”) != NULL || strstr(gps_data.c_str(),“W”) != NULL)
{
Serial.println(gps_data);
parse_gps();
break;
}
}
}
//this function is suitable for most AT commands of bg96. e.g. bg96_at(“ATI”)
void bg77_at(char *at, uint16_t timeout)
{
char tmp[256] = {0};
int len = strlen(at);
strncpy(tmp, at, len);
uint16_t t = timeout;
tmp[len] = ‘\r’;
Serial1.write(tmp);
delay(10);
while (t–)
{
if (Serial1.available())
{
bg77_rsp += char(Serial1.read());
}
delay(1);
}
Serial.println(bg77_rsp);
bg77_rsp = “”;
}
void send_test_data()
{
//open gps, gsm/nb will stop work now
bg77_at(“AT+QGPS=1,1”, 20000);
//get gps data, this will cost some time
get_gps();
//close gps
bg77_at(“AT+QGPSEND”, 2000);
//combine the data packet
hologram_msg = hologram_msg_pre+gps_data+hologram_msg_suff;
Serial.println(hologram_msg);
gps_data = “”;
//send data length command
char tmp[256] = {0};
send_data_length_at = “AT+QISEND=0,” + hologram_msg.length();
strncpy(tmp, send_data_length_at.c_str(), send_data_length_at.length());
bg77_at(tmp, 3000);
delay(2000);
//send data
memset(tmp,0,256);
strncpy(tmp, hologram_msg.c_str(), hologram_msg.length());
bg77_at(tmp, 1000);
delay(1000);
}
void loop()
{
Serial.println(“Send test data to Hologram via TCP!”);
send_test_data();
//consider the gps fix time, interval should be long
delay(300000);
}