Სარჩევი:

PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox: 6 ნაბიჯი (სურათებით)
PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox: 6 ნაბიჯი (სურათებით)

ვიდეო: PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox: 6 ნაბიჯი (სურათებით)

ვიდეო: PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox: 6 ნაბიჯი (სურათებით)
ვიდეო: Remote Robot finger playing Vintage AMI Jukebox 2024, ივლისი
Anonim
PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox
PlotClock, WeMos და Blynk Playing Vintage AMI Jukebox

ოთხმა ტექნიკურმა ინოვაციამ შესაძლებელი გახადა ეს პროექტი: 1977 წლის Rowe AMI Jukebox, PlotClock რობოტის მკლავი, WeMos/ESP 8266 მიკროკონტროლი და Blynk App/Cloud სერვისი.

შენიშვნა: თუ თქვენ არ გაქვთ Jukebox ხელთ - არ შეწყვიტოთ კითხვა! ეს პროექტი ადვილად მიიღება ადამიანის თითებით კონტროლირებადი სხვადასხვა საგნის გასაკონტროლებლად. ერთი მაგალითი შეიძლება იყოს რობოტის თითი, რომელიც უკრავს ტრადიციულ ქსილოფონს - იქნებ ეს სასწავლო თქვენგან მოდის!

ჩემი 40 წლის Rowe AMI R-81 Jukebox ჯერ კიდევ მშვენივრად მუშაობს რთველის ვინილის სინგლებზე 60-იანი, 70-იანი და 80-იანი წლებიდან. წონა 160 კგ-ზე მეტი (360 lbs) ეს პლეერი არ არის ისეთი პორტატული, როგორც თანამედროვე mp- მოთამაშეები, მაგრამ ინტერნეტის ეპოქაში, ახლა უკვე შესაძლებელია ჯიბეში ჯიქბოქსისა და 200 ვინილის ჩანაწერის ტარება ჯიბეში-პრაქტიკულად, რა თქმა უნდა! თქვენ ასევე შეგიძლიათ გამოიყენოთ თქვენი საკუთარი დასაკრავი სიები, რომლებიც ინახება მიკროკონტროლერში!

საოცარი PlotClock რობოტი თავდაპირველად შექმნილია იმისთვის, რომ აჩვენოს მიმდინარე დრო მოსახსნელი დაფაზე დროის ციფრების დახატვით. PlotClock– ისთვის ჩემი ადაპტაცია არის რობოტის თითის გამოყენება Jukebox სიმღერის შერჩევის ღილაკებზე დაჭერისთვის.

Plotclock”თითი” ამოძრავებს 3 სერვისს, რომელსაც აკონტროლებს WeMos მიკროკონტროლერი. ეს საოცრება არის (თითქმის) Arduino Uno თავსებადი და აქვს WiFi შესაძლებლობები, ასე რომ შესაძლებელია jukebox– ის უსადენოდ გაკონტროლება მსოფლიოს ნებისმიერი ადგილიდან.

კრემი ტორტზე მოდის წარმოუდგენლად მარტივი Blynk აპლიკაციისა და მათი Blynk Cloud Server– ისგან, რომელიც აძლევს მობილურ/ტაბლეტის სასიამოვნო ინტერფეისს სრული მობილურობით.

ნაბიჯი 1: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა

ჯუკბოქსი

პროექტი jukebox არის 1977 Rowe AMI R-81. ნებისმიერი ძველი ჯუკბოქსი შერჩევის ღილაკებით გააკეთებს - PlotClock– ის რამდენიმე შეზღუდვის აღნიშვნა: PlotClock– ის იარაღის ორიგინალურ დიზაინს შეუძლია დაიფაროს 5 x 12 სმ ფართობი, ასე რომ jukebox ღილაკის განლაგება (ფართობი შერჩევის ყველა ღილაკის ჩათვლით) უნდა იყოს დაახლოებით ამ ზომის. ძველი ჯუქბოქსების ღილაკებს შეიძლება სჭირდებოდეს უფრო მეტი ძალა, ვიდრე PlotClock სერვისს შეუძლია უზრუნველყოს.

AMI R-81– ს აქვს მეხსიერება, სადაც მას შეუძლია შეინახოს 200 – მდე არჩევანი. შერჩევა ხდება იმის მიხედვით, თუ როგორ ინახება ისინი ჩანაწერების ჟურნალში (კარუსელის ტიპი) და არა მათი არჩევის თანმიმდევრობით. მრავალჯერადი არჩევანი ერთი ჩანაწერისთვის უკრავს მხოლოდ ერთხელ.

PlotClock

Plotclock არის კომერციულად ხელმისაწვდომი წვრილმანი ნაკრები მექანიკური ნაწილების ჩათვლით, 3 სერვისი, Arduino Uno R3, Arduino გაფართოების დაფა და USB კაბელი. დაახლოებით 30 აშშ დოლარად ეს კარგი შენაძენია (მაგ. Banggood.com). Arduino, გაფართოების დაფა და USB კაბელი არ გამოიყენება ამ პროექტისთვის.

არსებობს რამდენიმე კარგი ინტერნეტ/YouTube გაკვეთილი Plotclock– ის შესაქმნელად - მაგ. ეს: PlotClock ინსტრუქცია

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

ჩვენ

WeMos D1 R2 არის ESP8266 დაფუძნებული მიკროკონტროლი. მისი დაპროგრამება შესაძლებელია Arduino IDE– ს გამოყენებით და აქვს WiFi შესაძლებლობები, ასე რომ ეს არის სრულყოფილი ტექნიკა ამ პროექტისათვის.

ნაბიჯი 2: დაკალიბრება

კალიბრაცია
კალიბრაცია

კალიბრაცია არის ამოცანა სერვო კუთხეებისთვის ზუსტი კუთხის მნიშვნელობების საპოვნელად (0 -დან 180 გრადუსამდე), რათა შეესაბამებოდეს შერჩევის ღილაკების ფიზიკურ პოზიციებს. კუთხის მნიშვნელობების პოვნა შესაძლებელია ტრიგონომეტრიული arithemitics ან CAD პროგრამული უზრუნველყოფის გამოყენებით. მე მივიღე სავარაუდო ღირებულებები ჩემი მეგობრისგან, რომელმაც იცოდა როგორ გამოეყენებინა AutoCad.

თუმცა, საბოლოო დაკალიბრება უნდა განხორციელებულიყო ცდით და შეცდომით. ფურცელზე დახატული ღილაკების განლაგების გამოყენებით შესაძლებელია "დესკტოპის ტესტირების" გაკეთება კუთხის სწორი მნიშვნელობების საპოვნელად.

ნაბიჯი 3: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება

გაყვანილობა

Plotclock servos– დან Wemos– თან დაკავშირება ხდება 5 მავთულის საშუალებით: +5, GND, D4, D5 და D6. იხილეთ დეტალები სურათებსა და კოდში.

დაყენება Jukebox– ზე

მე არ მინდოდა რაიმე ხრახნიანი ხვრელი გამეკეთებინა 40 წლის ჯუკბოქსისთვის, რომელიც ამდენი ხანი გადარჩა დიდი დაზიანებების გარეშე. რბილი რეზინის გამაძლიერებლის გამოყენებით მე დავაფიქსირე ალუმინის კუთხის სია ჯუკბოქსის კონსოლის ქვეშ. რეზინის საფარი მჭიდროდ ინახავს და შეიძლება მოიხსნას ყოველგვარი ნიშნის გარეშე. PlotClock- ს სხეულს სჭირდებოდა ორი პატარა ალუმინის კუთხე, რათა დაეხმარებინა იგი აკრილის ფირფიტაზე. აკრილის ფირფიტა მოთავსებულია კუთხის სიაში ორი ზამბარით დატვირთული კლიპით, რაც ტოვებს შესაძლებლობას საბოლოო კორექტირების ვერტიკალურად და ჰორიზონტალურად.

ნაბიჯი 4: ბლინკი

ბლინკი
ბლინკი

ბლინკი არის უფასო აპლიკაცია რამდენიმე სახის მიკროკონტროლერის დისტანციური მართვისთვის. Blynk– ით თქვენ მარტივად შეგიძლიათ შექმნათ ლამაზი ინტერფეისი რამდენიმე ტიპის ვიჯეტის გამოყენებით. ამ პროექტისთვის საჭიროა მხოლოდ ერთი ვიჯეტი: მაგიდის ვიჯეტი.

ნაბიჯი 5: პროგრამული უზრუნველყოფა

ბლინკის აპლიკაცია

პროგრამის გვერდზე კოდირება არ არის. აპლიკაციას (ბლინკი) და მიკროკონტროლერს (WeMos) "საუბარს" ახორციელებს "ვირტუალური ქინძისთავები", რომლებიც არსებითად არის არხები ინფორმაციის გაგზავნისა და მიღებისათვის ამ ორს შორის. მაგალითად, ვირტუალური პინი გამოიყენება ბლინკის აპლიკაციიდან შერჩეული სიმღერის რიგის ნომრის გასაგზავნად WeMos– ზე, ხოლო დანარჩენი Wemos ამუშავებს, ე.ი. ბრძანებების გაგზავნა Plotclock სერვისზე.

WeMos კოდი

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

მაგიდის ვიჯეტი V2 ******************************************* ****************/ #განსაზღვრეთ BLYNK_PRINT სერიალი #ჩართეთ #ჩართეთ #ჩართეთ char author = "-თქვენი ავტორიზაციის კოდი-"; // Jukebox project char ssid = "-თქვენი SSID--"; char pass = "-თქვენი WIFI PASSWORD-"; int c [50]; // მასივი Jukebox ჩანაწერის პოზიციებისთვის (100-299) Servo myservo1; // მოხსნა Servo myservo2; // მარცხენა ხელი Servo myservo3; // მარჯვენა ხელი int pos1 = 0; int pos2 = 0; int pos3 = 0; int btn = 0; void setup () {myservo1.attach (2); // pin D4, lift myservo2.attach (14); // pin D5, left myservo3.attach (12); // pin D6, უფლება myservo1.write (140); myservo2.write (90); myservo3. დაწერე (90); Serial.begin (115200); Blynk.begin (author, ssid, pass); // დაუყოვნებლივ შეატყობინეთ ჩატვირთვისას // სიმებიანი msg = "Jukebox WeMos დაკავშირებულია:"; //Blynk.notify(msg + ssid); // სუფთა ცხრილი დაწყების Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // მიიღეთ ბრძანებები ცხრილის ვიჯეტის V2 {სიმებიანი cmd = param [0].asStr (); // param [0] = "არჩევა" ან "არჩევანის მოხსნა", param [1] = მწკრივი Serial.print ("\ n ცხრილი: BLYNK_WRITE (V2) სმდ:"); სერიული. ბეჭდვა (სმდ); int შერჩევა = c [param [1].asInt ()]; // არჩეული რიგის ნომერი არის პარამეტრში [1] Serial.println ("\ n შერჩევა:"); Serial.println (შერჩევა); პროცესის_ელექცია (შერჩევა); } void populateTable () {int i = 0; Serial.println ("შევსებული მაგიდა …"); Blynk.virtualWrite (V2, "add", 0, "Be My Baby - The Supremes", 112); c = 112; Blynk.virtualWrite (V2, "დამატება", 1, "ნომერი ერთი - ჯერი უილიამსი", 176); მე ++; c = 176; Blynk.virtualWrite (V2, "add", 2, "All My Loving - The Beatles", 184); მე ++; c = 184; Blynk.virtualWrite (V2, "დამატება", 3, "ზაფხულში - მუნგო ჯერი", 236); მე ++; c = 236; Blynk.virtualWrite (V2, "add", 4, "Black Cloud - Chubby Checker", 155); მე ++; c = 155; Blynk.virtualWrite (V2, "დამატება", 5, "Mamy Blue - Pop -Tops", 260); მე ++; c = 260; Blynk.virtualWrite (V2, "დამატება", 6, "ყველაფერი კარგად იქნება - Gerry & Pacemakers", 145); მე ++; c = 145; Blynk.virtualWrite (V2, "დამატება", 7, "ჩემი გზა - ტომ ჯონსი", 193); მე ++; c = 193; Blynk.virtualWrite (V2, "დამატება", 8, "სან ბერნადინო - კრისტი", 149); მე ++; c = 149; Blynk.virtualWrite (V2, "დამატება", 9, "Twist - Chubby Checker", 169); მე ++; c = 169;

დაგვიანება (1000);

} void process_selection (int selection) {// გაანალიზეთ 3-ნიშნაანი შერჩევა (მაგ. 178) 3 ღილაკამდე: int btn1 = int (selection/100); // პირველი ღილაკი Serial.println ("\ nBtn1:"); Serial.println (btn1); if (btn1 == 1 || btn1 == 2) // პირველი ღილაკი უნდა იყოს 1 ან 2 - წინააღმდეგ შემთხვევაში გააკეთეთ გადატვირთვა {push_button (btn1); შერჩევა = შერჩევა - (btn1 * 100); int btn2 = int (შერჩევა/10); // მეორე ღილაკი Serial.println ("\ nBtn2:"); Serial.println (btn2); ბიძგი_ ღილაკი (btn2); შერჩევა = შერჩევა - (btn2 * 10); int btn3 = int (შერჩევა); // მესამე ღილაკი Serial.println ("\ nBtn3:"); Serial.println (btn3); ბიძგი_ ღილაკი (btn3); } else {push_button (11); // გადატვირთვის ღილაკი} // გადატვირთეთ servo პოზიციები, როდესაც ყველაფერი დასრულებულია (2000); myservo1.write (140); myservo2.write (90); myservo3.write (90);} void push_button (int btn) {// ამას ეწოდება 3 -ჯერ თითოეული შერჩევისთვის // ღილაკის ფაქტობრივი დაჭერა ხდება ყოველი ღილაკის შემდეგ (იპოვეთ 'რეალური ღილაკის დაჭერა') გადამრთველი (btn) {საქმე 1: set_servo_angles (134, 136); // 1 შესვენება; საქმე 2: set_servo_angles (128, 110); // 2 შესვენება; შემთხვევა 3: set_servo_angles (112, 88); // 3 შესვენება; შემთხვევა 4: set_servo_angles (89, 68); // 4 შესვენება; საქმე 5: set_servo_angles (62, 55); // 5 შესვენება; საქმე 6: set_servo_angles (172, 131); // 6 შესვენება; საქმე 7: set_servo_angles (163, 106); // 7 შესვენება; საქმე 8: set_servo_angles (140, 83); // 8 შესვენება; საქმე 9: set_servo_angles (104, 58); // 9 შესვენება; საქმე 0: set_servo_angles (75, 36); // 0 შესვენება; შემთხვევა 11: set_servo_angles (36, 30); // 11 შესვენება; } // დასრულების გადართვა} void set_servo_angles (int pos2, int pos3) {myservo2.write (pos2); myservo3. დაწერე (pos3); // სერვო პოზიციები მზად არის - შეასრულოს ფაქტობრივი ღილაკის დაჭერა: შეფერხება (500); myservo1. დაწერა (60); // დაყოვნება (500); myservo1.write (140); // დაყოვნება (500); } void loop () {Blynk.run (); }

ნაბიჯი 6: მომავალი ნაბიჯები

ვიდეო ვიჯეტი - პირდაპირი ვიდეო და აუდიო ნაკადი ბლინკის აპლიკაციაში (უკვე დატესტილია - მუშაობს)

Webhook ვიჯეტი - დასაკრავი სია ღრუბლიდან მოთხოვნისამებრ (უკვე დატესტილია - მუშაობს)

მაგიდის ვიჯეტი - ვიჯეტის მცირე გაუმჯობესება მისასალმებელია (წინადადებები გაეგზავნა ბლინკის დეველოპერებს)

გირჩევთ: