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() , вызываемого с параметром.
Скорее всего пример на сайте относится к другой версии библиотеки. Довольно частая ситуация - библиотеку изменили, а примеры переписать забыли...
Вам нужно разобраться в библиотеке и примере и переписать его под новую версию