Автономная система сбора телеметрической информации (SD CARD логгер).
Предыстория:
Было разработано устройство для установки на удаленном объекте. Устройство по каналу
GSM/GPRS производит выполнение команд от пользователя и осуществляет пересылку данных
на TCP сервер.
Устройство готово, найдены и исправлены ошибки, недочеты. Устройство установлено
на длительный прогон, (от 1 недели до нескольких месяцев) проходят предварительные испытания.
Устройство работает, но спустя неделю-две начинает сбоить (не реагирует на команды, перестает
присылать отчеты и т.п.).
После перезапуска работа восстанавливается, но спустя неделю - две - три все повторяется...
Понятно одно, устройство глючит (т.е. не работает), но что не так ?
И почему сбоит спустя столько времени ?
Для ответ на вопрос: Почему глючит ! необходимо понять, что вообще происходит с устройством.
Для этого необходимо собрать информацию о том как устройство работает и отрабатывает те или
иные ситуации.
В чем проблема в программе или в железе ? Или и в том и в другом одновременно ?
Самый простой вариант проследить за работой программы, это выводить отладочную информацию в
последовательный порт в ключевых местах работы программы. Для этого в программе расставляются
функции printf .
Затем устройство включается и ожидается очередной сбой в работе устройства.
Далее производится анализ логов работы устройства и производится анализ ситуации и по результатам
делаются выводы о причине сбоя и пути решения проблемы.
Встав вопрос как и чем собирать логи ? Первое что приходит на ум это применить для сбора
ПК (ноутбук), что и было сделано. ПК был подключен к устройству и производил запись логов в файл.
Маленькое отступление:
Величина логов работы устройства составляла от нескольких сот мегабайт и до нескольких гигабайт !!!
Как позже выяснилось проблема была в модеме Wavecom Q2406.
У данного модема был баг с выполнением USSD запроса, который приводил к перезагрузке модема
втихаря.
Прошивка была обновлена на последнюю версию в которой тоже оказался глюк, только на этот
раз модем самопроизвольно переключался в текстовый режим приема SMS сообщений за место PDU.
Вообще про GSM модули как нибудь напишу отдельную статью, есть что рассказать...
Довелось поработать с модулями от: WaveCom, Sony Ericsson, SIMCom, Telit ...
Хоть некоторые индивиды и считают что модем это архи надежное устройство, смею вас заверить,
это ДАЛЕКО НЕ ТАК.
Как и любое другое устройство может содержать глюки и еще какие !
В качестве ПК был использован ноутбук, который был занят сбором логов в течении нескольких
недель.
Пока шло тестирование и сбор логов, я занимался другими делами. Но ноутбук периодически
требовался для проведения других работ, а он был занят, одним словом неудобно получилось.
Вот тут и пришла в голову мысль сделать автономное устройство для сбора телеметрии, т.к.
нагружать целый ПК сверх легкой задачей это уже перебор. Зачем вырабатывать сколько тепла !?
В ряде случаев не всегда есть возможность применить ПК для подобной задачи т.к.
1. Нет места для размещения ПК на объекте (щиток, стойка, улица).
2. Нестабильное питания внешней сети (частое пропадание внешнего питания сети).
3. Ограничения доступа к устройству (нельзя внести и вынести без спец разрешения).
4. Работа устройства происходит при низкой температуре (<5 градусов по шкале Цельсия).
5. Нельзя оставлять ноут без присмотра на чужой территории (его могут одолжить, без возвратно . . .).
Версия 1.
И так необходимо изготовить устройство со следующими характеристиками:
1. Прием данных по двум UART каналам.
2. Запись данных каждого канала производится в отдельный файл на SD карте.
3. Настраиваемая скорость приема UART каналов (доступны следующие скорости: 0(прием выкл), 1200, 4800, 9600, 19200, 38400, 57600, 115200; форма кадра 8N1).
4. Состояние устройства отображается светодиодным индикатором:
- Ошибка - КРАСНЫЙ;
- Идет запись - ЖЕЛТЫЙ;
- Ожидание - ЗЕЛЕНЫЙ;
- Устройство выключено и файловая система размонтирована - нет свечения.
5. Запись данный осуществляется на SD карту, имя файла формируется из текущей даты и времени.
6. Переключение состояния(ВКЛ-ВЫКЛ Запись, Выключение устройства) осуществляется при помощи кнопки на передней панели.
Дополнительные возможности устройства:
1. UART Консоль устройства.(оперативный доступ к режимам, параметрам и настройкам устройства).
2. Консоль: Установка текущей даты и времени (часы реального времени).
3. Консоль: Просмотр содержимого записанных файлов. Удаление файлов. Изменение текущ. директории, распечатка содержимого текущ. директории.
Основу устройства был взят микроконтроллер фирмы ST STM32F103 который на своем борту содержит
несколько UART портов, SDIO интерфейс для работы с SD - картами памяти и всего остального по мелочи.
Программа написана на языке Си и без применения ОС (исходники доступны по ссылке на GitHub-е).
Первая версия устройства была создана на основе кита te-stm32f103 https://www.terraelectronica.ru
Версия 2.
Вторая версия была изготовлена из свободных печатной платы и корпуса, от другого устройства
и представляет собой корпусированную версию.
Отличительная особенность второй версии устройства заключается в том, что на корпусе
устройства выведены два разъема DB-9 (СОМ порт, RS232). Разъемы соединенные между собой и
позволяют подключаться в разрыв NULL модемного кабеля популярного при подключении ПК
к консоли внешнего устройства (коммутатор, свич и т.п.).
Таким образом можно производить запись данных с линий RX(приема) и TX(передачи)
без нарушения работы обмена между устройствами.
Устройство неоднократно помогало отлаживать устройства работающие под управлением
ОС Linux.
ОС Linux штука навороченная и пытается жить своей жизнью. Порой требуется уйма времени для того,
чтобы понять и заставить работать все как положено. Сбор логов из консоли сокращает время отладки !
Версия 3.
Время идет, жизнь не стоит на месте, пришло время для третьей версии устройства.
Требования следующие: Минимальные размеры устройства (без фанатизма).
Была разведена печатная плата и изготовлена на одном из производств. Далее собрана и т.п.
Внешний вид собранной платы:
Планы на будущее и перспективы: Версия 4.
У всех устройств есть недостаток, это зависимость от внешнего питания.
То есть при пропадании внешнего питания, устройство может потерять часть данных предназначенных
для записи на карту, которая содержалась в памяти микроконтроллера и еще не была записана на карту.
Так как питание пропадет в самый не предсказуемый момент, устройство не сможет сохранить данные
и закрыть файл на карте, что приведет к ошибке в файловой системе....
Так не пойдет !
Поэтому предполагаю, что в следующей версии будет добавлено питание от АКБ (Li-Pol) с авто-
выключение, зарядкой АКБ и обновление прошивки с SD-карты т.п.