![]() |
Arduino + GSM
Добрый вечер всем. Появилась навязчивая мысль, сделать некое устройство на базе Arduino + GSM модуля SIM 800L, которое будет в состоянии по звонку или СМС запросу, выполнять команды(запуск авто, пуск ПК), а так же сообщать в ответных СМС различную информацию, типа - напряжение АКБ, температура авто, удачный/неудачный пуск двигателя и т.д. И плюс использовать возможности перехода в режим энергосбережения Arduino и SIM 800L.
Сейчас уже использую связку Arduino + GSM устройство на базе GSM розетки Мегафона, для автозапуска, но не нравится энергопотребление этого "бутерброда" и не возможность добавлять свои команды и свои СМС в этом варианте. Никто не делал что то подобное? Или может в интернете натыкался? |
Ну тогда почитайте это для начала.... или аналогичное.
|
Цитата:
|
Цитата:
|
Есть более бюджетный вариант чем SIM 800, M590, спящем режиме потребляемый ток составляет 2,5-3 мА.
|
Железки уже заказал -отступать некуда))
|
|
YAM1966, согласен. И цена не сильно то и отличается от M590.
Xellow, SIM800L и Arduino работа в режиме энергосбережения. |
Вложений: 1
Цитата:
Один с запросом баланса на СИМ и триггером включения канала по звонку. PHP код:
PHP код:
Программки давнишние - уже не помню, что у самого залито... Но точно рабочие. Вот несколько ссылок на соответствующие темы. Здесь, здесь, здесь, еще. |
Наткнулся в интернете - можно "прикрутить" под свои нужды.
|
Спасибо за наводки - буду курить). Кое что из этого уже видел. Sim800 заказал 2-й версии с питанием 5В. С нетерпением жду подарков от братьев-китайцев)), чтоб начать экскрименты..
|
Xellow. Привет.Как успехи? Пришел модуль? Заказал тоже 5 вольтовый sim800l хочу запускать webasto по звонку с нужного номера. Очень интересует вопрос перехода в спящий режим с минимальным энергопотреблением.
|
Цитата:
PHP код:
|
Нет пока не приехал SIM800(( жду. Приведённый выше скетч, рассматриваю как базовый, для последующего допиливания.
|
Со спящим режимом SIM 800 v2 пролёт - 5ти вольтовая версия его похоже не поддерживает - нет пина DTR(((
|
Вот это пролет... Может напрямую к модулю можно подключиться. Даташит нужно изучить.
|
Во второй версии спящий режим реализован немного по другому (это одно из отличий от предыдущей версии и можно обойтись без DTR).
Ниже выдержка-перевод из даташита. "4.3.4. Спящий режим 2 (Sleep Mode 2) (команда "AT+CSCLK=2") (это новый режим и его нет в V1.0) В этом режиме, SIM800H&SIM800L будет постоянно отслеживать последовательный порт данных сигнала. При отсутствии передачи данных в течение 5 секунд на (пине)RXD или нет сигнала и нет в эфире аппаратных прерываний (например, GPIO interrupt), SIM800H&SIM800L переходит в режим сна 2 автоматически. В этом режиме SIM800H/L по-прежнему может получать оповещения или SMS из сети . 4.3.5. Пробуждение SIM800H&SIM800L из спящего режима 2. Когда SIM800H&SIM800L находится в спящем режиме 2 (Sleep Mode 2) (команда "AT+CSCLK=2"), следующие методы могут разбудить модуль: : Отправить данные на SIM800H&SIM800L через основной последовательный порт . : Входящий звонок или передача данных из сети. : Входящее SMS из сети." Сам не проверял - нужно пробовать. |
skanch,спасибо будем побывать по приезду. отпишемся по результату))
|
skanch, Присоединяюсь, спасибо огромное - появилась надежда)))
|
Добрый день. Не могу найти как сформулировать условие выполнения команды по СМС только от одного заданного номера, код из примера - как хотелось бы видеть...
void getsms() { sms.GetSMS(pos,n,20,smsbuffer,160); //Serial.println(n); //номер входящей СМС //Serial.println(smsbuffer); //текст сМС input_string =String(smsbuffer); if ((n) != (n1)) - //Если номер входящей СМС не соответствует заданному (char n1[] = "+79XXXXXXXXX";) { sms.DeleteSMS(pos); - //Удаляем эту СМС delay(1000); } Собственно вопрос - как правильно сформулировать выделенное цветом условие? |
Цитата:
PHP код:
|
Цитата:
PHP код:
PHP код:
|
Респект! Работает!
Код пишется, в принципе основные хотелки реализованы, но пока без энергосбережения... Что получится - выложу, если будут желающие его улучшить- только "за"). Писатель я не очень.. |
Вложений: 1
Ну вот примерно что получилось... Что работает: Старт - стоп по СМС, возврат данных о напряжении сети и температуре по СМС запросу, старт по температуре и останов от аварийного сигнала(опущен ручник, включена передача). Все события подтверждаются соответствующими СМС. Теперь чего нет: Энергосбережение(((, ардуину не усыпить, т.к. нужно мерить температуру и напряжение, а SIM800, при включении режима энергосбережения - ведёт себя неадекватно(может руки кривые). В общем то сам скетч - это выдержки из разных творений на просторах интернета, собранные в один, так что прошу сильно не пинать если что))). Сам код автозапуска уже полтора года трудится у меня в машине, без особых нареканий. Энергопотребление получилось около 20мА, позже перемерю более точным прибором. Если будет желание, что либо поправить - буду только ЗА. Есть одна замеченная проблема!!! Если в результате каких либо манипуляций СИМ забивается необработанными СМС, то конструкция перестаёт функционировать, до очистки СИМ через АТ команды. Как это прописать в коде я не разобрался((.
|
Удаление всех СМС АТ- команда "AT+CMGD=4". Все команды можно посмотреть здесь.
|
Я эти команды знаю.. но не могу их в скетч корректно встроить.. По чему то все варианты отправки АТ команд, которые я пробовал встроить в скетч - делали его не работоспособным((( Пробовал так:
gsm.SimpleWrite(F("AT+CMGDA=DEL ALL")); gprsSerial.print("AT+CMGDA=DEL ALL"); GsmSerial.println("AT+CMGDA=DEL ALL"); |
Поэкспериментировал ещё... Прописал Serial.print("AT+CMGDA=DEL ALL");
Скетч работает, в сериале команда проходит, но СМС не удаляет(( в порт прописывает следующее: ATT: "REC READ" RIC: +CMGR: "REC READ","+79ххххххххх","","17/03/12,19:10:53+12" 6 OK AT+CMGDA=DEL ALLATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: NO STRING RCVDATT: OK RIC: ATT: OK RIC: OK |
А такой вариант на прошел?
PHP код:
|
Странно, но AT+CMGD=4, не удаляет СМС, даже в режиме подачи АТ команд напрямую из консоли.
|
Здесь подсмотрел вариант
PHP код:
|
Да я видел... У меня подозрение, что это работает, только если связка SIM800 - Ардуино нормально фунциклирует..т.е. SIM800 получил СМС - Ардуина это поняла и присвоила этой СМС номер(i) и потом, согласно номера (i) - удалила. А вот если по какой либо причине эта связка рассогласована, например нет питания на ардуине, то полученные СИМ800 СМС не получают номера и не удаляются... ИМХО.
|
Возможно, что и так...К сожалению проверить не на чем...
|
Я был не прав - чистит прекрасно, можно пользоваться. Спасибо за помощь!!
|
Рад, что был полезен...
|
Всем добрый день. Устройство установлено в авто и функционирует как положено...но есть маааленькие косячки..)
- иногда sim800 либо зависает, либо теряет сеть. Т.е отправленное смс не приводит ни к какому результату в течении длительного времени, и спустя 10-20 минут вдруг просыпается и начинается "action"! К этому времени необходимости запуска уже нет. Происходит лишнее клацанье реле. Как мне видится решением проблемы может стать reset sim800, при потере сети, только не очень понимаю как это реализовать... Слать периодически АТ команды - например "AT+CPAS"? Если кто подскажет как это реализовать в коде - буду признателен) - И вторая проблемка - отваливается датчик температуры ds18b20. На столе всё работает. В машине, с увеличением длины кабеля работает не стабильно. Кабель использовал "витая пара". Но насколько я понял - это проблема распространённая и методы борьбы у всех разные.. Если есть соображения по этому поводу, с удовольствием "выслушаю". |
Часовой пояс GMT +4, время: 23:35. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot