Arduino Mega+GSM/GPRS A6

Alina_
Offline
Зарегистрирован: 30.10.2019

Всем доброго времени суток.

Помогите,пожалуйста, решить проблему.

Взяла готовый код из интернета, чтобы узнать какие сети есть вокруг, а также уровень связи от них.

Не могу правильно подключить модуль к плате, выдает ошибку.

Использую последовательный порт Serial1 со скоростью 115200 - скорость передачи данных sheild (на всякий случай пробовала и другие скорости).

Далее скидываю скетч. Выделяет строку " scannerNetworks.begin(Serial1);" и пишет ошибку (в конце написала какую).

 

// Библиотеки:
#include <GSM.h>
 
 
// Создаем экземпляры классов:
GSM gsmAccess;     // включая параметр «true» для активации отладки
GSMScanner scannerNetworks;
GSMModem modemTest;
 
// Строка для IMEI-номера:
String IMEI = "";
 
// Статусное сообщение для Serial Monitor:
String errortext = "ERROR";  //  "Ошибка"

void setup()
{
  // Инициализируем последовательную передачу данных:
  Serial.begin(9600);
  Serial.println("GSM networks scanner");  //  "Поисковик сетей GSM"
  Serial1.begin(115200);

  scannerNetworks.begin(Serial1);

// Состояние соединения:
  boolean notConnected = true;
  
  // Запускаем GSM shield.
  // Если у вашей SIM_карты есть PIN-код, делаем его параметром функции begin():
while(notConnected)
 {
    if(gsmAccess.begin()==GSM_READY)
     { notConnected = false;
      
      Serial.println("Connected!");  //  "Подключиться не удалось"
      delay(1000);
  }else
    {
      Serial.println("Not connected");  //  "Подключиться не удалось"
      delay(1000);
    }
 }
 
 
  // Пытаемся получить параметры модема
  // (точнее IMEI, т.е. уникальный идентификатор модема):
  Serial.print("Modem IMEI: ");  //  "IMEI-номер модема: "
  IMEI = modemTest.getIMEI();
  IMEI.replace("\n","");
  if(IMEI != NULL)
    Serial.println(IMEI);
 
  // Оператор, подключенный в данный момент:
  Serial.print("Current carrier: ");  //  "Текущий оператор: "
  Serial.println(scannerNetworks.getCurrentCarrier());
 
  // Эта функция возвращает мощность сигнала и BER.
  // Диапазон мощности сигнала: 0-31, где 31 – это больше 51 dBm.
  // BER – это количество ошибок в потоке данных (Bit Error Rate),
  // диапазон: 0-7, 99 – «не определено».
  Serial.print("Signal Strength: ");  //  "Мощность сигнала: "
  Serial.print(scannerNetworks.getSignalStrength());
  Serial.println(" [0-31]");
}
 
void loop()
{
  // Сканируем имеющиеся сети, отображаем список сетей:
  Serial.println("Scanning available networks. May take some seconds.");  //  "Сканирование доступных сетей. Может занять несколько секунд."
 
  Serial.println(scannerNetworks.readNetworks());
 
    // Оператор, подключенный в данный момент:
  Serial.print("Current carrier: ");  //  "Текущий оператор: "
  Serial.println(scannerNetworks.getCurrentCarrier());
 
  // Эта функция возвращает мощность сигнала и BER.
  // Диапазон мощности сигнала: 0-31, где 31 – это больше 51 dBm.
  // BER – это количество ошибок в потоке данных (Bit Error Rate),
  // диапазон: 0-7, 99 – «не определено».
  Serial.print("Signal Strength: ");  //  "Мощность сигнала: "
  Serial.print(scannerNetworks.getSignalStrength());
  Serial.println(" [0-31]");
 
}

ОШИБКА:

In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\GSM\src/GSM.h:46:0,

from C:\Users\Алина\Documents\Arduino\sketch_nov13a\sketch_nov13a.ino:19:



C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\GSM\src/GSM3ShieldV1BandManagement.h:49:125: warning: 'typedef' was ignored in this declaration



typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE};

^

C:\Users\Алина\Documents\Arduino\sketch_nov13a\sketch_nov13a.ino: In function 'void setup()':



sketch_nov13a:40:32: error: no matching function for call to 'GSM3ShieldV1ScanNetworks::begin(HardwareSerial&)'



In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\GSM\src/GSM.h:52:0,



from C:\Users\Алина\Documents\Arduino\sketch_nov13a\sketch_nov13a.ino:19:



C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\GSM\src/GSM3ShieldV1ScanNetworks.h:57:24: note: candidate: GSM3_NetworkStatus_t GSM3ShieldV1ScanNetworks::begin()



GSM3_NetworkStatus_t begin();

^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\GSM\src/GSM3ShieldV1ScanNetworks.h:57:24: note: candidate expects 0 arguments, 1 provided



exit status 1

no matching function for call to 'GSM3ShieldV1ScanNetworks::begin(HardwareSerial&)'

b707
Offline
Зарегистрирован: 26.05.2017

Ваш скетч не совместим с теми библиотеками, что вы используете

Alina_
Offline
Зарегистрирован: 30.10.2019

Но если я убираю строку :

  Serial1.begin(115200);

и пишу просто

  scannerNetworks.begin();

то он загружается.. Да и взята программа с официального сайта: https://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks

b707
Offline
Зарегистрирован: 26.05.2017

Alina_ пишет:

то он загружается.. Да и взята программа с официального сайта

и что из этого? - ошибки, что вы привели в первом сообщении - однозначно говорят о том, что в библиотеке нет метода scannerNetworks.begin() , вызываемого с параметром.

Скорее всего пример на сайте относится к другой версии библиотеки. Довольно частая ситуация - библиотеку изменили, а примеры переписать забыли...

Вам нужно разобраться в библиотеке и примере и переписать его под новую версию