Не работают AT команды SIM800L на Arduino UNO

VACation
Offline
Зарегистрирован: 16.11.2019

Я новичок, только начал работать с ардуино. Решил сделать сигнализацию из sim800l, arduino uno и hc-sr501. Смотрел видео на YouTube как настроить SIM800L, во всех видео присутствует один и тот же код(прикреплю ниже), который предназначен для проверки модуля на ответ. У меня не работает вообще, сколько я не пытался. И менял скорость порта ,и rx tx местами и MySerial на Serial1.

Помогите, мучаюсь уже пару недель, читал форумы и похожие статьи, но все четно. На этом форуме уже был такой вопрос и как я понял его решили, но ответа так и не появилось. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(19, 18); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
} 
void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Извините, а где на UNO есть цифровые выводы 18 и 19, если мне память не изменяет, их только 14?
Перенесите соединение с модемом на на выводы d2 и d3, или другие вам удобные, кроме D0 - D1 (Rx, Rx) и D13 (там светодиод, и он будет мешать). Включите ту ножку, что вы выбрали как RX для mySerial на Rx модема через резестивный делитель 3К последовательно, 2К на граунд.
Общаться с модемом лучше начинать со скорости 115200 (если не придумал, то вроде именно эта скорость выставлена по дефолту у китайцев).
Первые команды от вас модему должны быть AT несколько раз, пока модем не определит скорость, и внятно не ответит ОК.

VACation
Offline
Зарегистрирован: 16.11.2019

Прошу прощения , этот код был взят из интернета(как пример) , в моем же коде rx-10 , tx-11 , скорость 115200 , пробовал на всех скоростях , но без толку 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Резистивный делитель, и питание модема не выше 4.3вольт - обязательные условия.
БП для питания модема должен удерживать ток не менее 1.5-2А. Чтобы получить 4.2-4.3 вольта, можно подать питание на модем через обычный выпрямительные диод, НЕ Шотки.

Очень рекомендую почитать этот цикл статей, ничего лучше для начинающих игры с этим модемом, ИМХО, не существует.
http://codius.ru/articles/GSM_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_SIM80...

VACation
Offline
Зарегистрирован: 16.11.2019

Питание идет от двух батареек 1,5v в сумме дают 3v , через повышалку получаю стабильные 4-4.1v, делителя на rx нет(пытался последовательно спаять 5 резисторов по 220ом, не знаю можно было так делать ,но все равно не работало) , может ли быть проблема в этом ?

kostyamat
Offline
Зарегистрирован: 16.11.2017

Если у вас есть пять резисторов одного номинала, поставьте три последовательно, и два на землю, и таки запитайте модем от чего-то серьезного. Для начала.

А вот когда получите ответ модема, напишете код, отдадите, вот тогда и будете с батарейками и повышайками играться.
Пс. Предел рабочих напряжений модема практически равен рабочим напряжениям литий-полимерного (НЕ 18650, а именно такого как в сотиках) аккумулятора.
У него даже есть возможность измерять питание и отвечать значением на запрос.

VACation
Offline
Зарегистрирован: 16.11.2019

Спасибо за ответ, попробую как вы сказали, чуть позже отпишусь о результате

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

kostyamat пишет:
Извините, а где на UNO есть цифровые выводы 18 и 19, если мне память не изменяет, их только 14?
18 и 19 - то же самое, что и А4, А5.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

VACation пишет:

Прошу прощения , этот код был взят из интернета(как пример) , в моем же коде rx-10 , tx-11 , скорость 115200 , пробовал на всех скоростях , но без толку 

Софтсериал на таких скоростях не работает. То, что у Вас указано в первом сообщении - примерно максимум для софтсериал.

Если возникли сложности с модулем, то я бы для начала попытался его запустить с Мегой или Леонардо - где есть свободный аппаратный последовательный порт - тогда Вы избавитесь от проблем присущих софтсериел. И только после того, как заставите модуль работать, возвращаться к Уно/нано/мини.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

VACation, все АТ команды должны заканчиваться символом /r

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

\r\n должны заканчиваться команды

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

 To terminate a Command line enter <CR>. Commands are usually followed by a response that includes. "<CR><LF><response><CR><LF>"

Переведу для неграмотных:

"Что бы закончить командную строку введите <CR>. За командой обычно следует ответ, который включает <CR><LF>ответ<CR><LF>"

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Ок

VACation
Offline
Зарегистрирован: 16.11.2019

esp32s подойдет вместо леонардо?

VACation
Offline
Зарегистрирован: 16.11.2019

То есть код должен выглядеть следующим образом ?

mySerial.println("AT/r");

 

VACation
Offline
Зарегистрирован: 16.11.2019

Andy пишет:

VACation, все АТ команды должны заканчиваться символом /r

написал "AT/r" все равно не работает , или я все-таки сделал что-то неправильно  

sadman41
Offline
Зарегистрирован: 19.10.2016

Слеш не в ту сторону, если говорить о синтаксисе.

VACation
Offline
Зарегистрирован: 16.11.2019

sadman41 пишет:

Слеш не в ту сторону, если говорить о синтаксисе.

ставил в другую, то бишь "AT\r" все равно не работало

sadman41
Offline
Зарегистрирован: 19.10.2016

Выше правильную ссылку на кодиус дали - тут все начинающие по ней учились, даже дамы. И у них получалось. Если не спалил ещё модем, то читай и по шагам прямо иди... 

nik182
Offline
Зарегистрирован: 04.05.2015

VACation пишет:

esp32s подойдет вместо леонардо?

Да, подойдет. Имеет два хардовых ком порта. По напряжению питания только не понятки. Мануал требует 3.4 - 4.4 вольта, 2 ампера. А сигнальные ноги можно прямо без конвертеров уровня подключать.  

agnec2001
Offline
Зарегистрирован: 08.11.2019

Всем привет!

Так же мучаю SIM800L

Для делителя взял один резистор 2 килоома, а другой 2,2 килоома. Скорость обмена 9600. Попадалась информация, что на большей скорости могут быть глюки. На "АТ" откликается, номер набирает, при входящем звонке номер определяет, SMS-ки принимает и т.д. и т.п.

Споткнулся на самом для меня важном - отправке SMS.

Две практически одинаковые функции выдают разный результат

Обычный вывод в порт: Serial.println("AT+CMGS=\"+7920xxxxxxx\"");
выдаёт в терминале ожидаемое: AT+CMGS="+7920xxxxxxx"
 
А вот эхо от отправки точно такой же строки в модуль: SIM800.println("AT+CMGS=\"+7920xxxxxxx\"");
почему-то выдаёт почти то же самое, но без завершающих кавычек: AT+CMGS="+7920xxxxxxx
 
Ухищрения типа: SIM800.println("AT+CMGS=\"+7920xxxxxxx\"\r"); результата не дают. Последних кавычек всё равно нет.
Не знаю на сколько это важно, но это не главное. SMS от модуля всё равно приходит. Вот только не то, какое отправлялось.
 
А теперь собственно о беде. Следом за командой на отправку SMS на указанный номер, должен отправляться текст сообщения. Делаю это так: SIM800.println("Privet from SIM800L\r\n" + (String)((char)26));
или так: SIM800.println("Privet from SIM800L\r\n" + (String)((char)26) + "\r");
В любом случае приходит SMS: "Этот абонент пытался отправить вам SMS"
 
Как люди отправляют SMS и что я делаю не так ?
  
VACation
Offline
Зарегистрирован: 16.11.2019

sadman41 пишет:

Выше правильную ссылку на кодиус дали - тут все начинающие по ней учились, даже дамы. И у них получалось. Если не спалил ещё модем, то читай и по шагам прямо иди... 

Можно ли как то проверить спалили или нет ?

VACation
Offline
Зарегистрирован: 16.11.2019

Кстати, если вводить напрямую в порт команды, то это тоже почему то не работает, стока не реагирует, в порту даже не появляется, то что ввожу 

agnec2001
Offline
Зарегистрирован: 08.11.2019

Если "AT" в терминале возвращает "OK" значит модуль жив. Ну и индикатор на модуле должен мигать как описано тут

VACation
Offline
Зарегистрирован: 16.11.2019

agnec2001 пишет:

Если "AT" в терминале возвращает "OK" значит модуль жив. Ну и индикатор на модуле должен мигать как описано тут

Он мигает, как при поиске сети, но как понимаете на AT не отвечает

kostyamat
Offline
Зарегистрирован: 16.11.2017

Слушайте, а вы в курсе, что RX идёт на TX, а TX на RX? С TX ардуино, на RX модема ОБЯЗАТЕЛЬНО нужен делитель, если у вас не синяя плата без входа микрофона и выхода на динамики. Если плата таки синяя, там делитель и питание через диод не нужны, и будут только мешать. Преобразователь уровней и диод на ней уже есть.

agnec2001
Offline
Зарегистрирован: 08.11.2019

Попробуйте убавить скорость до 9600 и проверьте правильность подключения. RX модуля должен быть подключен к TX контроллера через делитель, а TX модуля подключается к RX контроллера напрямую. Ну и напряжение модуля должно быть в рабочем диапазоне. Да, "земля" между модулем и контроллером обязательно должна быть.

VACation
Offline
Зарегистрирован: 16.11.2019

Мог спалить если не поставил делитель на rx?

kostyamat
Offline
Зарегистрирован: 16.11.2017

Так не мучаетесь, сходите на сайт codius, ссылка выше, и поймёте в чем ваша ошибка с СМСками.

kostyamat
Offline
Зарегистрирован: 16.11.2017

В принципе, - да, мог спалить. Но, таких случаев практически ни у кого не было, насколько известно мне.

VACation
Offline
Зарегистрирован: 16.11.2019

agnec2001 пишет:

Попробуйте убавить скорость до 9600 и проверьте правильность подключения. RX модуля должен быть подключен к TX контроллера через делитель, а TX модуля подключается к RX контроллера напрямую. Ну и напряжение модуля должно быть в рабочем диапазоне. Да, "земля" между модулем и контроллером обязательно должна быть.

Что вы имеете ввиду TX контроллера ? Он же указывается в программном коде самолично(то есть мы обозначаем TX порт в самом начале и можем сделать его любым) или я не прав ?

b707
Offline
Зарегистрирован: 26.05.2017

VACation пишет:

Что вы имеете ввиду TX контроллера ? Он же указывается в программном коде самолично(то есть мы обозначаем TX порт в самом начале и можем сделать его любым) или я не прав ?

Да, можете сделать любым.

Речь о другом - вот именно тот порт, что вы таким образом выбрали и обозначили в скетче как TX - подключается не к ножке TX - а к ножке RX модуля.

VACation
Offline
Зарегистрирован: 16.11.2019

Хорошо, попробую 

agnec2001
Offline
Зарегистрирован: 08.11.2019

TX и RX это передатчик и приёмник. Передатчик одного устройства должен подключаться к приёмнику другого и наоборот. Если соединить между собой два передатчика и два приёмника, то ничего работать не будет.

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Я с таким сталкивался. 

Во 1: Поставь самую последнюю программу ардуино IDE со старыми модуль не дружит

 Во 2 попробуй поставить скорость ардуины и sim800 на 115200

пример:

void setup() {
  Serial.begin(115200); //Запускаем сериал на скорости работы модуля GSM!!!

  pinMode(12, OUTPUT);// 12 пин как выход
  
  mySerial.begin(115200); //Установим скорость для SIM800L

Мне 2 этих способа помогли. А когда всетаки отзовется модуль при помощи At команд поменяешь скорость.

Вместо 115200 может быть другая скорость подбирай методом тыка

 

b707
Offline
Зарегистрирован: 26.05.2017

уважаемый Дмитрий

Вы уже во второй теме пишете чушь. Да и на амперке вы засветились с абсолютно детскими вопросами

Коли с такими знаниями вы беретесь кому-то предлагать писать скетчи - не завидую вашим заказчикам. Может для начала немного въехать в тему?

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Ну во первых не вам решать чушь ли я пишу, автор рассудит когда попробует.

Во вторых В амперке я за последние годы я задавал всего один вопрос. Добрые люди мне помогли решить проблему и устройство уже 3 день прекрасно работает. Вопрос мой был по поводу решения уравнения с gps координатами. Мне нужно было определить азимут к координатам. И в этом мне помог не ты, (умник) а обсолютно далекий от программирования человек (летчик). Дал мне пример расчета траектории при помощи "тригонометрии" с учебника СССР.

Теперь встречный вопрос Когда я писал чушь? и с чего ты взял что ты в праве судить?

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

И кстати на мои устройства не разу никто не жаловался. А за спрос если ты не вкурсе в нос не бьют. А вот за оскорбления запросто

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Автор просто сделай как я описал выше и ответит тебе твой модуль, и прошу отпишись. чтоб некоторые утерлись. 

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:

Теперь встречный вопрос Когда я писал чушь?

Да вот только что.

В этой теме советовал использовать скорость 115200 на Софтсериал , а в теме про частоту ШИМ - советовал использовать tone

Что касается темы на Амперке - смех в том, что вопрос совершенно детский и решается в рамках школьной программы, о чем вам там и было сказано. А вы, видно, ответ так и не поняли - раз пошли еще к "летчику" спрашивать...

 

 

 

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Человек спросил как самым простым для него способом подать сигнал определенной частоты (500гц) например.
И вы хотите сказать что tone, не сможет подать такой сигнал? Осциллограф вам в помощь тогда). Какой вопрос, такой и ответ. Главное попасть с точки А в точку Б простейшим путем.

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:
Человек спросил как самым простым для него способом подать сигнал определенной частоты (500гц) например.

вы еще и читать не умеете?

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Что я не так прочел?

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:
Какой вопрос, такой и ответ. Главное попасть с точки А в точку Б простейшим путем.

вы задачки клиентов, кому скетчи пишете - с таким же подходом решаете? :)

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:
Что я не так прочел?

тема называется

Помогите изменить частоту шим сигнала Arduino

Зададите мне с помощью tone  ШИМ частотой в 2 КГц и скважностью 12% ?

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

В 2 килогерца запросто сигнал создать при помощи tone.
А про скважность там ничего не было. Советую тебе купить осциллограф и учится. А не критиковать людей в чужих темах. Или ты скажешь что не получится послать сигнал в 2 килогерца при помощи tone?

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:
В 2 килогерца запросто сигнал создать при помощи tone. А про скважность там ничего не было.

это уже даже не смешно. Ты бы для начала прочитал, что такое ШИМ и зачем он нужен :)

 

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Я знаю что такое ШИМ. Завтра для тебя опыт сделаю лично. Получу при помощи tone сигнал в 2 кГц. И при помощи осциллографа лично для тебя зафиксирую показания. И придется тебе извинится)))

b707
Offline
Зарегистрирован: 26.05.2017

girenko.dmitrii@mail.ru пишет:
Я знаю что такое ШИМ. Завтра для тебя опыт сделаю лично. Получу при помощи tone сигнал в 2 кГц. И при помощи осциллографа лично для тебя зафиксирую показания. И придется тебе извинится)))

про скважность не забудь. И осциллограф нафик не нужен - выкладывай лучше код. Напишешь код для генерации ШИМ 2 КГц со скважностью 12% с помощью tone() - извинюсь без вопросов.

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

И кстати в той теме про ШИМ ни слова не было. Человек спросил как получить сигнал определенной частоты. Я ему посоветовал простейший способ.

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Ты что заднюю даёшь? Повторяю тибе!!! Про скважность в теме речь не шла. И про ШИМ тоже. Вопрос был прост: Как подать сигнал определенной частоты?. Я посоветовал простейший способ!!!! Что тебе не так? Ты что вообще к людям пристаешь? Не нравится ответ чей, пройди мимо. В форумах люди делятся мнениями а не пиписьками меряются. А для тебя я всё-таки завтра 2 кГц сделаю ардуинкой при помощи tone.