Агуулгын хүснэгт:

Ая: 8 алхам (зурагтай)
Ая: 8 алхам (зурагтай)

Видео: Ая: 8 алхам (зурагтай)

Видео: Ая: 8 алхам (зурагтай)
Видео: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Арваннэгдүгээр
Anonim
Image
Image
Урсгалыг ойлгох
Урсгалыг ойлгох

Гэрээсээ ажиллах боломжийг олгодог олон давуу тал, технологийн шийдлүүдээс гадна хамт ажиллагсдынхаа дунд амьдралыг дэмжих ажлыг бүрдүүлэх, бий болгоход бэрхшээлтэй хэвээр байна. MELODY бол дижитал физик төхөөрөмж бөгөөд хамтарсан богино хөгжмийн саатал үүсгэх боломжийг олгодог. Хамтран ажиллагсад цагийг зохицуулж, төхөөрөмж нь эргэлт, өөр өөр санамсаргүй дуу чимээ бүхий саатлын сессийг тохируулдаг. Эхний оролцогч тодорхой хэмнэлийг тогтоодог бөгөөд үүний дараа оролцогч бүр тогтоосон хэмнэлд тохирсон өөрийн хөгжмийн хэсгийг нэмдэг. Хөгжмийн мэдлэггүй хэрэглэгчдэд илүү хялбар болгохын тулд програм хангамж нь товшилтоо сонгож, зохих хэмнэлд тохируулах замаар хурдацтай хөгжихөд тусалдаг. Бүх оролцогчид бичлэгээ хийж дуусаад 3 минут орчим үргэлжилнэ.

Энэ яаж ажилдаг вэ?

Melody нь ESP2866 техник хангамж дээр суурилсан бөгөөд MQTT протоколоор Node-Red сервертэй холбогддог. Төхөөрөмж нь тоглогчийн тэмдэглэлийг сервер рүү, серверээс бусад тоглогчид руу илгээдэг тэмдэгт болгон хөрвүүлдэг. Энэ нь хүн бүр сүлжээний холболтоо тасалдуулалгүйгээр аяыг тоглож, сонсох боломжийг олгодог.

Уянга нь хоёр үндсэн харааны индикатортой. Эхнийх нь LED зурвас бөгөөд Loop эхлэх, дуусах цагийг тоглогчдод мэдэгдэх бөгөөд энэ нь тоглогчийн ээлж эсэхийг хэлж өгдөг. Хоёр дахь нь бүтээгдэхүүний төв хэсэгт байрлах LED дэлгэц бөгөөд одоо байгаа дууг нүдээр харуулахад ашиглагддаг. 3 -аас 1 хүртэл тоолох тоолол нь тоглож эхлэхийг харуулдаг бөгөөд цаг хугацааны дэлгэц нь хэрэглэгчийг бүлгийн аялгуунд хэзээ, хэрхэн хувь нэмэр оруулахыг зааж өгдөг. Бичлэгийг компанийн үүлд автоматаар хадгалж, цаашид ашиглах болно.

Энэхүү төслийг Herzliya (IDC) салбар дундын төв дэх Media инновацийн лабораторийн (MiLab) дөрвөн оюутан бүтээжээ: Shahar Agassy, Eden Bar-Tov, Gal Echchar, Gad Stern. Звика Маркфелд, Нетта Офер, Михал Лечинский нарын туслалцаа, Ноа Мораг, Орен Цукерман нарын удирдлага дор.

Энд зарим зүйлийг хэрхэн хэрэгжүүлэх талаар сурахад надад тусалсан гайхалтай сургамжийг бүтээсэн Том Гранотод баярлалаа (энд байгаа зарим алхмуудыг энэхүү агуу зааврын дагуу загварчилсан болно).

Хангамж

  • 3D принтер
  • ESP8266
  • 7 товчлуур
  • 8X8 LED матриц
  • WS2812B LED зурвас
  • I2S өсгөгч
  • Эмэгтэй 1/8 "(3.5мм) 4 туйлт аудио залгуур
  • 4X 1K эсэргүүцэл
  • 1X3K эсэргүүцэл

Алхам 1: Урсгалыг ойлгох

Урсгалыг ойлгох
Урсгалыг ойлгох
Урсгалыг ойлгох
Урсгалыг ойлгох

Энэ төсөлд бид зарим асуудлыг шийдвэрлэхийг хичээсэн

  1. Тоглогчид нэгэн зэрэг тоглохын тулд бид үүнийг хэрхэн онлайнаар хийх вэ?
  2. Бид хэрхэн интернетийн хоцролтыг тойрч, үл үзэгдэх туршлага бий болгох вэ?
  3. Хөгжмийн мэдлэггүй хүмүүст ч гэсэн хөгжмийг хэрхэн сайн сайхан болгох вэ?

Хөгжмийн цаг хугацаа, цувралчлал

Эхний асуудлыг шийдэхийн тулд бид MIDI протоколыг үзээд үүнийг ашиглахыг оролдсон боловч энэ нь бидэнд хэрэгтэй байгаагаас илүү бат бөх болохыг олж харсан бөгөөд бид үүнийг энгийн болгохыг хүсч байсан бөгөөд ингэснээр бид анхны ажлын загварыг бүтээж чадна. Тиймээс бид MIDI-ээс урам зориг авч, хөгжмийн хүрдийг тоглогчдын хэмжээнээс (0-5 хүртэл) хэд хэдэн тоогоор дүрсэлсэн болгосон (бид дараа нь бүх хөгжмийн математикийг тайлбарлах болно).

Хөгжимд бид хэмнэлийг хөгжмийн баар болгон хуваадаг. Баар бүр нь үндсэндээ жижигхэн сегмент бөгөөд бид 4/4 (хөгжмийн бааранд 4 цохилт гэсэн утгатай) ашиглахыг сонгодог.

Дараа нь цохилт бүрийг 4 дээж авах цонх болгон хуваадаг тул тоглосон тэмдэглэл бүрийг сайн байрлалд автоматаар тохируулж, дууг сервер рүү илгээх тоогоор дүрслэх боломжийг олгодог.

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

  1. Тоглогчийг цөөн сонголтод анхаарлаа төвлөрүүлэхийн тулд түлхүүрийн тоог хязгаарлаарай.
  2. Бид хамтдаа сайн тоглодог ижил хэмжээтэй тэмдэглэлийг сонгосон тул диссонанс дуу гарахгүй.
  3. Хэвлэл бүрийг хэмнэлийн "цонх" дээр тавьдаг тул тоглогчийн хөгжмийг хэмнэлээс нь хөндийрүүлдэг

Харилцааны протоколууд

Хөгжмийн цаад логикийг ойлгосны дараа бид үүнийг тоглогчдынхоо хооронд хэрхэн дамжуулах вэ?

Үүний тулд бид төхөөрөмжүүдийн хооронд мессеж дамжуулдаг нийтлэх захиалга өгөх сүлжээний MQTT протоколыг ашигладаг.

Тоглогч бүр хоёр сэдвийг захиалдаг: давталт (хамгийн сүүлийн давталтыг авах) ба эргэлт (синхрончлох зорилгоор одоогийн тоглогчийн ID -г авдаг).

Тоглогчид аяыг тоглож дуусаад UP товчлуурыг дарах бөгөөд давталт (шинэчлэгдсэн) нь MQTT брокер руу илгээгдэх бөгөөд үүнийг давталтын суваг дээрх бүх тоглогчдод буцааж дамжуулах болно.

Энэ давталтыг тоглож дуустал "унтраасан" хэвээр байх бөгөөд дараа нь орлуулах болно. Тиймээс энэ нь тоглогчид ил тод байх болно. Мөн шинэ давталт нь тоглуулагчийн төхөөрөмж дээр одоогоор хадгалагдаж байгаа тул хөгжимд интернетийн хоцрогдол байхгүй тул бид хоёр дахь асуудлыг шийдсэн.

Алхам 2: Серверийг тохируулах - Ngrok

Серверийг тохируулах - Ngrok
Серверийг тохируулах - Ngrok
Серверийг тохируулах - Ngrok
Серверийг тохируулах - Ngrok

ngrok бол хонгилын үйлчилгээ юм. Энэ нь серверийг тохируулах, DNS бүртгэлтэй ажиллахад төвөг учруулахгүйгээр дотооддоо ажиллаж байгаа үйлчилгээг (манай тохиолдолд Node -RED) гадаад ертөнцөд үзүүлэх боломжийг бидэнд олгодог. Та зүгээр л Node-RED-ийг компьютер дээрээ ажиллуулж, ngrok-ийг Node-RED ажиллаж байгаа порт дээр ажиллуулна уу.

Энэ бол та ямар сүлжээнд холбогдсоноос үл хамааран дэлхийн өнцөг булан бүрээс Node -RED руу нэвтрэх боломжтой URL авах болно.

Суулгалт ба тохиргоо

  1. Эндээс өөрийн үйлдлийн системийн ngrok програмыг татаж аваарай.
  2. Татаж авах хуудсан дээрх "Гал асаах" хүртэл алхамыг дагана уу.
  3. "Fire it up step" хэсэгт 80 -г 1883 -аар сольж, http -ийг tcp -д байгаа шиг./ngrok tcp 1883 -ээс хамааран өөрчилнө үү.
  4. URL болон портын дугаарыг хадгална уу (зураг дээр харсан) бидэнд дараа нь хэрэгтэй болно.

Алхам 3: Серверийг тохируулах - Node -Red

Серверийг тохируулах - Улаан -зангилаа
Серверийг тохируулах - Улаан -зангилаа

Төслийн сервер логик, Node-RED нь янз бүрийн програм хангамж (тоног төхөөрөмж!) Холбох боломжийг олгодог харааны програмчлалын орчин юм.

Энд бид бүх тоглогчдын хоорондын харилцааны логикийг хийсэн (гогцоог хуваалцах, хүлээн авах, эргэлтийг зохицуулах)

Node-Red-ийг суулгах

Манай Node-RED урсгалыг локал компьютер дээрээ ачаалахын тулд дараах алхмуудыг дагана уу.

  1. Node-RED нь Node.js шаарддаг, эндээс суулгаарай
  2. Энд байгаа зааврыг ашиглан Node-RED-ийг өөрөө суулгаарай.

Одоо та Node-RED-ийг суулгасан бол дээрх алхам дээрх зааврыг ашиглан үүнийг ажиллуулаад хоосон зотон хуудсыг харах боломжтой болно. Энэ нь https://127.0.0.1:1880 хаягаар байрлах ёстой

Та одоо энэ төсөлд ашиглаж байсан урсгалыг импортлох хэрэгтэй болно, та үүнийг эндээс олж болно, импорт дарж JSON файлыг нэмээд Deploy дарна уу.

Node-Red-ийг суулгах:

Хэрэв та энэ алхамд хавсаргасан зургийг харвал бидэнд 2 үндсэн "үйлдэл" байгааг харах боломжтой бөгөөд бид тоглогчдынхоо нэгээс одоогийн мөчлөгийг хүлээн авч, бусад тоглогчдод дамжуулдаг. үүнээс гадна бид бүх тоглогчдод шинэ ээлжийг дамжуулж байна. Тиймээс тоглоом синхрончлогдсон хэвээр байх болно.

Алхам 4: Серверийг тохируулах - MQTT (шумуул)

Серверийг тохируулах - MQTT (шумуул)
Серверийг тохируулах - MQTT (шумуул)

Node-RED нь өөрийн MQTT брокергүй тул MQTT-ээр дамжуулан мэдрэгч, идэвхжүүлэгчидтэйгээ холбоо барих шаардлагатай тул бид тусгай зориулалтын MQTT брокер ашиглах болно. Node-RED нь шумуулыг санал болгодог тул үүнийг ашиглах болно. MQTT -ийн тухай болон яагаад үүнийг IoT төслүүдэд ихэвчлэн ашигладаг талаар зарим мэдээллийг эндээс үзнэ үү.

Суулгалт ба тохиргоо

  1. Эндээс Mosquitto -г татаж аваад үйлдлийн системийнхээ дагуу суулгаарай.
  2. Ихэвчлэн Node-RED-ийг шумуултай холбохын тулд энд байгаа зааврыг дагаж мөрдөх шаардлагатай болно. Гэсэн хэдий ч, хэрэв та манай урсгалыг ашигласан бол энэ нь танд аль хэдийн тохируулагдсан болно. Хэрэв та урсгал болон Mosquitrro -ийг зөв суулгаж, Mosquitto нь 1883 порт дээр ажилладаг бол (энэ нь анхдагчаар ажилладаг), хайрцагнаас гарч ажиллах ёстой.
  3. Энэ нь MQTT брокер болон таны Node-RED сервер нэг машин дээр ажилладаг гэсэн үг гэдгийг анхаарна уу. Энэ нь системийн доторх харилцаа холбоог хялбарчлахад тустай. Дэлгэрэнгүй мэдээллийг доорх тэмдэглэлээс үзнэ үү.

MQTT урсгалыг хянах

Би замын хөдөлгөөнийг хянахын тулд MQTTfx -ийг ашигласан бөгөөд энэ нь маш энгийн GUI -тэй гайхалтай хэрэгсэл юм.

Алхам 5: Код

Код
Код

Та кодыг GitHub дээрээс олж болно (бүх өгөгдлийн файлууд болон config.h -тэй хамт)

Хараат байдал:

esp2866 руу кодыг ачаалахаас өмнө та хэд хэдэн номын сан суулгах хэрэгтэй болно.

  1. libmad-8266 (SPIFF болон I2S форматаар хөгжмийг тайлах)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

SPIFF ашиглан дууг ESP руу байршуулах:

  1. энэхүү гайхалтай сургамжийг дагаж мөрдөөрэй.
  2. өгөгдлийн хавтасыг эх кодын санд нэмнэ үү.
  3. Хэрэгслүүд дэх Arduino IDE дээр Flash хэмжээг "4MB (FS: 3MB TOA: ~ 512KB)" болгож өөрчилнө үү.
  4. Мөн Багаж хэрэгслийн доор ESP2866 Sketch Data Upload -ийг дарна уу

Параметрүүдийг тохируулах:

Үүний дараа config.h файл руу ороод өмнөх алхамаас авсан WIFI итгэмжлэл, ngrok URL болон порт гэх мэт шаардлагатай өгөгдлийг нэмнэ үү (хавсаргасан зургийг лавлахын тулд шалгана уу).

p.s-Би ухаалаг гар утсандаа WIFI болон ngrok өгөгдлийг тохируулахад туслах автомат холболтын функцийг хараахан нэмээгүй байгаа, учир нь энэ бол үзэл баримтлалын анхны нотолгоо байсан тул би үүнийг хэзээ нэгэн цагт нэмэхийг хүсч байна.

Хүссэн тоглогчийнхоо хэмжээг тохируулна уу (энэ тоглоом 2-3 тоглогчийн хувьд хамгийн сайн ажилладаг бөгөөд хайрцагнаас гадна 2 тоглогчийн хувьд дуу чимээтэй байдаг). гэхдээ илүү ихийг тохируулах боломжтой:

тоглогч бүрийн хувьд хэрэглэгчийн тусгай сэдвийн хүрээнд давталт нийтлэхийн тулд улаан-улаан хэсэгт өөр урсгал оруулна уу.

Мөн та энэ массивыг өөрийн хүссэн дуунд нийцүүлэн хөгжмийн дууг засах боломжтой.

Эндээс та 3 төрлийн багаж хэрэгслийг харж болно (0 тоглогчийн Chrods, 1 тоглогчийн тугалга, 2 тоглогчийн Bass)

const char* paths [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};

Алхам 6: 3D загварыг хэвлэх

3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх
3D загварыг хэвлэх

Эхний алхам бол STL татаж аваад хэвлэ.

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

хүссэн өнгөөр будна

Алхам 7: Угсрах, гагнах

Угсрах, гагнах
Угсрах, гагнах

Жинхэнэ ид шид эндээс л гардаг.

Та эдгээр схемийг дагаж, бүх зүйлийг гагнах боломжтой.

Та ПИН -ийн байрлалыг өөрчилж болно гэдгийг санаарай, үүнийг кодонд оруулахаа мартуузай.

A0 ба I2S нь нэлээд бэхлэгдсэн байна.

A0 нь резистор гүүрэнд зориулагдсан тул (энэ зааврын дагуу 5 товчлуурын аль товчлуур дээр дарагдсан болохыг мэдэхийн тулд бид гүйдлийн ялгааг ашигладаг.

I2S нь тодорхой кодчилолтой тул та үүнийг эндээс олж болно

Алхам 8: Найзуудтайгаа хэдэн гогцоо тоглоорой

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