Мазмуну:

Обону: 8 кадам (Сүрөттөр менен)
Обону: 8 кадам (Сүрөттөр менен)

Video: Обону: 8 кадам (Сүрөттөр менен)

Video: Обону: 8 кадам (Сүрөттөр менен)
Video: Мына сага фигура. Айгерим Расул кызы🍑🍑🍑🔥🔥🔥🍆🍆🍆 #bulbul #кыргызчаырлар #бишкек #кыргызстан #хит 2024, Ноябрь
Anonim
Image
Image
Агымды түшүнүү
Агымды түшүнүү

Үйдөн иштөөгө мүмкүндүк берүүчү көптөгөн артыкчылыктар жана технологиялык чечимдер менен бирге, кесиптештердин арасында жашоо жардамын түзүү жана түзүү кыйынчылыгы дагы эле кала берүүдө. MELODY-бул биргелешкен кыска музыкалык джемдерди түзүүгө мүмкүнчүлүк берген санариптик-физикалык түзүлүш. Кесиптештер убакытты координациялайт жана түзмөк бурулуштар жана ар кандай туш келди үндөр менен джем сессиясын орнотот. Биринчи катышуучу белгилүү бир ритмди коет, андан кийин ар бир катышуучу белгиленген ритмге туура келген өзүнүн музыкалык бөлүмүн кошот. Музыкалык билими жок колдонуучуларга жеңилдетүү үчүн, программалык камсыздоо аларга өздөрүнүн чыкылдатуусун тандап жана тиешелүү ритмге тууралоо менен ылдамдыкты сактоого жардам берет. Сеанс 3 мүнөттөн кийин бүт катышуучулар өз бөлүгүн жаздырып бүткөндө аяктайт.

Бул кантип иштейт?

Мелодия MQTT протоколу боюнча Node-Red сервери менен байланышкан ESP2866 жабдыктарына негизделген. Түзмөк оюнчунун жазууларын серверге жана серверден башка оюнчуларга кайра жөнөтүлгөн символдорго которот. Бул ар бир адамга тармактык туташуусунан үзгүлтүксүз обонду ойноого жана угууга мүмкүнчүлүк берет.

Мелодиянын эки негизги визуалдык көрсөткүчү бар. Биринчиси, оюнчуга Loop качан башталып, качан бүтөөрүн жана оюнчуга кезек келгенин көрсөтүүчү LED тилкеси. Экинчиси, өнүмдүн ортосунда жайгашкан дисплей, ал учурдагы обонду визуалдуу түрдө көрсөтүү үчүн колдонулат. 3төн 1ге чейинки кайра саноо ойнотууну баштоону билдирет жана убакыт дисплейи колдонуучунун топтун Мелодиясына качан жана кантип салым кошкусу келерин көрсөтөт. Жазуу келечекте колдонуу үчүн автоматтык түрдө компаниянын булутуна сакталат.

Бул долбоор Herzliya (IDC) дисциплиналар аралык борборунун Media инновациялар лабораториясынын (MiLab) төрт студенти тарабынан иштелип чыккан: Шахар Агасси, Эден Бар-Тов, Гал Эшчар жана Гад Штерн. Звика Маркфелд, Нетта Офер жана Михал Лещинскийдин жардамы жана Ноа Мораг менен Орен Цукермандын жетекчилиги менен.

Том Гранотко рахмат, бул жерде кээ бир нерселерди кантип ишке ашырууну үйрөнүүгө жардам берген улуу инструкторду түзгөнү үчүн (бул жердеги кээ бир кадамдар ушул улуу нускоочуга окшоштурулган).

Жабдуулар

  • 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, түзмөктөр ортосунда билдирүүлөрдү ташыган жарыялоого жазылуу тармагынын протоколун колдонобуз.

ар бир оюнчу эки темага жазылат: цикл (эң учурдагы циклди алуу) жана кезек (синхрондоштуруу үчүн учурдагы оюнчунун идентификаторун алат).

Өз кезегинде, оюнчу обонду ойноп бүткөндө, ал UP баскычын басат жана цикл (жаңыртылган) MQTT брокерине жөнөтүлөт, ал аны кайра каналдагы бардык оюнчуларга өткөрүп берет.

бул цикл учурдагы цикл ойноп бүтмөйүнчө "иштебей" калат жана аны алмаштырат. Ошентип, ал оюнчу үчүн ачык болот. жаңы укурук учурда плеер түзмөгүндө жергиликтүү түрдө сакталгандыктан, музыканын интернет кечигүүсү жок, андыктан биз экинчи маселени чечтик.

2 -кадам: Server орнотуу - Ngrok

Серверди орнотуу - Ngrok
Серверди орнотуу - Ngrok
Серверди орнотуу - Ngrok
Серверди орнотуу - Ngrok

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

Болду - сиз кайсы түйүнгө туташканына карабастан, дүйнөнүн каалаган жеринен Node -RED кирүү үчүн колдоно турган URL аласыз.

Орнотуу жана Конфигурация

  1. Бул жерден операциялык системаңыз үчүн ngrok жүктөп алыңыз.
  2. Жүктөө барагындагы кадамды ээрчиңиз, "Өрттөө" кадамына чейин.
  3. "Өрт өчүрүү кадамында" 80ди 1883 менен алмаштырыңыз - жана http: tcpдегидей,./ngrok tcp 1883 сиздин абалыңызга жараша
  4. URL жана порттун номерин сактаңыз (сүрөттө көрүнгөн) бизге кийинчерээк керек болот.

3 -кадам: Server орнотуу - Node -Red

Серверди орнотуу - Node -Red
Серверди орнотуу - Node -Red

Долбоордун Server логикасы, Node-RED-бул ар кандай программалык камсыздоону (жана жабдыктарды!) Туташтырууга мүмкүндүк берген визуалдык программалоо чөйрөсү.

Бул жерде биз бардык оюнчулардын ортосундагы логиканы түздүк (циклдерди бөлүшүү жана алуу жана бурулуштарды координациялоо)

Node-Red орнотуу

Node-RED агымын жергиликтүү компьютериңизге жүктөө үчүн төмөнкү кадамдарды аткарыңыз:

  1. Node-RED Node.js талап кылат, аны бул жерден орнотуңуз
  2. бул жердеги нускамаларды колдонуу менен Node-REDдин өзүн орнотуңуз.

Эми сизде Node-RED орнотулгандыктан, аны жогорудагы кадамдагы көрсөтмөлөрдү колдонуп иштетип көрүңүз жана бош кенеп баракчасын көрө аласыз. Ал https://127.0.0.1:1880 жайгашкан болушу керек

Эми сиз бул долбоор үчүн колдонгон агымды импорттошуңуз керек болот, аны бул жерден таба аласыз жана импортту басып, JSON файлын кошуп, жайгаштырууну басыңыз.

Node-Red орнотуу:

эгер сиз бул кадамга тиркелген сүрөттү карасаңыз, анда бизде 2 негизги "иш" бар экенин көрө аласыз, биз бир оюнчубуздан учурдагы циклди алабыз жана аны башка оюнчулардын баарына өткөрүп беребиз. Мындан тышкары, биз бардык оюнчуларга жаңы бурулушту беребиз. Ошентип, оюн синхрондуу бойдон калат.

4 -кадам: Server орнотуу - MQTT (Mosquitto)

Серверди орнотуу - MQTT (Mosquitto)
Серверди орнотуу - MQTT (Mosquitto)

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

Орнотуу жана Конфигурация

  1. Бул жерден Mosquitto жүктөп алып, орнотуңуз, бардыгы сиздин операциялык тутумуңузга ылайык.
  2. Адатта, Node-REDди Mosquitto менен туташтыруу үчүн бул жердеги көрсөтмөлөрдү аткарышыңыз керек. Бирок, эгер сиз биздин агымды колдонгон болсоңуз, ал сиз үчүн мурунтан эле конфигурацияланган. Агымды жана 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. Ошондой эле Tools астында ESP2866 эскиз маалыматын жүктөө

Параметрлерди коюу:

Андан кийин config.h файлына өтүңүз жана WIFI грамоталары жана ngrok URL жана мурунку кадамдагы порт сыяктуу керектүү маалыматтарды кошуңуз (шилтеме үчүн тиркелген сүрөттү текшериңиз).

p.s-Мен дагы эле сиздин акылдуу телефонуңуздан WIFI жана ngrok маалыматтарын коюуга жардам берүү үчүн авто-туташуу мүмкүнчүлүгүн кошо алдым, анткени бул түшүнүктүн биринчи далили болгондуктан, мен аны бир күнү кошкум келет.

Каалаган оюнчуңуздун суммасын коюңуз (бул оюн 2-3 оюнчу үчүн эң жакшы иштейт жана кутудан тышкары 2 оюнчу үчүн бир катар үндөр жүктөлөт). бирок оңой туураласа болот:

ар бир оюнчу үчүн колдонуучуга тиешелүү теманын астындагы циклди жарыялоо үчүн түйүндүн кызыл жагына дагы бир агым кошуңуз.

Ошондой эле, сиз бул массивди ыңгайлаштырылган үндөрүңүзгө өзгөртүү менен музыкалык үндү түзөтө аласыз:

бул жерде сиз инструменттердин 3 түрүн көрө аласыз (0 -оюнчу үчүн Chrods, 1 -оюнчу үчүн коргошун жана 2 -оюнчу үчүн Бас)

const char* жолдору [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 -кадам: Досторуңуз менен бир нече циклдерди ойнотуңуз

Сунушталууда: