#include #define SerialMon Serial0 #define SerialAT Serial1 #define MODEM_DEBUG #ifdef MODEM_DEBUG #define TINY_GSM_DEBUG SerialMon #endif #define TINY_GSM_MODEM_SIM7600 #define TINY_GSM_USE_GPRS true #define TINY_GSM_USE_WIFI false #include #define MODEM_RX 17 #define MODEM_TX 18 #define MODEM_BAUD 115200 const char apn[] = "pwg"; #ifdef MODEM_DEBUG #include StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger); #else TinyGsm modem(SerialAT); #endif TinyGsmClient client(modem); void checkConnection() { SerialMon.println("Pinging httpbin.org..."); String resolved_ip_addr; uint32_t rep_data_packet_size; uint32_t tripTime; uint8_t TTL; int pingResult = modem.ping("httpbin.org", resolved_ip_addr, rep_data_packet_size, tripTime, TTL); if (pingResult == 1) { SerialMon.println("Ping successful!"); SerialMon.print("Resolved IP: "); SerialMon.println(resolved_ip_addr); SerialMon.print("Reply Data Packet Size: "); SerialMon.println(rep_data_packet_size); SerialMon.print("Round Trip Time (ms): "); SerialMon.println(tripTime); SerialMon.print("TTL: "); SerialMon.println(TTL); } else { SerialMon.print("Ping failed with result code: "); SerialMon.println(pingResult); } } void setup() { SerialMon.begin(115200); SerialMon.println("Init..."); SerialAT.begin(MODEM_BAUD, SERIAL_8N1, MODEM_RX, MODEM_TX); delay(3000); SerialMon.println("Serial initialized. Now restarting modem..."); modem.restart(); SerialMon.println("Modem restarted. Initializing modem..."); modem.init(); SerialMon.println("Modem initialized.... Modem info:"); String info = modem.getModemInfo(); SerialMon.println(info); SerialMon.println("Getting SIM status..."); if (modem.getSimStatus() != SIM_READY) { SerialMon.println("SIM not ready!"); while (true); } SerialMon.println("SIM ready. Setting Network mode..."); if (!modem.setNetworkMode(MODEM_NETWORK_AUTO)) { Serial.println("Set network mode failed!"); } String mode = modem.getNetworkModeString(); SerialMon.print("Current network mode : "); SerialMon.println(mode); SerialMon.println("Setting APN..."); if (!modem.setNetworkAPN(apn)) { SerialMon.println("Setting APN failed!"); while (true); } SerialMon.println("APN Set. Waiting for registration..."); int16_t sq; RegStatus status = REG_NO_RESULT; while (status == REG_NO_RESULT || status == REG_SEARCHING || status == REG_UNREGISTERED) { status = modem.getRegistrationStatus(); switch (status) { case REG_UNREGISTERED: case REG_SEARCHING: sq = modem.getSignalQuality(); SerialMon.printf("[%lu] Signal Quality:%d\n", millis() / 1000, sq); delay(1000); break; case REG_DENIED: SerialMon.println("Network registration was rejected, please check if the APN is correct"); return ; case REG_OK_HOME: SerialMon.println("Online registration successful"); break; case REG_OK_ROAMING: SerialMon.println("Network registration successful, currently in roaming mode"); break; default: SerialMon.printf("Registration Status:%d\n", status); delay(1000); break; } } String ueInfo; if (modem.getSystemInformation(ueInfo)) { SerialMon.print("Inquiring UE system information:"); SerialMon.println(ueInfo); } if (!modem.setNetworkActive()) { SerialMon.println("Enable network failed!"); } delay(5000); String ipAddress = modem.getLocalIP(); SerialMon.print("Network IP:"); SerialMon.println(ipAddress); checkConnection(); } void loop() { }