Скорость изменяется на Меге http://nicuflorica.blogspot.ro/2015/08/modul-gprs-cu-m590-3.html У нормального Arduino Uno модуль не работает! как тут писали не ловит сетку. Брал и внешнее питание от переходника - хоть бы хны. Работает на Меге и отлично работает на китайском(!) Arduino UNO на CH341 чипсете отсылаем смс после AT+CMGF=1 AT+CSCS="GSM" void send_sms(String phone, String text) { mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); readModem(); delay(500); Serial.println("SMS send complete"); delay(2000); } Читаем входящие AT+CMGR=1 2,3... счётчика нет(?)
Всем привет. У меня горит только первый светодиод при подключении питания. Когда должен гореть второй?
Это инициализация модуля. Если она повторяется по нескольку раз, то проверьте питание оно у вас слабое и не тянет модуль.
Спасибо большое! Разобрался с модулем, через usb переходник все функции работают. Попробовал через Ардуино Уно, используя ее как мост (земля и ресет замкнуты) - ни какой реакции. Скорость на модуле установлена 19200, была 57600 при покупке. Питаю модуль отдельно, от юсб. Но при включении-выключении питания в терминал IDЕ приходит MODEM:STARTUP +PBREADY. То есть со скоростью все нормально, данные приходят, но AT не проходит - ни какой реакции. Причем модуль ESP8266 спокойно работал через Ардуину. Возможно это какая-то проблема самой Ардуины? Заказал еще Мегу, но ее ждать месяц.
Есть скетч для отправки команд на модуль через монитор порта, попробуй через него. Там ничего замыкать не надо. Код (C++): #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX void setup() { Serial.begin(9600); //Скорость порта для связи Arduino с компьютером Serial.println("Goodnight moon!"); mySerial.begin(9600); //Скорость порта для связи Arduino с GSM модулем mySerial.println("AT"); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
К сожалению не работает и так. В монитор приходит только Goodnight moon! при любых манипуляциях с модулем. Что то с Ардуиной не так.
MODEM:STARTUP приходит если отключить и включить питание модуля. Goodnight moon приходит при подключении питания Ардуино или ресет.
Кто может обьясните, как таким образом разобрать пришедшее смс. Не пойму как это работает. Код (C++): if(M590.available() >0) { // while(Serial2.available()) Serial.write(Serial2.read()); inchar=M590.read(); Serial.write(inchar); if (inchar=='#') { delay(10); inchar=M590.read(); if (inchar=='a') { delay(10); inchar=M590.read(); if (inchar=='0') { digitalWrite(led1, LOW); Serial.println("LED1 off"); } else if (inchar=='1') { digitalWrite(led1, HIGH); Serial.println("LED1 on"); } delay(10); inchar=M590.read(); if (inchar=='b') { inchar=M590.read(); if (inchar=='0') { digitalWrite(led2, LOW); Serial.println("LED2 off"); } else if (inchar=='1') { digitalWrite(led2, HIGH); Serial.println("LED2 on"); } delay(10); inchar=M590.read(); if (inchar=='c') { inchar=M590.read(); if (inchar=='0') { digitalWrite(led3, LOW); Serial.println("LED3 off"); } else if (inchar=='1') { digitalWrite(led3, HIGH); Serial.println("LED3 on"); } delay(10); inchar=M590.read(); if (inchar=='d') { inchar=M590.read(); if (inchar=='0') { digitalWrite(led4, LOW); Serial.println("LED4 off"); } else if (inchar=='1') { digitalWrite(led4, HIGH); Serial.println("LED4 on"); } delay(10); } }
Заимел такой модуль) Рассказки за вечер. Запаять smd компоненты не так и сложно обычным паяльником, но модуль завелся не сразу, самое непонятное это полярность светодиодов. Сперва пробовал на китайской уне и ничего не работало. Приходило сообщение MODEM:STARTUP. Подключил внешнее питание от китайского DC-DC преобразователя, но на нем тоже на заработало, стал грешить на приплющенный конденсатор (он такой приехал из Китая, видимо где-то на него наступили) Вообщем поменял конденсатор на какой-то поменьше, зато точно исправный. Не работает) Менял туда-сюда симки, пробовал разные скорости сериал порта, вообщем ничего не помогает. MODEM:STARTUP и все тут... Решил попробовать оригинальную уну, R2 - ничего, точнее все тоже самое - MODEM:STARTUP. Ну делать нечего, последний вариант это блок питания от компа (5v 23A), удивительно но все заработало сразу же) по итогу на китайской уне с ch340 - работает на оригинальной уне R2 - работает китайский DC-DC преобразователь - шляпа, не тянет. Хотя он вроде на 10А. Замечу что к нему был блок питания на 24в 350ватт, так что проблема точно в DC-DC преобразователе скорость сериал порта по дефолту - 9600бод на вид модуль юзанный (новые детали выглядят как-то не так) работает с самой новой симкой билайн 4G+, была куплена 5 часов назад нужно качественное питание модуля вот сктеч взятый на просторах интернета Код (C++): #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; int led = 13; String val = ""; void setup() { pinMode(led, OUTPUT); digitalWrite(led, LOW); Serial.begin(9600); //скорость порта Serial.println("GSM tester v1.0"); mySerial.begin(9600); mySerial.println("AT+CLIP=1"); //включаем АОН delay(100); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(100); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); mySerial.println("ATI"); delay(100); } void loop() { if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); delay(10); } if (val.indexOf("RING") > -1) { //если звонок обнаружен if (val.indexOf("123456789") > -1) { //если номер звонящего наш. Укажите свой номер без "+" Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); //разрываем связь digitalWrite(led, HIGH); //включаем светодиод на 3 сек delay(3000); digitalWrite(led, LOW); //выключаем реле } } else Serial.println(val); //печатаем в монитор порта пришедшую строку val = ""; } if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС sms(String("hello world"), String("+123456789")); //отправляем СМС на номер +71234567890 } val = ""; //очищаем } } void sms(String text, String phone) //процедура отправки СМС { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); }