Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
![](https://habrastorage.org/getpro/habr/post_images/462/b40/260/462b402608eaa341bdd33643f87f0f39.jpg)
Статья с сайта Instructables на конкурс самоделок с применением станков с ЧПУ
Как по мне, самыми часто используемыми объектами в нашей жизни служат часы и календари. Течение времени всегда было одной из главных тем в жизни людей. И я такой же – думаю, что это можно понять по количеству моих проектов, связанных с часами. А теперь я хочу показать вам один из моих проектов с календарём.
Проектов календарей существуют тысячи, но мне всегда нравились вечные календари. Мне всегда была близка идея календаря, который можно использовать повторно, чтобы не менять офисный календарь каждый год. Минус таких календарей в том, что многие из них большие, отнимающие пространство штуковины, которые сложно читать и интерпретировать. Или бывают ещё кубики с днями недели, или кубики с месяцами, которые надо постоянно обновлять. Ещё бывают календари из кусочков (деревянных, металлических, магнитных) с числами от 1 до 31, которые нужно подбирать и размещать на специальной панели.
Я остановился на варианте, в котором имеется два набора чисел месяца, и при помощи ползунка можно выбирать структуру дней в текущем месяце.
Далее я по шагам объясню, как всё это работает.
![](https://habrastorage.org/getpro/habr/post_images/445/db4/b0f/445db4b0ffa3717d47923e42438115bd.jpg)
![](https://habrastorage.org/getpro/habr/post_images/b5c/74f/5d8/b5c74f5d87b51fd11b83965635fdced4.jpg)
Шаг 1: Принцип работы
Я долго искал в интернете происхождение подобного вечного календаря, но так и не нашёл. На картинках выше вы видите, как выглядит календарь. В таблице из 13 столбцов и 6 (иногда – 5) строк размещаются даты месяца, и сдвигая рамку, можно выбирать конфигурацию дней, соответствующую текущему месяцу. Для октября 2020 получится так, как на картинке ниже:
![](https://habrastorage.org/getpro/habr/post_images/c95/2ff/592/c952ff59218b259ee5403b3f5491ac0a.png)
Однако с сентябрём 2020 возникает проблема:
![](https://habrastorage.org/getpro/habr/post_images/d10/197/dc5/d10197dc567053de60655adef3886fdb.png)
Хотя в сентябре 30 дней, 31-е число в календаре видно. Ещё хуже ситуация с февралём 2021, поскольку в нём 28 дней, но видно даты 29, 30 и 31.
Это основной недостаток такого календаря – у многих месяцев даты будут доходить до 31. Несмотря на это, в интернете можно найти тысячи продуктов или проектов, сделанных по этому принципу. Поищите на etsy, посмотрите на эти ссылки на Amazon (link1, link2) или Youtube (link1, link2, link3, link4) и вы поймёте, о чём я.
У таких календарей есть и ещё один серьёзный недостаток, как и у всех офисных календарей – их нужно подстраивать ежемесячно, а иногда и ежедневно, что не всегда получается, поскольку иногда мы просто забываем об этом :)
Мой проект учитывает все эти проблемы. Для демонстрации дат текущего месяца я использую полоску светодиодов, размещённую за бумажным экраном, на котором напечатаны даты. При этом светить будут только те светодиоды, которые должны подсвечивать реальные даты текущего месяца.
Цвета можно выбирать, текущий день подсвечивается другим цветом, выходные и рабочие дни отличаются цветами – и всё это делается при помощи микроконтроллера, получающего текущую дату из интернета, поэтому календарь обновляется автоматически. К примеру, февраль 2021 года может выглядеть так (первый рабочий день там – понедельник):
![](https://habrastorage.org/getpro/habr/post_images/f93/d8b/cb4/f93d8bcb4075cadafb88a5b0f6303f11.png)
Шаг 2: Что для этого понадобится
![](https://habrastorage.org/getpro/habr/post_images/b9d/600/5b7/b9d6005b7b3d1cd00177026ca423fbc7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/8e8/920/ddc/8e8920ddce540b60628dab5ed1b08bcc.jpg)
![](https://habrastorage.org/getpro/habr/post_images/8e8/a0f/3e7/8e8a0f3e70a1105dc3374fa9d673266d.jpg)
![](https://habrastorage.org/getpro/habr/post_images/f65/ef2/94d/f65ef294da4a0b694d0e7e23f11d240f.jpg)
![](https://habrastorage.org/getpro/habr/post_images/c25/5a9/668/c255a9668cbb33e184135036511a62a7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a94/b24/bf5/a94b24bf540222497513bd1321b120b1.jpg)
![](https://habrastorage.org/getpro/habr/post_images/fc8/56f/543/fc856f5431f113492e32aa061b5acd3d.png)
![](https://habrastorage.org/getpro/habr/post_images/9b1/c78/7cc/9b1c787cc2992b1a73fc69ea83fea4f7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/90a/f02/b0b/90af02b0b134239d7ee349407759efc3.jpg)
Необходимые компоненты:
- 2 листа дымчатого оргстекла, 3 мм и 5 мм толщиной.
- Болты с утопленной головкой на 3 мм, шайбы и гайки.
- Белая бумага А4.
- Светодиоды 72xWS2812 с ленты плотностью 60 штук на метр.
- ESP-01 модуль с ESP8266.
- Стабилизатор 5 В / 3,3 В.
- Разъём питания 5,5 х 2,5 мм «мама».
- Источник питания на 5 В / 2 А с разъёмом питания 5,5 х 2,5 мм «папа».
- Соединительные провода.
Инструменты
- Станок с ЧПУ, даже недорогой, поскольку нужна обработка пластика.
- Паяльная станция.
- Струйный принтер.
- Клеевой пистолет.
- Сверло на 3 мм.
- Сверло на 5 мм на конус.
- Всякие общие инструменты.
Шаг 3: Обработка компонентов на станке с ЧПУ
![](https://habrastorage.org/getpro/habr/post_images/a8b/635/437/a8b635437e88659f334708f34641b2e3.jpg)
![](https://habrastorage.org/getpro/habr/post_images/df7/5bb/e48/df75bbe4812012b763ccfad894d008b5.jpg)
![](https://habrastorage.org/getpro/habr/post_images/dad/eb4/380/dadeb4380ec4fb98fe3c313406efc4f3.jpg)
![](https://habrastorage.org/getpro/habr/post_images/4da/029/852/4da029852979eeae896fd748e9598cb7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/f87/a64/8a1/f87a648a1d682a02060548e4e9d01b99.jpg)
![](https://habrastorage.org/getpro/habr/post_images/8b6/c81/d0c/8b6c81d0c71dea27b73e91280450f2bc.jpg)
![](https://habrastorage.org/getpro/habr/post_images/c66/30d/349/c6630d349a42394218bd3d1d1b6e1af8.jpg)
![](https://habrastorage.org/getpro/habr/post_images/93e/e6b/3c0/93ee6b3c0715e708da11f7c0ce89aa8e.jpg)
![](https://habrastorage.org/getpro/habr/post_images/5cc/655/891/5cc655891b43e21c5f89e045eba720c7.jpg)
Самая важная часть проекта, естественно, это обработка четырёх компонентов корпуса календаря. Все необходимые векторные файлы прилагаю. Передняя часть состоит из листа 3 мм, задняя – из листа 5 мм.
Подробных статей о самом процессе вырезания при помощи станка с ЧПУ в интернете можно найти множество (ссылка, ссылка, ссылка, ссылка, ссылка, ссылка, ссылка).
По большому счёту, скорость вращения сверла должна быть не очень большой, а скорость подачи материала – большой, чтобы избежать расплавления материала. Из-за расплавления края отрежутся плохо, кроме того оно может вызвать вибрацию и даже повреждение фрезы. Я использовал сверло на 3 мм на скорости 10000 об/мин и скорость подачи порядка 420 мм/мин. Для проделывания углублений под головки винтов я использовал сверло диаметром 5 мм. Глубина сверления – 1,5 мм. В итоге головки помещаются очень хорошо. В начале раздела приведены фотографии процесса работы и результата.
content.instructables.com/ORIG/FIH/5PZO/KEN0JZJ6/FIH5PZOKEN0JZJ6.svg
content.instructables.com/ORIG/FQE/VGPV/KEN0JZJ7/FQEVGPVKEN0JZJ7.svg
content.instructables.com/ORIG/FRV/TUUY/KEN0JZJ8/FRVTUUYKEN0JZJ8.svg
content.instructables.com/ORIG/F28/M3ON/KEN0JZJ9/F28M3ONKEN0JZJ9.svg
Шаг 4: Бумажный экран
![](https://habrastorage.org/getpro/habr/post_images/afd/281/045/afd281045e9815256539f93ea171d39e.jpg)
![](https://habrastorage.org/getpro/habr/post_images/98a/129/e6d/98a129e6d31b5fed6b07576e4a131e4e.jpg)
Пока станок трудился над резкой оргстекла, я приступил к распечатке экрана.
Ниже креплю SVG-файлы в двух вариантах – один на чёрном фоне, другой на белом. Также на календаре я поместил названия месяцев, логотип (замените на свой любимый) или девиз, и некоторые особые значки, которые я в дальнейшем планирую использовать для оповещения о таких важных событиях, как дни рождения, праздники и т.п.
Печать делал на обычном струйнике, только на бумаге хорошего качества, с однородной текстурой, чётким белым цветом и толщиной чуть больше, чем обычная бумага для офисных принтеров. Я распечатал один и тот же рисунок 5 раз подряд на одном и том же листочке – чтобы чёрный фон был как можно более непрозрачным. Часть фотографий результата прикрепил в начале раздела.
Потом я отложил бумагу, чтобы чернила просохли, и перешёл к электронной части.
content.instructables.com/ORIG/FYA/VY88/KEN0K2O3/FYAVY88KEN0K2O3.svg
content.instructables.com/ORIG/F7V/R8IP/KEN0K2O4/F7VR8IPKEN0K2O4.svg
Шаг 5: Электроника
![](https://habrastorage.org/getpro/habr/post_images/253/d58/3eb/253d583eb44412cf6615ec4f10a268c8.png)
![](https://habrastorage.org/getpro/habr/post_images/392/a14/b3d/392a14b3d55092b236cf7fe21a5c353a.jpg)
![](https://habrastorage.org/getpro/habr/post_images/8de/016/859/8de0168595943a29e2381f7d407236d7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/829/159/782/829159782a18ceec69c889c843eee522.jpg)
![](https://habrastorage.org/getpro/habr/post_images/e35/e09/8e4/e35e098e4f307ff64260c6727427b2f6.jpg)
![](https://habrastorage.org/getpro/habr/post_images/8cb/f0a/104/8cbf0a104e3a732ce0c36606f506edc7.jpg)
Схема очень проста, я прикрепил её выше. Для её реализации я сделал следующее:
- Вырезал 5 кусочков ленты по 13 светодиодов, и один кусочек с 7 светодиодами. Залудил края для облегчения пайки всех соединительных проводов.
- Приклеил ленты в вырезанные каналы на задней стенке календаря согласно схеме (мои светодиодные ленты идут с клеящим слоем).
- Синими проводами я соединил контакты Data Out и Data In светодиодных лент.
- Припаял питание красными проводами (+ 5 В), а между отрезками ленты использовал зелёные провода (земля) с соблюдением полярности.
- Припаял провода от ленты к стабилизатору, и от него к ESP-01.
- На ESP соединил Vcc и CH_PD, затем соединил контакт GPIO2 модуля ESP-01 и Data In с первого отрезка ленты.
- Наконец, припаял провод питания.
Шаг 6: Сборка
![](https://habrastorage.org/getpro/habr/post_images/b38/129/2f6/b381292f663cf8d5d8216bac64f8fd42.jpg)
![](https://habrastorage.org/getpro/habr/post_images/5ed/535/795/5ed535795f68554b6a7ffa7e62f56e46.jpg)
![](https://habrastorage.org/getpro/habr/post_images/139/12e/7e6/13912e7e6173d9236525334c7362d8c2.jpg)
![](https://habrastorage.org/getpro/habr/post_images/5d9/6cb/8e2/5d96cb8e2aab5541d9ff5f3090d9e6e7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/c59/142/3fd/c591423fd31fffd50a9dfbc893602be1.jpg)
![](https://habrastorage.org/getpro/habr/post_images/ddf/331/8c2/ddf3318c208c4e595a596f4934633061.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a39/4bc/74f/a394bc74fb5be806a783427a3ad9bd7e.jpg)
Закончив с пайкой электроники, закрепил всё, что мог, при помощи горячего клея – модуль ESP-01, стабилизатор, провода. Потом:
- Вырезал распечатанный рисунок с полями в 1 см. Проделал в вырезке 2 отверстия на противоположных углах. Вставил винты через заднюю стенку корпуса в отверстия, соответствующие отверстиям в бумажной вырезке, и привинтил к этому среднюю часть корпуса с решёткой.
- Аккуратно продел винты через отверстия в бумаге – так, чтобы распечатка как можно лучше совпадала с решёткой и светодиодами.
- На бумагу положил фронтальную часть корпуса.
- Вставил остальные 4 винта, затянул их шайбами с гайками.
- Первые два винта вытащил, вставил с другой стороны, затянул.
- Отрезал лишнюю бумагу как можно ближе к краям.
Шаг 7: Программирование
![](https://habrastorage.org/getpro/habr/post_images/70e/e6d/99a/70ee6d99a4c1ed37ac3bb2167f5ed64b.jpg)
![](https://habrastorage.org/getpro/habr/post_images/934/bed/c96/934bedc968d9d61977e9e29f006b4584.jpg)
Программа сделана на основе того же фреймворка, который я использовал в своём проекте с ESP8266 – ESP 8266 Arduino IDE WebConfig и BVB_WebConfig_OTA_V7.
Фреймворк предлагает веб-интерфейс для настройки доступа модуля ESP8266 к роутеру, а также доступ к дате и времени, которые модуль получает с NTP-сервера. Оставалось лишь добавить функцию вывода дней текущего месяца и текущей даты, но мне хотелось иметь возможность ещё и выбирать, считать ли первым днём недели воскресенье или понедельник. Также я хотел использовать другие светодиоды, поэтому решил, что будет интересно подсвечивать специальные иконки, соответствующие важным событиям – дням рождения или праздникам. Исходник программы лежит на Github.
В других своих статьях я подробнее писал об этом фреймворке (ссылка, ссылка, ссылка, ссылка).
Программировал я микроконтроллер при помощи адаптера ESP-01 и адаптера USB to TTL.
Для компиляции и загрузки программы в ESP я использовал Eclipse IDE для Arduino под названием Sloeber, библиотеку esp8266 версии 2.7.4 и библиотеку FastLED версии 3.3.3.
Шаг 8: Оно живое!
Я провёл испытания для разных дат в будущем, их можно посмотреть на видео ниже. Думаю, из него вполне понятно, как работает календарь.
Видно, что мой девиз видно плохо. Я думал, что его будет нормально подсвечивать светодиодом стабилизатора, но видимо, мне придётся добавить ещё парочку светодиодов специально для него.
Шаг 9: Варианты, что дальше?
Я сделал календарь из оргстекла, потому что оно было у меня под рукой. Ничто не мешает вам сделать решётку и заднюю часть из другого пластика или дерева – только передняя часть должна быть прозрачной или полупрозрачной.
Размер может показаться слишком большим – если хотите его уменьшить, можно использовать светодиодные полоски со 120 светодиодами на метр, или даже две светодиодные матрицы 8х8.
Хотя я делал всё на станке с ЧПУ, это же можно сделать при помощи лазерной резки или 3D-принтера. Однако в последнем случае потребуется принтер, способный вместить детали размером 235×120 мм.
В программу можно внести несколько событий, однако очевидно, что проще было бы сделать специальный интерфейс для их передачи. Также было бы интересно синхронизировать вечный календарь со своим мобильным приложением.