# некоммерческий проект датчика температуры
Делается в свободное время для тестирования идей и изучения новых подходов.
Идеология проекта заключается в самостоятельной разработке всего с нуля, без использования готовых модулей с приминением системного подхода к разработке: unit тестирование, статический анализ, CI/CD, потенциально функциональное тестирование.

Устройство предстовляет из себя датчик температуры и влажности, работающий по протоколу modbus rtu с фунций выдачи управляющего сигнала через open-drain выход.

<br><br>

## [ссылка на прошивку](http://boriskovkb.ru/admin_dev/temp_contoller_firmware)

##  [ссылка на железо](http://boriskovkb.ru/admin_dev/temp_contoller_hardware)

<br><br>


***Уже сделанно:***

### Прошивка:
-  Написана полностью с нуля "на регистрах"
   -  modbus драйвер с поддержкой чтения и записи всех типов регистров
   -  хранение настроек в eeprom памяти
   -  измерение температуры и влажности i2c mems сенсором
   -  управление open-drain выходом
   -  структура прошивки с простым временным параллелизмом с возможностью наращивания логики

### "Программная инфраструктура":
- С нуля составленна система сборки (make) c функциями:
   - сборка прошивки под МК
   - сборка unit тестов
   - проверка кода статическим анализатором по стандарту misraC
- Развёрнут личный сервер содержащий:
  - GIT сервер
  - Jenkins с возможностью автоматически запускать все этапы сборки в изолированном контейнере
- [Создан стенд на базе однолатника с возможностью удалённой отладки устройства](http://boriskovkb.ru/admin_dev/pet_project/src/branch/main/images/%D1%83%D0%B4%D0%B0%D0%BB%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D1%80%D0%B0%D0%B1%D0%BE%D1%87%D0%B5%D0%B5_%D0%BC%D0%B5%D1%81%D0%B0%D1%82%D0%BE.jpg)

### Печатная плата:
  - [Составленна схема](http://boriskovkb.ru/admin_dev/temp_contoller_hardware/src/branch/public/Temperature_contoller.pdf)
  - [Произведенна трассировка платы](http://boriskovkb.ru/admin_dev/pet_project/src/branch/main/images/%D0%BF%D0%BB%D0%B0%D1%82%D0%B0_kicad.png)
  - [Монтаж и наладка](http://boriskovkb.ru/admin_dev/pet_project/src/branch/main/images/%D0%BF%D0%BB%D0%B0%D1%82%D0%B0%20%D0%B2%20%D0%BA%D0%BE%D1%80%D0%BF%D1%83%D1%81%D0%B5.jpg)

### "Аппаратная инфраструктура":
  - [Разработанна печатная плата "стенда" с pogo контактами](http://boriskovkb.ru/admin_dev/pet_project/src/branch/main/images/%D1%81%D1%82%D1%8D%D0%BD%D0%B4_kicad.png)
  - [Смоделированно и напечатано тело стенда](http://boriskovkb.ru/admin_dev/pet_project/src/branch/main/images/%D1%81%D1%82%D1%8D%D0%BD%D0%B4.jpg)

***В планах:***

Дописать прошивку. Реализовать поддержку 3х типов сенсоров (аппаратная уже есть). Реализваить различные фичи, например автоматическая выдача сигнала при достижении определённой температуры. Реализовать [fastmodbus](https://wirenboard.com/wiki/Fast_Modbus). Написать загрузчик. Реализвать функцианальное тестирование. Подробней разобраться в unit тестировании и CI-CD. 