Добавляйте самоделоки - получайте оплату

*кликни за подробностями

Oled часы на Attiny85

Добрый день и снова я со своими игрушками. Сегодня я представляю вам инструкцию по изготовлению маленьких, но симпатичных часов с комнатным датчиком температуры.
Oled часы на Attiny85
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 Сборка корпуса.
Корпус часиков будем изготавливать из тонкого пластика. У меня под руками был пластиковый планшет с зажимом для бумаги. Он достаточно жесткий чтобы держать форму, и при этом можно резать обычными ножницами и канцелярским ножом. Подошел отлично. Если его нет под руками, планшет можно купить в канцелярском магазине или подыскать подходящий пластик для замены планшета. Делаем разметку на пластике согласно схеме:
Oled часы на Attiny85


Вырезаем все сплошные линии. Пунктирные - слегка прорезаем канцелярским ножом. Пунктирные – это линии сгиба. Как вы уже поняли, это обычная схема куба. Далее необходимо припаять провода к экрану, лучше всего брать разноцветные и записать какой к чему ведет. Экран приклеиваем на термоклей в середине, как чтобы лицевой стороной он выходил с обратной стороны. Как вы видите, мы закрыли обозначения контактов экрана. Поэтому и нужно было их записать. Я слегка передавил на нож, и тем самым отрезал нижнюю часть корпуса. Ничего страшного в этом нет, все можно приклеить. Но лучше не повторять моих ошибок.
Oled часы на Attiny85

Oled часы на Attiny85


В итоге должно получиться вот так:
Oled часы на Attiny85


На этом корпус готов. Можно еще вырезать заднюю крышку из того – же пластика, но это по желанию.

Шаг 3 Паяем.
Корпус у нас маленький, а впихнуть туда мы должны много. Поэтому берем обрезок монтажной платы размером не больше 2.8 х 2.8 мм и впаиваем туда две кнопки, датчик ds18b20, резистор и несколько контактов. По следующей схеме:
Oled часы на Attiny85


Припаивать провода сразу к Attiny не нужно, так как для прошивки необходимо все отключать. В итоге должно получится примерно так:
Oled часы на Attiny85

Oled часы на Attiny85


Кнопки нужны для установки времени. Питание можно брать от USB порта компьютера. Соединив плюс и минус соответственно:
Oled часы на Attiny85


Если хотите обойтись без проводов, необходимо найти маленькую литиево-ионную аккумуляторную батарею. Вот такую, например:
Oled часы на Attiny85


Этот аккумулятор помещается внутрь корпуса. Надо только предусмотреть выводы для заряда аккумулятора.

Шаг 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 плата.
// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK


Схема подключения к Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 – P0
D12 – P1
D13 – P2
D10 – P5


Шаг 5 Подготовка среды программирования.
Для редактирования прошивки и заливки скетча в Attiny 85 необходимо подготовить не только программатор, но и саму среду программирования. Для этого установите Arduino IDE с официального сайта Arduino.cc, а также установите дополнение для микроконтроллеров Attiny, через Boards Manager.

Запустите Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставьте ссылку:

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


нажмите OK (В это поле вы можете вводить несколько ссылок, разделенных запятой). Далее Инструменты — Плата — Boards Manager в поле фильтра введите Attiny и кликните на «attiny by David A. Mellis». Кликните Install и дождитесь окончания загрузки. Теперь в меню Инструменты выберете:
Плата — Attiny 25/45/85
Процессор - Attiny 85
Clock - internal 16
и выберете последовательный порт, к которому подключен ISP программатор или Arduino в качестве программатора.
Я пробовал много разных библиотек для работы с экраном. На мой взгляд самая удобная и рабочая на Attiny85 : TinyOzOLED.
tinyozoled-master.rar [15,99 Kb] (cкачиваний: 11)


Для датчика температуры нужна библиотека OneWire.
onewire.rar [16,75 Kb] (cкачиваний: 7)


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

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

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


Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика. После этого подключаем Attiny к программатору или Arduino в качестве программатора (это описано в Шаге 4) и заливаем скетч. Осталось отключить программатор и подключить все согласно схеме в 3 шаге. В сборе получается примерно так:
Oled часы на Attiny85


Экран маленький, поместить и время и температуру, так чтобы было видно, невозможно. Поэтому часы сменяют время показаниями температуры каждые 10 секунд.
attiny85_oled_spi_term_2.rar [2,33 Kb] (cкачиваний: 23)

Oled часы на Attiny85
Attiny 85
Нравится ли вам работать с Attiny 85?
Всего проголосовало: 13
Чтобы написать комментарий необходимо войти на сайт через соц. сети (или зарегистрироваться):
Обычная регистрация
4 комментария
  1. Иван_Похмельев
    ... обрезок монтажной платы размером не больше 2.8 х 2.8 мм
    Маловато будет. ))
  2. maxim0512 Автор
    Больше просто не влезет в корпус. Там всего две кнопки, резистор и датчик температуры. Все как раз вместилось.
  3. Иван_Похмельев
    Цитата: maxim0512
    Больше просто не влезет в корпус.
    По площади можно в сто раз больше предложенного Вами.
  4. maxim0512 Автор
    Вы правы, допустил опечатку, 2,8 х 2,8 см
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн чат

Опрос
Сколько по времени, чаше всего, Вы делаете самоделку?

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

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

Комментаторы месяца

Иван_Похмельев
Комментариев: 1393 Публикаций: 0
1
Dmitrij
Комментариев: 494 Публикаций: 605
2
Валерий
Комментариев: 1527 Публикаций: 48
3
popvovka
Комментариев: 104 Публикаций: 12
4
pogranec
Комментариев: 507 Публикаций: 203
5