Прошивка микроконтроллера
Программа микроконтроллера написана на Си в компиляторе mikroC PRO PIC компании mikroElektronika. Выбор этого компилятора не случаен: он поддерживает множество микроконтроллеров PIC, постоянно обновляется, предоставляет доступ к огромному числу дополнительных библиотек, примеров приложений и инструментов отладки, иммеет обширную поддержку. Но основной причиной выбора mikroC PRO PIC является библиотека функций для работы с файловой системой FAT32, которая хорошо себя зарекомендовала и максимально упрощает работу с microSD картой памяти. Текущая версия программы микроконтроллера 00D; автор продолжает совершенствовать и оптимизировать код, и несмотря на то, что версия полностью работоспособна, можно считать, что продукт все еще находится на стадии отладки.
Помимо основной задачи обработки и регистрации данных с датчиков, в программе реализован простой пользовательский интерфейс по типу командной строки в терминальной программе (Рисунок 15). С помощью простых команд в терминале пользователь может конфигурировать даталоггер.
![]() |
|
Рисунок 15. | Даталоггер: пользовательский интерфейс и командная строка в терминальной программе. |
Рассмотрим важные моменты программной части.
При подаче питания система конфигурирует порты ввода/вывода и проверяет периферию: последовательные интерфейсы UART/I2C/SPI, состояние часов реального времени и устанавливает время/дату для файлов на карте памяти. Далее считывается ID устройства – параметр, который хранится в энергонезависимой памяти микроконтроллера и идентифицирует даталоггер (Рисунок 15).
Имена файлов на карте памяти формируются как yyyymmdd.ext (год, месяц, день). Начальное расширение для первого файла «000». Для каждого нового дня система создает новый файл с указанным форматом имени; таким образом, каждые 24 часа создается новый файл.
Для системы определяется период обновления и регистрации данных (Update time). Значение данного параметра сохраняется на карте памяти, пользователь может задать его самостоятельно в диапазоне 1 – 999 с. Когда это условие выполняется, микроконтроллер считывает все датчики и параметры системы, а затем выполняет запись этих данных в файл на карте памяти.
С помощью кнопки P1 пользователь может установить маркер данных в файле. Это означает, что при нажатии на кнопку система игнорирует период обновления и выполняет однократное считывание датчиков, обработку и запись данных в файл (Рисунок 16). Кнопка P2 предназначена для ручного создания нового файла данных. Имя файла в этом случае будет таким же, а расширение будет 001, 002, 003 и т.д. Каждое нажатие P2 создает новый файл (Рисунок 17).
![]() |
|
Рисунок 16. | Даталоггер: однократная регистрация параметров и маркировка записи в файле данных. |
![]() |
|
Рисунок 17. | Даталоггер: создание нового файла данных с помощью кнопки P2. |
Файлы данных на карте памяти – это обычные текстовые файлы, где каждый параметр разделен символом «;» для упрощения импорта в табличные редакторы или программы подобные Excel (Рисунок 18). Каждая строка файла данных имеет следующую структуру:
- имя и версия прошивки;
- идентификатор устройства;
- период обновления и регистрации данных (update time);
- дата;
- время;
- событие, по которому произведена запись данных (включение, обновление данных по заданному периоду, маркер);
- напряжение аккумулятора;
- значение датчика освещенности;
- значение температуры по датчику DS18B20 (в текущей версии не используется, записывается только имя датчика);
- значение температуры по датчику HDC1050 (°С);
- значение относительной влажности с датчика HDC1050 (%);
- последовательность байтов (зарезервировано для будущих функций).
![]() |
|
Рисунок 18. | Даталоггер: формат файла данных. |
Данные, сохраненные в подобном формате, можно анализировать с помощью табличных редакторов или использовать для построения диаграм и графиков (Рисунок 19).
![]() |
|
Рисунок 19. | Даталоггер: график изменения напряжения аккумулятора за 4 дня. |
Настройка и работа с устройством
Как было отмечено выше, пользовательский и отладочный интерфейс реализован в терминальном режиме по последовательному интерфейсу USB-UART. Инициализация устройства, подтверждения и ответы на команды пользователя сопровождаются отправкой сообщений через последовательный порт в терминальную программу.
Для настройки даталоггера необходимо подключить его к ПК или ноутбуку по USB и установить драйвер виртуального COM-порта на микросхеме MCP2221. Далее в любой терминальной программе, нужно выбрать соответствующий последовательный порт, настроить его (9600 бит/с, 8, N, 1), обязательно включить параметр Local Echo, чтобы видеть команды, которые вы отправляете, и выполнить подключение к порту. В текущей версии прошивки даталоггера поддерживаются следующие команды:
- reset – выполнить программный сброс устройства;
- set time – установить время (часы и минуты, секунды устанавливаются в 0);
- set date – установить дату (год, месяц, число, день недели);
- set update – установить интервал автомтаической регистрации данных (1 – 999 с);
- set id – установить идентификатор устройства (0-999);
- temp – выполнить измерение температуры датчиком HDC1050;
- hr - выполнить измерение относительной влажности датчиком HDC1050;
- ldr - выполнить измерение освещенности (среднее из 10 преобразований);
- batt – выполнить измерение аккумулятора (среднее из 10 преобразований);
- date – текущая дата даталоггера;
- time – текущее время даталоггера;
- id – идентификатор устройства;
- upd – текущий интервал автоматической регистрации данных.
Загрузки
Исходный код и hex-файл прошивки (mikroC PRO PIC) – скачать