Innehållsförteckning:
- Steg 1: Hårdvara
- Steg 2: Kalibrering
- Steg 3: Montering
- Steg 4: Blynk
- Steg 5: Programvara
- Steg 6: Framtida steg
Video: PlotClock, WeMos och Blynk spelar Vintage AMI Jukebox: 6 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:36
Fyra tekniska innovationer gjorde detta projekt möjligt: 1977 Rowe AMI Jukebox, PlotClock robotarmsats, WeMos/ESP 8266 mikrokontroller och Blynk App/Cloud service.
OBS: Om du inte har Jukebox till hands - sluta inte läsa! Detta projekt kan enkelt antas för att styra olika saker som styrs av mänskliga fingrar. Ett exempel kan vara ett robotfinger som spelar traditionell xylofon - kanske det instruerbara kommer från dig!
Min 40 år gamla Rowe AMI R-81 Jukebox arbetar fortfarande fint med att spela vintage vinylsinglar från 60-, 70- och 80-talet. Den här spelaren väger över 160 kg (360 lbs) och är inte riktigt lika bärbar som moderna mp-spelare, men när du lever på internet är det nu möjligt att bära jukeboxen och 200 vinylskivor i fickan-i princip såklart! Och du kan till och med använda dina egna spellistor lagrade i mikrokontrollern!
Amazing PlotClock -roboten är ursprungligen utformad för att visa aktuell tid genom att rita tidssiffror på det raderbara kortet. Min anpassning för PlotClock är att använda den som ett robotfinger för att trycka på knappar för val av Jukebox -låtar.
Plotclock”finger” drivs av 3 servon som styrs av WeMos mikrokontroller. Denna underverk är (nästan) Arduino Uno -kompatibel och har WiFi -funktioner, så det är möjligt att styra jukeboxen trådlöst var som helst i världen.
Krämen på tårtan kommer från den otroligt lättanvända Blynk -appen och deras Blynk Cloud Server som ger ett snyggt användargränssnitt för mobiltelefon/surfplatta med full rörlighet.
Steg 1: Hårdvara
Jukebox
Project jukebox är 1977 Rowe AMI R-81. Varje gammal jukebox med markeringsknappar gör - noterar några begränsningar av PlotClock: PlotClocks originalarmdesign kan täcka ett område ca 5 x 12 cm så att jukebox -knappens layout (område inklusive alla markeringsknappar) måste vara ungefär den storleken. Knapparna på äldre jukeboxar kan behöva mer skjutkraft än vad PlotClock -servon kan ge.
AMI R-81 har ett minne där det kan lagra alla 200 val. Urval spelas baserat på den ordning de lagras i skivmagasinet (karuselltyp), inte på den ordning de väljs. Flera val för en skiva spelas bara en gång.
PlotClock
Plotclock är kommersiellt tillgängligt DIY kit inklusive mekaniska delar, 3 servon, Arduino Uno R3, Arduino Extension board och USB -kabel. För cirka 30 USD är detta ett bra köp (t.ex. Banggood.com). Arduino, förlängningskort och USB -kabel används inte för detta projekt.
Det finns flera bra internet/YouTube -handledning för att komponera Plotclock - t.ex. detta: PlotClock instruktioner
static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf
WeMos
WeMos D1 R2 är ESP8266 -baserad mikrokontroller. Det kan programmeras med Arduino IDE och har WiFi -funktioner så det är en perfekt hårdvara för detta projekt.
Steg 2: Kalibrering
Kalibrering är uppgiften för att hitta exakta vinkelvärden för servovinklar (mellan 0 till 180 grader) för att motsvara fysiska positioner för markeringsknappar. Vinkelvärden kan hittas genom trigonometri -aritemitik eller med hjälp av en CAD -programvara. Jag fick ungefärliga värden från min vän som visste hur man använder AutoCad.
Den slutliga kalibreringen måste dock göras genom försök och fel. Använda knapplayouten ritad på papperet Det är möjligt att göra”skrivbordstestning” för att hitta rätt vinkelvärden.
Steg 3: Montering
Kabeldragning
Anslutning från Plotclock -servon till Wemos görs med 5 ledningar: +5, GND, D4, D5 och D6. Se detaljer i bilder och kod.
Installera på Jukebox
Jag ville inte göra några skruvhål till den 40 år gamla jukeboxen som hade överlevt så länge utan större skador. Med hjälp av mjuk gummitätning fixade jag en bit aluminiumvinkellista under jukeboxkonsolen. Gummitätning håller hårt och kan tas bort utan att lämna några märken. PlotClock -kroppen behövde två små aluminiumvinklar för att hjälpa till att montera den på akrylplattan. Akrylplattan monteras sedan på vinkellistan med två fjäderbelastade klämmor, vilket ger möjlighet att göra slutliga justeringar vertikalt och horisontellt.
Steg 4: Blynk
Blynk är en gratis app för fjärrstyrning av flera typer av mikrokontroller. Med Blynk kan du enkelt bygga ett trevligt användargränssnitt med hjälp av flera typer av widgets. Det finns bara en widget som behövs för detta projekt: tabell -widgeten.
Steg 5: Programvara
Blynk App
Det finns ingen kodning på appsidan. "Konversationen" mellan appen (Blynk) och mikrokontrollern (WeMos) hanteras av "Virtuella pins" som i huvudsak är kanaler för att skicka och ta emot information mellan dessa två. Virtuell pin används till exempel för att skicka radnumret för vald låt från Blynk -appen till WeMos, och Wemos hanterar resten, dvs. skicka kommandon till Plotclock -servona.
WeMos -kod
/**************************************************************
Tabellwidget på V2 ********************************************** ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-DIN AUTH CODE--"; // Jukebox-projekt char ssid = "-DIN SSID--"; char pass = "-DITT WIFI LÖSENORD--"; int c [50]; // Array för Jukebox-rekordpositioner (100-299) Servo myservo1; // lyft Servo myservo2; // vänster arm Servo myservo3; // höger arm int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // stift D4, lyft myservo2.attach (14); // stift D5, vänster myservo3.attach (12); // stift D6, höger myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Meddela omedelbart vid start // String msg = "Jukebox WeMos ansluten till:"; //Blynk.notify(msg + ssid); // rensa tabell vid start Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Ta emot kommandon från tabellwidgeten V2 {String cmd = param [0].asStr (); // param [0] = "välj" eller "avmarkera", param [1] = rad Serial.print ("\ nTabell: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int selection = c [param [1].asInt ()]; // Valt radnummer finns i param [1] Serial.println ("\ nVal:"); Serial.println (urval); process_selection (urval); } void populateTable () {int i = 0; Serial.println ("Befolkningstabell …"); Blynk.virtualWrite (V2, "lägg till", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "add", 1, "Number One - Jerry Williams", 176); i ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); i ++; c = 184; Blynk.virtualWrite (V2, "add", 3, "In the Summertime - Mungo Jerry", 236); i ++; c = 236; Blynk.virtualWrite (V2, "add", 4, "Black Cloud - Chubby Checker", 155); i ++; c = 155; Blynk.virtualWrite (V2, "add", 5, "Mamy Blue - Pop -Tops", 260); i ++; c = 260; Blynk.virtualWrite (V2, "add", 6, "It's Gonna Be Alright - Gerry & Pacemakers", 145); i ++; c = 145; Blynk.virtualWrite (V2, "lägg till", 7, "My Way - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "lägg till", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;
fördröjning (1000);
} void process_selection (int selection) {// parse 3-siffrigt urval (t.ex. 178) till 3 knappar: int btn1 = int (selection/100); // första knappen Serial.println ("\ nBtn1:"); Serial.println (btn1); om (btn1 == 1 || btn1 == 2) // första knappen måste vara 1 eller 2 - annars återställ {push_button (btn1); urval = urval - (btn1 * 100); int btn2 = int (urval/10); // andra knappen Serial.println ("\ nBtn2:"); Serial.println (btn2); tryckknapp (btn2); urval = urval - (btn2 * 10); int btn3 = int (urval); // tredje knappen Serial.println ("\ nBtn3:"); Serial.println (btn3); tryckknapp (btn3); } annat {push_button (11); // Återställningsknapp} // Återställ servopositioner när alla färdiga fördröjningar (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// detta kallas 3 gånger för varje val // faktisk knapptryckning görs efter varje knapp (hitta "faktisk knapptryckning") -brytare (btn) {case 1: set_servo_angles (134, 136); // 1 paus; fall 2: set_servo_angles (128, 110); // 2 pauser; fall 3: set_servo_angles (112, 88); // 3 pauser; fall 4: set_servo_angles (89, 68); // 4 pauser; fall 5: set_servo_angles (62, 55); // 5 raster; fall 6: set_servo_angles (172, 131); // 6 pauser; fall 7: set_servo_angles (163, 106); // 7 raster; fall 8: set_servo_angles (140, 83); // 8 pauser; fall 9: set_servo_angles (104, 58); // 9 paus; fall 0: set_servo_angles (75, 36); // 0 paus; fall 11: set_servo_angles (36, 30); // 11 paus; } // end switch} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Servopositioner klara - utför det faktiska knapptrycket: fördröjning (500); myservo1.write (60); // nedfördröjning (500); myservo1.write (140); // uppfördröjning (500); } void loop () {Blynk.run (); }
Steg 6: Framtida steg
Video -widget - live video och ljudström till Blynk -appen (redan testad - fungerar)
Webhook -widget - spellista för nedladdning på begäran från moln (redan testad - fungerar)
Tabellwidget - några små förbättringar av widgeten är välkomna (förslag skickas till Blynk -utvecklare)
Rekommenderad:
Wi-Fi-kontrollerad robot med Wemos D1 ESP8266, Arduino IDE och Blynk App: 11 steg (med bilder)
Wi-Fi-kontrollerad robot med hjälp av Wemos D1 ESP8266, Arduino IDE och Blynk App: I denna handledning visar jag dig hur du gör en Wi-Fi-kontrollerad robottank som styrs från en smartphone med Blynk App. I detta projekt användes ett ESP8266 Wemos D1 -kort, men andra plattmodeller kan också användas (NodeMCU, Firebeetle, etc.), och pr
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Använda lysdioder och AT Tiny för att skapa en blinkande stjärna med Piezo som spelar "Twinkle, Twinkle, Little Star": 6 steg
Använda lysdioder och AT Tiny för att skapa en blinkande stjärna med piezo som spelar "Twinkle, Twinkle, Little Star": Denna krets använder lysdioder, AT TINY och piezo för att producera en blinkande stjärna och musik av " Twinkle, Twinkle, little star " Vänligen se nästa steg för och kretsöversikt
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid
Hur man gör en autonom basketboll som spelar robot med hjälp av en IRobot Skapa som bas: 7 steg (med bilder)
Hur man gör en autonom basketboll som spelar robot med hjälp av en IRobot Skapa som bas: Detta är min post för iRobot Create -utmaningen. Den svåraste delen av hela processen för mig var att bestämma vad roboten skulle göra. Jag ville demonstrera de häftiga funktionerna i Create, samtidigt som jag lade till lite robo -stil. Alla mina