Метеостанция на STM32

В данной статье пойдет речь, об одной из разновидностей метеостанций, построенной на основе платы 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. — Вид платы дисплея после внесения необходимых доработок

Доработка схемы достаточна проста и не требует особенных настроек, за исключением:

  • Порог чувствительности датчика освещенности «день-ночь» VD1, регулируется подстроечным резистором в цепи обратной связи ОУ, тем самым повышая или понижая усиление ОУ. Тем не менее, предельные пороги по чувствительности от 10-100% жестко прописаны в ПО, таким образом, подсветка экрана полностью не гаснет ночью.
  • На ОУ DA2 собран усилитель со средней рабочей точкой, равной половине напряжения питания, а пиродатчик в свою очередь при правильном расположении умеет ещё определять направление движение относительно его, но в данном ПО реализована лишь одна из полуосей. Если у вас возникнет необходимость использовать эту схему в других своих приборах-самоделках, можно посмотреть сигнал на резисторе R10 при движении рукой перпендикулярно чувствительной плоскости датчика влево-вправо.
  • Вместо установленного на плате разъема под батарейку типа CR2032, я решил использовать ионистор FYD0H473ZF на 47 mF, заряжаемый от цепи 3,3V через тоограничивающий резистор, диод служит для предотвращения разрядки ионистора назад в цепь +3,3V при аварийном отключении питания.
  • Большинство датчиков располагаются на корпусе прибора или внутри (датчик давления), единственно удаленным датчиком является датчик температуры на улице, он размещен на конце экранированного провода длинной порядка 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)

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.