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)
Rumlin
11.09.2015 14:06+5off
Скажи мне кто-нибудь лет 10 назад, что где-то используется компьютер с процессором 500 МГЦ и 512 Мб оперативки в качестве только платформы для часов… /off
Ради интереса можно, но для такой ценной универсальной платформы есть более подходящие применение.
А именно «для часов» купил себе китайский набор-конструктор часов за 7$ (микроконтроллер STC15F204EA и микросхема часов реального времени 1302). Качественный набор, получил удовольствие от сборки и осталось полезное устройство в красивом корпусе. В планах довести до совершенства, заменив контроллер и перепрограммировать часы под себя.DmitrySpb79
11.09.2015 15:14Raspberry Pi A+ сейчас можно купить за 1700р с бесплатной доставкой, так что зачем себя ограничивать.
Параллельно с часами, я заодно поизучал Linux, Python, C и makefiles, добавил несколько полезных строчек в резюме :)Rumlin
11.09.2015 21:22Логично продолжить добавлять строчки и поднять веб-интерфейс на подобие thingspeak.com, куда в базу собирать данные с проводных и беспроводных датчиков температура, давление, влажность.
eta4ever
11.09.2015 15:54Зато на малинке NTP из коробки, можно кнопчатое управление вообще не делать. Плюс широчайший простор для допиливания. Хотя бы будильник, который будет тащить музыку с сетевого хранилища.
Rumlin
11.09.2015 17:43+1Знакомо. После пяти лет таких допиливаний мне вдруг очень захотелось пользоваться только простом тупым устройством, которое делало только свою работу, а не вдруг сыпало в консоль сообщениями, вместо ожидаемой работы.
prostosergik
11.09.2015 20:04+2Ну да. Что бы ты не делал на Raspberry Pi, все равно получится медиаплеер…
Boba_Fett
11.09.2015 14:35Можно пару примеров «больших и дорогих» OLED-дисплеев с, к примеру, I2C? Только с ~дюймовой диагональю и попадаются, что на ебее, что на али.
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
Заметно дороже ЖК и светодиодных, но видимость на солнечном свете отличная, ради этого и беру.
GarryC
11.09.2015 14:56Преобразователь 12->180, то есть с повышением в 15 раз на boost микросхеме? Сильно, или там потребления близкие к 0?..
DmitrySpb79
11.09.2015 15:20Да, действительно работает, я собирал по схеме типа такой:
www.electricstuff.co.uk/nixpsu.html
MaxFilippov
11.09.2015 15:39+1Не сочтите занудой, но через сколько постов сама сборка то начнется?
DmitrySpb79
11.09.2015 16:17Хе-хе, сборки не будет, эта часть была последняя, если рассматривать подробно подключение каждого индикатора, тогда книгу писать пришлось бы :)
Вся информация тут есть, что-то конкретное по ключевым словам уже загуглить не проблема.
ice2heart
11.09.2015 15:49Буквально на днях подключал 2х строчник к паю с i2c все просто. Модуль i2c ещё не подпаян, а висит
eta4ever
11.09.2015 15:58Люминесцентные индикаторы еще крутые! От наших ИВ до всяких навороченных.
k_sashka
11.09.2015 16:13Там они дорогие, питание им нужно сложное и драйвер.
Чтобы поиграться можно еще на рынке или в мастерской набрать практически бесплатно всяких панелек от старых автомагнитол.eta4ever
11.09.2015 16:55Там есть и с драйверами. Но цена, да, кусается жестоко.
С нашими сегментными ИВ вполне можно поиграться.
В любом случае, упомянуть эти дисплеи стоило бы.
Aclz
11.09.2015 18:32Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.
На ИН-хх свет клином не сошелся, есть достаточно альтернатив, выпускаемых по сей день.shpaker
12.09.2015 04:00Это какие такие альтернативы у ИНок? Вот К155ИД1 можно заменить на что-то более современное.
Aclz
12.09.2015 10:08Из более-менее современных, пожалуй, будут только семисегментные.
А из тех, в которых цифра горит целиком, эти:
http://www.decadecounter.com/vta/tubepage.php?item=16
можно найти на ебее.
tronix286
11.09.2015 22:55+5Азарт приходит во время еды… Я всегда относился к часам как… как к бесполезному девайсу. На компе часы, в мобиле часы, на руке, если не лень — часы, на столбах на улице — часы, в метро — часы, в автобусе — часы… Ну и зачем мне, сидящим за компом с лежащим рядом телефоном, еще одни часы на столе? Казалось бы — абсолютно незачем. Вот и я так думал до поры до времени, пока случайно не подвернулись под руку (ака на помойке нашел) 4 индикатора ИН-12Б (газоразрядные). А они красивые, с виду то, оказались, прям ламповые все такие из себя. И вот они лежат прям и говорят — ну запитай меня хоть одну штуку, посмотри как это «в живую» выглядит, а не в роликах на ютюбе. Ну, думаю, зажгу штучку, поиграюсь пару минут и положу куда-нибудь в дальний ящик на сохранение. Поэтому сколхозил быстренько DC-DC stepup на 190В, запитал один… И,… И все, пропал. Не сделать часы на этом было бы просто преступлением. Сколхозил по быстрому из того, что было контроллер и RTC. С контроллером конечно погорячился, взял жирный PIC 18F452, хотя можно было бы обойтись и PIC16 каким-нибудь, но… То что было под рукой. И теперь эти часы гордо занимают свое место у меня на рабочем столе. Ни с какими ЛСД или светодиодами это не сравнится.
А в темноте, так вообще:
Но, вы думаете я остановился и успокоился? Нет! Совсем недавно я нашел другие индикаторы, не менее раритетные — ИЭЛ-0-VI Правда всего две штуки, и поэтому хочу собрать термометр на них, пускай показывает температуру от +0 до +99 градусов по цельсию.
Вся проблема в том, что данные индикаторы требует питания 220 вольт 400 Гц. Поэтому пришлось колхозить свой инвертер и консультироваться на многих форумах. В итоге, совсем недавно все-таки удалось их зажечь:
Теперь стоит проблема в коммутации сегментов. В первом приближении остановился на реле… Будет прикольно щелкать так.
Кстати, к вопросу о микроконтроллере — вот этот самый термометр я хочу сделать на PIC12F675 (он уже стоит на плате и генерирует 400 Гц для моста). DIP-8, две ноги питания, минус одна нога дергается 400 Гц для моста, итого свободно 4 ноги. Одна нога идет под 1-wire для датчика температуры DS1820, оставшиеся три — для управления двумя индикаторами на сдвиговых регистрах типа 74HC595. STM32 — по воробьям из пушки, имхо.
И боюсь, что и на этом я не остановлюсь… Впереди увлекательный квест с часами на трубке от осциллографа. Там и киловольтные напряжения, и усилители X Y каналов и вообще интересно, черт бы побрал эти часы :\Rumlin
12.09.2015 08:23Люминофор прогорит, надо сделать цифры равномерно эксплуатирующие всю поверхность.
KivApple
11.09.2015 23:22Касательно STM32 можно добавить, что существует полно китайских клонов StLink, которые отлично справляются с задачей загрузки прошивки и даже внутрисхемной отладки. Может, там не хватает функций важных для продвинутых пользователей, однако для начинающих точно более чем достаточно. Определяются как оригинальный программатор, никакого нестандартного софта не нужно. И цена вопроса — единицы долларов, а не десятки.
sav13
12.09.2015 12:41Подскажите, а светодиодные семисегментные индикаторы более 1.5" с напряжением сегмента 5.3-5.5В можно подключить напрямую к MAX7219 или любому другому готовому дешифратору?
DmitrySpb79
12.09.2015 12:57Я их не пробовал, судя по даташиту на MAX7219, V+ = 5.0V и Segment Drive Source Current = 40mA. Проверьте требуемый ток вашего индикатора.
sav13
12.09.2015 19:19Ну ток светодидоам всегда можно ограничить — пусть светят чуть хуже. А вот если напряжения не хватит, тогда плохо. Нужно транзисторов кучу ставить или на регистрах собирать
UA3MQJ
12.09.2015 21:48А как же ПЛИС?
DmitrySpb79
12.09.2015 21:53Кстати да, логика работы с сегментами должна на ПЛИС хорошо ложиться.
Только у меня с ними так и не сложилось, дальше hello world не пошло, замороченно все как-то. Я сейчас уже подробностей не помню, но вроде даже флеш-памяти у плис нет, чтобы при подаче питания девайс сразу сам стартовал. Впрочем может ошибаюсь.
73
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
goodwind
А еще дешевле можно взять с Aliexpress (зачастую даже у того же продавца)
eta4ever
А тут, кстати, бывает по-всякому. Может быть наоборот на ибее скидка. У того же продавца на ту же финтифлюшку.