Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Arduino часы с датчиком температуры и без RTS

    Arduino часы с датчиком температуры и без RTS

    Arduino часы с датчиком температуры и без RTS

    Добрый день, сегодня я поделюсь инструкцией по изготовлению часов с комнатным термометром. Часы работают на Arduino UNO, для отображения времени и температуры служит графический экран WG12864B. В качестве датчика температуры - ds18b20. В отличие от большинства других часов я не буду использовать RTS (Real Time Clock), а попробую обойтись без этого дополнительного модуля.

    Для данной самоделки необходимы следующие компоненты:
    - Arduino UNO (Или любая другая Arduino совместимая плата)
    - Графический экран WG12864B
    - Датчик температуры ds18b20
    - Резистор 4.7 Ком 0.25 Вт
    - Резистор 100 ом 0.25 Вт
    - Батарейный отсек для 4 батареек типа АА «пальчиковых»
    - Подходящая коробка
    - Мелкий напильник
    - Лак для ногтей (черный или под цвет корпуса)
    - Немного тонкого пластика или картона
    - Изолента
    - Соединительные провода
    - Монтажная плата
    - Кнопки
    - Паяльник
    - Припой, канифоль
    - Двусторонний скотч

    Шаг 1 Подготовка корпуса.
    Итак, наши часы должны где-то располагаться. Необходимо найти подходящую коробку. Главное чтобы в нее поместились экран WG12864B, Arduino и маленькая монтажная плата для кнопок. Минимальный размер коробки 7х7х10 см. Если использовать маленькую плату Arduino можно впихнуть в коробку и поменьше, но я буду описывать процесс на примере Arduino UNO. Материал из которого сделана коробка предпочтительно пластик, если, как у меня, она железная, стоит позаботиться об изоляции, чтобы внутри нечего не «коротнуло». Пластик предпочтительнее и потому что его проще резать. С коробкой, он же корпус наших часов, определились. Теперь необходимо прорезать окошко под экран размером 6.5х4 см. Если коробка железная, сделать аккуратно это крайне сложно. Как ни старайся около реза будут сколы краски и неровности. Поэтому вначале вырезаем, для этого можно использовать «болгарку», дрель с насадкой для реза или фрезой, в общем на ваш выбор, тем что есть под руками. После этого зачищаем напильником края. Все сколы краски закрашиваем лаком для ногтей, подходящего цвета. В итоге должно получиться следующее:


    Шаг 2 Подготовка графического экрана.
    С подключение экрана, на первый взгляд, возникает много проблем и сложностей. Но если вначале разобраться с их видами, станет намного легче и понятнее. Существует много разновидностей и типов экранов на контролере ks0107/ks0108. Все экраны принято делить на 4 типа:
    Вариант A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
    Вариант B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, QY-12864F, TM12864L-2, 12864J-1
    Вариант C: Shenzhen Jinghua Displays Co Ltd. JM12864
    Вариант D: Wintek- Cascades WD-G1906G, Wintek — GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202

    Список не полный, их очень много. Самый распространённый и, на мой взгляд, удобный WG12864B3 V2.0. Дисплей можно подключить к Arduino по последовательному или параллельному порту. При использовании с Arduino UNO лучше выбрать подключение по последовательному порту – тогда нам потребуется всего 3 выхода микроконтроллера, вместо минимум 13 линий при подключении по параллельному порту. Подключается все довольно просто. Есть еще один нюанс, в продаже можно встретить два варианта дисплеев, со встроенным потенциометром (для регулировки контраста) и без него. Я выбрал, и советую тоже сделать вам, со встроенным.


    Это уменьшает количество деталей и время пайки. Также стоит поставить токоограничительный резистор номиналом 100 Ом для подсветки. Подключая напрямую 5 вольт, существует риск сжечь подсветку.
    WG12864B – Arduino UNO
    1 (GND) - GND
    2 (VCC) - +5V
    4 (RS) – 10
    5 (R/W) – 11
    6 (E) – 13
    15 (PSB) – GND
    19 (BLA) – через резистор - +5V
    20 (BLK) – GND

    Удобнее всего это все собрать сзади экрана и вывести от него 5 проводов подключения к Arduino UNO. В итоге должно получится примерно так:


    Для тех кто все-таки выберет параллельное подключение приведу таблицу подключения.


    И схема для экранов варианта B:


    Шаг 3 Подключение датчика температуры.
    Как я уже говорил, для измерения температуры будем использовать интегральный датчик DS18B20. Выбрал его за высокую точностью измерения, погрешность не более 0,5 °C. Датчик откалиброван при изготовлении, какой-либо дополнительной настройки не требуется. Диапазон измерения температуры -55 … + 125 °C. Есть два режима работы: с внешним источником питания и «паразитного питания». При работе в режиме внешнего питания подключение следующее:


    При использовании «паразитного питания» датчик получает питание от линии связи. В этом режиме для подключения ds18b20 к микроконтроллеру достаточно двух проводов. Внутренний конденсатор датчика заряжается за счет энергии на линии связи при низком уровне на шине. У режима «паразитного питания» много особенностей и поэтому я не рекомендую его использовать. Но если вы все-таки решили использовать его, вот схема:


    Или можно использовать улучшенную схему подключения при использовании «паразитного питания»:


    На одну линию связи может быть включено несколько датчиков. Для наших часов достаточно одного. Подключаем провод от контакта «DQ» ds18b20 к «pin 5» Arduino UNO.

    Шаг 4 Подготовка платы с кнопками.
    Для установки времени и даты на часах будем использовать три кнопки. Для удобства спаиваем три кнопки на монтажной плате и выводим провода.


    Подключаем следующим образом: общий для всех трех кнопок провод подключаем к «GND» Arduino. Первую кнопку, она служит для входа в режим установки времени и переключения по времени и дате, подключаем к «Pin 2». Вторая, кнопка увеличения значения, - к «Pin 3», а третья, кнопка уменьшения значения, - к «Pin 4».

    Шаг 5 Сборка всего воедино.
    Чтобы избежать короткого замыкания, следует заизолировать экран. По кругу обматываем изолентой, а на заднюю часть крепим на двусторонний скотч, вырезанную по размеру, планку из изолирующего материала. Подойдет плотный картон или тонкий пластик. Я воспользовался пластиком от планшета для бумаги. Получилось следующее:


    Спереди экрана по краю клеим двусторонний скотч на вспененной основе, желательно черный.


    Подключаем экран к Arduino:


    Плюс от батарейного отсека подключаем к «VIN» Arduino, минус к «GND». Размещаем его сзади Arduino. Перед установкой в корпус, не забудьте подключить датчик температуры и плату с кнопками.


    Шаг 6 Подготовка и заливка скетча.
    Для датчика температуры нужна библиотека OneWire.
    onewire.rar [16.75 Kb] (скачиваний: 236)


    Вывод на экран осуществляется через библиотеку U8glib:
    u8glib.rar [906.95 Kb] (скачиваний: 240)


    Для редактирования и заливки скетча надо установите эти две библиотеки. Сделать это можно двумя способами. Просто распаковать эти архивы и поместить распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Или второй вариант установить библиотеки прямо в среде программирования. Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт «Добавить .Zip библиотеку». В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. Снова откройте меню Скетч – Подключить библиотеку. В самом низу выпадающего списка вы должны увидеть новую библиотеку. Теперь библиотеку можно использовать в программах. Не забудьте после всего этого перезагрузить Arduino IDE.

    Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства - 64-разрядный код. Каждый раз искать этот код нецелесообразно. Поэтому необходимо вначале подключить датчик к Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты - Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес нашего датчика. Открываем скетч Arduino_WG12864B_Term, ищем строку:

    byte addr[8]={0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97};//адрес моего датчика 


    Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика.

    Стока:

    //u8g.setPrintPos(  44, 64); u8g.print(sek);   // Выводим секунды для контроля правильности хода


    Служит для вывода секунд рядом с надписью «Data». Это необходимо для точной установки хода времени.
    Если часы спешат или отстаю следует поменять значение в строке:

    if (micros() - prevmicros >494000) { // поменять на другое для корректировки было 500000


    Я опытным путем определил число, при котором часы идут достаточно точно. Если ваши часы спешат следует увеличить это число, если отстаю – уменьшить. Для определения точности хода и нужен вывод секунд. После точной калибровки числа, секунды можно закомментировать и таким образом убрать с экрана.

    Заливаем скетч.
    arduino_wg12864b_term.rar [3.64 Kb] (скачиваний: 541)

    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: Датчик

    Oled часы на Attiny85

    Arduino часы на LCD TFT 3,5'

    7
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    5.3
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 7.11 из 10 (голосов: 3 / История оценок)

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

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии