Часы с термометром на Attiny

Всем привет и хорошего дня или вечера. На этот раз я поделюсь инструкцией по изготовлению комнатных часов с термометром. Вычислительным центром часов будет Attiny85, собранная на плате от Digispark. Для отображения часов – Oled дисплей. Термометр – всем известный ds18b20. Для питания возьмем li-ion 18650 (их можно добыть из старого аккумулятора от ноутбука). И добавим отображения уровня заряда аккумулятора. Как и во всех предыдущих моих часах, мы обойдемся без модуля RTC (real time clock).

Соберем все что необходимо:

— Digispark Attiny85 (версия micro USB)
— ds18b20 (в пластиковом корпусе)
— Oled экран с разрешением 128х64, I2C
— Аккумуляторы 18650 2шт или старый Li-ion аккумулятор от ноутбука
— Резисторы (3.3 КОм, 4.7 КОм, 10 КОм)
— Тонкий пластик (для корпуса)
— Соединительные провода разных цветов
— ISP программатор (или любая Arduino плата)
— Кнопка
— Разъемы Dupont 2.54 мм «мама», «папа»
— Канцелярский нож, двусторонний скотч, изолента, термоклей
— Все для пайки (паяльник, канифоль, припой)

Шаг 1 Корпус.
Корпус будущих часов изготовим из тонкого пластика. Можно купить лист такого пластика в специализированном магазине или заказать на aliexpress. А можно (чтобы не ждать и не искать) сходить в канцелярский и купить скоросшиватель для бумаги из пластика понравившегося цвета. Размеры будущий часов: ширина – 40 мм, толщина – 30 мм, высота – 70 мм. Согласно схеме ниже, вырезаем развертку из пластика:

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

Переходим к Attiny.

Шаг 2 Attiny + Oled.
Как я уже говорил, сердцем нашей самоделки будет Attiny 85. Лучше всего приобрести эту микросхему, сразу распаянную на плате вместе со стабилизатором напряжения и обвязкой. Хорошо подходит Digispark Attiny85. Выбирайте версию с micro-USB на плате. Другие модификации платы не подойдут по размеру. Бывает, что эта плата продается с уже распаянными разъемами Dupon «папа». Если это так, отпаиваем все разъемы. Набираем цветных проводов. Нам нужно сантиметров по 10 разного цвета. Припаиваем их в Attiny и записываем какой провод, какому выводу соответствует. К выводам P0 и P2 надо припаять по два провода. Вторая пара нужна для подключения Oled экрана. Получаем следующее:

Я записал следующую схему по проводам:

Экран у нас маленький (под стать контролеру), но смотрится красиво. OLED (organic light-emitting diode) — это графический дисплей. Подсветка отсутствует, а вместо этого каждый пиксель – независимый светодиод. Размеры экрана — 0.96 дюйма. Разрешение 128х64. Подключается по шине I2C. Использует всего два провода для соединения с Attiny. Они бывают разных цветов, выбирайте на свой вкус. Мне приглянулся синий с желтой полоской в верху. Поступаем аналогично Digispark. Если есть распаянные разъемы – выпаиваем их. Припаиваем, пока что, только провода питания:

Будьте аккуратнее припайке, не повредите паяльником шлейф на дисплее:

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

Спаиваем Digispark Attiny и Oled дисплей вместе согласно схеме (цвета проводов у вас могут отличаться, главное не напутайте с выводами):

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

На конце всех проводов крепим разъем Dupont «мама», вставляем в изоляторы и сматываем все вместе изолентой чтобы получился разъем. Также записываем распиновку разъема:

Распиновка должна быть такой, так как в дальнейшем мы будем подключать к разъему провод для прошивки или остальные эленты часов.
Вклеиваем полученную конструкцию в корпус, при это не забываем склеить и сам корпус, оставив одну стону не склеенной, для дальнейших манипуляций:

При вклеивании обратите внимание, чтобы экран располагался ровно:

Шаг 3 Питание.
Для питания будем использовать два Li-ion элемента. Тип 18650. Можно их приобрести отдельно. В этом случаем, спаиваем их параллельно, изолируем и выводим коннектор для подключения и последующей зарядки:

У многих есть старые ноутбуки. Они ли уже не работают или работаю через раз. Даже если аккумулятор у ноутбука уже плохой и не подходит для использования по назначению, его можно использовать для разного рода самоделок. В нашем случае для часов. Берем аккумулятор от ноутбука:

Главное, чтобы он был Li-ion. Аккуратно разбираем его, вам необходимо раскрыть пластиковый корпус, так чтобы не повредить элемент внутри. Чаще всего аккумулятор разделен по два включенных параллельно элемента. Достаем их и отделяем одну пару от остальных:

Припаиваться лучше всего к контактным площадкам:

Приклеиваем эту пару на заднюю стеку часов:

Шаг 4 Определение заряда аккумуляторов.
Удобной функцией часов будет индикация заряда аккумулятора. Определять степень заряда будем по напряжению. Минимальное напряжение для этих аккумуляторов – 2.4 В. Разряжать дальше его нельзя. Максимально напряжение – 4.2 В.

Измерение напряжения на аналоговом порту всегда производится относительно какого-то другого напряжения. Мы не можем использовать вывод AREF микроконтроллера, служащий для задания опорного напряжения. Измерять напряжение относительно напряжения питания – тоже невозможно (соотношение всегда будет одинаковое). Поэтому мы будет определять напряжение в соотношении с внутренним опорным напряжением или Vbg (Bandgap reference voltage). Оно составляет 1.1 В. Теперь нужно рассчитать делитель напряжения для нашего аккумулятора, так чтобы при максимальном заряде (4.2 В) на делителе было (1.1 В). Рассчитать можно по формуле:

Или воспользуемся онлайн-калькулятором

R1 возьмем номиналом 10 КОм. Тогда R2 получаем 3.55 КОм, ближайший подходящий из стандартных номиналов 3.3 КОм, его и возьмем. Замер производиться между внутренним напряжением и GND, поэтому резистор 3.3 КОм припаиваем к минусу, а 10 КОм к плюсу. Размещаем резисторы на аккумуляторе, выводим провод от делителя.

Изолируем все контакты, во избежание КЗ:

Провод от делителя будем подключать к PB4.

Шаг 5 Измерение температуры.
Отличным дополнение часов служит измерение комнатной температуры. Воспользуемся интегральным датчиком температуры DS18B20. Для работы с ним требуется всего один провод (очень кстати при использовании Attiny 85). Все замеры производит сам, не напрягает центральный контролер (тоже отлично памяти у Attiny 85и так мало), нам нужно только подавать команды и получать результаты. Есть несколько различных схем подключения этого датчика, мы воспользуемся оптимальным для данного случая, на мой взгляд, вариантом. С использование внешнего питания и резистором на 4.7 КОм:

Припаиваем небольшие провода, и крепим разъемы

Провод от датчика DQ подключаем к PB 3.

Шаг 6 Кнопка.
Выводов у нас и мало, а требований к часам много. Для установки времени будем использовать одну кнопку. На большее мы рассчитывать не можем. Припаиваем провода к кнопке, один контакт от нее к GND. Совмещаем с нашим датчиком температуры:

Второй контакт от кнопки подключаем к PB 1.

Шаг 7 Подготовка среды разработки.
Для дальнейшей работы со скетчем, а также его редактирования и заливки нам потребуется Arduino IDE. Скачиваем эту программу с официального сайта:

Теперь добавим поддержку Attiny 85 в среду. Открываем Arduion IDE и идем по пути:
Файл — Настройки — «Additional Boards Manager URLs» вставьте ссылку:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Жмем OК.
Переходи в:
Инструменты — Плата — Boards Manager вводим Attiny и кликаем на «attiny by David A. Mellis». Жмем «Install» и уходим ставим кофе.
А теперь про библиотеки. Их нужно две:

Для работы с Oled дисплеем

Управление датчиком температуры

Скачав эти архивы, распаковываем их в папку «libraries», которую легко найти пройдя по пути установки Arduino IDE.

Шаг 8 Программатор.
Digispark Attiny 85 – отличная плата. Предназначена для подключения к USB компьютера. И может программироваться через него же. Но Attiny при этом использует программный USB, который в свою очередь занимает 2 КБ из 8 КБ памяти. Нам это не подходит, и поэтому мы будем прошивать Attiny 85 посредством интерфейса ISP. И здесь нам понадобиться ISP- программатор. Если его нет – не беда. Берем Arduino. В моем случаем Arduino UNO:

Вы можете взять любую другую совместимую плату из линейки Arduino. Подключаем к компьютеру, открываем Arduino IDE, выбираем com-порт, к которому подключена Arduino плата, открываем скетч, находящийся в примерах, Arduino ISP и заливаем его в плату. Также нам понадобиться провод для быстрого подключения к Attiny.

Подключение следующее:

D11 – P0
D12 – P1
D13 – P2
D10 – P5

Не забудьте про питание Attiny.

Шаг 9 Редактирование и заливка скетча.

Скачиваем скетч

Перед заливкой необходимо отредактировать скетч.
Интегральный датчик ds18b20, как говорилось ранее, работает по протоколу One Wire. Каждый датчик имеет свой уникальный 64 разрядный адрес. Вам необходимо найти адрес своего датчика и записать в скетч. Открываем Arduino IDE идем по пути:
Файл – Примеры – Dallas Temperature – OneWireSearch.

Заливаем скетч в Arduino. Открываем монитор порта. Вы должны увидеть адреса всех подключенных датчиков и их показания температуры. Записываем ваш адрес. Открываем мой скетч и меняем адрес на свой в строке:

byte addr[8]={0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};

Для корректировки хода часов служит следующая постоянная:

if (micros() — prevmicros >[b]497000[/b])

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

OzOled.printNumber((long)sek, 0, 7); //вывод секунд для точной натсройки

Закомментируйте эту строку чтобы убрать секунды.
Теперь подключаем программатор или Arduino в качестве программатора, выбираем com-порт, в меню «Инструменты» выбираем нашу плату и ставим следующие параметры:
Плата: Attiny 25/45/85
Процессор: Attiny 85
Clock: internal 16
Затем в том же меню выберете:
Инструменты – Программатор — «Arduino as ISP».
И наконец:
Скетч – Загрузить через программатор

Шаг 10 Окончательная сборка и запуск.
Отключаем программатор и подключаем датчик, питание и кнопку:

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

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

Оценка часов

Как вы оцените эти часы?
Отлично — выглядят красиво, хороший функционал, полезные Хорошо — симпатично, термометр порадовал Удовлетворительно — ни чем не примечательные часы Плохо — не красиво, сейчас часы не нужны
Всего проголосовало: 18

Голосовать
Результаты

Источник: usamodelkina.ru

Понравилась статья? Поделиться с друзьями: