В данной статье пойдет речь, об одной из разновидностей метеостанций, построенной на основе платы miniSTM32, с добавкой внешней периферии: датчики температуры, влажности, давления. В основу работы метеостанции положена работа с ОС реального времени типа FreeRTOS.
Идея собрать данную метеостанцию тревожила меня давно, покупка красивых и навороченных уже готовых метеоприборов меня как-то не утешала. Да и какой радиолюбитель не хочет построить что-то свое, открыть для себя новые горизонты, познать новую страничку в электроники, итак, начнем.
Основные функции:
- Возможность отображения текущего времени (крупный шрифт);
- Возможность отображения текущей даты и дня недели (маленький шрифт);
- Установка времени, календаря;
- Привязка календаря к Григорианской дате и Юлианскому дню, учет этих значений для автоматической коррекции крайних дней в месяце;
- Работа с Touchscreen, входящий в состав платы LCD дисплея;
- Минимальный набор кнопок для настройки календаря, использующих Touchscreen;
- Подпитка регистров RTC для продолжения хода часов при кратковременном отключении питания прибора;
- Измерение и отображение температуры в помещении (лишь положительная до +45 град) и на улице (от -40 до +40 град);
- Вывод температуры на улице и в помещении в два разных графических окна;
- Просчеты максимальной, минимальной и текущей температуры за последние двое суток;
- Измерение влажности в помещении(20-100%), вывод в отдельное графическое окно с подсчетом минимальной и максимальной за последние двое суток;
- Измерение атмосферного давления и его вывод в отдельное графическое окно(710-790 мм.рт.ст.). Просчеты минимального, максимального и текущего за последние двое суток;
- Возможность автоматического изменения яркости дисплея при изменении окружающей яркости (режим день-ночь);
- Возможность автоматического перехода между графическими окнами, при приближении к прибору человека (датчик инфракрасного излучения, пироэлектрический датчик);
- Питание прибора от внешнего нестабилизированного источника, напряжением +5 вольт;
И как всегда, после определения основных функций встает задача реализации. Но потому что с платой вроде бы все определено, это готовая плата miniSTM32 с установленным на ней контроллером STM32F103RBT6 и внешней минимально необходимой обвязкой, то вот с датчиками засада. Но не стоит впадать в отчаяние раньше времени, смотрим, что у нас валяется без дела и что нужно будет купить. Итак, для замера температуры будем использовать цифровые датчики, подключенные по шине 1-Wire, типа DS18B20. Датчик давления тоже давно валяется без дела, а тут для него и работка нашлась, датчик будет использоваться аналоговый, типа MPX4115AP. Датчик пироэлектрический остался от каких-то развлечений, можно его использовать, датчик типа IRA-E710ST1, но его необходимо оснастить собирающей линзой Френеля, ее прикупим, называется она PPGI0601. Фотодатчик, можно взять в принципе любой, хоть даже отщипнуть голову старому доброму транзистору МП42Б и использовать его переход эмиттер-коллектор, но мы пойдем более гуманным способом и голову откусывать никому не станем, возьмем то, что ждет своего «звездного часа» — это датчик BPW20RF . Ну и наконец, остался у нас датчик влажности. Ранее как-то сталкиваться с ними не приходилось, по столу не валяются, в закромах не прячутся, будем покупать. Не дешевое это занятие скажу я вам. Так как по предварительной прикидке все цифровые порты микроконтроллера заняты, остается по меньшей мере пара GPIO, придется смотреть в сторону аналогового датчика влажности. Итак по цене и доставаемости был взят вот этот: HIH-4000-004.
Ну что же датчики, контроллер, экран, появилась определенность. Приступим к минимальным доработкам существующей печатной платы miniSTM32. По мере разработки основной схемы, появились дополнительные мини схемки с операционными усилителями, для съема показаний с некоторых аналоговых датчиков, Рисунок 1.
Рисунок. 1 — Эскиз принципиальной схемы устройства
- Доработка основной схемы платы miniSTM32 сводится к тому, чтобы отпаять резисторы: R1, R2, R7, R19, согласно схемы MINI-STM32-V3 (см вложения к статье).
- Также в плате дисплея необходимо разорвать цепь резистора R2 и R3, а левый по схеме конец резистора R3 подключить к цепи SD_CS порт PB7, обеспечив тем самым регулировку яркости(см. вложения «2.8_TFT_SCH.pdf»). В плате дисплея необходимо запаять микросхему памяти U2 — AT45DB041D-SSU для сохранения калибровочных констант Touchscreen.
На Рисунке 2 и Рисунке 3 представлено как выглядит плата основная с микроконтроллером и плата дисплея после проведения всех необходимых доработок. Далее все подключения необходимо произвести согласно эскиза схемы,Рисунок 1.
Рисунок 2. — Вид основной платы miniSTM32 после внесения доработок
Рисунок 3. — Вид платы дисплея после внесения необходимых доработок
Доработка схемы достаточна проста и не требует особенных настроек, за исключением:
Большинство датчиков располагаются на корпусе прибора или внутри (датчик давления), единственно удаленным датчиком является датчик температуры на улице, он размещен на конце экранированного провода длинной порядка 4-5 метров. Для соединения датчиков, находящихся на корпусе или удаленно, я использовал стерео разъемы типа JACK 3,5.
Собрав недостающие узлы к аналоговым датчикам, можно навесным монтажом или методом прорезки фольгированного стеклотекстолита канцелярским ножом, приступим к проработке программного обеспечения для нашего устройства, опираясь на функции, которые описаны в начале статьи. Для прошивки и отладки я использовал ST-Link отладчик, но если вам необходимо лишь прошить плату miniSTM32, то на ней уже установлен переходник USB-UART на микросхеме типа PL2302HX. Достаточно скачать утилиту Flash Loader, подключить кабель USB, и выбрав соответствующий COM-порт компьютера залить в микроконтроллер необходимое ПО.
Долго и утомительно описывать вам как работает FreeRTOS и что это такое я пожалуй не стану, есть достаточное количество уроков и статей, где об этом можно почитать у более грамотных людей в этом направлении. Скажу лишь одно, в данном приборе можно было обойтись и без нее, сделав минимальный набор функций и прерываний, сэкономив пространство в памяти, но я для себя решил, почему бы не познакомиться на этом изделии с FreeRTOS поближе, а потом уже можно придумать что-то более серьезное, на более лучшем контроллере. Возможно, кому-то пригодятся наработки и проект в целом, кто-то оценит проделанную работу по достоинству.
Как итог, немного доведя платы до ума, я убрал их в готовый корпус типа G1202В размером 111х82.5х38 мм, который вы можете увидеть на видео в конце статьи или на следующих фото:
.
Рисунок 4. — Вид основной страницы, отображение календаря
Рисунок 5. — Вид страницы отображения влажности за последние двое суток
Рисунок 6. — Вид страницы отображения давления за последние двое суток
Рисунок 7. — Вид страницы отображения температуры в доме за последние двое суток
Рисунок 8. — Вид страницы отображения температуры на улице за последние двое суток
Всем спасибо за внимание! На имеющиеся вопросы с удовольствием отвечу. Удачи в сборке …
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
DA1
МикросхемаMCP601-I/SN1
DA2
МикросхемаMCP6022-I/SN1
D1
Датчик влажностиHIH-4000-041
D2
Датчик давленияMPX4115AP1
D3
Пироэлектрический датчикIRA-E710ST11
линза Френеля PPGI0601D4, D5
Датчик температурыDS18B202
D6
УстройствоminiSTM321
VD1
ФотодиодBPW20RF1
VD2
Выпрямительный диод1N9141
С1, C5, C6, C11-C13
Конденсатор0.1 мкФ6
0805C2, C4
Конденсатор0.01 мкФ2
0805C3
Конденсатор470 пФ1
0805С7
Конденсатор1 мкФ х 6.3в1
TAJAС8
Конденсатор10 пФ1
0805С9, С14
Конденсатор10 мкФ х 6.3в2
TAJAС15
Ионистор47мФ1
FYDOH473ZFR1
Резистор100 кОм1
0805R2, R3, R7, R8
Резистор1 МОм4
0805, кроме R3R4-R6, R9
Резистор10 кОм4
0805R10
Резистор500 Ом1
0805R11
Резистор4.7 кОм1
0805R12
Резистор100 Ом1
0805Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- MINI_STM32-V3_0_SCH.pdf (68 Кб)
- 2_8_TFT_SCH.pdf (25 Кб)
- Keil_FreeRTOS.rar (3436 Кб)
- доработки_схема(1).PDF (89 Кб)