PlotClock, WeMos, Blynk Vintage AMI Jukebox тоглож байна: 6 алхам (зурагтай)
PlotClock, WeMos, Blynk Vintage AMI Jukebox тоглож байна: 6 алхам (зурагтай)
Anonim
PlotClock, WeMos, Blynk Vintage AMI Jukebox тоглож байна
PlotClock, WeMos, Blynk Vintage AMI Jukebox тоглож байна
PlotClock, WeMos болон Blynk Vintage AMI Jukebox тоглож байна
PlotClock, WeMos болон Blynk Vintage AMI Jukebox тоглож байна

Техникийн дөрвөн шинэчлэл нь энэ төслийг хэрэгжүүлэх боломжтой болгосон: 1977 оны Rowe AMI Jukebox, PlotClock робот гар иж бүрдэл, WeMos/ESP 8266 микроконтроллер ба Blynk App/Cloud үйлчилгээ.

ТАЙЛБАР: Хэрэв таны гар дээр Jukebox байхгүй бол уншихаа бүү зогсоо! Энэхүү төслийг хүний хуруугаар удирддаг төрөл бүрийн зүйлийг удирдахад хялбархан хэрэгжүүлэх боломжтой. Үүний нэг жишээ бол уламжлалт Xylophone дээр тоглож буй робот хуруу байж магадгүй юм.

Миний 40 настай Rowe AMI R-81 Jukebox 60, 70, 80-аад оны винил синглүүдийг сайн тоглосоор байгаа. 160 кг-аас дээш жинтэй энэ тоглуулагч нь орчин үеийн mp-тоглогчидтой адил зөөврийн биш боловч интернетийн эрин үед амьдарч байгаа тул одоо халаасандаа jukebox болон 200 винил пянз авч явах боломжтой боллоо. Мөн та микроконтроллерт хадгалагдсан өөрийн тоглуулах жагсаалтыг ашиглаж болно!

Гайхамшигтай PlotClock робот нь анх арилгаж болох самбар дээр цагийн цифрийг зурж одоогийн цагийг харуулах зорилготой юм. PlotClock -ийн миний дасан зохицох зүйл бол үүнийг Jukebox дуу сонгох товчлуурыг дарахад робот хуруу болгон ашиглах явдал юм.

Plotclock "хуруу" нь WeMos микроконтроллероор хянагддаг 3 servo хөтөчөөр ажилладаг. Энэхүү гайхалтай зүйл нь (бараг л) Arduino Uno -тэй нийцтэй бөгөөд WiFi -ийн чадвартай тул дэлхийн аль ч өнцгөөс юүкбоксыг утасгүй удирдах боломжтой юм.

Бялуу дээрх тос нь ашиглахад хялбар Blynk App болон тэдний Blynk Cloud Server -ээс гар утас, таблетын хэрэглэгчийн интерфэйсийг бүрэн хөдөлгөж өгдөг.

Алхам 1: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Хөгжмийн хайрцаг

Төслийн jukebox нь 1977 оны Rowe AMI R-81 юм. Сонголт хийх товчлууртай хуучин хөгжмийн хайрцаг хийх болно - PlotClock -ийн цөөн хэдэн хязгаарлалтыг тэмдэглэх нь зүйтэй: PlotClock -ийн анхны гар хийцийн загвар нь ойролцоогоор 5х12 см хэмжээтэй байж болох тул хөгжмийн хайрцгийн товчлуурын зохион байгуулалт (бүх сонголтын товчлуурыг багтаасан хэсэг) ийм хэмжээтэй байх ёстой. Хуучин jukebox -уудын товчлуурууд нь PlotClock -ийн servos -ээс илүү хүчтэй түлхэлт шаарддаг.

AMI R-81 нь 200 сонголтыг хадгалах боломжтой санах ойтой. Сонгон шалгаруулалтыг сонгосон дарааллаар нь биш бичлэгийн сэтгүүлд хадгалсан дарааллаар нь (тойргийн төрөл) тоглодог. Нэг бичлэгийн олон сонголтыг ганцхан удаа тоглуулдаг.

PlotClock

Plotclock бол механик эд анги, 3 servo, Arduino Uno R3, Arduino өргөтгөлийн самбар, USB кабелийг багтаасан DIY хэрэгсэл юм. 30 орчим долларын үнэтэй бол энэ нь сайн худалдан авалт болно (жишээ нь. Banggood.com). Arduino, өргөтгөлийн самбар, USB кабелийг энэ төсөлд ашиглахгүй.

Plotclock зохиох хэд хэдэн сайн интернет/YouTube заавар байдаг - жишээ нь. Энэ нь: PlotClock заавар

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

WeMos

WeMos D1 R2 нь ESP8266 дээр суурилсан микроконтроллер юм. Үүнийг Arduino IDE ашиглан програмчлах боломжтой бөгөөд WiFi боломжуудтай тул энэ төслийн төгс тоног төхөөрөмж болно.

Алхам 2: Калибровк хийх

Тохируулгын
Тохируулгын

Калибровк хийх нь сонгох товчлууруудын физик байрлалыг харгалзах servo өнцгийн (0 -ээс 180 градусын хооронд) өнцгийн нарийвчлалтай утгыг олох даалгавар юм. Тригонометрийн аритемитик эсвэл CAD програм ашиглан өнцгийн утгыг олж болно. Би AutoCad -ийг хэрхэн ашиглах талаар мэддэг найзаасаа ойролцоогоор утгыг авсан.

Гэсэн хэдий ч эцсийн шалгалт тохируулгыг туршилт, алдааны дагуу хийх ёстой байв. Цаасан дээр зурсан товчлуурын байршлыг ашиглан өнцгийн зөв утгыг олохын тулд "ширээний тест" хийх боломжтой.

Алхам 3: угсрах

Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган

Цахилгаан утас

Plotclock servos -аас Wemos руу холбогдох нь 5 утастай хийгддэг: +5, GND, D4, D5 ба D6. Зураг, кодыг дэлгэрэнгүй үзэх.

Jukebox дээр суулгаж байна

Их хэмжээний гэмтэл авалгүй удаан амьд үлдсэн 40 настай хөгжмийн хайрцагт би ямар ч шураг нүх гаргахыг хүсээгүй. Зөөлөн резинэн чигжээс ашиглан би хөгжмийн хайрцагны консолын доор хөнгөн цагаан өнцгийн жагсаалтыг засав. Резинэн чигжээс нь нягт барьдаг тул ямар ч ул мөр үлдээхгүйгээр арилгаж болно. PlotClock -ийн биед акрилан хавтан дээр бэхлэхэд туслах хоёр жижиг хөнгөн цагаан өнцөг шаардлагатай байв. Нийлэг хавтанг хоёр өнцөгт хавчаар бүхий өнцгийн жагсаалтад оруулаад босоо болон хэвтээ байдлаар эцсийн тохируулга хийх боломжтой болно.

Алхам 4: Блинк

Блинк
Блинк

Blynk бол хэд хэдэн төрлийн микроконтроллерыг алсаас удирдах үнэгүй програм юм. Blynk -ийн тусламжтайгаар та хэд хэдэн төрлийн виджет ашиглан сайхан хэрэглэгчийн интерфэйсийг хялбархан бүтээж чадна. Энэ төсөлд зөвхөн нэг виджет хэрэгтэй: Table widget.

Алхам 5: Програм хангамж

Blynk програм

Аппликешны талд кодчилол байхгүй байна. Апп (Blynk) ба микроконтроллер (WeMos) хоорондын "харилцан яриаг" эдгээр хоёрын хооронд мэдээлэл илгээх, хүлээн авах суваг болох "Виртуал тээглүүр" удирддаг. Виртуал пин нь жишээ нь Blynk програмаас сонгосон дууны мөрийн дугаарыг WeMos руу илгээхэд хэрэглэгддэг бөгөөд үлдсэн хэсгийг нь Wemos зохицуулдаг. Plotclock серво руу тушаал илгээх.

WeMos код

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

V2 хүснэгтийн виджет ******************************************** ****************/ #define BLYNK_PRINT Serial #include #include #include char auth = "-ТАНЫ АВТО КОД--"; // Jukebox төслийн char char ssid = "-ТАНЫ SSID-"; char pass = "--ТАНЫ WIFI НУУЦ ҮГ--"; 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); // зүү D4, өргөх myservo2.attach (14); // зүү D5, зүүн myservo3.attach (12); // зүү D6, баруун myservo1.write (140); myservo2.write (90); myservo3.write (90); Цуваа.begin (115200); Blynk.begin (auth, ssid, pass); // Эхлэх үед нэн даруй мэдэгдэх // String msg = "Jukebox WeMos холбогдсон:"; //Blynk.notify(msg + ssid); // эхэнд байгаа хүснэгтийг цэвэрлэх Blynk.virtualWrite (V2, "clr"); populateTable (); } BLYNK_WRITE (V2) // V2 хүснэгтийн виджетээс команд хүлээн авах {String cmd = param [0].asStr (); // param [0] = "сонгох" эсвэл "сонголтыг цуцлах", param [1] = мөр Serial.print ("\ nХүснэгт: BLYNK_WRITE (V2) cmd:"); Цуваа.хэвлэх (cmd); int сонголт = c [param [1].asInt ()]; // Сонгосон мөрийн дугаар param [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, "add", 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, "add", 9, "The Twist - Chubby Checker", 169); би ++; c = 169;

саатал (1000);

} void process_selection (int selection) {// 3 оронтой сонголтыг (жишээ нь. 178) 3 товчлуур болгон задлах: int btn1 = int (сонголт/100); // эхний товчлуур Serial.println ("\ nBtn1:"); Serial.println (btn1); хэрэв (btn1 == 1 || btn1 == 2) // эхний товчлуур нь 1 эсвэл 2 байх ёстой - өөрөөр бол дахин тохируулах {push_button (btn1); сонголт = сонголт - (btn1 * 100); int btn2 = int (сонголт/10); // хоёр дахь товчлуур Serial.println ("\ nBtn2:"); Serial.println (btn2); push_button (btn2); сонголт = сонголт - (btn2 * 10); int btn3 = int (сонголт); // гурав дахь товчлуур Serial.println ("\ nBtn3:"); Serial.println (btn3); push_button (btn3); } өөр {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); // Servo байрлал бэлэн байна - товчлуурын бодит даралтыг гүйцэтгэнэ: саатал (500); myservo1.write (60); // доошлох саатал (500); myservo1.write (140); // дээшлэх саатал (500); } void loop () {Blynk.run (); }

Алхам 6: Ирээдүйн алхамууд

Видео виджет - Blynk апп руу шууд видео, аудио дамжуулалт (аль хэдийн туршиж үзсэн - ажиллаж байгаа)

Webhook виджет - үүлнээс хүссэн жагсаалтаар татаж авах жагсаалт (аль хэдийн шалгагдсан - ажиллаж байгаа)

Хүснэгтийн виджет - виджетийн зарим жижиг сайжруулалтыг хүлээж авах боломжтой (Blynk хөгжүүлэгчдэд санал илгээсэн болно)

Зөвлөмж болгож буй: