Страница 1 из 1

GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 11 фев 2019, 15:13
1945
Здравствуйте предлагаю свой вариант реализации возможностей модуля жсм сим 800л .
Программа проходит инициализацию , дальше по циклу проверяет наличие длины приходящего по окончанию передачи ответа по уарту от модуля.
Если температура превысит порог 40 градусов - отсылаем сообщение по указанному телефону + баланс + напряжение аккумулятора, крутимься в
цикле пока температура не упадёт ниже 30 градусов.
Если при шёл звонок сверяем его с сохраннёным - если наш то модуль берёт трубку - дальше команды DTMF - если #
то записываем то же самое что выше и отсылаем.
Всё обропованно с МТС - всё работает, прилагаю файл протеуса с комрипом.
УДАЧИ!

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 11 фев 2019, 18:07
pav13
вместо
sendrs232string "AT+CMGS="
sendrs232char 0x22 // \"
sendrs232string "+380991234567" // номер телефона
sendrs232char 0x22 // \"
sendrs232char 0x0D
// \r

проще писать так
sendrs232string "AT+CMGS=\"+380991234567\"\r"

я правильно понял, если в какой-то момент времени модем ответил сообщением не той длины, то МК сбрасывается и долбит модуль по новой? а так как в примере watchdog выключен, МК вообще может уйти в бесконечный цикл?

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 11 фев 2019, 19:14
1945
Я цеплялся УСБ уартом к модулю и после каждой команды просматривал длину переменной, она всегда одинакова при той или иной команде от меня. Ты знаешь всё таки макрос стирания receive - отрабатывает хорошо, а на счёт долбит - так как работает пара мк-модуль? Отсылаю запрос, он дублируется и ответ ок, дальше жду если надо ещё один ответ ну там баланс или напругу, всё общее количество байт получилось. Выхожу из цикла и дальше по программе. Можно поставить боды поскоростнее, но и так работает хорошо.

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 11 фев 2019, 21:35
livrena
[quote="pav13"]
проще писать так
sendrs232string "AT+CMGS=\"+380991234567\"\r"


pav13 подскажи как правильно записать.вместо номера телефона подставить переменную А.( А=0991234567 )
такая запись отправит СМС ( sendrs232string "AT+CMGS=\"А\"\r" ) ?

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 12 фев 2019, 06:08
pav13
Одним кубиком - никак.
Номер хранить не в одной переменной long типа, а в байтовом массиве A[10]={0,9,9,1,2,3,4,5,6,7} или в А[5] если группировать по две цифры. Далее отправить номер побайтово в цикле.
Либо для экономии места хранить номер в двух переменных unsigned int, потом в помощью операции ToString() перевести каждую в string, сложить в одну строку и отправить.

Там же в кубике sendrs232string написано или значение или переменная, но не вместе.

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 12 фев 2019, 07:01
livrena
pav13 спасибо за ответ. Это я понимаю. меня интересует или правильная запись в последней строке моего предыдущего сообщения? Переменная А = номеру string

"AT+CMGS=\"А\"\r" в таком варианте я думаю что сообщение уйдёт не на номер а на букву А. Как правильно сформировать запись ?

Или нужно использовать 3 кубика,значение,переменная,значение

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 12 фев 2019, 10:10
pav13
"AT+CMGS=\"А\"\r" - неправильно(ты сам попробуй и посмотри что будет в терминале в протеусе)
3 кубика,значение,переменная,значение - правильно

Re: GSM 800L + DS18B20 + DTMF + BALANCE + VOLTAGE

СообщениеДобавлено: 12 фев 2019, 13:59
1945
Да кстати прилагаю файлы алгоритма записи аудио файлов для модуля (можно сделать менюшку).
Кароче можно позвонить войти в дтмф режим и набирая номера в тональном режиме прослушать соответствующие ранее записанные файлы
Файлы нужно конвертировать в amr формат и записать программой а дальше вызвать ну кароче в pdf всё есть.
Удачи!!