Недавно преобрел себе gprs шилд icomsat 1.1 (ali: http://ru.aliexpress.com/item/SIM90...358.html?adminSeq=202245229&shopNumber=117143). Подключаю по usb к меге 2560. Код: Код (Text): #include <SoftwareSerial.h> SoftwareSerial gSerial(2, 1); // RX, TX void setup() { delay(30000); gSerial.begin(9600); Serial.begin (9600); Serial.println("Hello!"); gSerial.print("AT"); } void loop() { delay(1000); if ( gSerial.available()>0 ) { Serial.println( gSerial.read() ); } if ( gSerial.available()==0 ) { Serial.println("No data"); } delay(1000); } На AT команды не реагирует, пробовал подключать к другим пинам(50, 51) - результат тот же. Пробовал подключталь внешнее питание 9 В - не помогло. Поиски решения в гугле ни к чему не привели. Что делать?
Я правильно понял, что шилд воткнут в мегу, а перемычки, обведенные на фото красным, определяю, на какие пины придет последовательный порт? Если так, то 1. Т.е RX пин на меге в SoftwareSerial не может быть 2. Сложно сказать, как это можно обойти лля данного конкретного шилда. Возможно (глядя на расположение перемычек) достаточно будет кинуть проводом с крайних рядов на нужные пины (аналогично тому, как оно соединяет крайний ряд с центральным, который, судя по маркировке, отображается на пины от 0 до 7) 2. Даже если бы была не мега или если перенести только RX. TX для SoftwareSerial совпадает c TX для аппаратного Serial. Мажет быть чревато ненужными пересечениями отладочной выдачи и работы с шилдом.
Код (Text): #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); void setup() { mySerial.begin(19200); // the GPRS baud rate Serial.begin(19200); // the GPRS baud rate } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); } напоследок, лови сто процентов рабочий код.
Кинул на 2 и 3 пины, затем на 18, 19(https://www.arduino.cc/en/Reference/Serial) - безрезультатно. Судя по документации, он должен поддерживать 9600 (http://arduino-ua.com/docs/icomsat_DS1.2.pdf) Такая же шляпа и с другими скоростями(19200).
давай по порядку. 1. поменяй в скетче скорость на 9600 2. вставь модем в мегу 3. перемычки на модеме поставь на 2 и 3 пины 4. попробуй перекинуть 2 и 3 пины местами
1. Tx вроде надо к Rx (навеяно фото из магазина, где внутренний ряд, помеченный как TxD соединен с нулевым пином - Rx). Следовательно, внутренний ряд надо соединять с Rx ардуины, это раз. 2. Если задействовать пару пинов 18-19, то, поскольку это аппаратный порт меги, лучше внутренний ряд соединить с 19, а внешний (который ближе к краю шилда) с 18. А работать с этой парой не через SoftwareSerial (у которого на меге RX ни на одном пине из этой пары работать не будет), а через аппаратный Serial1. Т.е. убираем SoftwareSerial mySerial(х,у); а остальные вхождения mySerial меняем на Serial1. Если не сработает, можно попробовать поменять местами соединения с 18 и 19 пинами.