а весь ваш взятый код с ресурса построен по принципу "отправил что то - жду команду" а в остальное время если что то надо сделать или придет другой ответ - "все пропало"
Вот тут я не поняла.
Незапрашиваемые уведомления обрабатываются же постоянно.
if (SIM800.available()) { // Если модем, что-то отправил...
_response = waitResponse(); // Получаем ответ от модема для анализа
_response.trim(); // Убираем лишние пробелы в начале и конце
Serial.println(_response); // Если нужно выводим в монитор порта
if (_response.indexOf("+CMTI:")>-1) { // Пришло сообщение об отправке SMS
lastUpdate = millis() - updatePeriod; // Теперь нет необходимости обрабатываеть SMS здесь, достаточно просто
// сбросить счетчик автопроверки и в следующем цикле все будет обработано
}
}
if (Serial.available()) { // Ожидаем команды по Serial...
SIM800.write(Serial.read()); // ...и отправляем полученную команду модему
};
}
Так статус смс не изхменится с "Непрочитанное" пока контроллер его не прочитает (после того как дождется ОК или перезагрузится после зависания). Так ведь?
Мне лично статьи понравились. Человек что то сделал, у него работает. Он не зажал скетч, не стал умничать на форуме, а выложил его на всеобщее обозрение, за что ему спасибо!
Выкладывание кода на всеобщее обозрение не делает его автоматически безупречным. Это типовой говнокод. Взять хотя бы сложение с millis с последующим сравнением, чел не понимает целочисленной арифметики, тупо закладывает в свой код баг, который бездумно тиражируется на этом ресурсе.
Votmax пишет:
Понятно, что проще критиковать, но если есть реальные основания так считать, то поделитесь со всеми. Что именно вам не понравилось?
Ардуино - это игрушка для школьников. Никто в здравом уме не станет использовать её для сколь нибудь серьезных решений. Её назначение поиграться и выкинуть. Индусский код тоже шлак, но здесь он рассматривается как эталон. Среда разработки - х#ня редкостная. Топология китайская - на отъ#$%ись. Что здесь вообще может понравится?
Votmax пишет:
Выложите свои примеры работы с модулем.
Вот предсерийный образец, для сухих отапливаемых помещений, не для авто. SIM800, стек USB, шифрование, закладки на радиоканал, SD карту и RTC. Код написан в кейле для STM, выкладывать здесь нет смысла. Страшно представить, что получится, если собрать это устройство из блоков для ардуино...
Irinka, где сброс SIM800 о котором ты спрашивала, где включение...?
.... Это типовой говнокод.... Ардуино - это игрушка для школьников. Индусский код тоже шлак, но здесь он рассматривается как эталон. Среда разработки - х#ня редкостная. Топология китайская - на отъ#$%ись. ....
Ахахахаха! Ответ на миллион!
Видно, что пишет профессионал)))). Хвастанул фоткой и материт все остальное. Мол, я гений, а вы тут все идиоты....
Ну давайте еще сравним промышленное серийное производство с поделками любителей.
Для многих любителей Ардуино - это хобби, где не нужно паять, тратить на это время. Минимум усилий и можно получить какую то никому не нужную, но ценную для самого себя игрушку. Таких людей никто не учит и скорее всего этому промыслу они и не учились. Для них любая информация, вроде той, которую вы поносите, ценна!
Не важно, что код работает с огрехами, главное понять принцип! А, уж, когда получилось, всегда есть возможность код исправить и переписать.
Нельзя говорить, что код плохой, если он работает. Нельзя плохо отзываться о человеке, который написал этот код, ведь он смог это сделать и при этом поделился со всеми.
Конечно, легко критиковать чужое, но не стоит, это низко.
Там описание модуля SIM900, но по работе с СМС подходит. Все вполне логично работает. А зная, какие приходят ответы, не сложно дальше развивать свой проект. Сейчас я только начал заниматься обработкой входящих смс, вроде ничего сложно, но нужно время. Как что то получится путное, сброшу.
P.S. Конечно, наш великий критик, Анди, скажет, что это ***код)))), куда нам до него...)))
Как мне кажется, моя проблема при пересечении границы области, как раз в этом и заключается, что оператор присылает сообщение типа: "Теле2 желает вам приятной поездки ........ и. .... т..... п....."
Для многих любителей Ардуино - это хобби, где не нужно паять, тратить на это время. Минимум усилий и можно получить какую то никому не нужную, но ценную для самого себя игрушку. Таких людей никто не учит и скорее всего этому промыслу они и не учились. Для них любая информация, вроде той, которую вы поносите, ценна!
Не следует путать информацию с дезинформацией.
Если сделано откровенно неправильно - в стиле "образец, как не нужно делать", а преподносится наоборот, как образец для\ подражания, то вред от такой "информации" существенно перекрывает возможную пользу.
Ваше утверждение эквивалентно следующему: любое сообщение ценно, вне зависимости от того, исинно оно или ложно.
Между ложью и истиной не может быть знака равенства.
Цитата:
Нельзя говорить, что код плохой, если он работает.
Если код плохой - он плохой вне зависимости от того, работает или нет.
Более того, от плохого, но работающего (естественно, ненадежно, и не всегда так, как хотел автор) кода вреда больше, чем от неработающего.
Если код плохой - он плохой вне зависимости от того, работает или нет.
О, еще один умник (философ) появился.
Программа работает по заложенному алгоритму. И если программисту нравится, как работает его код, значит он своей цели достиг, по крайней мере не в промышленных образцах, а в подделках любителей.
Можно с ума сходить добиваясь идеала, я так понимаю вы этим и страдаете, но часто это и не требуется.
Вы все ополчились на человека, который разобрался в работе с модулем, создал свой блог, написал статью и делится информацией с окружающими. Как только вы его, его код и ардуино не принижаете только!
Не нравится ардуино, не пользуйтесь и не сидите на этом форуме.
Еще раз повторюсь, проще критиковать, говорить, что код плохой и тд и тп, чем вы и занимаетесь. Мне тоже он не нравится, я работаю чисто с АТ командами, но тот код помог лично мне разобраться в каких то деталях и начать реализовывать свой проект, за что ему СПАСИБО!
А вы попробуйте вместо критики создать страничку в интернете, выложить свой код, сделать комментарии к нему, да еще и отвечать на вопросы в комментах. Тогда это будет по делу, это будет в пользу!
Но хочу вас предупредить, что как только вы сделаете это, найдется очередной Анди, который назовет ваш код, как он выражается - *****кодом ))), выложит какую то фотку и будет рассказывать, как он мега крут, а вы в программировании ничего не понимаете! А еще найдется философ, вроде вас, который начнет рассказывать про информацию и дезинформацию, про то , что истина это не ложь)))) И кстати, есть истина, есть ложь, а есть статистика, не забывайте про это!
Вот, что я хочу до вас донести! Все форумы в последнее время страдают этим и это печально.
Хвастанул фоткой и материт все остальное. Мол, я гений, а вы тут все идиоты....
Ты спросил, я ответил. Покажи своё говнотворчество...
Votmax пишет:
Ну давайте еще сравним промышленное серийное производство с поделками любителей.
Давай сравним результат твоих и моих усилий. Моя разработка с нуля до серийного производства. А что сделал ты? Соединил проводками чужие платы и написал несколько десятков строк говнокода... Всё. Я ничего не упустил?
Votmax пишет:
И если программисту нравится, как работает его код, значит он своей цели достиг
Между программистом и говнокодером огромная пропасть. Ты застрял на уровне школьного творчества, тебе до программиста, как до китая... Если твой код работает 5 минут, это еще не значит, что он будет работать круглый год, 24/7.
Andy, это ваша работа, не надо сравнивать проф разработку и устройство которое просто должно работать (кстати вполне возможно работать будет хорошо и круглогодично.
По поводу программтстов- лично для меня это слово ругательство, т к большинство это кодеры, которые видят только ТЗ а мозг включать не умеют и не видят всей задачи.
Поработав за последние 20 лет в разных областях и повидав десятки программ для ПС очень дорогих, понял что программистов единицы процентов, остальные просто уроды, которых хочется посадить за их произведения поработать, например заставить вбить клиента в базу за 3 минуты по нормативу, но это невозможно, поскольку отвратительный интерфейс и никакого удобства.
А что сделал ты? Соединил проводками чужие платы и написал несколько десятков строк говнокода...
Между программистом и говнокодером огромная пропасть. Ты застрял на уровне школьного творчества, тебе до программиста, как до китая... Если твой код работает 5 минут, это еще не значит, что он будет работать круглый год, 24/7.
По моему, дальнейшее обуждение чего либо с этим человеком бессмысленно. Подрасти для начала)))
Такими темпами arduino.ru превратится в forum.cxem.net где сидят старенькие дяденьки задроты (сугубо моё мнение), которым лень отвечать на вопросы новичков или, по их мнению, "элементарные" вопросы, и вместо этого начинают флуууудить да посылать читать литератуууууру (времен СССР).....воооооттт..... XD
На данном этапе меня интересует способность модуля принимать и совершать звонки. (наверное это выше нужно было указать) При любом входящем смс-сообщении все смски удаляются.
Если нет ответа OK от АТ команды - это однозначно перезагрузка модуля.
Вот я и спрашиваю, какой командой лучше проверять может ли модуль принять звонок или позвонить.
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
тут или я ошибся или у кого работает на теле2 с другого региона?
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
Да, кстати, у меня с Теле2 тоже не заработало. Использую МТС.
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
тут или я ошибся или у кого работает на теле2 с другого региона?
а вы в каком регионе? если я правильно помню, в МСК нет 2G сети (может быть не прав), соотвественно и sim800 с данной симкой работать не будет.
Кстати, может не по делу, когда столкнулся с проблемой с памятью, стал использовать F(), отбил у памяти 300 Бт )).
Вдруг пригодится.
я тоже так хотел, но то ли я криворукий, то ли есть ограничение на эту штуку, но это удобно если использовать например Serial.println(F"ATE0"), а у меня все команды формируются или динамически или из массива, короче ничего не получилось, скетч выше приведенный почти 90% памяти кушает, уже ничего не впихнешь.
сейчас с нуля начал новый, буду все делать по другому, более универсальный с возможностью не только смс но и dtmf и gprs, пока с работой только смс уже 43 % памяти, но это дело не быстрое....к лету может допишу.
Но всё же если сеть пропадет, модуль оповестит +CCALR: 0?
кого оповестит? и как? вам необходимо мониторить качество и наличие сети? наверное в даташите это есть, читать надо, выдерните симку во время работы и посмотрите что нибудь модем скажет или нет.
опять же смысл? ну заехали вы в мертвую зону, ну скажет МК что работать не буду - дальше что? полезете на березу с антеной как партизаны во время войны?
а весь ваш взятый код с ресурса построен по принципу "отправил что то - жду команду" а в остальное время если что то надо сделать или придет другой ответ - "все пропало"
Вот тут я не поняла.
Незапрашиваемые уведомления обрабатываются же постоянно.
Пожалуйста ситуация - пришла смс, но МК ждал ок от отправки смс или тупо завис - команда потерялась.
Так статус смс не изхменится с "Непрочитанное" пока контроллер его не прочитает (после того как дождется ОК или перезагрузится после зависания). Так ведь?
Я не знаю как вам объяснить что ваш скетч кривой и устройство на нем будет работать не предсказуемо (
TELE2RUS 7дн.15час.36мин.R118.
Вот например ответ моего устройства - обратите внимание на аптайм, и то это мало - свет в квартире включали.
Т е свет выключали
Библиотекой Sim800l-master не пользовались?
Библиотекой Sim800l-master не пользовались?
Нет конечно, все ручками, at командами
Чтож...буду изучать...
Вот предсерийный образец, для сухих отапливаемых помещений, не для авто. SIM800, стек USB, шифрование, закладки на радиоканал, SD карту и RTC. Код написан в кейле для STM, выкладывать здесь нет смысла. Страшно представить, что получится, если собрать это устройство из блоков для ардуино...
Irinka, где сброс SIM800 о котором ты спрашивала, где включение...?
Кто сталкивался с проблемой плохого контакта сим карты? В машине часто теряется связь.
проблема 100% не в контакте который на симкарте....
40% - качественное и правильное питание !
40% - код ! может тупо "виснуть" из-за кода..
20% - проблема использования глупых плат от совсем дешевого ардуино..
поэтому рисую свои платы на сим800С ..
.... Это типовой говнокод.... Ардуино - это игрушка для школьников. Индусский код тоже шлак, но здесь он рассматривается как эталон. Среда разработки - х#ня редкостная. Топология китайская - на отъ#$%ись. ....
Ахахахаха! Ответ на миллион!
Видно, что пишет профессионал)))). Хвастанул фоткой и материт все остальное. Мол, я гений, а вы тут все идиоты....
Ну давайте еще сравним промышленное серийное производство с поделками любителей.
Для многих любителей Ардуино - это хобби, где не нужно паять, тратить на это время. Минимум усилий и можно получить какую то никому не нужную, но ценную для самого себя игрушку. Таких людей никто не учит и скорее всего этому промыслу они и не учились. Для них любая информация, вроде той, которую вы поносите, ценна!
Не важно, что код работает с огрехами, главное понять принцип! А, уж, когда получилось, всегда есть возможность код исправить и переписать.
Нельзя говорить, что код плохой, если он работает. Нельзя плохо отзываться о человеке, который написал этот код, ведь он смог это сделать и при этом поделился со всеми.
Конечно, легко критиковать чужое, но не стоит, это низко.
Irinka, где сброс SIM800 о котором ты спрашивала, где включение...?
Сброс происходит
Serial.println("Timeout..."); в этом месте кода
Serial.println ("Error answer"); и здесь
Ввиду большого количества заинтересованных лиц, давайте сделаем хороший, стабильный пример* работы с SIM800.
PS ввиду моих небольших познаний, с меня тестирование XD
Ввиду большого количества заинтересованных лиц, давайте сделаем хороший, стабильный пример* работы с SIM800.
PS ввиду моих небольших познаний, с меня тестирование XD
Я только ЗА!
Я делал так. Набросал такой код:
И стал проверять АТ команды, посылая их на модуль, и анализируя ответы на них. Команды брал тут: http://www.2150692.ru/faq/47-at-komandy-a6
Там описание модуля SIM900, но по работе с СМС подходит. Все вполне логично работает. А зная, какие приходят ответы, не сложно дальше развивать свой проект. Сейчас я только начал заниматься обработкой входящих смс, вроде ничего сложно, но нужно время. Как что то получится путное, сброшу.
P.S. Конечно, наш великий критик, Анди, скажет, что это ***код)))), куда нам до него...)))
Я сделала вот так:
Читаю только последнее полученное смс и удаляю все.
Добавила проверку при запуске - если модуль не отвечает на AT - перезагрузка.
И раз в x времени проверку на готовность модуля совершать звонки (возможно нужно заменить на проверку уровня сигнала сети или что-то другое)
....на проверку уровня сигнала сети....)
Кстати, хорошая идея, нужно воспользоваться! Если нет сигнала, то и нет смысла отправлять смс!
Ввиду большого количества заинтересованных лиц, давайте сделаем хороший, стабильный пример* работы с SIM800.
PS ввиду моих небольших познаний, с меня тестирование XD
А для модема a6 нужен?
ЗЫ. Интересно как определить стабильность надёжность проекта (
А для модема a6 нужен?
ЗЫ. Интересно как определить стабильность надёжность проекта (
Что такое аб?
Стабильность определить, наверное, временем работы без косяков*
https://ru.aliexpress.com/item/mini-A6-GA6-GPRS-GSM-Kit-Wireless-Extensi...
Такая проблема:
При проверке баланса (Теле2 *105#) ардуина перезагружается либо не обрабатывает текст:
Код:
ставлю на то что памяти не хватает
Я тоже так думаю. Как это можно исправить?
Как мне кажется, моя проблема при пересечении границы области, как раз в этом и заключается, что оператор присылает сообщение типа: "Теле2 желает вам приятной поездки ........ и. .... т..... п....."
сначала определиться дело в памяти или как
если я правильно понял код - попробовать после 78 строки поставить условие что если длина буфера больше например 20 символов то не принимать ответ
соотвественно если после этого МК не зависнет, значит да, дело в памяти - избавляться от String, парсить ответ по частям.
Почему не образается переменная _buffer?
А здесь обрезается как надо:
Вот так работает:
Это все костыли к сожалению.
Добиться таким образом работы проекта можно, но задела на будущее нет(
Простейший вариант вам: на ходу обрабатывать смс о балансе и откидываьь лишнее. Ну а если по уму делать - все переписывать надо.
ЗЫ. Впрочем терять свое время / жизнь ради красоты кода - тоже хрень. Если задача выполняется - оставляйте как есть.
Для многих любителей Ардуино - это хобби, где не нужно паять, тратить на это время. Минимум усилий и можно получить какую то никому не нужную, но ценную для самого себя игрушку. Таких людей никто не учит и скорее всего этому промыслу они и не учились. Для них любая информация, вроде той, которую вы поносите, ценна!
Не следует путать информацию с дезинформацией.
Если сделано откровенно неправильно - в стиле "образец, как не нужно делать", а преподносится наоборот, как образец для\ подражания, то вред от такой "информации" существенно перекрывает возможную пользу.
Ваше утверждение эквивалентно следующему: любое сообщение ценно, вне зависимости от того, исинно оно или ложно.
Между ложью и истиной не может быть знака равенства.
Нельзя говорить, что код плохой, если он работает.
Если код плохой - он плохой вне зависимости от того, работает или нет.
Более того, от плохого, но работающего (естественно, ненадежно, и не всегда так, как хотел автор) кода вреда больше, чем от неработающего.
Если код плохой - он плохой вне зависимости от того, работает или нет.
О, еще один умник (философ) появился.
Программа работает по заложенному алгоритму. И если программисту нравится, как работает его код, значит он своей цели достиг, по крайней мере не в промышленных образцах, а в подделках любителей.
Можно с ума сходить добиваясь идеала, я так понимаю вы этим и страдаете, но часто это и не требуется.
Вы все ополчились на человека, который разобрался в работе с модулем, создал свой блог, написал статью и делится информацией с окружающими. Как только вы его, его код и ардуино не принижаете только!
Не нравится ардуино, не пользуйтесь и не сидите на этом форуме.
Еще раз повторюсь, проще критиковать, говорить, что код плохой и тд и тп, чем вы и занимаетесь. Мне тоже он не нравится, я работаю чисто с АТ командами, но тот код помог лично мне разобраться в каких то деталях и начать реализовывать свой проект, за что ему СПАСИБО!
А вы попробуйте вместо критики создать страничку в интернете, выложить свой код, сделать комментарии к нему, да еще и отвечать на вопросы в комментах. Тогда это будет по делу, это будет в пользу!
Но хочу вас предупредить, что как только вы сделаете это, найдется очередной Анди, который назовет ваш код, как он выражается - *****кодом ))), выложит какую то фотку и будет рассказывать, как он мега крут, а вы в программировании ничего не понимаете! А еще найдется философ, вроде вас, который начнет рассказывать про информацию и дезинформацию, про то , что истина это не ложь)))) И кстати, есть истина, есть ложь, а есть статистика, не забывайте про это!
Вот, что я хочу до вас донести! Все форумы в последнее время страдают этим и это печально.
+100500
Покажи своё говнотворчество...
А что сделал ты? Соединил проводками чужие платы и написал несколько десятков строк говнокода...
Между программистом и говнокодером огромная пропасть. Ты застрял на уровне школьного творчества, тебе до программиста, как до китая... Если твой код работает 5 минут, это еще не значит, что он будет работать круглый год, 24/7.
По моему, дальнейшее обуждение чего либо с этим человеком бессмысленно. Подрасти для начала)))
Согласен!
Где модераторы? Друзья, мы отклонились от темы?)
Где модераторы? Друзья, мы отклонились от темы?)
а у вас был какой то вопрос :) ?
вроде все заработало? че бы не помусорить на форуме :) за удачное исполнение проекта :)
Добрый день (по крайней мере у нас во Владимире). Есть вопрос)
Для перезагрузки SIM800 я произвожу проверку на готовность модуля совершать звонки AT+CCALR?
Если вынуть сим карту (что я и делаю для проверки), то модуль естественно возвращает +CCALR: 0
0 — модуль не готов совершать звонки
Если в какой-то момент пропадет сеть (антенка надежно припаяна, не могу проверить это условие) модуль также вернет +CCALR: 0 или нет?
Правильно ли производить такую проверку или использовать другую команду, например:
AT+CREG? - тип регистрации в сети
и если модуль ответит
1 — зарегистрирован в домашней сети
5 — зарегистрирован, в роуминге
то все нормально, иначе - перезагрузка
Такими темпами arduino.ru превратится в forum.cxem.net где сидят старенькие дяденьки задроты (сугубо моё мнение), которым лень отвечать на вопросы новичков или, по их мнению, "элементарные" вопросы, и вместо этого начинают флуууудить да посылать читать литератуууууру (времен СССР).....воооооттт..... XD
я наверное не правильно понял....модем нужно перезагружать если он завис - правильно?
тогда при чем здесь регистрация в сети? у меня в деревне в принципе сети нет, но это не причина перезагрузки.
каждые две минуты проверяются входящие смс, если от АТ команды (любой) нет ответа в течении 30 секунд - перезагрузка.
На данном этапе меня интересует способность модуля принимать и совершать звонки. (наверное это выше нужно было указать) При любом входящем смс-сообщении все смски удаляются.
Если нет ответа OK от АТ команды - это однозначно перезагрузка модуля.
Вот я и спрашиваю, какой командой лучше проверять может ли модуль принять звонок или позвонить.
я AT+CREG? проверяю + уровень сигнала AT+CSQ, меньше 7 - связь на грани разрыва.
заглядываю в тему
и вижу что люди используют симки теле2...
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
тут или я ошибся или у кого работает на теле2 с другого региона?
Baks здравствуйте. У меня работает сим-карта ТЕЛЕ2 как Владимирской области, так и Нижегородской области.
andycat Спасибо.
Владимирская сим-карта при нахождении в Нижегородской области пишет +CREG: 0,1 зарегистрирован в домашней сети
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
Да, кстати, у меня с Теле2 тоже не заработало. Использую МТС.
заглядываю в тему
и вижу что люди используют симки теле2...
я пытался запустить sim800 на симке теле2, но не заработал, немного почитал и понял что симки и модуль не понимают друг друга из за чистоты(стандарта связи)
тут или я ошибся или у кого работает на теле2 с другого региона?
а вы в каком регионе? если я правильно помню, в МСК нет 2G сети (может быть не прав), соотвественно и sim800 с данной симкой работать не будет.
Кстати, может не по делу, когда столкнулся с проблемой с памятью, стал использовать F(), отбил у памяти 300 Бт )).
Вдруг пригодится.
Но всё же если сеть пропадет, модуль оповестит +CCALR: 0?
Кстати, может не по делу, когда столкнулся с проблемой с памятью, стал использовать F(), отбил у памяти 300 Бт )).
Вдруг пригодится.
я тоже так хотел, но то ли я криворукий, то ли есть ограничение на эту штуку, но это удобно если использовать например Serial.println(F"ATE0"), а у меня все команды формируются или динамически или из массива, короче ничего не получилось, скетч выше приведенный почти 90% памяти кушает, уже ничего не впихнешь.
сейчас с нуля начал новый, буду все делать по другому, более универсальный с возможностью не только смс но и dtmf и gprs, пока с работой только смс уже 43 % памяти, но это дело не быстрое....к лету может допишу.
Кстати, может не по делу, когда столкнулся с проблемой с памятью, стал использовать F(), отбил у памяти 300 Бт )).
Вдруг пригодится.
А я вот так сделала:
И в нужно месте пишем:
Но всё же если сеть пропадет, модуль оповестит +CCALR: 0?
кого оповестит? и как? вам необходимо мониторить качество и наличие сети? наверное в даташите это есть, читать надо, выдерните симку во время работы и посмотрите что нибудь модем скажет или нет.
опять же смысл? ну заехали вы в мертвую зону, ну скажет МК что работать не буду - дальше что? полезете на березу с антеной как партизаны во время войны?