Всем привет! В общем мне необходимо запустить связку Arduino MEGA и SIM900 от efcom. Ниже прикрепляю схему подключение и скетч. Всё это дело не работает, сериал порт мне без конца выдает "Init Error". Может кто знает как быть? ФОТО: 1) https://drive.google.com/file/d/1HP-cY2dMtx1k6Z7evO1Q7JmVXbfmCRqx/view?usp=sharing 2) https://drive.google.com/file/d/1tMilt8v09oXxbWeDcKhdWf92PE7O0kS2/view?usp=sharing Код (C++): // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> // создаём объект класса GPRS и передаём в него объект Serial1 GPRS gprs(Serial1); // можно указать дополнительные параметры — пины PK и ST // по умолчанию: PK = 2, ST = 3 // GPRS gprs(Serial1, 2, 3); void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(9600); // открываем Serial-соединение с GPRS Shield Serial1.begin(9600); // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.print("Serial init OK\r\n"); // включаем GPRS шилд gprs.powerOn(); // проверяем есть ли связь с GPRS устройством while (!gprs.init()) { // если связи нет, ждём 1 секунду // и выводим сообщение об ошибке // процесс повторяется в цикле // пока не появится ответ от GPRS устройства delay(1000); Serial.print("Init error\r\n"); } // выводим сообщение об удачной инициализации GPRS Shield Serial.println("GPRS init success"); // отправляем сообщение по указанному номеру с заданным текстом } void loop() { gprs.sendSMS("+79999999999", "Hi"); }
А зачем сразу в абдурину? Надо сперва так пообщаться - через терминалку. С питанием что? Бюджет по питанию - не менее 2-х ампер. А вот это сильно)) Код (C++): void loop() { gprs.sendSMS("+79999999999", "Hi"); }
Подключил питание от блока зарядки телефона, RX и TX кинул на 7 и 8 пины. Все-равно получаю ошибку GPRS Init error. Код (C++): // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> // длина сообщения #define MESSAGE_LENGTH 160 // номер сообщения в памяти сим-карты int messageIndex = 0; // текст сообщения char message[MESSAGE_LENGTH]; // номер, с которого пришло сообщение char phone[16]; // дата отправки сообщения char datetime[24]; // создаём объект класса GPRS и передаём в него объект Serial1 // создаём объект mySerial и передаём номера управляющих пинов RX и TX SoftwareSerial mySerial(7, 8); GPRS gprs(mySerial); // можно указать дополнительные параметры — пины PK и ST // по умолчанию: PK = 2, ST = 3 // GPRS gprs(Serial1, 2, 3); void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(9600); // ждём пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с GPRS Shield mySerial.begin(9600); // включаем GPRS-шилд gprs.powerOn(); // проверяем, есть ли связь с GPRS-устройством while (!gprs.init()) { // если связи нет, ждём 1 секунду // и выводим сообщение об ошибке; // процесс повторяется в цикле, // пока не появится ответ от GPRS-устройства delay(1000); Serial.print("GPRS Init error\r\n"); } // выводим сообщение об удачной инициализации GPRS Shield Serial.println("GPRS init success"); Serial.println("Please send SMS message to me!"); } void loop() { // если пришло новое сообщение if (gprs.ifSMSNow()) { // читаем его gprs.readSMS(message, phone, datetime); // выводим номер, с которого пришло смс Serial.print("From number: "); Serial.println(phone); // выводим дату, когда пришло смс Serial.print("Datetime: "); Serial.println(datetime); // выводим текст сообщения Serial.print("Recieved Message: "); Serial.println(message); } }
когда заливаешь скетч и будешь работать от розетки, тх и рх пины скидывай перед заливкой.Если работаешь и тестишь только от юсб то этого делать не нужно. 12В 1А хватает что бы запитать мегу и смс шилд!!!! Собственно, у меня все работает, но у меня самописное включение смс шилда RX 10 TX11 у меня
Всем доброго дня! Аналогичная проблема. В наличии есть три платы: Уно, МЕГА и Искра НЕО. Есть GPRS Shield v2.0 на чипе SIM900. Собрал прототип на УНЕ - проверил все работает. Стал перетаскивать на Искру - отказ - шилд не отвечает и все тут. Раздобыл источник питания 9В, 2.5 А. Конфигурация шилда: перемычки выставлены для софтверного порта. Но с 7-ым и 8-ым пином искры общаться отказывается. Проверял даже не библиотекой, а скетчем по переброске данных между серийными портами: Код (C++): #include <SoftwareSerial.h> SoftwareSerial Sim900Serial(7, 8); //rx and tx void setup() { Sim900Serial.begin(9600); Serial.begin(9600); } void loop() { if (Sim900Serial.available()) Serial.write(Sim900Serial.read()); if (Serial.available()) Sim900Serial.write(Serial.read()); } В мониторе серийного порта на любые команды АТ - тишина. После долгих экспериментов, снял шилд с платы и поставил рядом, прокинул землю (Vin) и (GND). Стал перебирать на искре пины для программного серийного порта и прокидывать их на 7 и 8 шилда. Выяснилось, что не работают именно 7 и 8! Если в серийнике подставить 10 и 11, например, то монитор порта оживает. Шилд начинает возвращать Ок на команду АТ. Повторил эксперимент с УНОЙ. На ней пины 7 и 8 работают как часы на программном серийнике. Повторил эксперимент с Мегой! О, ужас, на Меге шилд тоже не работает с 7-ым и 8-ым пинами (в мониторе порта тишина). То есть по факту, если собирать бутерброд на Искре, то я лишаюсь сразу двух портов, что в мои планы не входило. Осталось понять, что не так с пинами 7 и 8 искры и меги... На период размышлений оставил прототип на меге, где на шилд прокинул Serial1. Сталкивался кто-нибудь с подобным поведением? В качестве идеи сегодня буду проверять живы ли вообще 7 и 8 на искре с мегой... Хотя до того вполне работали.
Так на меге у вас 4 "железных" UARTa, зачем вам 7,8. На фотке правильно на serial1 подключено. Вам нужно с gsm шилда всего пять проводов, зачем будерброд.
На меге есть, и на меге у меня как раз на Serial1 и подключено. Перемычки на шилде смотрят на SoftwareSerial (на 7 и 8 пины шилда, на которые, собственно подключены RX и TX Serial1). Что касается проводов, то вроде как 4 всего надо: RX, TX, GND и Vin. А, ну да, питание включить - пятый. Так еще и шестой нужен будет для статуса питания. Бутерброд нужен, это прототип может валяться на столе в виде отдельных элементов: контроллер, шилд, клавиатура, дисплей. А в корпус собирать? Но суть проблемы этого не меняет. Есть SoftwareSerial, для которого 7-ой и 8-ой пины контроллера являются "родными". Но из трех устройств Шилд работает только на УНЕ по 7 и 8. Ни искра, ни мега не работают! По другим пинам работают, но при сборке в бутерброд я лишаюсь двух пинов контроллера. Если на меге - не принципиально - их солить можно, то на искре - уже проблема.