Spisu treści:

PlotClock, WeMos i Blynk grają w Vintage AMI Jukebox: 6 kroków (ze zdjęciami)
PlotClock, WeMos i Blynk grają w Vintage AMI Jukebox: 6 kroków (ze zdjęciami)

Wideo: PlotClock, WeMos i Blynk grają w Vintage AMI Jukebox: 6 kroków (ze zdjęciami)

Wideo: PlotClock, WeMos i Blynk grają w Vintage AMI Jukebox: 6 kroków (ze zdjęciami)
Wideo: Remote Robot finger playing Vintage AMI Jukebox 2024, Lipiec
Anonim
PlotClock, WeMos i Blynk grają w vintage AMI Jukebox
PlotClock, WeMos i Blynk grają w vintage AMI Jukebox
PlotClock, WeMos i Blynk grają w vintage AMI Jukebox
PlotClock, WeMos i Blynk grają w vintage AMI Jukebox

Cztery innowacje techniczne umożliwiły realizację tego projektu: 1977 Rowe AMI Jukebox, zestaw ramienia robota PlotClock, mikrokontroler WeMos/ESP 8266 i usługa Blynk App/Cloud.

UWAGA: Jeśli nie masz pod ręką Jukebox – nie przestawaj czytać! Ten projekt można łatwo zaadaptować do sterowania różnymi rzeczami sterowanymi ludzkimi palcami. Jednym z przykładów może być palec robota grający na tradycyjnym ksylofonie – może ta instrukcja pochodzi od ciebie!

Mój 40-letni Rowe AMI R-81 Jukebox wciąż działa dobrze, grając stare winylowe single z lat 60-tych, 70-tych i 80-tych. Ważący ponad 160 kg (360 funtów) odtwarzacz nie jest tak przenośny jak współczesne odtwarzacze mp, ale żyjąc w erze Internetu, teraz można nosić szafę grającą i 200 płyt winylowych w kieszeni – praktycznie oczywiście! Możesz nawet korzystać z własnych list odtwarzania zapisanych w mikrokontrolerze!

Niesamowity robot PlotClock został pierwotnie zaprojektowany do wyświetlania aktualnego czasu poprzez rysowanie cyfr czasu na wymazywalnej tablicy. Moja adaptacja do PlotClock polega na użyciu go jako palca robota do naciskania przycisków wyboru utworów Jukebox.

„Palec” plotera jest napędzany przez 3 serwa sterowane przez mikrokontroler WeMos. To cudo jest (prawie) zgodne z Arduino Uno i ma możliwości Wi-Fi, dzięki czemu możliwe jest bezprzewodowe sterowanie szafą grającą z dowolnego miejsca na świecie.

Krem na torcie pochodzi z niesamowicie łatwej w użyciu aplikacji Blynk i serwera Blynk Cloud Server, który zapewnia przyjemny interfejs użytkownika telefonu komórkowego / tabletu z pełną mobilnością.

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Szafa grająca

Szafa grająca projektu to 1977 Rowe AMI R-81. Każda stara szafa grająca z przyciskami wyboru będzie wystarczająca – zwracając uwagę na kilka ograniczeń PlotClock: Oryginalny projekt ramion PlotClock może obejmować obszar około 5 x 12 cm, więc układ przycisków szafy grającej (obszar zawierający wszystkie przyciski wyboru) musi mieć mniej więcej ten rozmiar. Przyciski starszych szaf grających mogą wymagać większej siły nacisku niż serwa PlotClock.

AMI R-81 posiada pamięć, w której może przechowywać wszystkie 200 wyborów. Selekcje są odtwarzane na podstawie kolejności, w jakiej są przechowywane w magazynie płyt (typ karuzeli), a nie na podstawie kolejności, w jakiej są wybierane. Wielokrotne wybory dla jednego rekordu są odtwarzane tylko raz.

Zegar wydruku

Plotclock jest dostępnym na rynku zestawem DIY zawierającym części mechaniczne, 3 serwa, Arduino Uno R3, kartę rozszerzeń Arduino i kabel USB. Za około 30 USD to dobry zakup (np. Banggood.com). Arduino, płytka rozszerzeń i kabel USB nie są używane w tym projekcie.

Istnieje kilka dobrych samouczków internetowych/YouTube dotyczących tworzenia Zegara plotowego – np. to: instrukcje PlotClock

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

WeMos

WeMos D1 R2 to mikrokontroler oparty na ESP8266. Można go zaprogramować za pomocą Arduino IDE i ma możliwości Wi-Fi, więc jest idealnym sprzętem do tego projektu.

Krok 2: Kalibracja

Kalibrowanie
Kalibrowanie

Kalibracja to zadanie polegające na znalezieniu dokładnych wartości kątów dla kątów serwomechanizmu (od 0 do 180 stopni) odpowiadających fizycznym położeniom przycisków wyboru. Wartości kątów można znaleźć za pomocą arytmetyki trygonometrii lub przy użyciu oprogramowania CAD. Otrzymałem przybliżone wartości od mojego przyjaciela, który wiedział, jak korzystać z AutoCad.

Jednak ostateczna kalibracja musiała zostać wykonana metodą prób i błędów. Korzystanie z układu przycisków narysowanego na kartce papieru Możliwe jest wykonanie „testu pulpitu” w celu znalezienia prawidłowych wartości kątów.

Krok 3: Montaż

montaż
montaż
montaż
montaż
montaż
montaż
montaż
montaż

Okablowanie

Połączenie z serw Plotclock do Wemos odbywa się za pomocą 5 przewodów: +5, GND, D4, D5 i D6. Zobacz szczegóły na zdjęciach i kodzie.

Instalacja na Jukebox

Nie chciałem robić otworów na śruby w 40-letniej szafie grającej, która tak długo przetrwała bez większych uszkodzeń. Za pomocą miękkiej gumy uszczelniającej zamocowałem kawałek aluminiowego kątownika pod konsolą szafy grającej. Uszczelniacz gumowy mocno trzyma i można go usunąć bez pozostawiania śladów. Korpus PlotClock potrzebował dwóch małych aluminiowych kątowników, aby pomóc w dopasowaniu go do akrylowej płyty. Akrylowa płyta jest następnie mocowana do listwy kątowej za pomocą dwóch sprężynowych klipsów, co daje możliwość ostatecznej regulacji w pionie i poziomie.

Krok 4: Blynk

Blynk
Blynk

Blynk to darmowa aplikacja do zdalnego sterowania kilkoma rodzajami mikrokontrolerów. Dzięki Blynk możesz łatwo zbudować ładny interfejs użytkownika, korzystając z kilku rodzajów widżetów. W tym projekcie potrzebny jest tylko jeden widżet: widżet Tabela.

Krok 5: Oprogramowanie

Aplikacja Blynk

Po stronie aplikacji nie ma kodowania. „Rozmowa” między aplikacją (Blynk) a mikrokontrolerem (WeMos) jest obsługiwana przez „wirtualne szpilki”, które zasadniczo są kanałami do wysyłania i odbierania informacji między tymi dwoma. Wirtualny pin służy na przykład do wysyłania numeru wiersza wybranego utworu z aplikacji Blynk do WeMos, a Wemos obsługuje resztę, tj. wysyłanie poleceń do serw Plotclock.

Kod WeMos

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

Widżet tabeli w wersji 2 ********************************************* ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "--TWÓJ KOD UWIERZYTELNIANIA--"; //Jukebox project char ssid = "--TWÓJ SSID--"; char pass = "--TWOJE HASŁO WIFI--"; wewn c[50]; //Tablica dla pozycji rekordów Jukebox (100-299) Servo myservo1; //podnoszenie Servo myservo2; //lewe ramię Servo myservo3; //prawe ramię int poz1 = 0; int poz2 = 0; int poz3 = 0; int btn=0; void setup() { myservo1.attach(2); // pin D4, podnieś myservo2.attach(14); // pin D5, lewy myservo3.attach(12); // pin D6, prawy myservo1.write(140); myservo2.write(90); myservo3.write(90); Serial.początek(115200); Blynk.begin(auth, ssid, pass); // Powiadom natychmiast po uruchomieniu //String msg = "Jukebox WeMos podłączony do: "; //Blynk.notify(msg + ssid); //wyczyść tabelę przy starcie Blynk.virtualWrite(V2, "clr"); zapełnijTabelę(); } BLYNK_WRITE(V2) //Odbierz polecenia z widżetu tabeli V2 { String cmd = param[0].asStr(); //param[0]="wybierz" lub "odznacz", param[1]=row Serial.print("\nTabela: BLYNK_WRITE(V2) cmd: "); Serial.print(cmd); wybór int = c[param[1].asInt()]; //Wybrany numer wiersza znajduje się w param[1] Serial.println("\nWybór: "); Serial.println(wybór); selekcja_procesu(wybór); } void populateTable() { int i = 0; Serial.println("Wypełniam tabelę…"); Blynk.virtualWrite(V2, "dodaj", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite(V2, "dodaj", 1, "Numer jeden - Jerry Williams", 176); i++; c = 176; Blynk.virtualWrite(V2, "dodaj", 2, "All My Loving - The Beatles", 184); i++; c = 184; Blynk.virtualWrite(V2, "dodaj", 3, "W lecie - Mungo Jerry", 236); i++; c = 236; Blynk.virtualWrite(V2, "dodaj", 4, "Czarna chmura - Chubby Checker", 155); i++; c = 155; Blynk.virtualWrite(V2, "dodaj", 5, "Mamy Blue - Pop-Tops", 260); i++; c = 260; Blynk.virtualWrite(V2, "dodaj", 6, "Wszystko będzie w porządku - Gerry & Pacemakers", 145); i++; c = 145; Blynk.virtualWrite(V2, "dodaj", 7, "My Way - Tom Jones", 193); i++; c = 193; Blynk.virtualWrite(V2, "dodaj", 8, "San Bernadino - Christie", 149); i++; c = 149; Blynk.virtualWrite(V2, "dodaj", 9, "The Twist - Chubby Checker", 169); i++; c = 169;

opóźnienie (1000);

} void process_selection (int selection) { //parse 3-cyfrowy wybór (np. 178) na 3 przyciski: int btn1 = int(selection/100); //pierwszy przycisk Serial.println("\nBtn1: "); Serial.println(btn1); if (btn1 == 1 || btn1 == 2) //pierwszy przycisk musi być 1 lub 2 - w przeciwnym razie wykonaj reset { push_button(btn1); zaznaczenie = zaznaczenie - (btn1 * 100); int btn2 = int(wybór/10); //drugi przycisk Serial.println("\nBtn2: "); Serial.println(btn2); przycisk_przycisk(btn2); zaznaczenie = zaznaczenie - (btn2 * 10); int btn3 = int(wybór); //trzeci przycisk Serial.println("\nBtn3: "); Serial.println(btn3); przycisk_przycisk(btn3); } else { push_button(11); //przycisk resetowania } //zresetuj pozycje serwa, gdy wszystko zostało zrobione delay(2000); myservo1.write(140); myservo2.write(90); myservo3.write(90);} void push_button(int btn) { //jest to wywoływane 3 razy dla każdego wyboru //rzeczywiste naciśnięcie przycisku jest wykonywane po każdym przycisku (znajdź „aktualne naciśnięcie przycisku”) switch (btn) { przypadek 1: set_servo_angles (134, 136); //1 przerwa; przypadek 2: set_servo_angles (128, 110); //2 przerwa; przypadek 3: set_servo_angles (112, 88); //3 przerwa; przypadek 4: set_servo_angles (89, 68); //4 przerwa; przypadek 5: set_servo_angles (62, 55); //5 przerwa; przypadek 6: set_servo_angles (172, 131); //6 przerwa; przypadek 7: set_servo_angles (163, 106); //7 przerwa; przypadek 8: set_servo_angles (140, 83); //8 przerwa; przypadek 9: set_servo_angles (104, 58); //9 przerwa; przypadek 0: set_servo_angles (75, 36); //0 przerwa; przypadek 11: set_servo_angles (36, 30); //11 przerwa; } //przełącznik końca } void set_servo_angles(int poz2, int poz3) { myservo2.write(pos2); myservo3.write(poz3); //Pozycje serwo gotowe - wykonaj właściwe naciśnięcie przycisku: delay(500); myservo1.write(60); //opóźnienie (500); myservo1.write(140); //opóźnienie w górę(500); } void loop() { Blynk.run(); }

Krok 6: Przyszłe kroki

Widżet wideo - strumień wideo i audio na żywo do aplikacji Blynk (już przetestowany - działa)

Widżet Webhook - pobieranie playlisty na żądanie z chmury (już przetestowane - działa)

Widżet tabeli - mile widziane są drobne ulepszenia widżetu (sugestie wysyłane do programistów Blynk)

Zalecana: