Моя версия идеальных часов.
Скажу честно, мне надоело подстраивать часы. Чтобы часы подстраивались сами, их необходимо оснастить как минимум одной из систем, через которую можно получать время:
1) GPS
2) DCF77
3) Ethernet или WiFi
4) GSM
5) Своя система
Плюсы и минуты каждой системы уже описывались здесь
Сначала я хотел сделать свою систему. Но потом я остановился на WiFi.
Казалось бы, на рынке должно быть полно настольных/настенных часов с синхронизацией по WiFi. Однако того что хочу я не нашёл. Может плохо искал конечно. Поэтому решил собрать сам.
Сначала я попробовал собрать часы на WS2812B, но мне они не понравились. Слишком большие они. В итоге я остановился на обычных светодиодах. Ну и в качестве WiFi конечно я решил использовать ESP8266.
В процессе размышлений по поводу дизайна будущих часов, я решил сделать их максимально тонкими. Посему, все элементы выбраны с минимальной высотой. И разместил всё с одной стороны. Сложнее всего было найти тонкий ионистор и индуктивность.
Кроме необходимых для часов элементов, я добавил посадочные места для:
1) STM8S003F3U6 (Вдруг что то не получится с ESP8266)
2) DS18B20U
3) BMP280 или BME280
Забегая вперёд скажу, что они мне не пригодились.
После месяца размышлений, рисований схемы и трассировки, получилось вот такая двухсторонняя плата, размером 140x56 мм. И толщиной, вместе с элементами, меньше 2 мм.
Размер одной цифры ~ 25x48 мм.
Печатные платы и комплектацию я заказал конечно в Китае. Кое-что из комплектации пришлось брать модулями, так как выходило дешевле. Вот эти модули доноры — ESP-09 и GY-302:
Управление светодиодами осуществляется 16-ти канальным ШИМ контролером PCA9685BS с интерфейсом I2C и полевыми транзисторами BSS138. Вообще микросхемы в часах специально выбраны с I2C, для упрощения трассировки и управления.
Через один месяц подтянулись сами платы, за ними ещё через пару недель вся остальная комплектация. Платы мне бесплатно покрыли иммерсионным золотом.
После того, как была получена вся комплектация, я начал монтаж платы. Нанести на плату паяльную пасту не очень долго, около одного часа, используя дозатор.
А вот на то, чтобы расставить элементы, а только светодиодов размером 0603 на плате 380 штук, у меня ушло около 5 часов.
После расстановки почти всех элементов, отправляем плату в инфракрасную печку. У меня вот такая:
После оплавления в печке, необходимо исправить недостатки и вручную допаять ионистор.
И вот наконец плата после монтажа.
Для программирования ESP8266 я решил использовать среду Arduino. Потому что это самый простой и быстрый старт для ESP8266, да и это всего на всего часы, а не управление защитой на атомной электростанции.
Спустя несколько дней написания кода и исправления ошибок монтажа я смог её заставить отображать время и синхронизироваться с сервером NTP по WiFi. Синхронизация с NTP происходит раз в 5 часов. В остальное время WiFi отключается для понижения потребления.
На обратной стороне платы имеются 4 сенсорных кнопки, а на самой плате контроллер MPR121. Однако библиотека github.com/adafruit/Adafruit_MPR121 для Arduino не работает на ESP8266. Вероятно причина её неработоспособности очень простая, но честно скажу мне пока некогда изучать этот вопрос.
Плата без сбоев проработала у меня дома где-то около одного месяца, пока я думал над финальным дизайном, но в голову особо ничего не приходило, кроме как просто приклеить плату к стеклу. Что я собственно и сделал.
Планы на будущее, если оно будет:
1) Усовершенствовать прошивку;
а. сделать настройки через web интерфейс;
б. сделать обновление прошивки через web интерфейс;
2) Разобраться с сенсорными кнопками.
Исходные файлы находятся здесь:
github.com/denruss/clock380
github.com/denruss/clock380_sketch
Автор: dernuss