- Самодельные электронные часы, элементная база — часть 2
- 1. Устройства вывода
- Сегментная индикация
- Матричные индикаторы
- ЖК-индикаторы
- OLED-индикаторы
- Газоразрядные индикаторы (ИН-14, ИН-18)
- 2. Выбор платформы
- Arduino
- 32-разрядные процессоры STM
- Raspberry PI
- ESP8266
- Вместо заключения
- Умные часы своими руками за 1500 рублей
- Внутренности
- Плата
- Корпус
- Заключение
Самодельные электронные часы, элементная база — часть 2
Привет, 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 с бесплатной доставкой из Китая. Разница действительно на порядок, безо всяких литературных преувеличений. Да, придется подождать месяц чтобы забрать посылку на почте, но такая разница в цене думаю, того стоит. Но впрочем, если кому-то надо прямо сейчас и срочно, то наверно и в местных магазинах есть выбор, тут каждый решает сам.
Источник
Умные часы своими руками за 1500 рублей
Началась эта история с того, что начитавшись постов с тегом DIY я решил обзавестись набором МК + отладочная плата. Погуглив, узнал что самая дешевая в городе плата это LaunchPad от TI. Не долго думая, отправился за ней в магазин, и понеслась… как и у всех сначала были мигания светодиодами, потом подключение дисплея от Siemens CX75, и т.д.
Вскоре мне надоело делать что-то просто так, без цели, ради того что бы сделать. Так и возникла мысль создать себе гаджет, которым бы я пользовался постоянно.
За подробностями прошу под кат.
Обычно я хожу по улице в наушниках и не слышу звонка телефона, да и связка телефон + чехол + карман + ходьба = вибрации не чувствуется. И я придумал для себя гаджет: информатор об смс и звонках в виде часов/браслета. Опять же идея не нова, и в магазинах куча подобного хлама, но хотелось, во первых, сделать самому, а во вторых, все же дешевле получается. Первый блин, как говорится, комом:
«Не знаю, мои часы время не показывают.» (с)
Состав простой: МК, BT, диоды, стабилизатор напряжения, вибромотор, аккум, корпус от старых часов. Для него было написано приложение для android, и небольшая прога для МК. Чудо зверь, которому уже месяцев 6, который меня выручал и не раз.
Что делает прога на android: коннектимся по BT с часами, отправляем “1” — коннект прошел, запускаем сервис и прослушиваем входящие смс и звонки. При приеме оного, отправляем по BT идентификатор события “2” — смс, “3” — звонок.
Что делает прога на МК: при приеме символа с BT («1»,«2»,«3») включаем определенную последовательность вкл/выкл индикации и вибро.
Ни о каком режиме экономии энергии тогда я и не задумывался, да и о том, что стабилизатор работает на напряжениях 3,6 — 6 В тоже как то забыл выяснить. В итоге одного заряда аккума хватает на рабочие сутки, при условии что «часы» постоянно соединены по BT.
Месяца три назад я решил взяться за эту идею основательно и добавить функционал, которого не хватает: полноценные часы, отображение имени звонящего, текст и отправитель смс, возможность перепрошивки. С последним думал возникнут проблемы, потому как МК перепрошивается по Spy-Bi-Wire интерфейсу, а тянуть 3 пина на выход корпуса не хотелось, но потом вычитал в datasheet что у МК есть режим bootstrap Loader (BSL), позволяющий прошивать его через UART интерфейс.
Внутренности
Что мне понадобилось из деталей, что пришлось купить:
Сначала хотел поставить МК в корпусе QFN, но потом отказался, и взял в корпусе tssop28. Его проще разводить, так как под корпусом еще есть место.
Название детали | Назначение | Стоимость |
---|---|---|
msp430g2553ipw28 | микроконтроллер | 60 |
lir3048-lby2 | аккумулятор | 77 |
ds1337u+ | часы реального времени | 78 |
ADP3338AKCZ-3.3-RL7 | стабилизатор | 124 |
CP2102-GMR | USB-UART | 84 |
MCP73831T_2ACI_OT | зарядка li-ion, li-pol | 54 |
HC-06 | bluetooth | 120 |
LCD nokia 1202 | экран | 33 |
Итого: 630р.
Все детали покупались в городе, кроме BT – его заказывал из Китая, если покупать в городе, можно найти за 350р.
Остальное: mini usb, кнопки, вибромотор взял от старого коммуникатора; кварц и пассивка нашлись в закромах родины. Если покупать эту мелочевку, выйдет от силы рублей 300.
Детали есть, что дальше? Дальше собирался макет и писалась программа для МК. Отказавшись от Energia, я перешел на CCS 5.3 free версия с ограничением кода в 16kb чего вполне хватает, учитывая объем памяти МК (16kb). В МК задействованы: 2 таймера и WDT+ в режиме интервального таймера, HW I2C, ADC10, BSL, FLASH. Особое внимание уделялось потреблению устройства. В итоге 30 мА при полной нагрузке (BT не соединен, МК в штатном режиме, подсветка на максимум), 8 мА в ждущем (BT подключен, МК в режиме низкого потребления, подсветка отключена) и меньше 1 мА в режиме только часы (BT выключен, МК в режиме низкого потребления, подсветка отключена). Емкость аккума 200мА, так что одного заряда хватает на сутки и более. Одновременно с программированием МК, дорабатывалась программа на android, а именно: при входящем звонке, ищется соответствие номера в телефонной книжке и если соответствие найдено, заменяем номер на имя и отправляем по BT. А при поступлении смс отправляем еще и текст сообщения.
Плата
После написания программы и проверки жизнеспособности собранного макета, я приступил к разводке платы, вытравливанию, лужению и пайке.
На всю плату потребовалось 6 перемычек, 5 конденсаторов, 8 резисторов, 1 светодиод. Включаем… работает!
Корпус
Наверно это было самое сложное. Дремель, оргстекло, дихлорэтан, паста гои: адская смесь… я не буду особо описывать процесс изготовления корпуса (да и фото я забыл сделать). 2 слоя 6мм оргстекла на нижнюю часть корпуса и 2мм оргстекло и защитное стекло экрана от старого фотика на верхнюю. В процессе вытачивания корпуса возник вопрос о креплении часов на руку, обычные ремешки для часов были бы слишком запарными с их механизмами крепления, поэтому я купил вот такой за 350р.:
Парочка сквозных отверстий в корпусе и крепление для ремешка готово. Корпус получился на самом деле не очень, но на функциональность часов он никак не влияет и полностью выполняет свои функции.
Вот видео работы:
И напоследок распишу весь функционал моих часов:
- отображение даты и времени как основная функция;
- обновление даты и времени с телефона;
- изменение даты и времени вручную;
- подключение по BT к Android телефону;
- отключение питания BT при потере связи для экономии заряда аккумулятора;
- отображение заряда аккумулятора;
- информирование о входящем смс с выводом текста и именем отправителя на экран;
- информирование о входящем звонке с выводом имени звонящего на экран;
- отображение текста, набранного в поле программы на android;
- изменение настроек экрана (яркость и время выключения подсветки, контрастность экрана);
- возможность перепрошивки устройства.
ИТОГО: За 1500 деревянных и 3 месяца работы в свободное от работы и учебы время от идеи до воплощения.
Заключение
Пока я возился с этими часами, у меня возникло подозрение, что подобную статью уже опубликуют на хабре, но как то пронесло.
Часы ношу уже неделю, иногда исправляя программные глюки и недочеты. Недавно добавил возможность сброса входящего вызова.
Надеюсь, данный пост вдохновит и вас сделать что-нибудь полезное.
Источник