Ещё одни часы с WiFi. Clock380

14eece29d8334fd7ad379e67ecfef596.jpg

Моя версия идеальных часов.
Скажу честно, мне надоело подстраивать часы. Чтобы часы подстраивались сами, их необходимо оснастить как минимум одной из систем, через которую можно получать время:
1) GPS
2) DCF77
3) Ethernet или WiFi
4) GSM
5) Своя система

Плюсы и минуты каждой системы уже описывались здесь

Сначала я хотел сделать свою систему. Но потом я остановился на WiFi.
Казалось бы, на рынке должно быть полно настольных/настенных часов с синхронизацией по WiFi. Однако того что хочу я не нашёл. Может плохо искал конечно. Поэтому решил собрать сам.
Сначала я попробовал собрать часы на WS2812B, но мне они не понравились. Слишком большие они. В итоге я остановился на обычных светодиодах. Ну и в качестве WiFi конечно я решил использовать ESP8266.

В процессе размышлений по поводу дизайна будущих часов, я решил сделать их максимально тонкими. Посему, все элементы выбраны с минимальной высотой. И разместил всё с одной стороны. Сложнее всего было найти тонкий ионистор и индуктивность.

Кроме необходимых для часов элементов, я добавил посадочные места для:
1) STM8S003F3U6 (Вдруг что то не получится с ESP8266)
2) DS18B20U
3) BMP280 или BME280
Забегая вперёд скажу, что они мне не пригодились.

После месяца размышлений, рисований схемы и трассировки, получилось вот такая двухсторонняя плата, размером 140×56 мм. И толщиной, вместе с элементами, меньше 2 мм.
Размер одной цифры ~ 25×48 мм.

5db2084c3fe143e5899aca5cf5f6fb03.png

11f42f5216da435381c20845f80b703f.png

Печатные платы и комплектацию я заказал конечно в Китае. Кое-что из комплектации пришлось брать модулями, так как выходило дешевле. Вот эти модули доноры — ESP-09 и GY-302:

d38fccd3ae3f46fa8bc8d517b1b9da6f.png83c67cd10c5b4ebfabb12d3894b12d6e.png

Управление светодиодами осуществляется 16-ти канальным ШИМ контролером PCA9685BS с интерфейсом I2C и полевыми транзисторами BSS138. Вообще микросхемы в часах специально выбраны с I2C, для упрощения трассировки и управления.
Через один месяц подтянулись сами платы, за ними ещё через пару недель вся остальная комплектация. Платы мне бесплатно покрыли иммерсионным золотом.

e46aa300e8aa40e1bf2dc67482d5079c.png

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

1f4270973331488f86a3bfb21cddf8ab.png

А вот на то, чтобы расставить элементы, а только светодиодов размером 0603 на плате 380 штук, у меня ушло около 5 часов.

bd2aa9b728c747c89a2fd24e1454932d.png

После расстановки почти всех элементов, отправляем плату в инфракрасную печку. У меня вот такая:
1a41dbac06a94655ae8027b482719df5.png

После оплавления в печке, необходимо исправить недостатки и вручную допаять ионистор.
И вот наконец плата после монтажа.

001ab7e985c04305a5a5cb5aa10037fa.png

Для программирования ESP8266 я решил использовать среду Arduino. Потому что это самый простой и быстрый старт для ESP8266, да и это всего на всего часы, а не управление защитой на атомной электростанции.
Спустя несколько дней написания кода и исправления ошибок монтажа я смог её заставить отображать время и синхронизироваться с сервером NTP по WiFi. Синхронизация с NTP происходит раз в 5 часов. В остальное время WiFi отключается для понижения потребления.

b1e7d797b2c448269299222f03cf697d.png

На обратной стороне платы имеются 4 сенсорных кнопки, а на самой плате контроллер MPR121. Однако библиотека github.com/adafruit/Adafruit_MPR121 для Arduino не работает на ESP8266. Вероятно причина её неработоспособности очень простая, но честно скажу мне пока некогда изучать этот вопрос.
Плата без сбоев проработала у меня дома где-то около одного месяца, пока я думал над финальным дизайном, но в голову особо ничего не приходило, кроме как просто приклеить плату к стеклу. Что я собственно и сделал.

фотографии

Планы на будущее, если оно будет:
1) Усовершенствовать прошивку;
а. сделать настройки через web интерфейс;
б. сделать обновление прошивки через web интерфейс;
2) Разобраться с сенсорными кнопками.

Исходные файлы находятся здесь:
github.com/denruss/clock380
github.com/denruss/clock380_sketch

© Geektimes