Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

PiBot: Робот-пианист на Arduino для точного исполнения музыки

Компоненты и материалы

Компонент Кол-во Примечание
Arduino 101 (или Uno/Nano) 1 Управляющий контроллер
Сдвиговый регистр 74HC595 11 По одному на 8 соленоидов (11×8=88)
MOSFET IRFZ44N (N-канал) 88 Ключи для соленоидов
Аккумулятор 12 В (автомобильный) 2 Питание соленоидов (перепитаны до 24 В)
Конденсатор 100 мкФ 11 По одному на плату регистра
Провода (много) — Соединения соленоидов и плат
Платы макетные / прототипирования 11 По одной на регистр
Панельки DIP-8 под 74HC595 11 Рекомендуется (защита от перегрева при пайке)
Резистор 10 кОм 88 Pull-down на гейты MOSFET (опционально)
Диод 1N4007 88 Флюсный, параллельно соленоидам (опционально)

Инструменты

Софт и онлайн-сервисы

Как всё начиналось

Автор увидел автоматическое пианино Yamaha в витрине магазина и решил построить своё. Главная цель — управлять 88 соленоидами, нажимающими клавиши, с минимальными затратами.

Обзор решения

Вместо двух Arduino Mega ($80) использован один дешевый контроллер + 11 сдвиговых регистров 74HC595. Каждый регистр даёт 8 выходов → 88 каналов. PC преобразует MIDI в последовательность бит и отправляет по UART. Arduino лишь сдвигает биты в регистры и защёлкивает.

Железо: проблемы и решения

Соленоиды

Заказанные в Китае 12-вольтовые соленоиды оказались слабыми для нажатия клавиш изнутри. Решение: подать 24 В (два автомобильных аккумулятора последовательно). Внимание: это перегруз, соленоиды греются — нужны паузы и охлаждение.

Платы управления

Каждая из 11 плат содержит: 74HC595 (в панельке), 8×IRFZ44N, конденсатор 100 мкФ, разъемы под соленоиды. Схема — классическая каскадная сдвиговыходная (пример 2 из datasheet 74HC595), только вместо LED — гейты MOSFET. Pull-down резисторы не ставили — MOSFETы открываются от 5 В, закрываются ниже 4 В (проверено экспериментально).

Механика

Соленоиды клеятся на пластиковую пластину (позже заменена на двусторонний термостойкий скотч). Один вывод всех соленоидов — на «+» батареи, вторые — на драйны MOSFET. Источники MOSFET — на «−» батареи (общая земля с Arduino).

Программная цепочка

  1. MIDI → текст: загружаем .mid на mid2txt.php → получаем строки: time On/Off ch=1 n=60 v=100.
  2. Python-скрипт читает текст, группирует ноты по времени, формирует 11 байт (по 8 бит на регистр) для каждого временного шага. Выходной файл: time,byte0,byte1,…,byte10.
  3. Processing читает файл, умножает тайминги на коэффициент темпа (по умолчанию ×5), отправляет байты на Arduino в обратном порядке (младший регистр — правая октава). Протокол: старт 888f, 11 байт с суффиксом f, стоп 999f.
  4. Arduino принимает байты, сдвигает в 74HC595, защёлкивает (LATCH). Код прост: прием по Serial, shiftOut в цикле.

Траблшутинг

Код

Все исходники (Python, Processing, Arduino) доступны в репозитории проекта. Python-скрипт содержит функции set_bit, set_bit_prev для упаковки нот в байты регистров. Processing-скетч реализует временной драйвер с мультипликатором темпа. Arduino-код — минималистичный приёмник байт.

Схема

Полная схема (с MOSFET и 74HC595) приведена в разделе Schematics. Рекомендую также посмотреть официальный пример Arduino ShiftOut — принцип идентичен.

Производственный процесс

  1. Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
  2. Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
  3. Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
  4. Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
  5. Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
  6. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  7. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  8. Голосовой робот на Arduino Nano: Управление речью через Bluetooth
  9. MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
  10. Своё рулевое управление (джойстик) для игр на Arduino