Съдържание:

PlotClock, WeMos и Blynk играят Vintage AMI Jukebox: 6 стъпки (със снимки)
PlotClock, WeMos и Blynk играят Vintage AMI Jukebox: 6 стъпки (със снимки)

Видео: PlotClock, WeMos и Blynk играят Vintage AMI Jukebox: 6 стъпки (със снимки)

Видео: PlotClock, WeMos и Blynk играят Vintage AMI Jukebox: 6 стъпки (със снимки)
Видео: Remote Robot finger playing Vintage AMI Jukebox 2024, Юли
Anonim
PlotClock, WeMos и Blynk играят Vintage AMI Jukebox
PlotClock, WeMos и Blynk играят Vintage AMI Jukebox
PlotClock, WeMos и Blynk играят Vintage AMI Jukebox
PlotClock, WeMos и Blynk играят Vintage AMI Jukebox

Четири технически иновации направиха този проект възможен: Rowe AMI Jukebox от 1977 г., комплект роботизирани рамена PlotClock, микроконтролер WeMos/ESP 8266 и услуга Blynk App/Cloud.

ЗАБЕЛЕЖКА: Ако нямате джубокс под ръка - не спирайте да четете! Този проект може лесно да бъде приет за контрол на различни неща, контролирани от човешки пръсти. Един пример може да бъде робот с пръст, който свири на традиционен ксилофон - може би тази инструкция идва от вас!

Моят 40-годишен джубокс Rowe AMI R-81 все още работи добре свирейки реколта винилови сингли от 60-те, 70-те и 80-те. С тегло над 160 кг (360 фунта) този плейър не е толкова преносим, колкото съвременните MP плейъри, но живеейки в интернет ерата, сега е възможно да носите джубокса и 200 винилови плочи в джоба си-на практика разбира се! И дори можете да използвате свои собствени плейлисти, съхранени в микроконтролера!

Невероятният робот PlotClock първоначално е проектиран да показва текущото време, като чертае цифри за време върху изтриваемата дъска. Моята адаптация за PlotClock е да го използвам като робот за натискане на бутоните за избор на песен от Jukebox.

„Пръстът“на графичния часовник се задвижва от 3 сервомотора, контролирани от микроконтролера WeMos. Това чудо е (почти) Arduino Uno съвместимо и има WiFi възможности, така че е възможно да управлявате джубокса безжично от всяка точка на света.

Кремът на тортата идва от невероятно лесното за използване приложение Blynk и техния Blynk Cloud Server, които дават приятен потребителски интерфейс за мобилен телефон/таблет с пълна мобилност.

Стъпка 1: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер

Jukebox

Проектът джубокс е Rowe AMI R-81 от 1977 г. Всеки стар джубокс с бутони за избор ще се справи - като се отбележат някои ограничения от PlotClock: Оригиналният дизайн на ръцете на PlotClock може да обхваща площ около 5 x 12 cm, така че оформлението на бутоните на джубокса (областта, включваща всички бутони за избор) трябва да бъде приблизително с този размер. Бутоните на по -старите джубокси може да се нуждаят от по -голяма сила на натискане, отколкото сервомоторите на PlotClock.

AMI R-81 има памет, в която може да съхранява всички 200 селекции. Селекциите се възпроизвеждат въз основа на реда, в който се съхраняват в списанието (тип въртележка), а не в реда, в който са избрани. Няколко избора за един запис се възпроизвеждат само веднъж.

PlotClock

Plotclock е наличен в търговската мрежа комплект DIY, включващ механични части, 3 сервомотора, Arduino Uno R3, платка за разширение Arduino и USB кабел. За около 30 USD това е добра покупка (напр. Banggood.com). Arduino, платка за разширение и USB кабел не се използват за този проект.

Има няколко добри интернет/YouTube уроци за съставяне на Plotclock - напр. това: PlotClock инструкции

static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf

WeMos

WeMos D1 R2 е базиран на ESP8266 микроконтролер. Той може да бъде програмиран с помощта на Arduino IDE и има WiFi възможности, така че е перфектен хардуер за този проект.

Стъпка 2: Калибриране

Калибриране
Калибриране

Калибрирането е задача за намиране на точни стойности на ъглите за серво ъглите (между 0 до 180 градуса), които да съответстват на физическите позиции за бутоните за избор. Стойностите на ъглите могат да бъдат намерени чрез тригонометрична аритмитика или с помощта на CAD софтуер. Получих приблизителни стойности от моя приятел, който знаеше как да използва AutoCad.

Окончателното калибриране обаче трябваше да се извърши чрез опит и грешка. Използване на оформлението на бутоните, изчертано върху лист хартия Възможно е да се направи „настолно тестване“, за да се намерят правилните стойности на ъгъла.

Стъпка 3: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Електрически инсталации

Връзката от сервомоторите на Plotclock към Wemos се осъществява с 5 проводника: +5, GND, D4, D5 и D6. Вижте подробности в снимки и код.

Инсталиране на Jukebox

Не исках да правя никакви дупки за винтове на 40 -годишния джубокс, който толкова дълго беше оцелял без големи щети. С помощта на мек гумен уплътнител фиксирах парче алуминиев ъглов списък под конзолата на джубокса. Гуменият уплътнител затваря здраво и може да бъде отстранен, без да оставя следи. Корпусът на PlotClock се нуждаеше от два малки алуминиеви ъгъла, за да го монтира върху акрилната плоча. След това акрилната плоча се монтира в списъка на ъглите с две пружинни скоби, оставяйки възможност за извършване на окончателни настройки вертикално и хоризонтално.

Стъпка 4: Blynk

Блинк
Блинк

Blynk е безплатно приложение за дистанционно управление на няколко типа микроконтролери. С Blynk можете лесно да изградите приятен потребителски интерфейс, използвайки няколко типа джаджи. За този проект е необходима само една джаджа: джаджата Table.

Стъпка 5: Софтуер

Приложение Blynk

Няма кодиране от страната на приложението. „Разговорът“между приложението (Blynk) и микроконтролера (WeMos) се обработва от „Виртуални щифтове“, които по същество са канали за изпращане и получаване на информация между тях. Виртуалният пин например се използва за изпращане на номера на ред на избрана песен от приложението Blynk до WeMos, а Wemos обработва останалото, т.е. изпращане на команди към сервомоторите на Plotclock.

WeMos код

/**************************************************************

Приспособление за таблица във V2 ******************************************** ****************/ #define BLYNK_PRINT Сериен #include #include #include char auth = "-ВАШИЯТ АУТЕН КОД-"; // Jukebox project char ssid = "-ВАШИЯТ SSID-"; char pass = "-ВАШАТА ПАРОЛА ЗА WIFI-"; int c [50]; // Масив за рекордни позиции на Jukebox (100-299) Servo myservo1; // повдигане на Servo myservo2; // ляво рамо Servo myservo3; // дясна ръка int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // щифт D4, повдигнете myservo2.attach (14); // щифт D5, ляво myservo3.attach (12); // щифт D6, дясно myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Незабавно уведомяване при стартиране // String msg = "WeMos на Jukebox, свързан с:"; //Blynk.notify(msg + ssid); // изчистване на таблицата при стартиране Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Получаване на команди от притурка за таблица V2 {String cmd = param [0].asStr (); // param [0] = "select" или "deselect", param [1] = ред Serial.print ("\ nТаблица: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selection = c [param [1].asInt ()]; // Избраният номер на ред е в параметър [1] Serial.println ("\ nSelection:"); Serial.println (избор); process_selection (избор); } void populateTable () {int i = 0; Serial.println ("Попълваща таблица …"); Blynk.virtualWrite (V2, "добавяне", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "добавяне", 1, "Номер едно - Джери Уилямс", 176); i ++; c = 176; Blynk.virtualWrite (V2, "добавяне", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "добавяне", 3, "През лятото - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "добавяне", 4, "Black Cloud - Chubby Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "добавяне", 5, "Mamy Blue - Pop -Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "добавяне", 6, "Всичко ще бъде наред - Джери и пейсмейкъри", 145); i ++; c = 145; Blynk.virtualWrite (V2, "добавяне", 7, "Моят начин - Том Джоунс", 193); i ++; c = 193; Blynk.virtualWrite (V2, "добавяне", 8, "Сан Бернадино - Кристи", 149); i ++; c = 149; Blynk.virtualWrite (V2, "добавяне", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

забавяне (1000);

} void process_selection (int selection) {// анализираме 3-цифрения избор (напр. 178) до 3 бутона: int btn1 = int (selection/100); // първи бутон Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // първият бутон трябва да е 1 или 2 - в противен случай направете нулирането {push_button (btn1); подбор = избор - (btn1 * 100); int btn2 = int (избор/10); // втори бутон Serial.println ("\ nBtn2:"); Serial.println (btn2); бутон за натискане (btn2); подбор = избор - (btn2 * 10); int btn3 = int (избор); // трети бутон Serial.println ("\ nBtn3:"); Serial.println (btn3); бутон за натискане (btn3); } else {push_button (11); // бутон за нулиране} // нулиране на серво позициите, когато всичко свърши закъснение (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// това се извиква 3 пъти за всеки избор // действителното натискане на бутон се извършва след всеки бутон (намерете 'действително натискане на бутон') превключвател (btn) {случай 1: set_servo_angles (134, 136); // 1 почивка; случай 2: set_servo_angles (128, 110); // 2 почивка; случай 3: set_servo_angles (112, 88); // 3 почивка; случай 4: set_servo_angles (89, 68); // 4 почивка; случай 5: set_servo_angles (62, 55); // 5 почивка; случай 6: set_servo_angles (172, 131); // 6 почивка; случай 7: set_servo_angles (163, 106); // 7 почивка; случай 8: set_servo_angles (140, 83); // 8 почивка; случай 9: set_servo_angles (104, 58); // 9 почивка; случай 0: set_servo_angles (75, 36); // 0 прекъсване; случай 11: set_servo_angles (36, 30); // 11 почивка; } // краен превключвател} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Серво позиции готови - изпълнете действителното натискане на бутона: delay (500); myservo1.write (60); // забавяне надолу (500); myservo1.write (140); // закъснение нагоре (500); } void loop () {Blynk.run (); }

Стъпка 6: Бъдещи стъпки

Видео джаджа - видео и аудио поток на живо към приложението Blynk (вече тествано - работи)

Уиджет Webhook - изтегляне на плейлист при поискване от облака (вече тествано - работи)

Притурка за таблица - някои малки подобрения на приспособлението са добре дошли (предложения, изпратени до разработчиците на Blynk)

Препоръчано: