Mục lục:

PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển: 6 bước (có hình ảnh)
PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển: 6 bước (có hình ảnh)

Video: PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển: 6 bước (có hình ảnh)

Video: PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển: 6 bước (có hình ảnh)
Video: New Nixie Clock board on esp8266 2024, Tháng bảy
Anonim
PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển
PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển
PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển
PlotClock, WeMos và Blynk Chơi Jukebox AMI cổ điển

Bốn cải tiến kỹ thuật đã thực hiện dự án này: Rowe AMI Jukebox 1977, bộ cánh tay robot PlotClock, vi điều khiển WeMos / ESP 8266 và dịch vụ Blynk App / Cloud.

LƯU Ý: Nếu bạn không có Jukebox trong tay - đừng ngừng đọc! Dự án này có thể dễ dàng được áp dụng để điều khiển những thứ khác nhau được điều khiển bởi ngón tay của con người. Một ví dụ có thể là ngón tay rô bốt chơi Xylophone truyền thống - có thể người hướng dẫn đó đến từ bạn!

Rowe AMI R-81 Jukebox 40 tuổi của tôi vẫn hoạt động tốt khi chơi các đĩa đơn vinyl cổ điển từ những năm 60, 70 và 80. Trọng lượng hơn 160 kg (360 lbs) máy nghe nhạc này không hoàn toàn di động như các máy nghe nhạc mp hiện đại, nhưng sống ở thời đại internet, giờ đây bạn có thể mang theo máy hát tự động và 200 đĩa hát vinyl trong túi của mình - hầu như tất nhiên! Và bạn thậm chí có thể sử dụng danh sách phát của riêng mình được lưu trữ trong bộ vi điều khiển!

Robot PlotClock tuyệt vời ban đầu được thiết kế để hiển thị thời gian hiện tại bằng cách vẽ các chữ số thời gian trên bảng có thể xóa được. Thích ứng của tôi cho PlotClock là sử dụng nó như một ngón tay rô bốt để nhấn các nút chọn bài hát Jukebox.

Plotclock "ngón tay" được điều khiển bởi 3 servo được điều khiển bởi bộ vi điều khiển WeMos. Điều kỳ diệu này là (gần như) tương thích với Arduino Uno và có khả năng WiFi, vì vậy bạn có thể điều khiển máy hát tự động không dây từ mọi nơi trên thế giới.

Lớp kem trên bánh đến từ Ứng dụng Blynk dễ sử dụng đáng kinh ngạc và Máy chủ đám mây Blynk của họ mang đến giao diện người dùng điện thoại / máy tính bảng đẹp mắt với tính di động hoàn toàn.

Bước 1: Phần cứng

Phần cứng
Phần cứng
Phần cứng
Phần cứng

Jukebox

Máy hát tự động của dự án là 1977 Rowe AMI R-81. Bất kỳ máy hát tự động cũ nào có các nút chọn đều sẽ làm được - lưu ý một số hạn chế của PlotClock: Thiết kế cánh tay ban đầu của PlotClock có thể có diện tích khoảng 5 x 12 cm nên bố cục nút máy hát tự động (khu vực bao gồm tất cả các nút chọn) phải có kích thước tương ứng. Các nút của máy hát tự động cũ có thể cần nhiều lực đẩy hơn so với PlotClock servos có thể cung cấp.

AMI R-81 có một bộ nhớ nơi nó có thể lưu trữ tất cả 200 lựa chọn. Các lựa chọn được phát dựa trên thứ tự chúng được lưu trong tạp chí ghi âm (loại băng chuyền), không dựa trên thứ tự chúng được chọn. Nhiều lựa chọn cho một bản ghi chỉ được phát một lần.

PlotClock

Plotclock là bộ kit DIY có sẵn trên thị trường bao gồm các bộ phận cơ khí, 3 servo, Arduino Uno R3, bảng mở rộng Arduino và cáp USB. Đối với khoảng 30 USD, đây là một lựa chọn tốt (ví dụ: Banggood.com). Arduino, bảng mở rộng và cáp USB không được sử dụng cho dự án này.

Có một số hướng dẫn tốt trên Internet / YouTube để soạn Plotclock - ví dụ: this: Hướng dẫn PlotClock

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

WeMos

WeMos D1 R2 là vi điều khiển dựa trên ESP8266. Nó có thể được lập trình bằng Arduino IDE và có khả năng WiFi nên nó là một phần cứng hoàn hảo cho dự án này.

Bước 2: Hiệu chỉnh

Sự định cỡ
Sự định cỡ

Hiệu chuẩn là nhiệm vụ tìm kiếm các giá trị góc chính xác cho các góc servo (từ 0 đến 180 độ) để tương ứng với các vị trí vật lý cho các nút lựa chọn. Giá trị góc có thể được tìm thấy bằng phương pháp thừa lượng giác hoặc sử dụng phần mềm CAD. Tôi nhận được các giá trị gần đúng từ người bạn của tôi, người biết cách sử dụng AutoCad.

Tuy nhiên, việc hiệu chuẩn cuối cùng phải được thực hiện bằng cách thử và sai. Sử dụng bố cục nút được vẽ trên mảnh giấy Có thể thực hiện "thử nghiệm trên máy tính để bàn" để tìm các giá trị góc chính xác.

Bước 3: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp

Đấu dây

Kết nối từ Plotclock servos đến Wemos được thực hiện bằng 5 dây: +5, GND, D4, D5 và D6. Xem chi tiết trong hình ảnh và mã.

Cài đặt trên Jukebox

Tôi không muốn tạo bất kỳ lỗ vít nào cho chiếc máy hát tự động 40 năm tuổi đã tồn tại rất lâu mà không bị hư hỏng nặng. Sử dụng keo dán cao su mềm, tôi đã cố định một phần của bảng kê góc bằng nhôm dưới bảng điều khiển máy hát tự động. Keo cao su giúp giữ chặt và có thể tháo ra mà không để lại bất kỳ dấu vết nào. Phần thân PlotClock cần hai góc nhôm nhỏ để giúp khớp với tấm acrylic. Tấm acrylic sau đó được lắp vào danh sách góc với hai kẹp lò xo có khả năng thực hiện các điều chỉnh cuối cùng theo chiều dọc và chiều ngang.

Bước 4: Blynk

Blynk
Blynk

Blynk là một ứng dụng miễn phí để điều khiển một số loại vi điều khiển từ xa. Với Blynk, bạn có thể dễ dàng xây dựng một giao diện người dùng đẹp mắt bằng cách sử dụng một số loại widget. Chỉ có một widget duy nhất cần thiết cho dự án này: widget Table.

Bước 5: Phần mềm

Ứng dụng Blynk

Không có mã hóa ở phía ứng dụng. "Cuộc trò chuyện" giữa ứng dụng (Blynk) và vi điều khiển (WeMos) được xử lý bởi "Chân ảo", về cơ bản là các kênh để gửi và nhận thông tin giữa hai thứ đó. Ví dụ, ghim ảo được sử dụng để gửi số hàng của bài hát đã chọn từ ứng dụng Blynk tới WeMos và Wemos xử lý phần còn lại, tức là. gửi lệnh đến các servos Plotclock.

Mã WeMos

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

Tiện ích bảng tại V2 ********************************************** **************** / #define BLYNK_PRINT Sê-ri #include #include #include char auth = "- MÃ THÁNG 8 CỦA CHÚNG TÔI--"; // Dự án Jukebox char ssid = "--YOUR SSID--"; char pass = "- MẬT KHẨU WIFI CỦA CHÚNG TÔI--"; int c [50]; // Mảng cho các vị trí bản ghi Jukebox (100-299) Servo myservo1; // nâng Servo myservo2; // cánh tay trái Servo myservo3; // cánh tay phải int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // chân D4, nâng myservo2.attach (14); // pin D5, trái myservo3.attach (12); // chân D6, bên phải myservo1.write (140); myservo2.write (90); myservo3.write (90); Serial.begin (115200); Blynk.begin (auth, ssid, pass); // Thông báo ngay khi khởi động // String msg = "Jukebox WeMos đã kết nối với:"; //Blynk.notify(msg + ssid); // xóa bảng khi bắt đầu Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // Nhận lệnh từ Table widget V2 {String cmd = param [0].asStr (); // param [0] = "select" hoặc "deselect", param [1] = row Serial.print ("\ nTable: BLYNK_WRITE (V2) cmd:"); Serial.print (cmd); int select = c [param [1].asInt ()]; // Số hàng đã chọn nằm trong param [1] Serial.println ("\ nSelection:"); Serial.println (lựa chọn); process_selection (lựa chọn); } void populateTable () {int i = 0; Serial.println ("Đang điền bảng…"); Blynk.virtualWrite (V2, "add", 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, "Sẽ ổn thôi - Gerry & Pacemakers", 145); i ++; c = 145; Blynk.virtualWrite (V2, "add", 7, "My Way - Tom Jones", 193); i ++; c = 193; Blynk.virtualWrite (V2, "add", 8, "San Bernadino - Christie", 149); i ++; c = 149; Blynk.virtualWrite (V2, "add", 9, "The Twist - Chubby Checker", 169); i ++; c = 169;

chậm trễ (1000);

} void process_selection (int selection) {// phân tích cú pháp lựa chọn gồm 3 chữ số (ví dụ: 178) thành 3 nút: int btn1 = int (selection / 100); // nút đầu tiên Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // nút đầu tiên phải là 1 hoặc 2 - nếu không hãy thực hiện đặt lại {push_button (btn1); select = selection - (btn1 * 100); int btn2 = int (lựa chọn / 10); // nút thứ hai Serial.println ("\ nBtn2:"); Serial.println (btn2); nút nhấn (btn2); select = selection - (btn2 * 10); int btn3 = int (vùng chọn); // nút thứ ba Serial.println ("\ nBtn3:"); Serial.println (btn3); nút nhấn (btn3); } else {push_button (11); // nút đặt lại} // đặt lại vị trí của servo khi tất cả hoàn thành delay (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// điều này được gọi là 3 lần cho mỗi lựa chọn // nhấn nút thực sự được thực hiện sau mỗi nút (tìm 'nút nhấn thực tế') chuyển đổi (btn) {trường hợp 1: set_servo_aries (134, 136); // 1 ngắt; case 2: set_servo_aries (128, 110); // 2 ngắt; case 3: set_servo_aries (112, 88); // 3 ngắt; case 4: set_servo_aries (89, 68); // 4 ngắt; case 5: set_servo_aries (62, 55); // 5 ngắt; case 6: set_servo_aries (172, 131); // 6 ngắt; case 7: set_servo_aries (163, 106); // 7 ngắt; case 8: set_servo_aries (140, 83); // 8 ngắt; case 9: set_servo_aries (104, 58); // 9 ngắt; case 0: set_servo_aries (75, 36); // 0 ngắt; case 11: set_servo_aries (36, 30); // 11 ngắt; } // end switch} void set_servo_aries (int pos2, int pos3) {myservo2.write (pos2); myservo3.write (pos3); // Các vị trí Servo đã sẵn sàng - thực hiện thao tác nhấn nút thực tế: delay (500); myservo1.write (60); // xuống độ trễ (500); myservo1.write (140); // up delay (500); } void loop () {Blynk.run (); }

Bước 6: Các bước trong tương lai

Tiện ích video - phát trực tiếp video và âm thanh tới Ứng dụng Blynk (đã được thử nghiệm - đang hoạt động)

Tiện ích Webhook - tải xuống danh sách phát theo yêu cầu từ đám mây (đã được thử nghiệm - đang hoạt động)

Tiện ích bảng - một số cải tiến nhỏ đối với tiện ích được hoan nghênh (đề xuất được gửi đến các nhà phát triển Blynk)

Đề xuất: