Комнатный термометр на Arduino Nano


В данной статье мы рассмотрим создание на основы платы Arduino Nano и датчика температуры DS18B20 термометра с красивым внешним видом для измерения температуры в комнате. Измеренная температура будет отображаться с помощью адресной светодиодной ленты.

Внешний вид комнатного термометра на Arduino Nano

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Digilent WS2812 Addressable LED Strip (адресная светодиодная лента) (купить на AliExpress).
  3. Датчик температуры DS18B20 (купить на AliExpress).
  4. Кнопочный переключатель.

Общие принципы работы проекта

В данной статье мы рассмотрим создание термометра для измерения комнатной температуры, то есть в диапазоне примерно от 10 до 35 градусов Цельсия.

Измерять температуру мы будем с помощью датчика DS18B20, обладающего точностью измерения температуры в 0,5 градуса. Более подробно о его характеристиках и способу подключения к плате Arduino вы можете прочитать в данной статье. Измеренная температура будет отображать на адресном светодиодном индикаторе (LED bar) WS2812, который содержит 50 светодиодов. С помощью данного индикатора значение температуры будет отображаться весьма наглядно, используя для этого цвет светодиодов.

При изменении температуры цвет свечения светодиодов будет постепенно изменяться от темно-синего (для низких температур), далее к светло-синему, затем к зеленому (область комфортных температур) и далее до красного (высокие температуры). То есть одного беглого взгляда на термометр будет достаточно чтобы определить находится ли температура в "комфортной зоне" или нет.

Установка компонентов термометра в корпус

Кнопочный переключатель в нашем проекте будет использоваться для изменения режимов работы термометра. Когда переключатель будет отжат, термометр будет функционировать в режиме "DOT" (точка) и текущая температура будет отображаться с помощью свечения одного светодиода.

При нажатии кнопочного переключателя режим работы термометра будет изменяться на линейный. В этом режиме будут светиться все светодиоды, начиная от начальной точки и до измеренной температуры. Если мы нажмем на кнопочный переключатель еще раз, то термометр будет переключать в тестовый режим – все светодиоды на индикаторы будут последовательно зажигаться один за другим. Если мы нажмем кнопку еще раз, то термометр снова вернется в режим DOT и т.д.

Схема проекта

Схема комнатного термометра на основе платы Arduino Nano представлена на следующем рисунке.

Схема комнатного термометра на основе платы Arduino NanoИсходный код программы (скетча)

Видео, демонстрирующее работу термометра

(Проголосуй первым!)
Загрузка...
3 550 просмотров

Комментарии

Комнатный термометр на Arduino Nano — 11 комментариев

  1. Я очень много занимаюсь ремонтом радиотехники и меня все время напрягает когда кто то принесет какое нибудь самодельное изделие с просьбой отремонтировать. Схемы нет ,что производитель пытался сделать не понятно .Так и со скетчем -ладо был бы я крутым программистом я бы чужие скетчи щелкал бы как семечки ,но увы если я с ремонтируемым изделием еще могу разобраться ,то со скетчем увы я дуб.

    • Ну может в будущем потихоньку улучшите свои навыки в этом направлении. Из всех проектов, которые у меня есть на сайте, на мой взгляд, именно скетчи для Ардуино обладают наиболее простым для понимания кодом. Поэтому, если в будущем собираетесь улучшить свои навыки в программировании, наверное, вам стоит начать именно с платформы Ардуино

  2. Из вашей же ветке изделий собрал в протеусе Часы бесконечности работают отлично -как часы

    • Ну, к сожалению от таких не очень приятных моментов никто не застрахован. Коды программ могут устаревать со временем и из-за этого переставать работать, либо просто может закрасться опечатка. Ну хотя бы другой аналогичный проект у вас без проблем заработал. У меня сейчас пока нет доступа к железу и поэтому я не могу так сразу найти опечатку/ошибку в этом скетче. Ну если кто из читателей поможет

  3. Собрал сей градусник на ардуино нано 168 серии При первом включении показал температуру одним СД .При нагреве датчика СД точка пошла в верх ,при охлаждении вниз При нажатии кнопки выбора режимов ,переключилось на столбик ,при нагреве датчика столбик полез в красный диапазон ,при охлаждении ничего не происходит ???? .При повторном нажатии кнопки выбора режимов СД точка бегает в верх вниз .при следующим нажатии ничего не происходит ??? Кнопку выбора режимов приходится нажимать по несколько раз ???? Такое происходит пока не нажмешь кнопку сброса на плате ардуино ,потом все повторяется Разъясните где что искать ?

    • Добавьте в программу вывод значений температуры и значений переменной WheelPos в окно монитора последовательной связи. Я думаю, тогда вы быстро поймете в чем проблема

      • Если бы я был такой же умный в программировании как вы ,то я так бы и поступил ,а так я товарищь дерево и пока мне не обьяснишь что к чему для меня это тёмный лес .

        • Посмотрите для примера эту статью - подключение датчика температуры и влажности DHT22 к Arduino. В ней есть пример вывода отладочной информации в окно монитора последовательной связи. Там в функции void setup() нужно инициализировать сначала последовательный порт командой Serial.begin(115200), а потом в функции void loop() просто выводить нужную информацию с помощью функции Serial.print.

          • Попытка запустить изделие в Proteus 8 Professional результатов не принес по сравнению с другими изделиями при вставке скетча в протеус .Ваш не работает ни при каких попытках запустить .

            • К сожалению скетч большой, могла закрасться опечатка, или что-нибудь в библиотеках изменилось с момента написания этой статьи. Тут так однозначно я уже не могу сказать в чем может быть ошибка. Здесь надо разбивать скетч на маленькие части и тестировать их работу по частям - так проще всего будет найти ошибку. Сможете разбить скетч на маленькие части? Я так мог бы попытаться помочь вам найти ошибку. У вас, скорее всего ошибка с логикой работы режимов. Сможете закомментировать код всех режимов, а оставить только работу в одном режиме?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *