Arduino Mega+GSM/GPRS A6
- Войдите на сайт для отправки комментариев
Всем доброго времени суток.
Помогите,пожалуйста, решить проблему.
Взяла готовый код из интернета, чтобы узнать какие сети есть вокруг, а также уровень связи от них.
Не могу правильно подключить модуль к плате, выдает ошибку.
Использую последовательный порт 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&)'
Ваш скетч не совместим с теми библиотеками, что вы используете
Но если я убираю строку :
Serial1.begin(115200);
и пишу просто
scannerNetworks.begin();
то он загружается.. Да и взята программа с официального сайта: https://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks
то он загружается.. Да и взята программа с официального сайта
и что из этого? - ошибки, что вы привели в первом сообщении - однозначно говорят о том, что в библиотеке нет метода scannerNetworks.begin() , вызываемого с параметром.
Скорее всего пример на сайте относится к другой версии библиотеки. Довольно частая ситуация - библиотеку изменили, а примеры переписать забыли...
Вам нужно разобраться в библиотеке и примере и переписать его под новую версию