Собираем настенный плоттер за $15: бюджетный DIY на Arduino
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Шаговые двигатели 28BYJ-48 с драйверами | 2 |
| IR-приёмник TSOP 4838 | 1 |
| Модуль чтения microSD (SPI) | 1 |
| Микросервопривод SG90 | 1 |
Необходимые инструменты
- 3D-принтер
- Паяльная станция
Программное обеспечение
- Arduino IDE
О проекте
Предыстория
Идея настенного плоттера возникла ещё в 1999 году. Мой друг и я мечтали построить робота для рисования на маркерных досках, но тогда экосистема хоббийных микроконтроллеров была незрелой. В 2002 году я увидел проект Hektor (Jürg Lehni и Uli Franke) — именно то, что мы представляли! Но у Hektor был недостаток: он не был самодостаточным устройством. Я хотел плоттер, где всё — электроника, моторы, батарея — в одном корпусе, а к стене подключаются только нити.
К 2014 году появились Arduino, RC-сервоприводы, 3D-печать и, главное, невероятно дешёвые шаговые двигатели 28BYJ-48. Я решил построить самый дешёвый минималистичный настенный плоттер.
Первая попытка
Ключевое открытие: нити должны перекрещиваться. Это обеспечивает стабильность положения на стене. Недостаток — меньшая устойчивость к вращению вокруг вертикальной оси, решено добавлением стяжек.
Первый прототип использовал швейную нить. Перо поднималось сервоприводом, отталкивающим весь плоттер от стены. Прошивка была зашита в код — для смены рисунка требовалась перепрошивка. Настройка: 1 метр нити с каждой стороны, закреплённые на расстоянии 1 метра. Работало, но неудобно.
Выявленные проблемы:
- Моторы слабые — бобины слишком большие.
- Смещение кончика пера от точки перекрещивания нитей — сильная качка.
Это заставило реализовать плавное ускорение и торможение.
Эволюция
Плоттер №2 (белый на обложке):
- Меньшие бобины, размещённые выше пера — меньше маятниковых колебаний.
- Электроника стала доступнее.
- Добавлен microSD для хранения рисунков.
- Новый процесс настройки с переменным расстоянием между точками крепления.
- IR-приёмник для управления пультом.
Настройка: пультом помечаются точки А и Б. Расстояние m измеряется шагами левого мотора. Максимальная ширина рисунка — 2.5 метра.
Плоттер №3 (оранжевый): электроника собрана в шилд для Arduino, добавлен контроль заряда батареи (пауза — смена — продолжение). Но драйверы на шилде скрыли мигающие светодиоды, а встроенный светодиод Arduino перекрылся шилдом — стало сложнее отлаживать IR.
Плоттер №4 — подарок брату, самый эстетичный, с видимыми драйверами.
Плоттер №5 (MacGyver edition) — собран из подручных материалов: дымоходная лента, колпачок от молока вместо бобин, стяжки, скотч. Собран быстрее, чем печатается 3D-корпус, и работает почти так же хорошо.
Плоттер №6 — доработка с учётом замечаний:
- Уменьшен размер 3D-корпуса.
- Поднимается только перо, а не весь плоттер.
- Сервопривод и IR-приёмник перенесены на аналоговые пины — освобождены TX/RX (0, 1) для отладки.
Минус: перо слегка дрожит при рисовании, снижая точность. Плюс — возможность последовательной отладки.
Проведено стресс-тестирование моторов: для удержания шагов нужно снижать скорость. Рассчитано натяжение нитей в зависимости от положения плоттера.
Использование плоттера
Настройка занимает немного времени. Главная сложность — найти удобные точки крепления. Для маркерных досок используются присоски с петлями из нити. Важно: нить должна идти максимально близко к стене для лучшего прижима пера.
При рисовании высоко на широких полотнах моторы могут терять шаги из-за нехватки момента. Совет: крепите выше, рисуйте ниже.
Аппаратная часть
Сборка стандартна для Arduino-проектов. Почти все цифровые пины задействованы. Важно: пины 0 и 1 (TX/RX) используются под периферию — их нужно отключать при прошивке! Поэтому удобно делать электронику в виде снимаемого шилда.
Сервопривод — любой, главное придумать крепление. Шаговые 28BYJ-48 удобны и дешёвы, работают от 5–9В (хотя рейтинг 5В). microSD подключается по SPI или пинам 10–13. IR-приёмник TSOP 4838 подключается напрямую.
Контроль батареи и температуры моторов — лучше опустить, на практике не пригодились.
Рекомендуемая последовательность сборки и тестирования:
- Проверить IR-приёмник (пример IRRecvDump из библиотеки IRRemote).
- Протестировать сервопривод (пример Sweep).
- Проверить SD-карту (примеры библиотеки SD).
- Проверить шаговые моторы (примеры библиотеки Stepper).
- Прошить скетч плоттера, подключить всё (ещё не собирать в корпус).
- Проверить работу сервопривода при включении (должен сделать sweep).
- Управлять моторами с пульта, определить левый/правый, проверить направление намотки.
- Собирать в корпус и тестировать на стене.
Программная часть
Весь код на GitHub: Stringent. Код «хакерский», оптимизирован под ограниченную память Uno.
Программа делает две вещи:
- Навигация и настройка с пульта.
- Рисует SVG-файлы с SD-карты.
Парсер SVG примитивен: только прямые линии, никаких кривых, требует специфический диалект (вывод Inkscape). Файлы называются 1.svg, 2.svg и т.д., выбираются кнопками пульта.
Используется библиотека IRRemote (shirriff).
Создание файла для рисования
- Рисовать в Inkscape.
- Преобразовать в контуры: Path → Object to Path.
- Инструмент «Edit paths by nodes (F2)».
- Выделить всё (Ctrl+A дважды).
- Extensions → Modify Path → Flatten Beziers (преобразовать кривые в отрезки).
- Сохранить как «Inkscape SVG».
- Прогнать через симулятор (см. ниже).
Симулятор
Обязателен перед печатью. Компилирует код плоттера для OSX/Linux, заменяет digitalWrite на вывод в stdout, который визуализируется. Позволяет найти ошибки парсинга SVG (например, слишком много знаков после запятой) и оценить время печати. Запускается намного быстрее реального времени.
Планы по улучшению
- Перенести парсинг SVG на ПК, генерировать оптимизированный формат для плоттера.
- Улучшить торможение (сейчас смотрит только на один сегмент вперёд).
- Добавить энкодеры или обратную связь для отслеживания потери шагов.
- Написать чистый, поддерживаемый код.
- Перейти на WiFi-контроллер и управление с телефона.
Заключение
Проект занял много времени, но приносил радость. Цель — снизить стоимость ниже $10 — не достигнута, но детали дешевеют. Код «спагетти» — он писался для себя, а не для публикации. Надеюсь, кто-то найдёт вдохновение или соберёт свой плоттер!
Удачи,
Фредрик
Производственный процесс
- Максимизация продуктивности ТО через многонавыковое обучение персонала
- Контроль качества: краеугольный камень надежности двигателя
- Как трендинг повышает надежность электродвигателей
- Проактивный мониторинг состояния заводского оборудования: предотвращение простоев и повышение надежности
- Понимание обмоток двигателей: ключевые различия и промышленные применения
- Выбор правильного взрывозащищенного двигателя: всеобъемлющее руководство
- Лучшие практики хранения электродвигателей: максимизация ресурса и производительности
- DC vs AC двигатели: ключевые различия и выбор под вашу задачу
- Выбор правильного двигателя: ключевые различия между двигателями переменного и постоянного тока
- Выбор правильного редуктора: экспертные советы для оптимального момента и эффективности