Проблема с подключением Arduino Mega 2560 и GSM shield (официальный M10)
Так как я не хочу накладывать шилд на плату mega 2560, я пытаюсь подключить только те контакты, которые используются для связи GSM. Вот мое подключение:
Контакт 3 на Mega <==> Контакт GSM Rx на Shield
Контакт 10 на Mega <==> Контакт GSM Tx на Shield
Вывод 4 на Mega <==> Вывод 4 на Shield
Контакт 5V на Mega <==> Контакт Vin на Shield
Закрепить GRD на Mega <==> Закрепить GRD на Shield
Я использовал код из библиотеки примеров GsmScanNetworks:
#include <GSM.h>
// Номер ПИН-кода
#define PINNUMBER "8888"
// инициализируем экземпляр библиотеки
GSM gsmAccess; // включите параметр «true» для включения отладки
GSMScanner scannerNetworks;
GSMModem modemTest;
// Сохранение переменных данных
String IMEI = "";
// сообщения о результатах последовательного монитора
String errortext = "ERROR";
void setup()
{
// инициализируем последовательную связь и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта. Требуется только для Leonardo
}
Serial.println("GSM networks scanner");
scannerNetworks.begin();
// состояние соединения
boolean notConnected = true;
// Запустить GSM-щит
// Если на вашей SIM-карте есть PIN-код, передайте его как параметр begin() в кавычках
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
// получить параметры модема
// IMEI, уникальный идентификатор модема
Serial.print("Modem IMEI: ");
IMEI = modemTest.getIMEI();
IMEI.replace("\n","");
if(IMEI != NULL)
Serial.println(IMEI);
}
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 дБм
// BER — это частота ошибок по битам. Шкала от 0 до 7. 99=не обнаруживается
Serial.print("Signal Strength: ");
Serial.print(scannerNetworks.getSignalStrength());
Serial.println(" [0-31]");
}
Вопросы:
- После открытия последовательного порта считывается только строка "GSM network scanner". Похоже, программа застряла на
gsmAccess.begin(PINNUMBER)
, как это исправить? - Обязательно ли подавать питание 5 В 2 А на щит отдельно, чтобы он работал? (при указанном выше подключении светодиод ON на щите загорается оранжевым светом)
- Для PINNUMBER, определенного в программе, моя SIM-карта имеет PIN-код по умолчанию 8888. Я проверил с помощью мобильного телефона, что SIM-карта работает. Но мой телефон показывает, что SIM-карта не заблокирована PIN-кодом. Так мне определить PIN-код как 8888 для ''?
РЕДАКТИРОВАТЬ:
Примечание по использованию GSM Shield с Mega
* И да! Щит работал, когда был сложен! (Изначально я не хотел сгибать штифт 2... но... эээ... сложение и выгибание штифта 2 сработало)
* Пробовал примеры "GSMScanNetwork" и "SendSMS", работает отлично. Но для "GsmWebServer" IP-адрес отображается, но когда я ввожу IP-адрес в браузере, Chrome/IE говорит, что не может найти IP-адрес.....Есть какие-нибудь подсказки?
* А светодиод состояния на плате GSM имеет какое-то отношение к питанию? Он то загорается, то гаснет, то загорается, то гаснет.....
* Для вопросов 1 и 3, PINNUMBER установлен на ''. Работает нормально.
@MW_hk, 👍6
2 ответа
Я сделал это и добился (некоторого ограниченного) успеха.
Некоторые из ваших связей неверны; Подключите оба контакта 7s на шилде и MEGA, а не контакт 4s. Контакт 7 — это контакт сброса — я думаю, что GSM.begin сбрасывает шилд перед тем, как что-либо делать. Это может помочь с Q1.
Убедитесь, что вы используете регулируемый выход 5 В на MEGA, а не Vin для питания вашего шилда. Vin — это любое напряжение, подключенное к разъему питания MEGA, и оно может повредить ваш шилд. Я лично не заметил никакой разницы при питании MEGA+Shield от USB или внешнего источника 12 В.
У меня были проблемы с помехами, когда я использовал провода для подключения экрана к MEGA. Стекирование, похоже, уменьшило эту проблему, но не устранило ее никоим образом...
Веб-сервер GSM вряд ли будет работать, за исключением, может быть, сети вашего провайдера SIM. Некоторые ограничения упомянуты здесь; https://www.arduino.cc/en/Tutorial/GSMToolsTestWebServer
Подайте питание на gsm shield с помощью адаптера 9 В. Это может сработать. Я тоже использовал питание на gsm module от arduino, но там нет соединения. После того, как я использовал адаптер 9 В, все заработало.
- Моделирование Arduino Mega 2560 с GSM модулем с использованием Proteus
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Arduino GSM Shield GSM_READY никогда не готов
- Arduino Mega + SIM808 GSM + модуль GPS + программа включается без нажатия кнопки?
- Как извлечь широту и долготу из GPS
- Можно ли изменить официальную библиотеку шилдов arduino GSM для работы с аппаратным serial на mega?
- SIM800L — AT-команды ничего не делают на последовательном мониторе Arduino
- Проблема с отправкой SMS с GSM SIM900