Часы с ЖК дисплеем
Я опять спаял часы. Не то чтобы у меня не было часов, часов у меня полно. В том числе и самодельных. Но если начинать какой-то сложный проект, то велик шанс его не закончить, даже если впереди длинные новогодние каникулы.
Часы в этом смысле идеальны. Довольно большая часть схемных и программных решений уже давно отработаны, можно соредоточиться на чём-то новом.
Что же нового для меня в этих часах?
Семисегментный ЖК дисплей и контроллер HT1621. ЖК дисплеи интересны, в первую очередь, своим крайне низким энергопотреблением. Если не делать подсветку, то можно построить устройство, способное очень-очень долго работать от батарейки или аккумулятора. Купил шестиразрядный дисплей на AliExpress для экспериментов. Заставить его работать удалось не сразу, но виновата в этом была глючная, видимо, микросхема HT1621. После замены всё сразу получилось. У дисплея, кстати, оказались весьма маленькие углы обзора.
Микроконтроллер. В предыдущих устройствах я использовал ESP32-Pico-D4, но они уже сняты с производства и вместо них появились более интересные модели. Здесь я решил попробовать ESP32-C3 — он довольно дешёвый, поддерживает WiFi и Bluetooth. Есть варианты с внешней флеш-памятью и со встроенной на 4 мегабайта. Но самое классное — для него не нужен отдельный программатор! Микроконтроллер подключается напрямую к USB, и если при загрузке вывод GPIO9 подтянут к земле, то включится режим программирования через USB.
Часы DS3231MZ. То же самое, что и обычная микросхемя DS3231, но в таком же маленьком корпусе, как и DS1307. Внешнего кварцевого резонатора не требует, управляется по двум проводам. Удобно.
Eagle CAD, которым я пользовался много лет, уже не поддерживается. Поэтому я начал экспериментировать с KiCad, это бесплатная и кросплатформенная среда разработки. Очень понравилось. На освоение ушла буквально пара вечеров, библиотека компонентов гигантская, а ещё можно импортироваать всё то, что я нарисовал за прошлые годы.
Отдельный гигантский плюс — возможность рисовать четырёхслойные платы. В Eagle CAD это было доступно только при платной подписке. JLCPCB изготавливает многослойные платы по копейке за пучок и невозможность их нарисовать была весьма ощутимым ограничением. Сделал четырёхслойную плату не потому что нужно, а потому что могу.
Так как от ЖК индикатора можно ожидать низкого энергопотребления, то нет смысла постоянно крутить микроконтроллер. Разобрался с режимами сна и как устройство из этого сна выводить. Большую частьв времени микроконтроллер спит, просыпаясь раз в секунду проверить, не пора ли поменять цифры на дисплее. Раз в сутки включается WiFi на минимальной мощности, чтобы получить точное время по NTP протоколу.
Найденная в интернетах библиотека для HT1621 мне не подошла. У моего дисплея другая организация соединений. Заморочился, написал свою. Сделал на шаблонах C++, разделил управление драйвером дисплея и конфигурацию железа. В результате можно очень просто и гибко настраивать код под разные экраны, хочу попробовать с ними собрать что-нибудь ещё.
Не смотря на простоту, проект получился крайне интересный. И что-то новое удалось попробовать, и загадки порешать, и полезное устройство получить.