Оживление рыбы Billy Bass с любым аудиоисточником — пошаговое руководство
Компоненты и материалы
| Arduino UNO | 1 |
| Adafruit Motor/Stepper/Servo Shield v2.3 | 1 |
| Amazon Alexa Echo Dot (или любой аудиоисточник) | 1 |
| Игрушка Big Mouth Billy Bass | 1 |
| Панельный мини-джек (3.5 мм) | 1 |
| Многожильный провод разного цвета | 1 компл. |
| Маленький зарядной динамик | 1 |
| Аудиокабель mini-jack (3.5 мм) | 1 |
| Разъём-разветвитель mini-jack | 1 |
Инструменты
- Маленькая отвёртка
- Паяльник и припой
- Кусачки для снятия изоляции
- Бокорезы
- Дрель с набором сверл
О проекте
Художник Брайан Кейн опубликовал вирусное видео, где рыба Billy Bass «говорит» голосом Alexa. Автор решил воссоздать этот эффект, используя аудиовыход Echo Dot и Arduino для управления моторами рыбы.
Шаг 1: Подготовка рыбы
Раскрутите заднюю крышку, аккуратно отсоедините шлейфы проводов. Извлеките родную плату и пьезоизлучатель. Останется 4-проводной шлейф: два провода для рта, два — для головы/хвоста. Припаяйте к каждому контакту по куску цветного провода.
Шаг 2: Подготовка моторного шилда
Припаяйте два провода к GND и Analog 0 — это аудиовход. Выведите их на панельный джек (контакт «tip» — сигнал, «sleeve» — земля). Подключите провода рта к клеммникам M1, при желании — головы/хвоста к M2. Убедитесь, что джампер VIN Jumper установлен.
Шаг 3: Загрузка кода
Код объединяет пример DC Motor Test и Sound-to-Servo от Cenk Özdemir. В текущей версии анимация головы/хвоста отключена, чтобы не тормозить рот. Код доступен в разделе «Code».
Шаг 4: Сборка
Загрузите скетч, подключите аудиокабель к джеку. Проверьте работу от телефона. Закрепите джек в корпусе рыбы. Для работы с Alexa: подключите кабель к разветвителю, второй вход — зарядной динамик, фicha разветвителя — в аудиовыход Echo Dot. Включите динамик и Alexa, задайте вопрос — губы рыбы будут двигаться в такт речи.
Шаг 5: Планы по доработке
- Добавить анимацию головы и хвоста без потери отзывчивости рта.
- Зарядка динамика от Arduino.
- Кнопка переключения режимов «речь» / «музыка».
- Очистка кода.
- Переход на более компактную плату (Adafruit Feather).
Код
/* Make a DC Motor Move to Sound. Based on Sound to Servo by Cenk Özdemir (2012) and DCMotorTest by Adafruit */
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // рот
Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2); // хвост/голова
int SoundInPin = A0;
int LedPin = 12;
void setup() {
Serial.begin(9600);
AFMS.begin();
myMotor->setSpeed(0);
myMotor->run(FORWARD);
myMotor->run(RELEASE);
pinMode(SoundInPin, INPUT);
pinMode(LedPin, OUTPUT);
myOtherMotor->setSpeed(0);
myOtherMotor->run(FORWARD);
myOtherMotor->run(RELEASE);
}
void loop() {
uint8_t i;
int sensorValue = analogRead(SoundInPin);
int LEDValue = map(sensorValue, 0, 512, 0, 255);
sensorValue = map(sensorValue, 0, 512, 0, 180);
int MoveDelayValue = map(sensorValue, 0, 255, 0, sensorValue);
if (sensorValue > 10) {
delay(1);
myMotor->run(FORWARD);
for (i = 140; i < 255; i++) myMotor->setSpeed(i);
analogWrite(LedPin, sensorValue);
myMotor->run(RELEASE);
myOtherMotor->run(RELEASE);
delay(1);
}
analogWrite(LedPin, 0);
}
Производственный процесс
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Устройство для общения глухосліпых людей с помощью 1Sheeld и Arduino
- Умная копилка: управление монетоприёмником на Arduino Nano
- Создаём умного Били Басса с Alexa, Arduino, L293D и LM386
- Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
- Как воспроизводить аудио с Arduino UNO и DFPlayer Mini – Пошаговое руководство
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk