Ничего не найдено :(

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


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



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


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

    Шаг 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 плата.
    // 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] (скачиваний: 1085)


    Для датчика температуры нужна библиотека OneWire.
    onewire.rar [16.75 Kb] (скачиваний: 490)


    Установите эти две библиотеки. Устанавливать сторонние библиотеки можно прямо в среде программирования. Не распаковывая скачанные архивы, в среде 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 шаге. В сборе получается примерно так:


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

    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Attiny 85
    Нравится ли вам работать с Attiny 85?
    Всего проголосовало: 210
    Подборки: attiny85

    Arduino часы с датчиком температуры и без RTS

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

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

    17 комментариев
    maxim0512 #65494 Автор
    Lefty,

    Смотрите инструкцию к свое библиотеке. Я с такой не работал. 

    Lefty #65488
    maxim0512,

    Спасибо. Я поспешил с вопросом про шрифт. На моем дисплее 64x48, библиотека OzOled так и не заработала. Tiny4Oled работает, но как включить большой шрифт тоже не пойму.

    maxim0512 #65487 Автор
    Lefty,


    Добрый вечер. Это встроенный в библиотеку TinyOzOled шрифт. В коде есть строка выбора этого шрифта 

    OzOled.printBigNumber

    Lefty #65483

    Как получились такие большие цифры ? Собираю простой термометр, в коде не  нашел комментариев по поводу шрифта

    Всеслав #31411
    Понятно, спасибо!
    maxim0512 #31382 Автор
    Добрый вечер. Я не использовал библиотеку от Диджиспарт. У них слишком большой загрузчик, вместе с ним скетч часов не помещался. Я использовал библиотеку TinyOzOLED. У нее русского языка нет. А вообще с Attiny 85 сложно, слишком мало памяти.
    Всеслав #31378
    Отлично придумано и сделано, один мелкий недостаток - надписи на аглицком. Их можно просто поменять на русские, или с этим у Диджиспарка сложно?
    maxim0512 #29554 Автор
    Добрый день. Часы реального времени занимают достаточно места, в этот корпус не влезут.
    BeerBear 91 #29553
    Хм.. а почему бы вместо датчика температуры не поставить часы реального времени?
    maxim0512 #27330 Автор
    Еще одни совет, к P1 у Digispar Attiny 85 подключен светодиод, если вы используете этот пин, учтите его наличие. Я на своей плате этот диод выпаял, так ка он, на мой взгляд, только мешает.
    maxim0512 #27329 Автор
    Добрый день. Подтяжку резистором делать не надо, так как в скетче включена встроенная в Attiny подтяжка. Уберите свою подтяжку и попробуйте снова.
    Также можете попробовать другой скетч от моих других часов, у них контролер и экран одинаковые, а настройка осуществляется одной кнопкой:
    https://usamodelkina.ru/14217-chasy-s-termometrom-na-attiny.html
    Гость Роман #27325
    Доброго времени суток. За идею и работу спасибо. Только или у меня руки не такие, или не пойму. Не работают нормально кнопки установки времени. Пробовал и Ваш скеч и свой, в своём только добавил режим пинов кнопок на вход, и подтянул через 10к к 5В. И в том и в том кнопки не понял как нажимать чтоб меняло. Или попадаю в задержки или что-то не так с кнопками, обычные тактовые.
    borzov161 #15824
    классный экранчик. Но прожорливый . оперативки много ест.
    Вы мастер! втиснуть в тиньку85 такое.
    maxim0512 #14528 Автор
    Вы правы, допустил опечатку, 2,8 х 2,8 см
    Иван_Похмельев #14523
    Цитата: maxim0512
    Больше просто не влезет в корпус.
    По площади можно в сто раз больше предложенного Вами.
    maxim0512 #14521 Автор
    Больше просто не влезет в корпус. Там всего две кнопки, резистор и датчик температуры. Все как раз вместилось.
    Иван_Похмельев #14519
    ... обрезок монтажной платы размером не больше 2.8 х 2.8 мм
    Маловато будет. ))

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


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

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

    Войти

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

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

    Онлайн чат

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

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