Oled часы на Attiny85
Список того что нам надо:
— Digispark Attiny85
— Oled дисплей 128х64 I2C
— Датчик температуры ds18b20
— Резистор 4.7 Ком 0.25 Вт
— ISP программатор или Arduino плата для прошивки Digispark Attiny85
— Пластиковый планшет с зажимом для бумаги или лист тонкого пластика
— Провода
— Dupont 2.54 мм «мама» разъемы
— Кнопки 2 шт.
— Маленькая монтажная плата или небольшой обрезок
— Паяльник
— Припой, канифоль
— Ножницами
— Канцелярским нож
— Термоклеевой пистолет
— Термоклей
Шаг 1 Выбор компонентов.
В качестве основного контролера будем использовать Digispark Attiny85. Их есть несколько видов. Нам нужна плата с разъемом Микро USB. Остальные просто не поместятся в корпус часов.
Для отображения нам понадобится Oled дисплей 128х64 I2C. Они бывают разных цветов: белый, голубой, синий с желтым. Обращаю ваше внимание! Понятие «двухцветный» в описание или названии данного экрана означает полоску одного цвета вверху экрана и второй цвет весь оставшийся экран, а не возможность отображать этим экраном два цвета! Все экраны этого типа отображаю только один цвет, или вверху полоска одного цвета внизу – другого. Как, например, тот, что буду использовать я. Вверху полоска желтая, весь остальной экран синий. Вы можете выбрать любого цвета, какой понравится.
Так же нам понадобится интегральный датчик температуры DS18B20. Выбран он не случайно. Во-первых, DS18B20 обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. В нашем случае это важно, так как выводов Attiny85 и без датчика мало. Во-вторых, этот датчик цифрой, то есть производит все замеры сам и просто передает данные о температуре, не расходуя вычислительные ресурсы Attiny85.
Насчет остального, думаю, вопросов не возникнет, так что переходим к изготовлению корпуса.
Шаг 2 Сборка корпуса.
Корпус часиков будем изготавливать из тонкого пластика. У меня под руками был пластиковый планшет с зажимом для бумаги. Он достаточно жесткий чтобы держать форму, и при этом можно резать обычными ножницами и канцелярским ножом. Подошел отлично. Если его нет под руками, планшет можно купить в канцелярском магазине или подыскать подходящий пластик для замены планшета. Делаем разметку на пластике согласно схеме:
Вырезаем все сплошные линии. Пунктирные — слегка прорезаем канцелярским ножом. Пунктирные – это линии сгиба. Как вы уже поняли, это обычная схема куба. Далее необходимо припаять провода к экрану, лучше всего брать разноцветные и записать какой к чему ведет. Экран приклеиваем на термоклей в середине, как чтобы лицевой стороной он выходил с обратной стороны. Как вы видите, мы закрыли обозначения контактов экрана. Поэтому и нужно было их записать. Я слегка передавил на нож, и тем самым отрезал нижнюю часть корпуса. Ничего страшного в этом нет, все можно приклеить. Но лучше не повторять моих ошибок.
В итоге должно получиться вот так:
На этом корпус готов. Можно еще вырезать заднюю крышку из того – же пластика, но это по желанию.
Шаг 3 Паяем.
Корпус у нас маленький, а впихнуть туда мы должны много. Поэтому берем обрезок монтажной платы размером не больше 2.8 х 2.8 мм и впаиваем туда две кнопки, датчик ds18b20, резистор и несколько контактов. По следующей схеме:
Припаивать провода сразу к Attiny не нужно, так как для прошивки необходимо все отключать. В итоге должно получится примерно так:
Кнопки нужны для установки времени. Питание можно брать от USB порта компьютера. Соединив плюс и минус соответственно:
Если хотите обойтись без проводов, необходимо найти маленькую литиево-ионную аккумуляторную батарею. Вот такую, например:
Этот аккумулятор помещается внутрь корпуса. Надо только предусмотреть выводы для заряда аккумулятора.
Шаг 4 Подготовка программатора.
Digispark Attiny85 можно программировать через находящийся на плате микро USB разъем, использую в качестве среды программирования Arduino IDE. Но при этом приходится жертвовать 2 Кб памяти под загрузчик. У Attiny 85 всего 8 Кб Flash. Мой скетч не помещается вместе с загрузчиком, поэтому необходимо программировать через ISP программатор. У меня такого программатора нет, но есть плата Arduino Uno, которую я буду использовать в качестве программатора. Если у вас есть ISB программатор – можете пропустить этот пункт. Открываем Arduino IDE и заливаем в нашу Arduino Uno скетч называющийся ArduinoISP. Найти его можно так Файл – Примеры — Arduino ISP. Вначале скетча содержится подсказка о том, как подключить Arduino к программируемому контролеру. Вместо Arduino Uno может быть любая другая Arduino плата.
Схема подключения к Digispark Attiny85:
Шаг 5 Подготовка среды программирования.
Для редактирования прошивки и заливки скетча в Attiny 85 необходимо подготовить не только программатор, но и саму среду программирования. Для этого установите Arduino IDE с официального сайта Arduino.cc, а также установите дополнение для микроконтроллеров Attiny, через Boards Manager.
Запустите Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставьте ссылку:
нажмите OK (В это поле вы можете вводить несколько ссылок, разделенных запятой). Далее Инструменты — Плата — Boards Manager в поле фильтра введите Attiny и кликните на «attiny by David A. Mellis». Кликните Install и дождитесь окончания загрузки. Теперь в меню Инструменты выберете:
Плата — Attiny 25/45/85
Процессор — Attiny 85
Clock — internal 16
и выберете последовательный порт, к которому подключен ISP программатор или Arduino в качестве программатора.
Я пробовал много разных библиотек для работы с экраном. На мой взгляд самая удобная и рабочая на Attiny85 : TinyOzOLED.
Для датчика температуры нужна библиотека OneWire.
Установите эти две библиотеки. Устанавливать сторонние библиотеки можно прямо в среде программирования. Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт Добавить .Zip библиотеку. В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. Снова откройте меню Скетч – Подключить библиотеку. В самом низу выпадающего списка вы должны увидеть новую библиотеку. Теперь библиотеку можно использовать в программах. Не забудьте после всего этого перезагрузить Arduino IDE. Если не помогло, просто распакуйте архивы в папку «libraries», находящуюся в папке с установленной Arduino IDE.
Шаг 6 Редактирование и заливка скетча.
Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства — 64-разрядный код. Ресурсов Attiny не достаточно для того чтобы каждый раз искать этот код. Поэтому необходимо вначале подключить датчик к любой плате Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты — Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес нашего датчика. Открываем скетч Attiny85_Oled_SPI_Term_2 , ищем строку:
Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика. После этого подключаем Attiny к программатору или Arduino в качестве программатора (это описано в Шаге 4) и заливаем скетч. Осталось отключить программатор и подключить все согласно схеме в 3 шаге. В сборе получается примерно так:
Экран маленький, поместить и время и температуру, так чтобы было видно, невозможно. Поэтому часы сменяют время показаниями температуры каждые 10 секунд.
Источник
Oled часы с выводом температуры на Arduino своими руками.
Я люблю разрабатывать различные часы на Arduino . Свои первые часы делал на сдвиговых регистрах , светодиодах и Arduino. Вторая версия светодиодных часов уже была сделана на адресных светодиодах (данные часы до сих пор работают и висят у меня в коридоре). С ребёнком делали часы из Лего, семисегментного индикатора и digispark. Последние, четвёртые, реализованы на Arduino и дисплее Nextion. Подписчики написали мне, что часы получаются достаточно дорогие и собирать их нецелесообразно. Согласен, что дисплей Nextion дорогой, поэтому решил собрать часы на OLED дисплее и Arduino.
Для реализации данного проекта нам понадобится:
Электронную часть OLED часов собрал на макетной плате вот по такой схеме.
Описание работы часов OLED часы на Arduino.
Часы имеют стандартный функционал. Вывод текущего дня недели, даты, времени и температуры. Две тактовые кнопки помогают нам настраивать дату и время.
Как видим, дни недели у нас выводятся на русском языке. Вы скажете, что в интернете достаточно много проектов с данным дисплеем и с выводом информации на русском языке. Да, так оно и есть, информации много, но в 90% случаев русские буквы выводятся с помощью перекодировки символов. И просматривая код непонятно, какое слово будет на дисплее. В данном примере русский текст прописан в коде в точно таком же виде, как он выводится на дисплей.
Устанавливаем и настраиваем библиотеки.
1. Установить библиотеки Adafruit : библиотеку Adafruit_SSD1306 и библиотеку Adafruit_GFX . Как их установить, я рассматривал в уроке.
2. Скачать файл glcdfont.c и заменить его в библиотеке Adafruit-GFX. Библиотека находится C:\Users\USER\Documents\Arduino\libraries\Adafruit_GFX_Library. У вас путь до библиотеки может отличаться. Вы можете скачать, библиотеку подготовленную для вывода русского текста, внизу статьи в разделе материалы для скачивания.
3. В скетч нужно добавить функцию перекодировки русских букв из UTF-8 в Win-1251 . Добавить функцию можно внизу кода.
4. Добавить в блок void setup() <> следующую строчку кода.
5. При выводе русского текста использовать функцию utf8rus() .
Библиотеки, которые используются в проекте , Вы можете скачать внизу статьи в разделе материалы для скачивания.
Код OLED часы на Arduino.
Рассказывать, как устроена программа часов полностью не буду. Тем более у меня на сайте достаточно уроков и примеров по реализации функционалов на дисплеях и работы с часами реального времени. Рассмотрим только основную особенность данного кода — это вывод русского языка в том виде, как он прописан в самом коде. Библиотеку для вывода символов на дисплей мы установили и настроили. Как же сейчас её использовать так, чтобы постоянно не прописывать перекодировку символов? Для этого сделаем функцию, которая будет выводить наш текст с нужным размером шрифта по указанным координатам.
В данной функции и укажем перекодировку символов. Благодаря этому можно вывести информацию на дисплей на русском языке.
Благодаря таким несложным манипуляциям можно выводить текст на дисплей на русском языке и в других проектах, необязательно это должны быть часы.
Пишите в комментариях, какие проекты на данном дисплее вы бы хотели видеть.
Возможности OLED часов на arduino.
Две тактовые кнопки позволяют настраивать время и дату. Первая кнопка переключает необходимый параметр, вторая кнопка увеличивает данное значение. Настройка дней недели работает аналогично, просто вместо названия меняется порядковый номер, а программа уже выводит день недели на русском языке.
В связи с тем, что используем модуль реального времени ds3231 , в котором встроен датчик температуры, мы можем вывести температуру в помещении. Самая нижняя строчка на дисплее выводит данную информацию.
Это достаточно распространённый функционал любых часов, и поэтому данный проект не получил собственный корпус. На мой взгляд, проект должен быть более серьезным, чтобы заморачиваться с разработкой корпуса. Пишите в комментариях ваше предложение, чтобы вы хотели видеть реализованного на данном дисплее. Может, расширенные возможности данных часов, или совсем другой проект.
На этом всё. Не забывайте подписываться на мой YouTube канал, вступать в группу Вконтакте, в группу на Facebook.
И всем пока-пока. До встречи в новом проекте.
Понравилась статья? Поделитесь ею с друзьями:
Источник
Наручные часы на Attiny85 с Oled экраном
Добрый день, сегодня я хочу поделится инструкцией по изготовления наручных часов на основе Attiny 85 с Oled дисплеем. Возможностями наручных часов функции моих часов не ограничиваются. Они также могут использоваться как настольные, а еще можно давить цифровой датчик температуры.
Для изготовления самоделки нам понадобится:
— Синтетический ремешок (любого цвета)
— Липучка для одежды
— Digispark Attiny85
— Дисплей Oled разрешением 128х64, I2C
— ds18b20 – цифровой датчик температуры (по желанию)
— Резистор 4.7 Ком 0.25 Вт
— Arduino плата для прошивки Digispark Attiny85 (ISP программатор)
— Лист тонкого пластика
— Цветные провода
— Dupont 2.54 мм «мама» разъемы
— Кнопки 2 шт.
— Маленькая монтажная плата или небольшой обрезок платы
— Паяльник, припой, канифоль
— Нитки, иголка, ножницы
— Канцелярским нож
— Термоклеевой пистолет
— Термоклей
— Двусторонний скотч
Откладываем нитку с иголкой в сторону и берем паяльник.
Шаг 2 Подготовка платы и Oled дисплея.
«Мозгом» наших часов будет контролер Digispark Attiny85. Они выпускаются в нескольких вариантах. Покупать следует плату с разъемом Микро USB. Остальные версии платы не поместятся в корпус часов.
Если вы купили плату с распаянными контактами, вначале их следует отпаять. Затем берем провода разных цветов, нам понадобится 9 разных цветов. Отрезаем от каждого провода примерно 15 см, зачищаем и припаиваем к Attiny85. Сразу стоит записать какой провод к какому выводу припаян, чтобы потом не путаться.
В моем случае провода по цветам выглядят так:
PB0 MOSI – желтый
PB1 MISO – голубой
PB2 CSK – синий
PB3 — фиолетовый
PB4 – белый
PB5 NRES – серый
GND – черный
+5 – красный
Vin – оранжевый
У вас цвета проводов могут отличаться, главное запишите их.
Перейдем к экрану. Мы будем использовать Oled дисплей. Разрешение экрана 128х64, работает по шине I2C. В продаже имеются экраны разных цветов: белый, голубой, синий с желтым. Будьте внимательны! Слово «двухцветный» в описание и названии данного экрана обозначает наличие полоски цвета, отличного от основного, вверху экрана, а не возможность отображать этим экраном два цвета! Все экраны данного типа отображаю только один цвет, или вверху полоска одного цвета, внизу – другого. Мне понравился синий экран, с желтой полоской вверху. Цвет не играет особой роли, выбирайте какой вам понравился. Так же как и с Attiny85, если вы купили экран с распаянными контактами, вначале следует их выпаять.
С обратной стороны экрана следует припаять небольшие провода. Лучше использовать провода таких же цветов, что и с Attiny85, чтобы потом не перепутать. В моем случаем к SDA экрана припаиваю желтый провод, к SCL – синий, GND – черный, VCC – красный.
На двусторонний скотч крепим Attiny85 к обратной стороне Oled экрана. Attiny85 не должна выступать за рамки платы Oled экрана.
Спаиваем Attiny85 и Oled вместе.
PB0 MOSI Attiny85 – желтый – SDA Oled
PB2 CSK Attiny85 – синий – SCL Oled
GND Attiny85 – черный – GND Oled
+5 Attiny85 – красный – VCC Oled
Все провода собираем в один ряд, так чтобы получился шлейф. Сматываем изолентой в нескольких местах, чтобы не распадались.
Перейдет к питанию наших часов. Для этого берем маленький литиевый аккумулятор. Припаиваем к нему провода.
Если нет аккумулятора можно использовать батарейку типа A27 или A23
Аккумулятор или батарейку засовываем в самый дальний угол кармашка, образованного сложенным пополам ремешком. Если используете батарейку, предусмотрите прорезь для ее замены.
В проделанное, в середине ремешка, отверстие засовываем наш шлейф из проводов.
И протягиваем их в конец ремешка, так чтобы они торчали наружу, а часы находились ровно над прорезью, так чтобы прорезь закрывалась часами.
Обрезаем лишние и обжимаем все провода Dupont 2.54 мм «мама» разъемами. Вставляем в пластиковые корпуса и сматываем изолентой, так чтобы получился аккуратный разъем, со всеми выводами Attiny85. Тут также стоит записать, а еще лучше зарисовать, все контакты полученного разъема. GND Attiny, GND Oled и минус от аккумулятора можно сразу соединить и обжать в один контакт. Для дальнейшей заливки скетча и подключения дополнений, удобнее всего расположить контакты следующим образом:
PB0 | PB1 | PB2 | PB5 | +5 ATTINY | GND ATTINY
PB3 | PB4 | VCC OLED | GND OLED | Vin ATTINY | + BAT
Теперь пора перейти к корпусу.
Шаг 3 Изготовление корпуса.
Для корпуса понадобится тонкий пластик. Его можно купить в интернет магазине. А можно в канцелярском магазине купить скоросшиватель с плотной пластиковой обложкой и из обложки сделать корпус. На пластике размечаем развертку часов. Сплошные линии это линии разреза, пунктирные линии – сгибаем.
Используя канцелярский нож аккуратно вырезаем окошко в середине. Все пунктирные линии сгибаем. Должно получится так:
И с обратной стороны:
Прорезь прикладываем к нашему экрану, загибаем края и, используя термоклей, собираем наш корпус. Также стоит приклеить корпус к ремешку, лучше всего внутри, так чтобы клей не выходил наружу.
Шаг 4 Подготовка среды программирования.
Для работы с прошивкой (или скетчем) будем использовать Arduino IDE. Скачиваем архив или уставщик с официального сайта Arduino IDE.
Кроме этого нам необходимо добавить поддержку Attiny в Arduino IDE. Для этого запустите Arduino IDE, далее Файл — Настройки — в поле «Additional Boards Manager URLs» вставьте ссылку:
Нажмите OK (В этом поле вы можете вводить несколько ссылок, разделенных запятой). Затем заходим в Инструменты — Плата — Boards Manager в поле фильтра вводим Attiny и выбираем «attiny by David A. Mellis». Нажимаем Install и дожидаемся окончания загрузки.
Также понадобится библиотека для работы с Oled экраном. Их много, мне понравилась, и я рекомендую использовать именно TinyOzOLED. Она удобная, а главное, помещается в память:
В дальнейшем можно расширить функционал часов, добавив датчик температуры. Добавим библиотеку для этого датчика сразу. Библиотека OneWire.
Устанавливаем эти библиотеки. Для этого можно прямо в среде программирования Arduino IDE, не распаковывая скачанные архивы, выбрать меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выбрать пункт «Добавить .Zip библиотеку». В появившемся диалоговом окне выбрать библиотеку, которую вы хотите добавить, в данном случаем две скачанные. Теперь снова откройте меню Скетч – Подключить библиотеку. В самом низу выпадающего списка вы должны увидеть новые библиотеки. С этого момента библиотеки можно использовать в программах. После всего этого перезагрузите Arduino IDE. Также можно просто распаковать в папку «libraries», находящуюся в папке с установленной Arduino IDE.
Шаг 5 Подготовка программатора.
Digispark Attiny85 можно запрограммировать через находящийся на плате микро USB разъем, используя Arduino IDE. Однако, при этом приходится жертвовать 2 Кб из 8 Кб Flash памяти, для загрузчика. Скетч часов не помещается вместе с загрузчиком, поэтому необходимо использовать ISP программатор, стерев тем самым загрузчик. Если под руками нет ISP программатора (как у меня), можно использовать Arduino плату вместо него. Я буду использовать Arduino Uno. Но можно использовать и любую другую плату. Итак, подключаем Arduino Uno к компьютеру. Запускаем Arduino IDE, открываем Файл – Примеры — Arduino ISP. Выбираем в меню Инструменты – Плата – Arduino Uno. Выбираем порт, к которому подключена, Arduino, и нажимает загрузить. Вначале скетча содержится подсказка о том, как подключить Arduino к программируемому контролеру.
Схема подключения к Digispark Attiny85:
Arduino UNO — Digispark Attiny85
Шаг 6 Подготовка провода для загрузки скетча.
Вариантов скетча несколько, да и просто для удобства загрузки, изготовим провод, соединяющий Arduino Uno (в качестве ISP программатора) и наши часы. Здесь также рекомендую использовать цветные провода, совпадающие по цвету с теми, которые мы уже использовали. С одной стороны, должна быть колодка:
PB0 Желтый | PB1 Голубой | PB2 Синий | PB5 Серый | +5 Красный | GND Черный
Эта колодка подключается к часам, в верхнюю часть колодки часов.
С другой стороны две колодки для подключения к Arduino Uno:
Pin 10 Серый | Pin 11 Желтый | Pin 12 Голубой | Pin 13 Синий
+5 Красный | GND Черный
Должно получиться примерно так:
Шаг 7 Прошивка.
Итак, я написал несколько вариантов скетча для наших часов. Я позже напишу в чем отличия и выложу все. Для заливки скетча запускаем Arduino IDE, выбираем меню Инструменты, стави следующие параметры:
Плата — Attiny 25/45/85
Процессор — Attiny 85
Clock — internal 16
Выбираем последовательный порт, к которому подключен ISP программатор или Arduino в качестве программатора. Также в меню Инструменты – Программатор выбираем «Arduino as ISP». Теперь выбираем Скетч – Загрузить через программатор. Осталось дождаться завершения загрузки.
Шаг 8 Скетчи.
Первый вариант часы с датой. Для установки времени нужно будет подключить кнопки, примерно такие:
К контактам PB1, PB3, PB4.
Второй вариант только часы. Для установки времени надо использовать USB-TTL.
И третий вариант, настольные часы с датой и термометром.
Шаг 9 Запуск.
Для запуска часов, если вы используете литиевый аккумулятор, нужно установить перемычку в колодку между контактами BAT, +5 и VCC. Можно использовать маленький отрезок тонкой проволоки. Если у вас стоит батарейка понадобится две перемычки, первую ставим между BAT и Vin, вторую — + 5 и VCC.
Источник