Привет, geektimes! В первой части статьи были рассмотрены принципы получения точного времени на самодельных часах. Пойдем дальше, и рассмотрим, как и на чем это время лучше выводить.

1. Устройства вывода


Итак, у нас есть некая платформа (Arduino, Raspberry, PIC/AVR/STM-контроллер, etc), и стоит задача подключить к нему некую индикацию. Есть множество вариантов, которые мы и рассмотрим.

Сегментная индикация


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


Осторожно, траффик!

Плюсы: простота конструкции, хорошие углы обзора, невысокая цена.
Минус: количество отображаемой информации ограничено.
Конструкции индикаторов бывают двух видов, с общим катодом и общим анодом, внутри это выглядит примерно так (схема с сайта производителя).


Есть 1001 статья как подключить светодиод к микроконтроллеру, гугл в помощь. Сложности начинаются тогда, когда мы захотим сделать большие часы — ведь смотреть на мелкий индикатор не особо удобно. Тогда нам нужны такие индикаторы (фото с eBay):


Они питаются от 12В, и напрямую от микроконтроллера просто не заработают. Тут нам в помощь приходит микросхема CD4511, как раз для этого предназначенная. Она не только преобразует данные с 4-битной линии в нужные цифры, но и содержит встроенный транзисторный ключ для подачи напряжения на индикатор. Таким образом, нам в схеме нужно будет иметь «силовое» напряжение в 9-12В, и отдельный понижающий преобразователь (например L7805) для питания «логики» схемы.

Матричные индикаторы


По сути, это те же светодиоды, только в виде матрицы 8х8. Фото с eBay:


Продаются на eBay в виде одиночных модулей либо готовых блоков, например по 4 штуки. Управление ими весьма просто — на модулях уже распаяна микросхема MAX7219, обеспечивающая их работу и подключение к микроконтроллеру с помощью всего лишь 5 проводов. Для Arduino есть много библиотек, желающие могут посмотреть код.
Плюсы: невысокая цена, хорошие углы обзора и яркость.
Минус: невысокое разрешение. Но для задачи вывода времени вполне достаточно.

ЖК-индикаторы


ЖК-индикаторы бывают графические и текстовые.


Графические дороже, однако позволяют выводить более разнообразную информацию (например график атмосферного давления). Текстовые дешевле, и с ними проще работать, они также позволяют выводить псевдографику — есть возможность загружать в дисплей пользовательские символы.

Работать с ЖК-индикатором из кода несложно, но есть определенный минус — индикатор требует много управляющих линий (от 7 до 12) от микроконтроллера, что неудобно. Поэтому китайцы придумали совместить ЖК-индикатор с i2c-контроллером, получилось в итоге очень удобно — для подключения достаточно всего 4х проводов (фото с eBay).

ЖК-индикаторы достаточно дешевые (если брать на еБее), крупные, их просто подключать, и можно выводить разнообразную информацию. Единственный минус это не очень большие углы обзора.

OLED-индикаторы


Являются улучшенным продолжением предыдущего варианта. Варьируются от маленьких и дешевых с диагональю 1.1", до больших и дорогих. Фото с eBay.

Собственно, хороши всем кроме цены. Что касается мелких индикаторов, размером 0.9-1.1", то (кроме изучения работы с i2c) какое-то практическое применение им найти сложно.

Газоразрядные индикаторы (ИН-14, ИН-18)


Эти индикаторы сейчас весьма популярны, видимо из-за «теплого лампового звукасвета» и оригинальности конструкции.

(фото с сайта nocrotec.com)

Схема их подключения несколько сложнее, т.к. эти индикаторы для зажигания используют напряжение в 170В. Преобразователь из 12В=>180В может быть сделан на микросхеме MAX771. Для подачи напряжения на индикаторы используется советская микросхема К155ИД1, которая специально для этого и была создана. Цена вопроса при самостоятельном изготовлении: около 500р за каждый индикатор и 100р за К155ИД1, все остальные детали, как писали в старых журналах, «дефицитными не являются». Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.

2. Выбор платформы


С индикацией мы более-менее разобрались, осталось решить, какую аппаратную платформу лучше использовать. Тут есть несколько вариантов (самодельные я не рассматриваю, т.к. тем кто умеет развести плату и припаять процессор, эта статья не нужна).

Arduino


Самый простой вариант для начинающих. Готовая плата стоит недорого (около 10$ на eBay с бесплатной доставкой), имеет все необходимые разъемы для программирования. Фото с eBay:


Под Arduino есть огромное количество разных библиотек (например для тех же ЖК-экранов, модулей реального времени), Arduino аппаратно совместима с различными дополнительными модулями.
Главный минус: сложность отладки (только через консоль последовательного порта) и довольно-таки слабый по современным меркам процессор (2КБайт RAM и 16МГц).
Главный плюс: можно сделать много чего, практически не заморачиваясь с пайкой, покупкой программатора и разводкой плат, модули достаточно соединить друг с другом.

32-разрядные процессоры STM


Для тех кто захочет что-то помощнее, есть готовые платы с процессорами STM, например плата с STM32F103RBT6 и TFT-экраном. Фото с eBay:


Здесь мы уже имеем полноценную отладку в полноценной IDE (из всех разных мне больше понравилась Coocox IDE), однако понадобится отдельный программатор-отладчик ST-LINK с разъемом JTAG (цена вопроса 20-40$ на eBay). Как вариант, можно купить отладочную плату STM32F4Discovery, на которой этот программатор уже встроен, и его можно использовать отдельно.

Raspberry PI


И наконец, для тех кто хочет полной интеграции с современным миром, есть одноплатные компьютеры с Linux, всем уже наверное известные Raspberry PI. Фото с eBay:


Это полноценный компьютер с Linux, гигабайтом RAM и 4х-ядерным процессором на борту. С краю платы выведена панель из 40 пинов, позволяющая подключать различную периферию (пины доступны из кода, например на Python, не говоря о C/C++), есть также стандартный USB в виде 4х разъемов (можно подключить WiFi). Так же есть стандартный HDMI.
Мощности платы хватит к примеру, не только чтобы выводить время, но и чтобы держать HTTP-сервер для настройки параметров через web-интерфейс, подгружать прогноз погоды через интернет, и так далее. В общем, простор для полета фантазии большой.

С Raspberry (и процессорами STM32) есть одна единственная сложность — ее пины используют 3-вольтовую логику, а большинство внешних устройств (например ЖК-экраны) работают «по старинке» от 5В. Можно конечно подключить и так, в принципе заработает, но это не совсем правильный метод, да и испортить плату за 50$ как-то жалко. Правильный способ — использовать «logic level converter», который на eBay стоит всего 1-2$.
Фото с eBay:


Теперь достаточно подключить наше устройство через такой модуль, и все параметры будут согласованы.

ESP8266


Способ скорее экзотический, но довольно-таки перспективный в силу компактности и дешевизны решения. За совсем небольшие деньги (около 4-5$ на eBay) можно купить модуль ESP8266, содержащий процессор и WiFi на борту.
Фото с eBay:


Изначально такие модули предназначались как WiFi-мост для обмена по serial-порту, однако энтузиастами было написано множество альтернативных прошивок, позволяющих работать с датчиками, i2c-устройствами, PWM и пр. Гипотетически вполне возможно получать время от NTP-сервера и выводить его по i2c на дисплей. Для тех кто хочет подключить много различной периферии, есть специальные платы NodeMCU с большим числом выводов, цена вопроса около 500р (разумеется на eBay):


Единственный минус — ESP8266 имеет очень мало памяти RAM (в зависимости от прошивки, от 1 до 32КБайт), но задача от этого становится даже интересней. Модули ESP8266 используют 3-вольтовую логику, так что вышеприведенный конвертор уровней тут также пригодится.

На этом вводный экскурс в самодельную электронику можно закончить, автор желает всем удачных экспериментов.

Вместо заключения


Я в итоге остановился на использовании Raspberry PI с текстовым индикатором, настроенным на работу с псевдографикой (что вышло дешевле чем графический экран той же диагонали). Сфоткал экран настольных часов во время написания этой статьи.


Часы выводят точное время, взятое из Интернета, и погоду которая обновляется с Яндекса, все это написано на Python, и вполне работает уже несколько месяцев. Параллельно на часах запущен FTP-сервер, что позволяет (вкупе с пробросом портов на роутере) обновить на них прошивку не только из дома, но и из любого места где есть Интернет. Как бонус, ресурсов Raspberry в принципе хватит и для подключения камеры и/или микрофона с возможностью удаленного наблюдения за квартирой, или для управлением различными модулями/реле/датчиками. Можно добавить всякие «плюшки», типа светодиодной индикации о пришедшей почте, и так далее.

PS: Почему eBay?
Как можно было видеть, для всех девайсов приводились цены или фото с ебея. Почему так? К сожалению, наши магазины часто живут по принципу «за 1$ купил, за 3$ продал, на эти 2 процента и живу». В качестве простого примера, Arduino Uno R3 стоит (на момент написания статьи) 3600р в Петербурге, и 350р на eBay с бесплатной доставкой из Китая. Разница действительно на порядок, безо всяких литературных преувеличений. Да, придется подождать месяц чтобы забрать посылку на почте, но такая разница в цене думаю, того стоит. Но впрочем, если кому-то надо прямо сейчас и срочно, то наверно и в местных магазинах есть выбор, тут каждый решает сам.

Комментарии (36)


  1. goodwind
    11.09.2015 13:52
    +3

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

    А еще дешевле можно взять с Aliexpress (зачастую даже у того же продавца)


    1. eta4ever
      11.09.2015 15:52

      А тут, кстати, бывает по-всякому. Может быть наоборот на ибее скидка. У того же продавца на ту же финтифлюшку.


  1. Rumlin
    11.09.2015 14:06
    +5

    off
    Скажи мне кто-нибудь лет 10 назад, что где-то используется компьютер с процессором 500 МГЦ и 512 Мб оперативки в качестве только платформы для часов… /off

    Ради интереса можно, но для такой ценной универсальной платформы есть более подходящие применение.
    А именно «для часов» купил себе китайский набор-конструктор часов за 7$ (микроконтроллер STC15F204EA и микросхема часов реального времени 1302). Качественный набор, получил удовольствие от сборки и осталось полезное устройство в красивом корпусе. В планах довести до совершенства, заменив контроллер и перепрограммировать часы под себя.


    1. DmitrySpb79
      11.09.2015 15:14

      Raspberry Pi A+ сейчас можно купить за 1700р с бесплатной доставкой, так что зачем себя ограничивать.

      Параллельно с часами, я заодно поизучал Linux, Python, C и makefiles, добавил несколько полезных строчек в резюме :)


      1. Rumlin
        11.09.2015 21:22

        Логично продолжить добавлять строчки и поднять веб-интерфейс на подобие thingspeak.com, куда в базу собирать данные с проводных и беспроводных датчиков температура, давление, влажность.


    1. eta4ever
      11.09.2015 15:54

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


      1. Rumlin
        11.09.2015 17:43
        +1

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


      1. prostosergik
        11.09.2015 20:04
        +2

        Ну да. Что бы ты не делал на Raspberry Pi, все равно получится медиаплеер…


        1. eta4ever
          11.09.2015 20:28

          Это просто пять баллов. Правдиво.


  1. Boba_Fett
    11.09.2015 14:35

    Можно пару примеров «больших и дорогих» OLED-дисплеев с, к примеру, I2C? Только с ~дюймовой диагональю и попадаются, что на ебее, что на али.




    1. 029ah
      11.09.2015 17:45
      +1

      Я вот такие использую:
      www.ebay.com/itm/IIC-I2C-1602-16x2-OLED-Module-Display-For-Arduino-PIC-AVR-ARM-/161162845021?hash=item25860ddb5d

      Заметно дороже ЖК и светодиодных, но видимость на солнечном свете отличная, ради этого и беру.


  1. GarryC
    11.09.2015 14:56

    Преобразователь 12->180, то есть с повышением в 15 раз на boost микросхеме? Сильно, или там потребления близкие к 0?..


    1. k_sashka
      11.09.2015 14:58

      пара-тройка миллиампер на 1 неонку :)


    1. DmitrySpb79
      11.09.2015 15:20

      Да, действительно работает, я собирал по схеме типа такой:
      www.electricstuff.co.uk/nixpsu.html


  1. MaxFilippov
    11.09.2015 15:39
    +1

    Не сочтите занудой, но через сколько постов сама сборка то начнется?


    1. DmitrySpb79
      11.09.2015 16:17

      Хе-хе, сборки не будет, эта часть была последняя, если рассматривать подробно подключение каждого индикатора, тогда книгу писать пришлось бы :)

      Вся информация тут есть, что-то конкретное по ключевым словам уже загуглить не проблема.


  1. ice2heart
    11.09.2015 15:49

    Буквально на днях подключал 2х строчник к паю с i2c все просто. Модуль i2c ещё не подпаян, а висит


  1. eta4ever
    11.09.2015 15:58

    Люминесцентные индикаторы еще крутые! От наших ИВ до всяких навороченных.


    1. k_sashka
      11.09.2015 16:13

      Там они дорогие, питание им нужно сложное и драйвер.
      Чтобы поиграться можно еще на рынке или в мастерской набрать практически бесплатно всяких панелек от старых автомагнитол.


      1. eta4ever
        11.09.2015 16:55

        Там есть и с драйверами. Но цена, да, кусается жестоко.
        С нашими сегментными ИВ вполне можно поиграться.
        В любом случае, упомянуть эти дисплеи стоило бы.


  1. Aclz
    11.09.2015 18:32

    Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.

    На ИН-хх свет клином не сошелся, есть достаточно альтернатив, выпускаемых по сей день.


    1. shpaker
      12.09.2015 04:00

      Это какие такие альтернативы у ИНок? Вот К155ИД1 можно заменить на что-то более современное.


      1. Aclz
        12.09.2015 10:08

        Из более-менее современных, пожалуй, будут только семисегментные.

        А из тех, в которых цифра горит целиком, эти:
        http://www.decadecounter.com/vta/tubepage.php?item=16
        можно найти на ебее.


  1. tronix286
    11.09.2015 22:55
    +5

    Азарт приходит во время еды… Я всегда относился к часам как… как к бесполезному девайсу. На компе часы, в мобиле часы, на руке, если не лень — часы, на столбах на улице — часы, в метро — часы, в автобусе — часы… Ну и зачем мне, сидящим за компом с лежащим рядом телефоном, еще одни часы на столе? Казалось бы — абсолютно незачем. Вот и я так думал до поры до времени, пока случайно не подвернулись под руку (ака на помойке нашел) 4 индикатора ИН-12Б (газоразрядные). А они красивые, с виду то, оказались, прям ламповые все такие из себя. И вот они лежат прям и говорят — ну запитай меня хоть одну штуку, посмотри как это «в живую» выглядит, а не в роликах на ютюбе. Ну, думаю, зажгу штучку, поиграюсь пару минут и положу куда-нибудь в дальний ящик на сохранение. Поэтому сколхозил быстренько DC-DC stepup на 190В, запитал один… И,… И все, пропал. Не сделать часы на этом было бы просто преступлением. Сколхозил по быстрому из того, что было контроллер и RTC. С контроллером конечно погорячился, взял жирный PIC 18F452, хотя можно было бы обойтись и PIC16 каким-нибудь, но… То что было под рукой. И теперь эти часы гордо занимают свое место у меня на рабочем столе. Ни с какими ЛСД или светодиодами это не сравнится.
    image

    А в темноте, так вообще:

    image

    Но, вы думаете я остановился и успокоился? Нет! Совсем недавно я нашел другие индикаторы, не менее раритетные — ИЭЛ-0-VI Правда всего две штуки, и поэтому хочу собрать термометр на них, пускай показывает температуру от +0 до +99 градусов по цельсию.

    image

    Вся проблема в том, что данные индикаторы требует питания 220 вольт 400 Гц. Поэтому пришлось колхозить свой инвертер и консультироваться на многих форумах. В итоге, совсем недавно все-таки удалось их зажечь:

    image

    Теперь стоит проблема в коммутации сегментов. В первом приближении остановился на реле… Будет прикольно щелкать так.
    Кстати, к вопросу о микроконтроллере — вот этот самый термометр я хочу сделать на PIC12F675 (он уже стоит на плате и генерирует 400 Гц для моста). DIP-8, две ноги питания, минус одна нога дергается 400 Гц для моста, итого свободно 4 ноги. Одна нога идет под 1-wire для датчика температуры DS1820, оставшиеся три — для управления двумя индикаторами на сдвиговых регистрах типа 74HC595. STM32 — по воробьям из пушки, имхо.

    И боюсь, что и на этом я не остановлюсь… Впереди увлекательный квест с часами на трубке от осциллографа. Там и киловольтные напряжения, и усилители X Y каналов и вообще интересно, черт бы побрал эти часы :\


    1. shpaker
      12.09.2015 04:00
      +2

      То неловкое чувство когда комментарий интересней статьи.


    1. Rumlin
      12.09.2015 08:23

      Люминофор прогорит, надо сделать цифры равномерно эксплуатирующие всю поверхность.


  1. KivApple
    11.09.2015 23:22

    Касательно STM32 можно добавить, что существует полно китайских клонов StLink, которые отлично справляются с задачей загрузки прошивки и даже внутрисхемной отладки. Может, там не хватает функций важных для продвинутых пользователей, однако для начинающих точно более чем достаточно. Определяются как оригинальный программатор, никакого нестандартного софта не нужно. И цена вопроса — единицы долларов, а не десятки.


  1. sav13
    12.09.2015 12:41

    Подскажите, а светодиодные семисегментные индикаторы более 1.5" с напряжением сегмента 5.3-5.5В можно подключить напрямую к MAX7219 или любому другому готовому дешифратору?


    1. DmitrySpb79
      12.09.2015 12:57

      Я их не пробовал, судя по даташиту на MAX7219, V+ = 5.0V и Segment Drive Source Current = 40mA. Проверьте требуемый ток вашего индикатора.


      1. sav13
        12.09.2015 19:19

        Ну ток светодидоам всегда можно ограничить — пусть светят чуть хуже. А вот если напряжения не хватит, тогда плохо. Нужно транзисторов кучу ставить или на регистрах собирать


  1. UA3MQJ
    12.09.2015 21:48

    А как же ПЛИС?


    1. DmitrySpb79
      12.09.2015 21:53

      Кстати да, логика работы с сегментами должна на ПЛИС хорошо ложиться.

      Только у меня с ними так и не сложилось, дальше hello world не пошло, замороченно все как-то. Я сейчас уже подробностей не помню, но вроде даже флеш-памяти у плис нет, чтобы при подаче питания девайс сразу сам стартовал. Впрочем может ошибаюсь.

      73


      1. UA3MQJ
        12.09.2015 21:55

        Все намного проще, чем кажется.


  1. BalinTomsk
    14.09.2015 15:59

    ---да и испортить плату за 50$ как-то жалко

    Появился клон Raspberry Pi за $15

    http://ru.aliexpress.com/item/Orange-Pi-PC-linux-and-android-mini-PC-Beyond-Raspberry-Pi-2/32448079125.html