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

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

Часы с термометром на 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 Окончательная сборка и запуск.
Отключаем программатор и подключаем датчик, питание и кнопку:


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


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

Часы на Arduino с TFT-дисплеем и RTC

Необычные часы из шариков для пинг-понга

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

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

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
9 комментариев
  1. Иван_Похмельев
    Тогда R2 получаем 3.55 КОм, ближайший подходящий из стандартных номиналов 3.3 КОм,
    Отнюдь. Ближайший в стандартном ряду Е24 это 3,6 кОм. И, кстати, не "КОм, а "кОм".
    Пока не настроен точный ход часов, можно корпус закрыть, используя банковскую резинку. Когда закончите настройку можно склеить его.
    Как аккумулятор-то заряжать будем?
    И как кнопкой манипулировать?
    1. maxim0512 Автор
      Если использовать 3.6 напряжение на выходе получаем 1.11. Хоть и немного, но больше опорного напряжения. При использовании 3.3 - 1.04. Лучше выбрать меньше, тогда показания получаются точнее.
      А насчет кОм, вы правы, я просто не обратил внимание на эту незначительную деталь.
      После склеивания корпуса, доступ к гнезду для зарядки и кнопки можно получить снизу часов, отрезав нижнюю крышку или просто не заклеивая ее.
      1. Иван_Похмельев
        Лучше выбрать меньше, тогда показания получаются точнее.
        Не точнее, а просто входное напряжение должно быть меньше опорного. Кроме того, в своих рассуждениях Вы совершенно не учитываете разброс параметров: резисторы, скорее всего, будут у Вас пятипроцентные, Vbg=(1,0...1,2) В. Так что и 3,3 кОм может оказаться слишком большим, а может и 3,6 кОм подойдёт.
        1. maxim0512 Автор
          По поводу делителя напряжения действительно много нюансов и погрешностей. И разброс сопротивления резисторов и разброс опорного напряжения. Я все пробовал на практике. При использовании 3.6 кОм резистора даже при напряжении аккумулятора в 3.9 В аналоговый порт Attiny показывает 1023 (при переводе в проценты 100%). При использовании резистора 3.3 кОм значение аналогового порта снижается уже при 4.1 В на аккумуляторе. Поэтому я и написал что показания получаются точнее, просто я не увидел необходимости писать про нудные и долгие испытания.
        2. Иван_Похмельев
          я не увидел необходимости писать про нудные и долгие испытания.
          Не надо ничего долго и нудно делать. Включаете в нижнее плечо резистор (2,7...3) кОм, последовательно с ним подстроечник на 1 кОм. От регулируемого источника питания подаёте на вход крайние значения контролируемого напряжения, подстраиваете рабочую точку, потом, при желании, можно замерить сопротивление подстроечника и заменить его на постоянный резистор.
        3. maxim0512 Автор
          Идея отличная. Я примерно так и делал. Только у меня под руками был переменный на 5 кОм. Его я и включил в нижнее плечо. А потом заменил на наиболее подходящий постоянный. Но в инструкции по изготовления, я думаю, писать это излишне. Не зачем проделывать эти замеры несколько раз.
  2. Pronin
    Ну и какая точность хода у RC - clock на 8мгц ? В месяц?
    и зачем Clock: internal 16 ?
    1. maxim0512 Автор
      Я настраивал часы в течении недели, корректировал их ход каждый день или чаще. В итоге при значении 497343, они спешат примерно на 10 сек в неделю.
      Частоту можно и уменьшить. Я не стал менять параметр, не было необходимости
    2. maxim0512 Автор
      При частоте 8 мгц я не пробовал запускать часы и соответственно замерять точность хода. Все замеры производились при 16 от внутреннего. Насчет месяца тоже сказать не могу. Пока без отключения они работали максимум неделю. Опыты и доработки до сих пор в процессе.

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


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

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

Войти

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

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

Онлайн чат

Опрос
А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

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

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

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.