132 lines
5.5 KiB
Org Mode
132 lines
5.5 KiB
Org Mode
#+TITLE: kiber kegel
|
|
|
|
* Splošno
|
|
|
|
Kiber kegli so del [[https://mismonismo.org/shows/music-table-glasbena-miza/][glasbene mize]].
|
|
|
|
Ta zbirka kode vsebuje načrte, dokumentacijo in kodo za nadgradnjo keglov v glasbene inštrumente. Preko brezžičnega mikrokrmilnika (~ESP32~) pošiljajo spremembe rotacij in pospeškov gibalnega senzorja (~MPU9255~) v računalnik, ki podatke v obliki OSC pretvori v MIDI signale.
|
|
|
|
* Strojni del - telo
|
|
** Mere kegla
|
|
|
|
Najdaljši premer - 82mm
|
|
Špica - 15mm
|
|
32mm je lahko dolg vstavek
|
|
27mm je široka spodnja odprtina (blizu držalu)
|
|
|
|
Zapečemo ga s strani (izrez + prispajk nazaj). Kasneje sva se raje odločila za vijake, tako je kegel lažje popravljat.
|
|
|
|
#+CAPTION: Prototip kegla
|
|
[[./slike/2022-11-27_kegel.jpg]]
|
|
|
|
#+CAPTION: Narejen kegel spredaj
|
|
[[./slike/IMG_20230618_131926.jpg]]
|
|
|
|
#+CAPTION: Narejen kegel zadaj
|
|
[[./slike/IMG_20230618_131933.jpg]]
|
|
|
|
** Elektonske povezave
|
|
|
|
| MPU9255 | ESP32 |
|
|
|---------+-------|
|
|
| VCC | 3.3v |
|
|
| GND | GND |
|
|
| SCL | 22 |
|
|
| SDA | 21 |
|
|
|
|
Baterijski priklop omogoča [[https://docs.wemos.cc/en/latest/d1_mini_shield/battery.html][baterijski ščit]] za [[https://docs.wemos.cc/en/latest/d1/index.html][wemos d1 mini]] (esp32 varjanta). Lahko bi imeli tudi kakšno esp32 krmilnik z vgrajenim regulatorjem napetosti in priklopom na baterijo.
|
|
|
|
Ena žica baterije (+ pol?) je vezana preko stikala, speljanega na rob kegla, da ga je mogoče ugansniti. ~POZOR~ pri priklopu baterije na baterijski ščit moramo pazit na polariteto; barve baterijskih kablov se ne skladajo nujno s +/- poli na ščitu, napačen priklop lahko skuri tuljavo.
|
|
|
|
#+CAPTION: Kegel znotraj
|
|
[[./slike/IMG_20230618_131305.jpg]]
|
|
|
|
USB priklop baterijskega ščita je speljan za rob kegla za lažje polnjenje preko robustnejšega vtikača USB tipa B.
|
|
|
|
#+CAPTION: Kegel znotraj 2
|
|
[[./slike/IMG_20230618_130022.jpg]]
|
|
|
|
Sprva je za brezžični prenos podatkov skrbel bluetooth protokol. Kasneje se je pa izkazalo da je precej lažje uporabit ESP-NOW preko še enega krmilnik za sprejem. Tako je lažje in hitreje vzpostavit povezavo s kegli, prenos je konsistentnejši, doseg bi moral biti večji (tukaj je sicer bluetooth bil dovolj dober).
|
|
|
|
S pomočjo [[https://github.com/thomasfla/Linux-ESPNOW][tega projekta]] bi moralo biti mogoče prejemati ESPNOW pakete brez dodatnega sprejemnika.
|
|
|
|
TODO slika sprejemnika.
|
|
|
|
** Napačen gibalni senzor
|
|
|
|
Rado se zgodi, da naročen senzor ni ~MPU-9255~, ampak ~MPU-6500~ ali ~MPU-6150~. Problem teh dveh je, da sta 6-osna in tako ne vključujeta magnetometra. Tako ni mogoče določiti gravitacijske osi in postanejo odčitki pospeškov za naš željen namen precej neuporabni. Gibalni senzor nam pomaga identificirati [[file:IMUIdentifier/IMUIdentifier.ino][ta skica]].
|
|
|
|
* Koda
|
|
|
|
Poganjanje projekta omogoča tudi koda, ki se nahaja na več mestih; arduino koda za krmilnik je tako v keglu kot v sprejemniku, potem imamo pretvornik brezžično prejetih signalov v midi (neposredno oz. pretvorjeno). Opcionalno tudi vizualiziramo zadevo.
|
|
|
|
** Krmilnik v keglu
|
|
|
|
Krmilnik v keglu, ki prebira senzorje in pošilja podatke v sprejemnik, je spisan [[file:osc32_9255_rtimulib_espnow/osc32_9255_rtimulib_espnow.org][v tej skici]]. Preden skico zapečemo na kegel, je potrebno kalibrirati magnetometer.
|
|
|
|
*** Kalibracija
|
|
Magnetometerski senzor je potrebo kalibrirati, skica za kalibracijo je [[file:ArduinoMagCal/ArduinoMagCal.ino][tukaj]]. Skico zapečemo na krmilnik in sledimo navodilom na serijskem monitorju.
|
|
|
|
** Sprejemni krmilnik
|
|
|
|
Skica za brezžični sprejemnik je [[file:osc32_espnow_sprejemnik/osc32_espnow_sprejemnik.ino][tukaj]]. Z nekaj prilagoditvami lahko namesto ~ESP32~ uporabimo tudi ~ESP8266~, ki prav tako podpira ~ESP-NOW~ protokol.
|
|
TODO literate programming!
|
|
|
|
** Pretvornik iz serijskega OSC v midi
|
|
|
|
- wavey wind TODO
|
|
- pretvornik TODO
|
|
|
|
* Scenariji
|
|
** 30. 11. 2022 (cirkulacija)
|
|
1. en kegel
|
|
samo deformacija, mogoce malo zoom
|
|
pulz na zogico, + nojz (glasba, rocno?)
|
|
+ BREZ zogic + BREZ dodatnih
|
|
2. dva kegla
|
|
3. ena zogica
|
|
4. 2 kegla + zogica
|
|
|
|
===== VKLOP LUCI ======
|
|
|
|
reset (calibrate, zoom blizu)
|
|
(nojz stran)
|
|
(vklopimo zogice)
|
|
|
|
5. komad: ena zogica!
|
|
6. tri zogice
|
|
|
|
7. band: vkljucimo publiko
|
|
+ VKLOP dodatni kegli
|
|
|
|
TODO:
|
|
- barvne palete za zogice (izmenicno levo desno), kegle
|
|
- upostevaj velocity zogic
|
|
- WW kontroler za vklop / izklop deformacije, ostalih elementov (barva ja / ne)
|
|
- postavit kegle v sredino
|
|
- postavit zogice v kader
|
|
|
|
* Ideje za naprej
|
|
** sprejemnik → bitwig
|
|
Namesto pretvorne komponente iz serijskega OSC v midi bi lahko bitwig neposredno prejemal podatke iz sprejemnika. [[https://github.com/Dewb/bitwig-serialosc-example][Tale primer]] skripte za bitwig izgleda dokaj podoben željenemu in bi z nekaj prilagoditvami verjetno lahko vskočil. Slaba stran je specifičnost bitwigu
|
|
|
|
** supercollider sprejemnik
|
|
Pretvorbo iz serijskega OSC v midi bi lahko implementirali v supercolliderju. [[https://github.com/madamdata/SLIPDecoder][Tale quark]] dela podobno stvar, v delu imam generalizacijo. Supercollider je nekoliko lažje namestit kot javascript, precej bolj prijeten je za eksperimentacijo. Enostavno bi bilo narediti preprost GUI v njem.
|
|
|
|
* Težave
|
|
|
|
** počasno/redko pošiljanje podatkov
|
|
|
|
Če se gibalni podatki pri napajanju iz baterije zelo počasi pošiljajo, pri povezavi preko USB kabla pa kegel deluje pravilno, je verjetno baterija prazna in jo je treba napolnit.
|
|
|
|
** problem pri nalaganju firmware-a
|
|
|
|
#+begin_quote
|
|
esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
|
|
#+end_quote
|
|
|
|
V arduino IDE nastaviš ~Flash mode~ na ~DIO~ namesto ~QIO~.
|
|
|