İçindekiler:

PlotClock, WeMos ve Blynk Vintage AMI Jukebox Oynarken: 6 Adım (Resimlerle)
PlotClock, WeMos ve Blynk Vintage AMI Jukebox Oynarken: 6 Adım (Resimlerle)

Video: PlotClock, WeMos ve Blynk Vintage AMI Jukebox Oynarken: 6 Adım (Resimlerle)

Video: PlotClock, WeMos ve Blynk Vintage AMI Jukebox Oynarken: 6 Adım (Resimlerle)
Video: Two Servo Clock using Arduino IDE to program ESP8285 (ESP8266 compatible) board. 2024, Temmuz
Anonim
PlotClock, WeMos ve Blynk Vintage AMI Müzik Kutusu Oynarken
PlotClock, WeMos ve Blynk Vintage AMI Müzik Kutusu Oynarken
PlotClock, WeMos ve Blynk Vintage AMI Müzik Kutusu Oynarken
PlotClock, WeMos ve Blynk Vintage AMI Müzik Kutusu Oynarken

Dört teknik yenilik bu projeyi mümkün kıldı: 1977 Rowe AMI Jukebox, PlotClock robot kol kiti, WeMos/ESP 8266 mikro denetleyici ve Blynk App/Cloud hizmeti.

NOT: Elinizde Jukebox yoksa - okumayı bırakmayın! Bu proje, insan parmaklarıyla kontrol edilen çeşitli şeyleri kontrol etmek için kolayca benimsenebilir. Bir örnek, geleneksel Ksilofon çalan bir robot parmak olabilir - belki bu talimat sizden gelir!

40 yaşındaki Rowe AMI R-81 Jukebox'ım 60'lar, 70'ler ve 80'lerden eski vinil single'ları çalmaya devam ediyor. 160 kg'dan (360 lbs) daha ağır olan bu oynatıcı, modern mp oynatıcılar kadar taşınabilir değildir, ancak internet çağında yaşamak, artık müzik kutusunu ve 200 vinil plakları cebinizde taşımak mümkün – neredeyse tabii! Hatta mikrodenetleyicide saklanan kendi çalma listelerinizi bile kullanabilirsiniz!

Amazing PlotClock robotu, orijinal olarak silinebilir tahtaya zaman rakamlarını çizerek şimdiki zamanı göstermek için tasarlanmıştır. PlotClock'a uyarlamam, onu Jukebox şarkı seçim düğmelerine basmak için bir robot parmağı olarak kullanmaktır.

Plotclock "parmağı", WeMos mikro denetleyicisi tarafından kontrol edilen 3 servo tarafından çalıştırılır. Bu harika parça (neredeyse) Arduino Uno uyumludur ve WiFi özelliklerine sahiptir, bu nedenle müzik kutusunu dünyanın her yerinden kablosuz olarak kontrol etmek mümkündür.

Pastanın üzerindeki krema, kullanımı inanılmaz derecede kolay olan Blynk Uygulamasından ve tam mobiliteye sahip güzel bir cep telefonu/tablet kullanıcı arayüzü sunan Blynk Bulut Sunucusundan geliyor.

Adım 1: Donanım

Donanım
Donanım
Donanım
Donanım

müzik kutusu

Proje müzik kutusu 1977 Rowe AMI R-81'dir. Seçim düğmelerine sahip herhangi bir eski müzik kutusu işinizi görecektir – PlotClock'un birkaç sınırlamasına dikkat çekersek: PlotClock'un orijinal kol tasarımı yaklaşık 5 x 12 cm'lik bir alanı kapsayabilir, bu nedenle müzik kutusu düğme düzeni (tüm seçim düğmelerini içeren alan) bu boyutta olmalıdır. Eski müzik kutularının düğmeleri, PlotClock servolarının sağlayabileceğinden daha fazla itme gücüne ihtiyaç duyabilir.

AMI R-81, 200 seçimi saklayabileceği bir belleğe sahiptir. Seçimler, seçildikleri sıraya göre değil, kayıt magazininde (atlıkarınca tipi) saklandıkları sıraya göre oynatılır. Bir kayıt için çoklu seçimler yalnızca bir kez oynatılır.

PlotSaat

Plotclock, mekanik parçalar, 3 servo, Arduino Uno R3, Arduino Uzatma kartı ve USB kablosu içeren ticari olarak temin edilebilen bir DIY kitidir. Yaklaşık 30 USD karşılığında bu iyi bir satın almadır (örn. Banggood.com). Bu proje için Arduino, uzatma kartı ve USB kablosu kullanılmamaktadır.

Plotclock'u oluşturmak için birkaç iyi internet/YouTube öğreticisi var – örn. bu: PlotClock talimatları

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

WeMos

WeMos D1 R2, ESP8266 tabanlı bir mikro denetleyicidir. Arduino IDE kullanılarak programlanabilir ve WiFi özelliklerine sahiptir, bu nedenle bu proje için mükemmel bir donanım parçasıdır.

Adım 2: Kalibrasyon

kalibrasyon
kalibrasyon

Kalibrasyon, seçim düğmelerinin fiziksel konumlarına karşılık gelen servo açıları (0 ila 180 derece arasında) için doğru açı değerleri bulma görevidir. Açı değerleri, trigonometri aritmitiği veya bir CAD yazılımı kullanılarak bulunabilir. AutoCad kullanmayı bilen bir arkadaşımdan yaklaşık değerler aldım.

Ancak, son kalibrasyonun deneme yanılma yoluyla yapılması gerekiyordu. Kağıt üzerine çizilen buton düzenini kullanarak doğru açı değerlerini bulmak için “masaüstü testi” yapmak mümkündür.

Adım 3: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

kablolama

Plotclock servolarından Wemos'a bağlantı 5 kablo ile yapılır: +5, GND, D4, D5 ve D6. Ayrıntıları resimlerde ve kodda görün.

Jukebox'a yükleme

Uzun süredir büyük hasar görmeden ayakta kalan 40 yıllık müzik kutusuna herhangi bir vida deliği açmak istemedim. Yumuşak kauçuk dolgu macunu kullanarak müzik kutusu konsolunun altına bir parça alüminyum açı listesi sabitledim. Kauçuk dolgu macunu sıkı tutuş sağlar ve iz bırakmadan çıkarılabilir. PlotClock gövdesinin akrilik plakaya oturmasına yardımcı olmak için iki küçük alüminyum açıya ihtiyacı vardı. Akrilik plaka daha sonra iki yaylı klips ile açı listesine takılır ve böylece dikey ve yatay olarak son ayarların yapılmasına olanak sağlanır.

4. Adım: Blynk

göz kırpmak
göz kırpmak

Blynk, çeşitli mikrodenetleyici türlerini uzaktan kontrol etmek için ücretsiz bir uygulamadır. Blynk ile çeşitli widget türleri kullanarak kolayca güzel bir kullanıcı arayüzü oluşturabilirsiniz. Bu proje için gereken tek bir pencere aracı vardır: Tablo pencere aracı.

Adım 5: Yazılım

Blynk Uygulaması

Uygulama tarafında kodlama yoktur. Uygulama (Blynk) ve mikrodenetleyici (WeMos) arasındaki "konuşma", esasen bu ikisi arasında bilgi gönderme ve alma kanalları olan "Sanal pinler" tarafından gerçekleştirilir. Örneğin sanal pin, Blynk uygulamasından seçilen şarkının satır numarasını WeMos'a göndermek için kullanılır ve Wemos gerisini halleder, yani. Plotclock servolarına komut gönderme.

WeMos kodu

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

V2'deki tablo widget'ı *************************************************** ****************/ #define BLYNK_PRINT Seri #include #include #include char auth = "--YETKİNLİK KODUNUZ--"; //Jukebox projesi char ssid = "--SSID'İNİZ--"; char pass = "--WIFI ŞİFRENİZ--"; int c[50]; //Jukebox kayıt konumları için dizi (100-299) Servo myservo1; // Servo myservo2'yi kaldırma; //sol kol Servo myservo3; //sağ kol int konum1 = 0; int konum2 = 0; int konum3 = 0; int btn=0; geçersiz kurulum() { myservo1.attach(2); // pin D4, myservo2.attach(14) kaldır; // pin D5, sol myservo3.attach(12); // pin D6, sağ myservo1.write(140); myservo2.write(90); myservo3.write(90); Seri.başla(115200); Blynk.begin(auth, ssid, pass); // Başlangıçta hemen bildir //String msg = "Jukebox WeMos şuraya bağlandı: "; //Blynk.notify(mesaj + ssid); //başlangıçta tabloyu temizle Blynk.virtualWrite(V2, "clr"); populateTable(); } BLYNK_WRITE(V2) //Tablo parçacığı V2'den komutları al { String cmd = param[0].asStr(); //param[0]="seç" veya "seçimi kaldır", param[1]=satır Serial.print("\nTable: BLYNK_WRITE(V2) cmd: "); Seri.baskı(cmd); int seçimi = c[param[1].asInt()]; //Seçilen satır numarası param[1] Serial.println("\nSelection: "); Serial.println(seçim); süreç_seçimi(seçim); } void populateTable() { int i = 0; Serial.println("Tablo Doldurma…"; Blynk.virtualWrite(V2, "ekle", 0, "Bebeğim Ol - Yüceler", 112); c = 112; Blynk.virtualWrite(V2, "ekle", 1, "Bir Numara - Jerry Williams", 176); ben++; c = 176; Blynk.virtualWrite(V2, "ekle", 2, "Tüm Sevdiklerim - The Beatles", 184); ben++; c = 184; Blynk.virtualWrite(V2, "ekle", 3, "Yaz Ayında - Mungo Jerry", 236); ben++; c = 236; Blynk.virtualWrite(V2, "ekle", 4, "Kara Bulut - Tombul Denetleyici", 155); ben++; c = 155; Blynk.virtualWrite(V2, "ekle", 5, "Mamy Blue - Pop-Tops", 260); ben++; c = 260; Blynk.virtualWrite(V2, "ekle", 6, "Her şey yoluna girecek - Gerry & Pacemaker", 145); ben++; c = 145; Blynk.virtualWrite(V2, "ekle", 7, "Benim Yolum - Tom Jones", 193); ben++; c = 193; Blynk.virtualWrite(V2, "ekle", 8, "San Bernadino - Christie", 149); ben++; c = 149; Blynk.virtualWrite(V2, "ekle", 9, "Büküm - Tombul Denetleyici", 169); ben++; c = 169;

gecikme(1000);

} void process_selection (int seçimi) { //3 haneli seçimi (örn. 178) 3 butona ayrıştırın: int btn1 = int(selection/100); //ilk buton Serial.println("\nBtn1: "); Seri.println(btn1); if (btn1 == 1 || btn1 == 2) //ilk düğme 1 veya 2 olmalıdır - aksi takdirde sıfırlama yapın { push_button(btn1); seçim = seçim - (btn1 * 100); int btn2 = int(seçim/10); //ikinci düğme Seri.println("\nBtn2: "); Seri.println(btn2); push_button(btn2); seçim = seçim - (btn2 * 10); int btn3 = int(seçim); //üçüncü düğme Seri.println("\nBtn3: "); Seri.println(btn3); push_button(btn3); } başka { push_button(11); //reset butonu } //her şey bittiğinde servo pozisyonlarını sıfırla gecikme(2000); myservo1.write(140); myservo2.write(90); myservo3.write(90);} void push_button(int btn) { //bu, her seçim için 3 kez çağrılır //gerçek butona basma, her butona bastıktan sonra yapılır ('gerçek butona bas'ı bulun') anahtarı (btn) { durum 1: set_servo_angles (134, 136); //1 ara; durum 2: set_servo_angles (128, 110); // ara; durum 3: set_servo_angles (112, 88); ///3 ara; durum 4: set_servo_angles (89, 68); ///4 ara; durum 5: set_servo_angles (62, 55); ///5 ara; durum 6: set_servo_angles (172, 131); ///6 ara; durum 7: set_servo_angles (163,106); //7 ara; durum 8: set_servo_angles (140, 83); //8 ara; durum 9: set_servo_angles (104, 58); //9 ara; durum 0: set_servo_angles (75, 36); //0 ara; durum 11: set_servo_angles (36, 30); //11 ara; } //son anahtarı } void set_servo_angles(int konum2, int konum3) { myservo2.write(konum2); myservo3.write(pos3); //Servo pozisyonları hazır - butona asıl basmayı gerçekleştirin: delay(500); myservo1.write(60); //gecikme gecikmesi(500); myservo1.write(140); //yukarı gecikme(500); } geçersiz döngü() { Blynk.run(); }

Adım 6: Gelecek Adımlar

Video widget'ı - Blynk Uygulamasına canlı video ve ses akışı (zaten test edildi - çalışıyor)

Web kancası widget'ı - buluttan isteğe bağlı indirme oynatma listesi (zaten test edildi - çalışıyor)

Tablo widget'ı - widget'ta bazı küçük iyileştirmeler memnuniyetle karşılanmaktadır (Blynk geliştiricilerine gönderilen öneriler)

Önerilen: