Isi kandungan:

PlotClock, WeMos dan Blynk Memainkan Jukebox AMI Vintage: 6 Langkah (dengan Gambar)
PlotClock, WeMos dan Blynk Memainkan Jukebox AMI Vintage: 6 Langkah (dengan Gambar)

Video: PlotClock, WeMos dan Blynk Memainkan Jukebox AMI Vintage: 6 Langkah (dengan Gambar)

Video: PlotClock, WeMos dan Blynk Memainkan Jukebox AMI Vintage: 6 Langkah (dengan Gambar)
Video: How to install the new Blynk app | WeMos D1 ESP8266 with Blynk app | how to light led 2024, Julai
Anonim
PlotClock, WeMos dan Blynk Bermain Vintage AMI Jukebox
PlotClock, WeMos dan Blynk Bermain Vintage AMI Jukebox
PlotClock, WeMos dan Blynk Bermain Vintage AMI Jukebox
PlotClock, WeMos dan Blynk Bermain Vintage AMI Jukebox

Empat inovasi teknikal menjadikan projek ini dapat dilaksanakan: Rowe AMI Jukebox 1977, kit lengan robot PlotClock, mikrokontroler WeMos / ESP 8266 dan perkhidmatan Apl / Awan Blynk.

CATATAN: Sekiranya anda tidak mempunyai Jukebox - jangan berhenti membaca! Projek ini dapat diguna pakai dengan mudah untuk mengawal pelbagai perkara yang dikendalikan oleh jari manusia. Salah satu contohnya ialah jari robot yang memainkan Xylophone tradisional - mungkin arahan itu berasal dari anda!

Rowe AMI R-81 Jukebox saya yang berusia 40 tahun masih berfungsi dengan baik bermain single vinil vintaj dari tahun 60-an, 70-an dan 80-an. Berat lebih dari 160 kg (360 lbs) pemain ini tidak begitu mudah alih dengan pemain mp moden, tetapi hidup di era internet, sekarang mungkin untuk membawa rakaman jukebox dan 200 vinil di poket anda - tentu saja! Anda juga boleh menggunakan senarai main anda sendiri yang tersimpan dalam mikrokontroler!

Robot Amazing PlotClock pada asalnya direka untuk menunjukkan waktu semasa dengan melukis digit masa di papan yang boleh dihapus. Adaptasi saya untuk PlotClock adalah menggunakannya sebagai jari robot untuk menekan butang pilihan lagu Jukebox.

"Jari" Plotclock digerakkan oleh 3 servos yang dikendalikan oleh mikrokontroler WeMos. Keajaiban ini hampir (hampir) Arduino Uno serasi dan mempunyai keupayaan WiFi, jadi mungkin untuk mengendalikan jukebox secara wayarles dari mana saja di dunia.

Krim pada kek berasal dari Aplikasi Blynk yang mudah digunakan dan Pelayan Awan Blynk mereka memberikan antara muka pengguna telefon bimbit / tablet yang bagus dengan mobiliti penuh.

Langkah 1: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan

Jukebox

Project jukebox ialah 1977 Rowe AMI R-81. Mana-mana jukebox lama dengan butang pilihan akan dilakukan - mencatatkan beberapa batasan oleh PlotClock: Reka bentuk lengan asli PlotClock dapat meliputi kawasan sekitar 5 x 12 cm sehingga susun atur butang jukebox (kawasan termasuk semua butang pilihan) mestilah seukuran itu. Butang jukebox yang lebih tua mungkin memerlukan lebih banyak daya tolak daripada yang dapat diberikan oleh servo PlotClock.

AMI R-81 mempunyai memori di mana ia dapat menyimpan semua 200 pilihan. Pilihan dimainkan berdasarkan urutan ia disimpan di majalah rakaman (jenis karusel), bukan berdasarkan urutan yang mereka pilih. Pelbagai pilihan untuk satu rekod dimainkan sekali sahaja.

PlotClock

Plotclock adalah kit DIY yang tersedia secara komersial termasuk bahagian mekanikal, 3 servos, Arduino Uno R3, Arduino Extension board dan kabel USB. Dengan harga sekitar 30 USD ini adalah pembelian yang bagus (mis. Banggood.com). Arduino, papan sambungan dan kabel USB tidak digunakan untuk projek ini.

Terdapat beberapa tutorial internet / YouTube yang bagus untuk menyusun Plotclock - mis. ini: Arahan PlotClock

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

WeMos

WeMos D1 R2 adalah mikrokontroler berasaskan ESP8266. Ia dapat diprogramkan menggunakan Arduino IDE dan mempunyai kemampuan WiFi sehingga merupakan perkakasan yang sempurna untuk projek ini.

Langkah 2: Penentukuran

Penentukuran
Penentukuran

Kalibrasi adalah tugas untuk mencari nilai sudut yang tepat untuk sudut servo (antara 0 hingga 180 darjah) untuk menyesuaikan kedudukan fizikal untuk butang pilihan. Nilai sudut boleh didapati dengan aritemit trigonometri atau menggunakan perisian CAD. Saya mendapat nilai anggaran dari rakan saya yang tahu bagaimana menggunakan AutoCad.

Walau bagaimanapun, penentukuran terakhir harus dibuat berdasarkan percubaan dan kesilapan. Menggunakan susun atur butang yang dilukis pada sehelai kertas Adalah mungkin untuk melakukan "pengujian desktop" untuk mencari nilai sudut yang betul.

Langkah 3: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Pendawaian

Sambungan dari servos Plotclock ke Wemos dilakukan dengan 5 wayar: +5, GND, D4, D5 dan D6. Lihat perincian dalam gambar dan kod.

Memasang pada Jukebox

Saya tidak mahu membuat lubang skru pada jukebox berusia 40 tahun yang telah lama bertahan tanpa kerosakan besar. Dengan menggunakan sealant getah lembut saya menetapkan senarai sudut aluminium di bawah konsol jukebox. Sealant getah membuat penahan rapat dan boleh dikeluarkan tanpa meninggalkan bekas. Badan PlotClock memerlukan dua sudut aluminium kecil untuk membantu memasangnya pada plat akrilik. Plat akrilik kemudian dipasang ke senarai sudut dengan dua klip pegas yang dimuatkan sehingga memungkinkan untuk membuat penyesuaian akhir secara menegak dan mendatar.

Langkah 4: Blynk

Blynk
Blynk

Blynk adalah aplikasi percuma untuk mengawal beberapa jenis mikrokontroler dari jarak jauh. Dengan Blynk anda boleh membina antara muka pengguna yang bagus dengan menggunakan beberapa jenis widget. Hanya ada satu widget yang diperlukan untuk projek ini: widget Table.

Langkah 5: Perisian

Aplikasi Blynk

Tidak ada pengekodan di bahagian aplikasi. "Perbualan" antara aplikasi (Blynk) dan mikrokontroler (WeMos) dikendalikan oleh "Pin maya" yang pada asasnya merupakan saluran untuk menghantar dan menerima maklumat antara keduanya. Pin maya misalnya digunakan untuk mengirim nombor baris lagu terpilih dari aplikasi Blynk ke WeMos, dan Wemos menangani selebihnya, iaitu. menghantar arahan ke servo Plotclock.

Kod WeMos

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

Widget jadual di V2 ********************************************** **************** / #tentukan BLYNK_PRINT Serial #include #include #include char auth = "- KOD AUTH ANDA--"; // Jukebox projek char ssid = "- SSID ANDA--"; char pass = "--KATA KATA WIFI ANDA--"; int c [50]; // Array untuk kedudukan rekod Jukebox (100-299) Servo myservo1; // mengangkat Servo myservo2; // lengan kiri Servo myservo3; // lengan kanan int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; batal persediaan () {myservo1.attach (2); // pin D4, angkat myservo2.attach (14); // pin D5, kiri myservo3.attach (12); // pin D6, myservo1.write kanan (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Beritahu segera pada permulaan // String msg = "Jukebox WeMos disambungkan ke:"; //Blynk.notify(msg + ssid); // kosongkan jadual pada permulaan Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Terima arahan dari widget Jadual V2 {String cmd = param [0].asStr (); // param [0] = "pilih" atau "nyahpilih", param [1] = baris Serial.print ("\ nJadual: BLYNK_WRITE (V2) cmd:"); Cetakan bersiri (cmd); pemilihan int = c [param [1].asInt ()]; // Nombor baris yang dipilih adalah dalam param [1] Serial.println ("\ nPilihan:"); Serial.println (pilihan); proses_pilihan (pemilihan); } batal populateTable () {int i = 0; Serial.println ("Mengisi jadual …"); Blynk.virtualWrite (V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "add", 1, "Number One - Jerry Williams", 176); saya ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); saya ++; c = 184; Blynk.virtualWrite (V2, "add", 3, "In the Summertime - Mungo Jerry", 236); saya ++; c = 236; Blynk.virtualWrite (V2, "add", 4, "Black Cloud - Chubby Checker", 155); saya ++; c = 155; Blynk.virtualWrite (V2, "add", 5, "Mamy Blue - Pop-Tops", 260); saya ++; c = 260; Blynk.virtualWrite (V2, "add", 6, "It's Be Be Alright - Gerry & Pacemakers", 145); saya ++; c = 145; Blynk.virtualWrite (V2, "add", 7, "My Way - Tom Jones", 193); saya ++; c = 193; Blynk.virtualWrite (V2, "add", 8, "San Bernadino - Christie", 149); saya ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); saya ++; c = 169;

kelewatan (1000);

} pemilihan proses tidak sah (pemilihan int) {// menguraikan pemilihan 3 digit (mis. 178) hingga 3 butang: int btn1 = int (pemilihan / 100); // butang pertama Serial.println ("\ nBtn1:"); Bersiri.println (btn1); jika (btn1 == 1 || btn1 == 2) // butang pertama mestilah 1 atau 2 - jika tidak, tetapkan semula {tekan_button (btn1); pemilihan = pemilihan - (btn1 * 100); int btn2 = int (pemilihan / 10); // butang kedua Serial.println ("\ nBtn2:"); Bersiri.println (btn2); butang tekan (btn2); pemilihan = pemilihan - (btn2 * 10); int btn3 = int (pemilihan); // butang ketiga Serial.println ("\ nBtn3:"); Bersiri.println (btn3); butang tekan (btn3); } lain {butang tekan (11); // butang reset} // tetapkan semula kedudukan servo apabila semua kelewatan selesai (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} kekosongan butang kosong (int btn) {// ini dipanggil 3 kali untuk setiap pilihan // penekanan butang sebenar dilakukan setelah setiap butang (cari 'tekan butang sebenar') suis (btn) {kes 1: set_servo_angles (134, 136); // 1 rehat; kes 2: set_servo_angles (128, 110); // 2 rehat; kes 3: set_servo_angles (112, 88); // rehat 3; kes 4: set_servo_angles (89, 68); // 4 rehat; kes 5: set_servo_angles (62, 55); // 5 rehat; kes 6: set_servo_angles (172, 131); // 6 rehat; kes 7: set_servo_angles (163, 106); // 7 rehat; kes 8: set_servo_angles (140, 83); // 8 rehat; kes 9: set_servo_angles (104, 58); // 9 rehat; kes 0: set_servo_angles (75, 36); // 0 rehat; kes 11: set_servo_angles (36, 30); // 11 rehat; } // suis akhir} set_servo_angles kosong (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Kedudukan servo siap - lakukan penekanan butang sebenar: kelewatan (500); myservo1.write (60); // kelewatan turun (500); myservo1.write (140); // kelewatan naik (500); } gelung kosong () {Blynk.run (); }

Langkah 6: Langkah Masa Depan

Widget video - aliran video & audio langsung ke Aplikasi Blynk (sudah diuji - berfungsi)

Widget webhook - muat turun senarai main berdasarkan permintaan (sudah diuji - berfungsi)

Widget jadual - beberapa penambahbaikan kecil pada widget sangat dialu-alukan (cadangan dihantar kepada pemaju Blynk)

Disyorkan: