Восстание машин: как заставить три сломанных принтера играть симфонию через G-code

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
| Мнение | Своими руками (DIY)

У многих в углу гаража или на балконе пылятся старые принтеры: Epson, HP, Canon — те самые, что пережили тысячу распечаток школьных рефератов и курсовых. Вместо того чтобы сдавать их на металлолом, предлагаем устроить «апокалиптический концерт». Суть проекта: превратить шаговые двигатели и ремни сломанных принтеров в оркестр, играющий мелодии через G-code — язык, на котором принтеры понимают команды печати.

Что понадобится:

  • 3 нерабочих принтера (подойдут даже советские «Электроника МС 6312»).
  • Arduino Uno/Nano (или китайский аналог).
  • Драйверы шаговых двигателей (например, A4988).
  • Python-скрипты для конвертации MIDI в G-code.
  • Паяльник, терпение и чувство юмора.
Автор: Kandinsky Источник: fusionbrain.ai

Шаг 1: Разбираем принтеры и «добываем» двигатели

Лайфхак: Если у принтера сломана печатающая головка, это не проблема — нам нужны только шаговики и ремни.

Важно: Не забудьте отключить питание! Даже старые советские принтеры могут биться током.

Шаг 2: Подключаем двигатели к Arduino

Каждый принтер отвечает за свою «партию»:

  • Принтер 1 — бас (низкочастотные вибрации ремня).
  • Принтер 2 — мелодия (двигатель печатающей головки).
  • Принтер 3 — ударные (стук каретки).

Схема подключения:

Двигатель X-оси → драйвер A4988 → пины D8-D11 на Arduino.

Код для Arduino:

#include <Stepper.h>

Stepper motor(200, 8, 10, 9, 11); // шаги, пины IN1-IN4

void setup() { motor. setSpeed(60); }

void loop() { motor. step(100); delay(500); } // тестовый ритм

Шаг 3: Превращаем музыку в G-code

  • Берем MIDI-файл (например, гимн СССР или трек «Кино»).
  • Пишем Python-скрипт для конвертации нот в команды перемещения двигателей:

# Пример: нота C4 → движение на 50 шагов

if note == 'C4':

gcode = 'G0 X50 F300\n' # F300 = скорость

  • Совет: Для «Катюши» подойдет простой бит, а для Цоя — хаотичные вибрации.

Шаг 4: Синхронизация через Python

  • Загружаем G-code в Arduino через PyFirmata:

from pyfirmata import Arduino

board = Arduino('COM3')

board.send('G0 X100 F200') # двигаем ось X на 100 шагов

  • Проблема: Принтеры могут «драться» за тайминги. Решение — добавить задержки в код.

Шаг 5: Апокалиптический перформанс

Запускаем скрипт и наблюдаем, как принтеры исполняют:

  • Бас: Гудение ремня с частотой 20 Гц.
  • Мелодия: Резкие движения головки, имитирующие ноты.
  • Ударные: Стук каретки в ритме 120 BPM.
  • Фишка: Добавьте светодиоды, управляемые через GPIO, для визуальных эффектов.
Автор: freepik Источник: www.freepik.com

Что пошло не так?

  • Двигатели перегреваются → ставим кулеры от старого ПК.
  • Ремни рвутся → заменяем их распечатанными на 3D-принтере (если есть доступ в FabLab).
  • Соседи стучат по батарее → переносим концерт в гараж.

Зачем это нужно?

  • Для души: Хлам обретает вторую жизнь.
  • Для науки: Понимание шаговых двигателей и G-code пригодится в CNC-станках или 3D-печати.
  • Для хайпа: Видео с «принтерным рок-концертом» соберет просмотры в соцсетях.

Заключение

Этот проект — не просто забава, а способ понять, как «думают» машины. И кто знает: может, ваш сломанный принтер сыграет в симфонии, которая заставит задуматься даже самого консервативного соседа.

P.S. Если не хочется возиться с железом, попробуйте эмулировать звуки принтера через Python-библиотеку pygame — но это уже читерство!

Дисклеймер: Не пытайтесь повторить это с рабочими принтерами! Автор не несет ответственности за испорченную технику или испуганных котиков.

Изображение в превью:
Автор: freepik
Источник: www.freepik.com
Автор не входит в состав редакции iXBT.com (подробнее »)
Об авторе
Интересуюсь технологиями и рассказываю о них вам.

Сейчас на главной

Новости

Публикации

Нейтронные звёзды перед столкновением деформируются не так, как считалось: физики обнаружили три релятивистских механизма, которых не было в моделях

Нейтронная звезда — один из самых плотных объектов во Вселенной. При диаметре около двадцати километров её масса составляет порядка полутора солнечных. Вещество внутри сжато до...

Недостроенный детектор на дне моря поймал нейтрино, которое не смог поймать IceCube. Новая физика или случайность?

В феврале 2023 года детектор ARCA — часть строящегося на дне Средиземного моря нейтринного телескопа KM3NeT — зарегистрировал частицу экстремальной энергии. Мюон прошил...

Обзор увлажнителя воздуха РЕДМОНД HF2213S: Создай свой климат со смартфона

Увлажнение воздуха в доме особенно важно в отопительный сезон, когда окна обычно закрыты, а горячие батареи сильно сушат воздух. Увлажнитель помогает поддерживать оптимальную влажность без лишних...

Почему кухонная вытяжка начинает шуметь сильнее обычного, и как решить эту проблему

Кухонная вытяжка — один из тех бытовых приборов, к которому быстро привыкают. Пока она работает тихо и незаметно, на неё редко обращают внимание. Но если однажды привычный звук...