Не работают AT команды SIM800L на Arduino UNO
- Войдите на сайт для отправки комментариев
Вс, 17/11/2019 - 00:06
Я новичок, только начал работать с ардуино. Решил сделать сигнализацию из 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()); }
Извините, а где на UNO есть цифровые выводы 18 и 19, если мне память не изменяет, их только 14?
Перенесите соединение с модемом на на выводы d2 и d3, или другие вам удобные, кроме D0 - D1 (Rx, Rx) и D13 (там светодиод, и он будет мешать). Включите ту ножку, что вы выбрали как RX для mySerial на Rx модема через резестивный делитель 3К последовательно, 2К на граунд.
Общаться с модемом лучше начинать со скорости 115200 (если не придумал, то вроде именно эта скорость выставлена по дефолту у китайцев).
Первые команды от вас модему должны быть AT несколько раз, пока модем не определит скорость, и внятно не ответит ОК.
Прошу прощения , этот код был взят из интернета(как пример) , в моем же коде rx-10 , tx-11 , скорость 115200 , пробовал на всех скоростях , но без толку
Резистивный делитель, и питание модема не выше 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...
Питание идет от двух батареек 1,5v в сумме дают 3v , через повышалку получаю стабильные 4-4.1v, делителя на rx нет(пытался последовательно спаять 5 резисторов по 220ом, не знаю можно было так делать ,но все равно не работало) , может ли быть проблема в этом ?
Если у вас есть пять резисторов одного номинала, поставьте три последовательно, и два на землю, и таки запитайте модем от чего-то серьезного. Для начала.
А вот когда получите ответ модема, напишете код, отдадите, вот тогда и будете с батарейками и повышайками играться.
Пс. Предел рабочих напряжений модема практически равен рабочим напряжениям литий-полимерного (НЕ 18650, а именно такого как в сотиках) аккумулятора.
У него даже есть возможность измерять питание и отвечать значением на запрос.
Спасибо за ответ, попробую как вы сказали, чуть позже отпишусь о результате
Прошу прощения , этот код был взят из интернета(как пример) , в моем же коде rx-10 , tx-11 , скорость 115200 , пробовал на всех скоростях , но без толку
Если возникли сложности с модулем, то я бы для начала попытался его запустить с Мегой или Леонардо - где есть свободный аппаратный последовательный порт - тогда Вы избавитесь от проблем присущих софтсериел. И только после того, как заставите модуль работать, возвращаться к Уно/нано/мини.
VACation, все АТ команды должны заканчиваться символом /r
\r\n должны заканчиваться команды
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>"
Ок
esp32s подойдет вместо леонардо?
То есть код должен выглядеть следующим образом ?
mySerial.println("AT/r");
VACation, все АТ команды должны заканчиваться символом /r
написал "AT/r" все равно не работает , или я все-таки сделал что-то неправильно
Слеш не в ту сторону, если говорить о синтаксисе.
Слеш не в ту сторону, если говорить о синтаксисе.
ставил в другую, то бишь "AT\r" все равно не работало
Выше правильную ссылку на кодиус дали - тут все начинающие по ней учились, даже дамы. И у них получалось. Если не спалил ещё модем, то читай и по шагам прямо иди...
esp32s подойдет вместо леонардо?
Да, подойдет. Имеет два хардовых ком порта. По напряжению питания только не понятки. Мануал требует 3.4 - 4.4 вольта, 2 ампера. А сигнальные ноги можно прямо без конвертеров уровня подключать.
Всем привет!
Так же мучаю SIM800L
Для делителя взял один резистор 2 килоома, а другой 2,2 килоома. Скорость обмена 9600. Попадалась информация, что на большей скорости могут быть глюки. На "АТ" откликается, номер набирает, при входящем звонке номер определяет, SMS-ки принимает и т.д. и т.п.
Споткнулся на самом для меня важном - отправке SMS.
Две практически одинаковые функции выдают разный результат
Выше правильную ссылку на кодиус дали - тут все начинающие по ней учились, даже дамы. И у них получалось. Если не спалил ещё модем, то читай и по шагам прямо иди...
Можно ли как то проверить спалили или нет ?
Кстати, если вводить напрямую в порт команды, то это тоже почему то не работает, стока не реагирует, в порту даже не появляется, то что ввожу
Если "AT" в терминале возвращает "OK" значит модуль жив. Ну и индикатор на модуле должен мигать как описано тут
Если "AT" в терминале возвращает "OK" значит модуль жив. Ну и индикатор на модуле должен мигать как описано тут
Он мигает, как при поиске сети, но как понимаете на AT не отвечает
Слушайте, а вы в курсе, что RX идёт на TX, а TX на RX? С TX ардуино, на RX модема ОБЯЗАТЕЛЬНО нужен делитель, если у вас не синяя плата без входа микрофона и выхода на динамики. Если плата таки синяя, там делитель и питание через диод не нужны, и будут только мешать. Преобразователь уровней и диод на ней уже есть.
Попробуйте убавить скорость до 9600 и проверьте правильность подключения. RX модуля должен быть подключен к TX контроллера через делитель, а TX модуля подключается к RX контроллера напрямую. Ну и напряжение модуля должно быть в рабочем диапазоне. Да, "земля" между модулем и контроллером обязательно должна быть.
Мог спалить если не поставил делитель на rx?
Так не мучаетесь, сходите на сайт codius, ссылка выше, и поймёте в чем ваша ошибка с СМСками.
В принципе, - да, мог спалить. Но, таких случаев практически ни у кого не было, насколько известно мне.
Попробуйте убавить скорость до 9600 и проверьте правильность подключения. RX модуля должен быть подключен к TX контроллера через делитель, а TX модуля подключается к RX контроллера напрямую. Ну и напряжение модуля должно быть в рабочем диапазоне. Да, "земля" между модулем и контроллером обязательно должна быть.
Что вы имеете ввиду TX контроллера ? Он же указывается в программном коде самолично(то есть мы обозначаем TX порт в самом начале и можем сделать его любым) или я не прав ?
Что вы имеете ввиду TX контроллера ? Он же указывается в программном коде самолично(то есть мы обозначаем TX порт в самом начале и можем сделать его любым) или я не прав ?
Да, можете сделать любым.
Речь о другом - вот именно тот порт, что вы таким образом выбрали и обозначили в скетче как TX - подключается не к ножке TX - а к ножке RX модуля.
Хорошо, попробую
TX и RX это передатчик и приёмник. Передатчик одного устройства должен подключаться к приёмнику другого и наоборот. Если соединить между собой два передатчика и два приёмника, то ничего работать не будет.
Я с таким сталкивался.
Во 1: Поставь самую последнюю программу ардуино IDE со старыми модуль не дружит
Во 2 попробуй поставить скорость ардуины и sim800 на 115200
пример:
Мне 2 этих способа помогли. А когда всетаки отзовется модуль при помощи At команд поменяешь скорость.
Вместо 115200 может быть другая скорость подбирай методом тыка
уважаемый Дмитрий
Вы уже во второй теме пишете чушь. Да и на амперке вы засветились с абсолютно детскими вопросами
Коли с такими знаниями вы беретесь кому-то предлагать писать скетчи - не завидую вашим заказчикам. Может для начала немного въехать в тему?
Ну во первых не вам решать чушь ли я пишу, автор рассудит когда попробует.
Во вторых В амперке я за последние годы я задавал всего один вопрос. Добрые люди мне помогли решить проблему и устройство уже 3 день прекрасно работает. Вопрос мой был по поводу решения уравнения с gps координатами. Мне нужно было определить азимут к координатам. И в этом мне помог не ты, (умник) а обсолютно далекий от программирования человек (летчик). Дал мне пример расчета траектории при помощи "тригонометрии" с учебника СССР.
Теперь встречный вопрос Когда я писал чушь? и с чего ты взял что ты в праве судить?
И кстати на мои устройства не разу никто не жаловался. А за спрос если ты не вкурсе в нос не бьют. А вот за оскорбления запросто
Автор просто сделай как я описал выше и ответит тебе твой модуль, и прошу отпишись. чтоб некоторые утерлись.
Теперь встречный вопрос Когда я писал чушь?
Да вот только что.
В этой теме советовал использовать скорость 115200 на Софтсериал , а в теме про частоту ШИМ - советовал использовать tone
Что касается темы на Амперке - смех в том, что вопрос совершенно детский и решается в рамках школьной программы, о чем вам там и было сказано. А вы, видно, ответ так и не поняли - раз пошли еще к "летчику" спрашивать...
Человек спросил как самым простым для него способом подать сигнал определенной частоты (500гц) например.
И вы хотите сказать что tone, не сможет подать такой сигнал? Осциллограф вам в помощь тогда). Какой вопрос, такой и ответ. Главное попасть с точки А в точку Б простейшим путем.
вы еще и читать не умеете?
Что я не так прочел?
вы задачки клиентов, кому скетчи пишете - с таким же подходом решаете? :)
тема называется
Помогите изменить частоту шим сигнала Arduino
Зададите мне с помощью tone ШИМ частотой в 2 КГц и скважностью 12% ?
В 2 килогерца запросто сигнал создать при помощи tone.
А про скважность там ничего не было. Советую тебе купить осциллограф и учится. А не критиковать людей в чужих темах. Или ты скажешь что не получится послать сигнал в 2 килогерца при помощи tone?
это уже даже не смешно. Ты бы для начала прочитал, что такое ШИМ и зачем он нужен :)
Я знаю что такое ШИМ. Завтра для тебя опыт сделаю лично. Получу при помощи tone сигнал в 2 кГц. И при помощи осциллографа лично для тебя зафиксирую показания. И придется тебе извинится)))
про скважность не забудь. И осциллограф нафик не нужен - выкладывай лучше код. Напишешь код для генерации ШИМ 2 КГц со скважностью 12% с помощью tone() - извинюсь без вопросов.
И кстати в той теме про ШИМ ни слова не было. Человек спросил как получить сигнал определенной частоты. Я ему посоветовал простейший способ.
Ты что заднюю даёшь? Повторяю тибе!!! Про скважность в теме речь не шла. И про ШИМ тоже. Вопрос был прост: Как подать сигнал определенной частоты?. Я посоветовал простейший способ!!!! Что тебе не так? Ты что вообще к людям пристаешь? Не нравится ответ чей, пройди мимо. В форумах люди делятся мнениями а не пиписьками меряются. А для тебя я всё-таки завтра 2 кГц сделаю ардуинкой при помощи tone.