Всем привет! Продолжим…
И так, GSM модуль окончательно спая и собран, закипела работа над программой.
Писать про написание программы долго и нудно, поэтому озвучу только ключевые моменты, а именно — отчитаемся по пунктам, озвученного самому себе, ТЗ:
- Webasto включается и выключается посредством SMS. В SMS содержится, закодированная определенным образом, последовательность символов, которую распознает специальная функция. После того как произошло распознавание команды – происходит ее выполнение. Все команды подтверждаются отправкой GSM модулем ответного SMS.
- Т.к. я планировал реализовать режим догревателя Webasto, то для этих целей мне нужно было измерять температуру окружающего воздуха. Было принято решение в качестве датчика температуры использовать DS18B20. Для измерения температуры в процессоре был задействован один из UART-ов, в полудуплексном режиме, и DMA. В режим догревателя Webasto переходит по следующему алгоритму: программа МК отслеживает два условия: а) появление логической единицы на выводе PA7, она там появляется только при запущенном двигателе (сигнал берется либо напрямую с генератора, либо с панели приборов), б) измеряется температура окружающего воздуха и выставляется флаг, если она меньше 5 градусов. При совпадении этих двух условий, подается логическая единица (в данном случае +12 В для отопителя) на 3 пин Webasto, и если при этом температура антифриза меньше 65 градусов (измеряется самой Webasto), то Webasto автоматически перейдет в режим догревателя. При достижении температуры антифриза 65 градусов, режим догревателя автоматически отключится, и так по кругу, пока все условия совпадают.
- С таймерами все просто. В МК запущены часы реального времени с полноценным календарем. Посредством SMS отправляем GSM модулю текущее время, дату, день недели (не пугаемся, все эти действия автоматизированы). Все та же вышеописанная функция, распознает в полученной SMS данные о времени, дате и дне недели, и сохраняет их. Теперь можно отправить настройки таймеров, а их у нас два. В настройках нужно указать время включения, продолжительность работы Webasto и дни недели, в которые Вы хотите, чтобы Webasto включалась.
- По запросу, представляющему собой закодированную определенным образом, последовательность символов, получаем ответ от GSM модуля, содержащий необходимую сервисную информацию, а именно: 1) баланс счета; 2) уровень сигнала; 3) температуру окружающего воздуха; 4) температуру антифриза; 5) состояние Webasto; 6) настройки таймера 1; 7) настройки таймера 2; 8) текущее время GSM модуля; 9) состояние режима догревателя (on/off).
- Ну и самое главное – ОС (обратная связь). Очень хотелось ее реализовать, т.к. реально были случаи, когда Webasto не запускалась. В моем случае происходило это лишь по одной причине – забываю иногда заглядывать в бачок с бензином, в результате бензин заканчивается в самое не подходящее время :). Долго думал, как же реализовать ОС, пока мой взор не упал на металлические Г-образные патрубки, которые я устанавливал при установке самой Webasto. Эврика! (©) Т.к. в проекте у на уже есть один DS18B20, то добавить второй и обращаться к ним по ID проще простого, а закрепить датчик на металлическом патрубке еще проще. В итоге экспериментально установлено, что после включения Webasto, в течении первых пяти минут, температура патрубка увеличивается аж на 12 градусов. Вот Вам и ОС! Данная дельта усреднена и введена в код программы, все работает, как и задумывалась.
Не переключайтесь, будет интересно!
[…] :), подробнее о нем можно почитать здесь: раз, два, три, четыре, пять. Пришло время учесть все недочеты, как […]