/esp8266_sys

Simple sensor telemetry system, based on STM32F103C8T6, ESP8266 and FreeRTOS.

Primary LanguageC

ESP8266 STM32F103C8T6 ECO SENSORS

(разработка прекращена)

ПО, разрабатываемое для телеметрирования и сбора данных с сенсорных блоков. В настоящее время находится на начальной стадии разработки. Применимо для использования на отладочных платах v.0.1a.

stm32_esp_server - каталог с исходным кодом проекта для устройства (макета), выполняющего роль сервера ("Сервер").

stm32_esp_client - каталог с исходным кодом проекта для устройства (макета), выполняющего роль клиента ("Клиент").

lib-stm - каталог с исходным кодом библиотек, использованных в проекте (драйвера, общие библиотеки).

Устройства Сервер и Клиент выполнены на одинаковых оладочных платах (v.0.1a), с одинаковыми микроконтроллерными модулями (STM23F103C8T6 - BluePill) и модулями радиосвязи (Wi-Fi ESP8266 - ESP12-E). Аппаратно Сервер отличается от клиента наличием LCD для отображения меню (в котором могут содержаться состояние сети, результаты измерения с датчиков, данные конфигурации), дополнительных кнопок для пользовательского ввода и выбора пунктов меню, а так же отсутствием сенсоров. Программа Сервера поддерживает конфигурацию ESP8266 в режиме softAP.

В процессе работы Сервер создает на базе своего радиомодуля беспроводную сетевую точку доступа с SSID "MY_ESP8266", к которой Клиент подключается автоматически. Обмен данными двусторонний.

С версии v.1.3b для обмена данными между Клиентом и Сервером используется распространенный бинарный протокол MAVLink. С версии v.1.5b данные считываются Клиентом с его датчиков и отправляются Серверу с частотой 1Гц; на сервере полученные данные отображаются на символьном LCD на трех view, которые переключаются циклически нажатием на кнопку BOARD_SERVICE_BUTTON.

Поддерживаемые сенсоры (v.1.66):

  • BMP180 - атмосферное давление, температура;
  • MAX44009 - фоновая освещенность;
  • SHT11 - отностиельная влажность воздуха, температура.

История версий:

v.1.0

  • Начальная версия без правок.

v.1.1b

  • Мелкие доработки. Оптимизация работы методов взаимодействия с радиомодулем ESP8266 под использование с FreeRTOS;
  • Для первоначального тестирования сети при нажатии кнопки BOARD_SERVICE_BUTTON на любом из устройств (Клиенте или Сервее), на противоположном устройстве загорается дополнительный индикаторный светодиод. При этом на экране Сервера (третья строка) отображается количество принятых им пакетов (эквивалентно количеству нажатий кнопки на Клиенте).

v.1.2b

  • Добавлено периодическое обновление TCP-соединения для автоматического пересоединения в случае потери сигнала;
  • Добавлена документация для ESP-12E.

v.1.3b

  • Поддержка базового протокола MAVLink.

v.1.4b

  • Драйвер BMP180;
  • Расширенная версия MAVLink (сообщения типов mavlink_eco_bmp180_t, mavlink_eco_sys_status_t).

v.1.5b

  • Драйвер MAX44009;
  • Добавлен новый тип сообщения расширенной версии MAVLink (сообщения типа mavlink_eco_max44009_t);
  • Замена дисплея с SSD1306 на символьный 16х2 (с I2C адаптером PCF8574).

v.1.5

  • Мелкие доработки после теста. Комментарии.

v.1.6

  • (предыдущий билд v.1.52 не добавлялся в репозиторий, изменения касаются версий v.1.5 и v.1.52);
  • Драйвер SHT11 - датчика влажности и температуры;
  • Драйвер SPI (адаптация под использование с SD-картой)
  • SPI теперь может работать с DMA;
  • Добавлена возможность работы с SD-картой, записи/чтения файлов на SD-карту (тестировалось на картах microSD HC Class 4 8Gb и microSD HC Class 10 16Gb в режиме SPI). Поддерживаются файловые системы FAT16, FAT32 (форк http://elm-chan.org/fsw/ff/00index_e.html, добавлен платформозависимый код для STM32F103);
  • Добавлена возможность хранение некоторых параметров в энергонезависимой памяти (Flash) микроконтроллера (с помощью технологии Emulated EEPROM, т.к. STM32F103 не имеет встроенного EEPROM);
  • Все принятые от датчиков данные теперь записываются в соответствующий лог на SD-карте (1Гц). Имя лога соответствует его порядковому номеру (фактически - числу запусков МК от прошивки с изменением сигнатуры EEPROM_SIGNATURE), т.к. в текущей аппаратной конфигурации отсутствует RTC и создание абсолютных временных меток невозможно.

v.1.65

  • Реализация MAVLink FTP: передача файлов блоками с использованием протокола MAVLink;
  • Доработано меню.

v.1.66

  • Одновременное взаимодействие с несколькими Клиентами (до 5);
  • Доработано меню (выбор станции, настройка).

Известные баги (v.1.66):

  • MAVLink FTP: вылет программы при передаче списка фалов (если на флешке больше одного файла); Возможная причина: ошибка в state-machine или переполнение стека задачи.

TODO (v.1.66):

  • Исправление MAVLink FTP;
  • Подпротокол передачи настроек;
  • Manual по использованию меню;
  • RTC.