vshymanskyy / TinyGSM

A small Arduino library for GSM modules, that just works
GNU Lesser General Public License v3.0
1.91k stars 709 forks source link

Connection not working even with wifi #515

Open roysG opened 3 years ago

roysG commented 3 years ago

[ X ] I have read the Troubleshooting section of the ReadMe

What type of issues is this?

[ X ] Bug or issue with library functionality (ie, sending data over TCP/IP)

`/** *

// Select your modem: //#define TINY_GSM_MODEM_SIM800 // #define TINY_GSM_MODEM_SIM808 // #define TINY_GSM_MODEM_SIM868 // #define TINY_GSM_MODEM_SIM900

define TINY_GSM_MODEM_SIM7000

// #define TINY_GSM_MODEM_SIM5360 // #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 // #define TINY_GSM_MODEM_BG96 // #define TINY_GSM_MODEM_A6 // #define TINY_GSM_MODEM_A7 // #define TINY_GSM_MODEM_M590 // #define TINY_GSM_MODEM_MC60 // #define TINY_GSM_MODEM_MC60E // #define TINY_GSM_MODEM_ESP8266 // #define TINY_GSM_MODEM_XBEE // #define TINY_GSM_MODEM_SEQUANS_MONARCH

// Set serial for debug console (to the Serial Monitor, default speed 115200)

define SerialMon Serial

// Set serial for AT commands (to the module) // Use Hardware Serial on Mega, Leonardo, Micro

define SerialAT Serial1

// or Software Serial on Uno, Nano

include

SoftwareSerial SerialAT(5, 4); // RX, TX

// Increase RX buffer to capture the entire response // Chips without internal buffering (A6/A7, ESP8266, M590) // need enough space in the buffer for the entire response // else data will be lost (and the http library will fail).

if !defined(TINY_GSM_RX_BUFFER)

define TINY_GSM_RX_BUFFER 650

endif

// See all AT commands, if wanted // #define DUMP_AT_COMMANDS

// Define the serial console for debug prints, if needed

define TINY_GSM_DEBUG SerialMon

// Range to attempt to autobaud

define GSM_AUTOBAUD_MIN 9600

define GSM_AUTOBAUD_MAX 115200

// Add a reception delay - may be needed for a fast processor at a slow baud rate // #define TINY_GSM_YIELD() { delay(2); }

// Uncomment this if you want to use SSL // #define USE_SSL

// Define how you're planning to connect to the internet

define TINY_GSM_USE_GPRS false

define TINY_GSM_USE_WIFI true

// set GSM PIN, if any

define GSM_PIN ""

// Your GPRS credentials, if any const char apn[] = "sphone.pelephone.net.il"; const char gprsUser[] = "pcl@3g"; const char gprsPass[] = "pcl";

// Your WiFi connection credentials, if applicable const char wifiSSID[] = "15276108_5"; const char wifiPass[] = "0546465825";

// Server details const char server[] = "vsh.pp.ua"; const char resource[] = "/TinyGSM/logo.txt";

include

// Just in case someone defined the wrong thing..

if TINY_GSM_USE_GPRS && not defined TINY_GSM_MODEM_HAS_GPRS

undef TINY_GSM_USE_GPRS

undef TINY_GSM_USE_WIFI

define TINY_GSM_USE_GPRS false

define TINY_GSM_USE_WIFI true

endif

if TINY_GSM_USE_WIFI && not defined TINY_GSM_MODEM_HAS_WIFI

undef TINY_GSM_USE_GPRS

undef TINY_GSM_USE_WIFI

define TINY_GSM_USE_GPRS true

define TINY_GSM_USE_WIFI false

endif

ifdef DUMP_AT_COMMANDS

include

StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger);

else

TinyGsm modem(SerialAT);

endif

ifdef USE_SSL

TinyGsmClientSecure client(modem); const int port = 443;

else

TinyGsmClient client(modem); const int port = 80;

endif

void setup() { // Set console baud rate SerialMon.begin(115200); delay(10);

// !!!!!!!!!!! // Set your reset, enable, power pins here // !!!!!!!!!!!

SerialMon.println("Wait...");

// Set GSM module baud rate TinyGsmAutoBaud(SerialAT, GSM_AUTOBAUD_MIN, GSM_AUTOBAUD_MAX); // SerialAT.begin(9600); delay(6000);

// Restart takes quite some time // To skip it, call init() instead of restart() SerialMon.println("Initializing modem..."); modem.restart(); // modem.init();

String modemInfo = modem.getModemInfo(); SerialMon.print("Modem Info: "); SerialMon.println(modemInfo);

if TINY_GSM_USE_GPRS

// Unlock your SIM card with a PIN if needed if ( GSM_PIN && modem.getSimStatus() != 3 ) { modem.simUnlock(GSM_PIN); }

endif

}

void loop() {

if TINY_GSM_USE_WIFI

// Wifi connection parameters must be set before waiting for the network SerialMon.print(F("Setting SSID/password...")); if (!modem.networkConnect(wifiSSID, wifiPass)) { SerialMon.println(" fail"); delay(10000); return; } SerialMon.println(" success");

endif

if TINY_GSM_USE_GPRS && defined TINY_GSM_MODEM_XBEE

// The XBee must run the gprsConnect function BEFORE waiting for network! modem.gprsConnect(apn, gprsUser, gprsPass);

endif

SerialMon.print("Waiting for network..."); if (!modem.waitForNetwork()) { SerialMon.println(" fail"); delay(10000); return; } SerialMon.println(" success");

if (modem.isNetworkConnected()) { SerialMon.println("Network connected"); }

if TINY_GSM_USE_GPRS

// GPRS connection parameters are usually set after network registration SerialMon.print(F("Connecting to ")); SerialMon.print(apn); if (!modem.gprsConnect(apn, gprsUser, gprsPass)) { SerialMon.println(" fail"); delay(10000); return; } SerialMon.println(" success");

if (modem.isGprsConnected()) { SerialMon.println("GPRS connected"); }

endif

SerialMon.print("Connecting to "); SerialMon.println(server); if (!client.connect(server, port)) { SerialMon.println(" fail"); delay(10000); return; } SerialMon.println(" success");

// Make a HTTP GET request: SerialMon.println("Performing HTTP GET request..."); client.print(String("GET ") + resource + " HTTP/1.1\r\n"); client.print(String("Host: ") + server + "\r\n"); client.print("Connection: close\r\n\r\n"); client.println();

uint32_t timeout = millis(); while (client.connected() && millis() - timeout < 10000L) { // Print available data while (client.available()) { char c = client.read(); SerialMon.print(c); timeout = millis(); } } SerialMon.println();

// Shutdown

client.stop(); SerialMon.println(F("Server disconnected"));

if TINY_GSM_USE_WIFI

modem.networkDisconnect();
SerialMon.println(F("WiFi disconnected"));

endif

if TINY_GSM_USE_GPRS

modem.gprsDisconnect();
SerialMon.println(F("GPRS disconnected"));

endif

// Do nothing forevermore while (true) { delay(1000); } }`

Scenario, steps to reproduce

send url and get the response of the url

I paste the code of one of your example, chnaged the credintials networking to mine, but it is not working.

This what i get in the serial console:

[1152379] ### Unhandled: +CEbj fail Waiting for network...[1164656] ### Unhandled: +CGbj [1169190] ### Unhandled: OK  [1173453] ### Unhandled: [1174454] ### Unhandled: [1178989] ### Unhandled: &e [1183251] ### Unhandled: [1185513] ### Unhandled: [1186777] ### Unhandled: [1191325] ### Unhandled: &e [1195587] ### Unhandled: [1196588] ### Unhandled: [1198138] ### Unhandled: [1205661] ### Unhandled: [1206662] ### Unhandled: [1208189] ### Unhandled: [1209730] ### Unhandled: [1213992] ### Unhandled: [1214993] ### Unhandled: [1219255] ### Unhandled: [1220506] ### Unhandled: fail Waiting for network...[1234768] ### Unhandled: [1236034] ### Unhandled: [1238296] ### Unhandled: [1239297] ### Unhandled: [1240547] ### Unhandled: [1244809] ### Unhandled: [1245810] ### Unhandled: [1253332] ### Unhandled: [1254334] ### Unhandled: [1255595] ### Unhandled: OK [1263131] ### Unhandled: [1267393] ### Unhandled: [1268395] ### Unhandled: [1272920] ### Unhandled: [1277457] ### Unhandled:

roysG commented 3 years ago

It is important to mention, i am working with arduino nano and i get this warnning in the console:

"Low memory available, stability problems may occur."

SRGDamia1 commented 3 years ago

Did you get this to work?

The first thing I'd try is turning off the auto-baud and setting your baud rate to 9600 with the setBaudRate function. If that's your entire program, it shouldn't fill up a nano.