Умный столик-журнальный с CNC-zen-садом: Создайте свою интеллектуальную мебель
Компоненты и материалы
| Arduino UNO | ×1 |
| Блок питания OpenBuilds 12В/29А | ×1 |
| Шаговый двигатель NEMA 17 (OpenBuilds) | ×2 |
| Драйвер шагового двигателя A4988 (SparkFun) | ×2 |
| Линейный регулятор с регулируемым выходом | ×1 |
| Аналоговый джойстик | ×1 |
| Белая LED-лента | ×1 |
| RF-пульт управления | ×1 |
| Конденсатор 220 мкФ | ×2 |
| Безпаечная макетная плата | ×1 |
| Монтажная плата SparkFun | ×1 |
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Я — мейкер. Сижу по вечерам перед телевизором с семьей, держа в руках молскин или блокнот для проектов, и зарисовываю идеи. Многие разговоры начинаются с «не было бы круто, если бы...». Большинство идей так и остаются на бумаге. Но этот проект стал реальностью. Я считаю его потрясающим. Это закрытый zen-сад, встроенный в журнальный столик. Движение вдохновлено CNC-станком или 3D-принтером — изначально я хотел использовать плату RAMPS 1.4 (шилд для 3D-принтера на Arduino), но потом придумал гораздо более простое решение.
Хотел, чтобы итоговый изделие излучало спокойствие. Хотел принести немного дзен в свою гостиную. Думаю, у меня получилось.
Большинство моих поделок не блещут эстетикой — такова жизнь. В процессе работы я не объяснял жене, что именно строю. Только пообещал, что результат будет достаточно красивым, чтобы захотеть поставить его в дом. Для контекста: мы с женой делим всё, она мой лучший друг. Но в этом проекте я просто сказал, что сделаю журнальный столик, которым она будет гордиться в гостиной. Она знала, что это столик, и всё. Поэтому я старался сделать его максимально красивым для неё.
Строил 3D-принтеры. Строил простую мебель (полки, скамьи), но никогда не объединял технологии с мебелью. Думал, это будет увлекательным проектом.
Идея пришла полгода назад. Конкурс «Столы и письменные столы» (и те прекрасные черно-желтые инструменты в качестве призов) подтолкнули меня начать работу.
Шаг 1: Проектирование и идея

Хотел сделать журнальный столик — что-то, что стоит отдельно или рядом с диваном, возможно, с лампой сверху. Главное — чтобы это было скорее «искусством», чем мебелью, инфузией технологий в дерево. Всегда видел каменные сады с деревянными граблями, они казались мне очень спокойными. Именно к этому я и стремился — спокойное, технологичное искусство.
Для реализации подумал использовать портал, похожий на 3D-принтер, но без Z-оси. Так можно двигать шарик с помощью магнитов через песок. Также хотел запрограммировать его «печатать» картинки и узоры самостоятельно.
Планировал использовать Arduino с двумя драйверами шаговых двигателей и простой код. Вместо жесткого задания рабочей области в коде, установил концевики на минимум и максимум по обеим осям: 0,0 и XXX,XXX останавливают моторы. Это сильно упрощает программирование.
Шаг 2: Детали и материалы



Список использованных деталей. Не обязательно использовать те же самые — просто общая ориентировка.
- Дерево. Взял 4x4 брус, оставшийся от деревянного домика, и отборную сосну, купленную женой для оконных наличников (пообещал купить больше). Нашел все крупные заготовки и привёз в мастерскую. Также использовал фанеру берёзовую 6 мм, купленную годами ранее.
- МДФ 3 мм — между крышкой и основанием для клея. В ретроспективе можно было обойтись без него.
- Алюминиевый профиль 2020 — рама портала.
- 2 шаговых двигателя ($12.99 за пару) — по двум осям.
- Arduino UNO — управление порталом.
- Модуль джойстика для Arduino — ручное управление.
- Гладкие валы 8 мм × 4 и опоры валов 8 мм × 8.
- Детали от 3D-принтеров (ремень, валы, подшипники и пр.) — было под рукой после сборки нескольких принтеров.
- Дзьодзи для карманных отверстий Kreg — не обязательно, но очень упрощает сборку мебели. Использовал для крышки и её крепления к основанию.
- Стекло литое 6 мм — местный стекольный магазин. Не закаленное, при разрушении даёт острые осколки, но для проекта нужна была толщина и прочность.
- Белая LED-лента и RF-пульт.
- Стабилизатор LM317.
- Драйверы A4988 × 2.
- Конденсаторы 220 мкФ 16 В × 2.
- БП 12 В 5 А.
- Шаровой подшипник 19 мм.
- Игровой кварцевый песок 25 кг.
- 2 мешка гладких речных камушков.
- Неодимовый магнит с втулкой.
- Макетная плата и монтажная плата для пайки.
- Пластиковые хомуты для коробов × несколько — крепление портала к лючку.
Шаг 3: Сборка портала








Начал с черновиков и собрал портал. Возможно, не самый эффективный способ — просто мой, с учётом использования остатков от других проектов. Был профиль 2020, использовал его для рамы. Угловые крепления спроектировал и напечатал на 3D-принтере, файлы прилагаются. Также прилагаю файлы лазерной резки для осей X и Y. Внимательно изучите фото — так собраны каретка и оси. Мой способ сборки каретки не единственно верный, но проверен на других проектах и работает надёжно.
Файлы: FTY8AKAIVO3T4X1.dxf, FZUAWWRIVO3T4WZ.cdr, FVXPPAIIVO3T86T.stl
Шаг 4: Сборка схемы





Сначала собрал схему на макетной плате, проверил работоспособность, затем перенёс на монтажную плату. Прилагается схема Fritzing для помощи в сборке.
Шаг 5: Код

Код очень простой. Концевики на минимуме и максимуме по обеим осям — размер портала в коде не задан. Поэтому код не нужно менять под свой размер. Код доступен в форматах .TXT и .INO для скачивания.
Файлы: F5577MZIW6PMIF4.cpp, FKOB89KIW6PMIF6.h, FO9WJRBIW6PMIFY.ino, F1K7N72IW6PMIGQ.zip, FVI0A1ZIW6PMIGS.txt, F9BIZS5IW6PMIGV.txt, FGBWKEAIW6PMIGW.txt
Шаг 6: Тестирование движения
После загрузки кода тщательно протестировал. Хотел, чтобы диагональное движение работало как в Etch A Sketch: горизонтально, затем вертикально, снова горизонтально. Работает хорошо. Теперь можно паять соединения к Arduino навсегда и устанавливать в стол.
Шаг 7: Сама столешница
Решил сделать двухъярусный ящик: механика скрыта в нижней части, управление джойстиком под кромкой. Больше идей не было.
В заготовках нашел 4x4 брус от игрового домика и отборнуюсосну. Пообещал жене вернуть всё, увез в мастерскую и начал строить.
Шаг 8: Двухуровневый ящик






После раскроя фанеры 6 мм придумал новый способ удержания пока схватывается клей: приклеил картон на углы термоклеем. Метод сработал — короб держался, пока не установил постоянные крепления. Собрал переборку между уровнями, убедился в горизонтальности, прикрепил пианинную петлю — нижний ящик с порталом можно опускать для обслуживания.
Шаг 9: Ножки стола


Ножки хотел сделать из соснового 4x4 от детского домика. Сначала очистил от гвоздей и скоб. Отпилил 4 отрезка по 635 мм (25 дюймов). Много раз прогнал через стакан — убрал краску, выровнял. Сделал упор из линейки и зажимов, чтобы пилить циркулярной пилой как на циркулярной — получились 4 чистых L-образных ножки.
Шаг 10: Установка боковин

После крепления ножек приступил к боковинам. Много тщательных замеров — минимизировать зазоры. Приклеил, завинтил несколько саморезов снизу через двухъярусный ящик.
Шаг 11: Шлифовка, шлифовка и ещё раз шлифовка


При изготовлении декоративных вещей рекомендую обильную шлифовку: начинать с крупного (80–120) и переходить к мелкому (<200). Время, потраченное на устранение дефектов, многократно окупится в итоге.
Шаг 12: Установка LED-подсветки

Узнав, где будет стоять крышка, вырезал подложку из МДФ 3 мм. Отметил положение, перевернул, закрепил LED-ленту снизу стяжками и термоклеем. Опыт показывает: нельзя полагаться только на термоклей при нагревающихся элементах. Пр сверлил отверстие, вывел питание ленты вниз. Изначально хотел запитать ленту от того же 12 В, что и моторы, но лента заставляла моторы гудеть — подключил отдельный БП.
Шаг 13: Установка крышки

Мало опыта в нарезке на грыз — не плотник от рождения. Но после проб и ошибок сделал красивую крышку. Дзьодзи Kreg для соединения сторон сработало отлично.
При замерке лучше сделать с запасом — лишнее подпилить или зашкурить проще, чем добавлять. После раскроя и проверки схода — фрезеровал паз под стекло на каждом элементе. Глубина под моё стекло 6 мм.
Собранную крышку приклеил и завинтил к основанию через дзьодзи с тыльной стороны ножек — невидимо.
Заказал в местной мастерской по автостеклам литое стекло 6 мм на 1/16 дюйма меньше отверстия. Попросил зашлифовать кромки — не режет руки. Не клеил стекло акрилом — хочу возможность снимать его для перестановки камней.
Шаг 14: Грунтовка, лак-морилка, шлифовка, лак снова

Сосна пористая — чтобы избежать пятнистости, использовал предварительный кондиционер для дерева. Покрыл лак-морилкой Minwax Natural Cherry, высушил. На следующий день легко зашкурил 320-й и нанес второй слой. Если бы делал снова — красил и лакировал отдельно; лак-морилка оставила следы капель, и темнее сделать нельзя — только шлифовать и перекрашивать. Перекрашивал несколько раз до удовлетворения. Лак-морилку больше не буду использовать.
Шаг 15: Установка электроники






Сделал лючок внизу — весь портал крепится к нему и опускается для обслуживания. Портал закреплен пластиковыми хомутами на профиль 2020 — работает хорошо.
Пробовал разные варианты размещения Arduino и макетной платы. В итоге просверлил отверстие в центре лючика, вывел кабели и закрепил электронику под столом.
С джойстиком долго думал, как закрепить. Не придумало ничего умного — просто приклеил под кромку стола. Кабель уложил в угол и зафиксировал термоклеем. Не самое королевское решение, но не видно, если не ползти рядом — устраивает.
Снизу платы закрепил мелкими винтами, уложил провода максимально аккуратно. Розетки БП перенёс на заднюю ножку и зафиксировал клеем.
Шаг 16: Рабочая головка «магнит-головка»

Не знал, как прикрепить магнит к болту для Z-регулировки. Отпилил кусок дубля 19 мм длиной 25–35 мм, просверлил отверстие под болт, завинтил магнит сверху. Теперь высоту регулирую гайкой снизу.
Шаг 17: Создание каменного сада




После установки электроники создал каменный сад. Не знал, сколько песка нужно — купил 25 кг. В ретроспективе хватило бы 2–5 кг. Большинство песка осталось в коробке. Насыпал, прогнал шарик — проверял, не видно ли дно. Добавлял песок до комфортной глубины.
Выложил 2 мешка гладких речных камушков по краям, старался равномерно. Думал приклеить, но решил оставить возможность перестановки.
Шаг 18: Стол в действии





Стол двигается. Как только заработало, стоял и водил шариком нереально долго — лол. Нечто невероятно удовлетворяющее в наблюдении за металлическим шариком, пушащим песок. Длинный путь к этой точке — и так круто видеть стол в движении, как я представлял.
Шаг 19: Готово

Это был долгий, сложный проект. Но очень веселый.
Код
/* Simple demo, should work with any driver board
* Connect STEP, DIR as indicated
* Copyright (C)2015 Laurentiu Badea
* MIT license
* Edited by Ernest E Garner, 20-Nov-2016
* Code for basic x/y gantry of zen table by Ernest James Garner for Instructables.com
*/
#include <Arduino.h>
#include "BasicStepperDriver.h"
//#define DEBUG
#define X_MOTOR_STEPS 200
#define Y_MOTOR_STEPS 200
#define STEP_FORWARD 1
#define STEP_REVERSE -1
#define X_DIR_HOME STEP_FORWARD
#define Y_DIR_HOME STEP_FORWARD
#define X_MAX_PIN 6
#define X_HOME_PIN 7
#define X_DIR_PIN 8
#define X_STEP_PIN 9
#define X_ANALOG_PIN A0
#define Y_MAX_PIN 5
#define Y_HOME_PIN 10
#define Y_DIR_PIN 11
#define Y_STEP_PIN 12
#define Y_ANALOG_PIN A2
#define MICROSTEPS 1
BasicStepperDriver x_stepper(X_MOTOR_STEPS, X_DIR_PIN, X_STEP_PIN, X_HOME_PIN, X_MAX_PIN);
BasicStepperDriver y_stepper(Y_MOTOR_STEPS, Y_DIR_PIN, Y_STEP_PIN, Y_HOME_PIN, Y_MAX_PIN);
int x_position = 0, x_analog, y_position = 0, y_analog;
void setup() {
#ifdef DEBUG
Serial.begin(9600);
#endif
x_stepper.setRPM(100);
y_stepper.setRPM(100);
x_stepper.setMicrostep(MICROSTEPS);
y_stepper.setMicrostep(MICROSTEPS);
}
void loop() {
x_analog = analogRead(X_ANALOG_PIN);
if (x_analog < 472) x_stepper.move(-40);
else if (x_analog > 552) x_stepper.move(40);
#ifdef DEBUG
Serial.print("X: "); Serial.print(x_analog);
#endif
y_analog = analogRead(Y_ANALOG_PIN);
if (y_analog < 472) y_stepper.move(-40);
else if (y_analog > 552) y_stepper.move(40);
#ifdef DEBUG
Serial.print(" Y: "); Serial.println(y_analog);
#endif
}
Кастомные детали и корпуса
- fty8akaivo3t4x1_u1xz65PyoT.dxf
- fzuawwrivo3t4wz_PdKRLpvu3f.cdr
Схемы

Производственный процесс
- Руководство по ЧПУ-прототипированию: точность, скорость и экономичное производство
- Основное руководство по выбору идеального стола для вашего дома
- Бильярдный стол: дизайн, история и строительные стандарты
- История, производство и будущее современной монетной системы
- Шаговые vs сервоприводы для ЧПУ: что лучше для вашего проекта
- 4x8 ЧПУ плазменный водяной стол — точная резка листового металла
- 1325 4-осевой ATC ЧПУ-фрезер с PTP-столом: два шпинделя, ротатор, двойные рабочие платформы для высокоэффективной де…
- Как выбрать идеальный ЧПУ плазменный стол для вашего цеха
- ЦНЦ-точение: точное машиностроение для высококачественных деталей
- Приводные вращательные столы: точность, эффективность и продвинутое позиционирование