Добрый день. Я хочу поделиться инструкцией по изготовлению симпатичных часиков. Они будут выполнены из молочного пластика. Будут иметь подсветку. Яркий Oled экран. А сердцем будет Attiny 85, а точнее плата Digispark Attiny 85. Также мы подключим датчик температуры. Питание через USB. Можно будет подключить к компьютеру и поставить где-нибудь рядом с монитор. А можно использовать зарядка для телефона с USB, и разместить в любом месте где есть розетка. Ну и как всегда, мы обойдемся без модуля RTC (Real Time Clock). Лишнее нам не нужно, да и ножек контролера не так много.
Начнем со списка необходимого:
— Плата Digispark Attiny 85
— Цифровой датчик температуры ds18b20
— Oled экран (разрешением 128х64, работа по протоколу I2C)
— Резистор 4.7 КОм (можно 3.3 КОм), 0.25 Вт
— Резистор 150 Ом или подобрать под ваш светодиод
— Транзистор SS8050 (или аналог)
— Светодиод 5 мм или SMD 5050
— Пластик толщиной 1-3 мм. (полупрозрачный, молочного цвета)
— ISP программатор (можно заменить любой Arduino плата)
— Кнопка (понадобиться для установки времени)
— Dupont 2.54 мм разъемы («мама», «папа»)
— Термоклей или любой другой, подходящий для пластика
— Соединительный провода
— Паяльник, канифоль, припой
Шаг 1 Модификация Digispark Attiny 85.
Итак, у нас есть отличная плата Digispark Attiny 85. На борту у нее стоит (как вы уже догадались) Attiny 85. Покупать надо версию платы с микро USB. Полноценное USB в этот корпус не поместиться. Но, даже если у вас версия с полным USB, можно отпилить выступающую часть платы, USB мы использовать не будем. Так же там есть стабилизатор напряжения и вся необходимая обвязка. Можно, конечно взять, голую Attiny 85, но тогда процесс пайки и сборки будет сложнее.
Плата, как я уже говорил отличная, но не лишена недостатков (недостатков для этого проекта, в другом это, возможно, будет достоинством). В данном случае нам будут мешать резистор, подтяжка к земле, PB4 (3 нога Attiny 85), и светодиод с резистором на PB1 (6 нога Attiny 85) отметил их на схеме:
Забегая вперед, скажу, что все выше названное будет нам мешать. К PB4 будет подключен транзистор включения подсветки. И с резистором подтяжки он не будет открываться (проверено на личном опыте). К PB1 будет подключена кнопка, которая также не будет работать нормально с висящим на линии светодиодом. На практике вам необходимо выпаять или просто выковырять (только аккуратно, чтобы не повредить дорожки) обозначенные на схеме резисторы и светодиод.
Откладываем в сторону плату и займемся корпусом.
Шаг 2 Корпус.
Корпус наших будущих часов будет выполнен из полупрозрачного пластика. Этот пластик можно заказать в интернет магазине или купить в обычном магазине (если найдете). Лично я его взял из старого жидкокристаллического телевизора или монитора. Найти его можно разобрав матрицу. Листик такого пластика, как правило, используется в качестве светорассеивателя, и находится между светодиодной подсветкой и непосредственно жидкокристаллическим слоем. Добыв такой пластик приступим к сборке корпуса. Наш корпус будет иметь форму куба (простенько, но со вкусом). Внутри корпуса должно быть пространство 30х30х30 мм. Вырезаем лицевую сторону часов, если вы берете пластик толщиной 2 мм, то квадрат для лицевой стороны должен быть 34х34 мм. Этот квадрат будет задавать все остальные размеры, и клеить стенки будет, как бы, сзади него. Вырезав лицевой квадрат, делаем в нем прорезь для экрана. Отступаем сверху 8 мм, по бокам получается по 5 мм, сама прорезь должна быть размером 24х13 мм.
Далее вырезаем верхнюю и нижнюю части, они будут размером 34х30 мм (напоминаю, размеры даны для пластика толщиной 2 мм). А также две боковых размером 30х30 мм, и одну заднюю 34х25мм. Затем, используя термоклеевой пистолет, склеиваем лицевую, нижнюю и одну боковую стороны.
На этом корпус пока откладываем в сторону. Остальные части будем клеить уже после установки всех внутренностей.
Шаг 3 Электрика и сборка часов.
И самое интересное впереди. Берем наш симпатичный «экранчик». OLED (organic light-emitting diode) — графический дисплей, каждый пиксель которого – это независимый от других светодиод. Диагональ — 0.96 дюйма. Коммуникация — I2C шина. Разрешение 128х64. Для вывода изображения достаточно подключить два провода к контролеру, что для Attiny 85 очень важно. Экраны бывают с разным цветом пикселей, выбирайте на свой вкус. Наиболее интересным мне показался синий с желтой полосой сверху.
Датчик температуры я выбрал цифровой, чтобы освободиться Attiny от лишних вычислений. ds18b20 подключается одним проводом и работает по протоколу OneWire. Линии данных этого датчика нужна подтяжка к линии питания. Рекомендованный номинал 4.7 КОм, но у меня он нормально работает и при 3.3 КОм. Схема подключения его такова:
Его можно подключить и другими способами, например, в режиме паразитного питания, но в данном случае, я считаю, лучше использовать внешнее и подключать по приведенной выше схеме.
Далее по списку – светодиод. Он нужен для подсветки. Вы можете выбрать любого цвета. Подойдет любой 5 мм светодиод. Для равномерности свечения всего корпуса, лучше брать два светодиода. Также можно впихнуть один 10 мм. Или трёхцветный. Это как вам больше нравиться. Я вначале делал вариант с двумя 5 мм диодами, зеленого цвета. Но потом мне захотелось поменять цвет подсветки. Поэтому я использовал трехцветный в корпусе SMD 5050. Резисторы необходимо подбирать под выбранный вами диод. Я покажу оба варианта, как делать вам – вам и решать.
Транзистор. Нужен он для управления светодиодом, так как через Attiny может протекать только слишком малый ток, и при подключении напрямую к ножке контролера, диод светиться очень тускло. Вне зависимости от выбранного вами светодиода или нескольких, надо использовать транзистор. Идеальный вариант SS8050. Но подойдет любой маломощный NPN.
Собираем все это по схеме:
А теперь в живую проведем процесс сборки:
Берем вначале экран.
Припаиваем к нему провода, если на месте контактов были «штырьки», их необходимо выпаять. Тоже самое делаем и с модифицированной Digispark Attiny 85.
Теперь, используя двусторонний скотч или термоклей склеиваем Attiny и экран вместе.
Спаиваем все остальные компоненты (ds18b20, SS8050, светодиод и прочие мелочи). Итак, первый вариант 5 мм диоды:
Транзистор монтируем «навесным методом», для прочности можно залить термоклеем:
Кнопку для настройки часов, припаиваем к поводам, очень желательно, параллельно кнопке припаять маленький конденсатор (снижает эффект «дребезга» контактов):
Начинаем упаковку всего этого в корпус. Вначале вклеиваем экран с Attiny:
Немного опишу второй вариант подсветки. SDM диоды вместе с резисторами необходимо припаять на небольшой монтажной плате. Делаем два одинаковых таких модулей:
Склеиваем два таких модуля вместе и припаиваем на место:
Если вы хотите один цвет, просто припаиваем провод от транзистора через резистор к ножке светодиода, соответствующую нужному цвету.
Для прошивки наших часов необходимо вывести провода и соединить их в одну колодку. В колодке должны быть следующие контакты, в такой последовательности:
-PB0- — PB1- -PB2- — PB5- -VCC- -GND-
Выводим эти провода в единую колодку и приклеиваем ее в задней части корпуса, внизу:
С другой стороны, от колодки прошивки приклеиваем кнопку, между ними выводим USB провод для питания. Также для осуществления выбора цвета подсветки, можно сделать еще одну колодку. В ней должны быть выведены следующие провода: провод от красного, синего и зеленого цвета светодиода, а рядом с этими контактами, контакт от транзистора. Управление происходит замыканием (перемычкой) соответствующих контактов:
Приклеиваем вначале второую боковую стенку часов:
Перед заклеиваем остальных частей корпуса, убедитесь, что все работает. Лучше перейти сейчас к прошивке. Проверить чтобы все работало как надо и только после этого заклеивать верхнюю и заднюю части корпуса.
Шаг 4 Прошивка.
Для редактирования и заливки скетча (или прошивки) скачиваем с официального сайта и устанавливаем Arduino IDE последней версии:
Arduino.cc
Затем добавляем поддержку контролеров серии Attiny в Arduino IDE. Запускаем среду разработки и заходим в «Файл» — «Настройки» — «Additional Boards Manager URLs». Вставляем следующую ссылку:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
Теперь еще пару действий. Идем в «Инструменты» — «Плата» — «Boards Manager» в строке поиска вводим «Attiny» и выбираем «attiny by David A. Mellis» — «Install» и дожидаемся окончания установки.
Теперь пора добавить нужные библиотеки.
Управление датчиком температуры
Скачав их, распаковываем архивы в папку «libraries». Нужная папка находиться в месте установки Arduino IDE.
Как я уже говорил, у всех датчиков температуры свой уникальный адрес. Вам нужно узнать адрес своего и отредактировать следующую строку:
byte addr[8]={0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
Часы без RTC, поэтому для корректировки хода часов нужно использовать строку:
if (micros() — prevmicros >497000)
Меняем выделенное значение. Чем больше это значение, тем медленнее идут часы. И наоборот.
Если у вас есть ISP программатор, используя его заливаем скетч в часы.
Если программатора нет – берем любую Arduino плату, заливаем в нее скетч из примеров «Arduino ISP». Подключение колодку для прошивки:
D11 – P0
D12 – P1
D13 – P2
D10 – P5
VCC – +5
GND – GND
И заливаем скетч.
Для питания можно использовать USB порт компьютера или зарядка телефона с USB:
Фото напоследок: