alf45tar / PedalinoMini

Wireless and Bluetooth MIDI Foot Controller
GNU General Public License v3.0
479 stars 84 forks source link

I made one #342

Closed Samantha-uk closed 3 months ago

Samantha-uk commented 2 years ago

I've just finished making one of these :)

It is based on an AZ Delivery WROOM-32 Dev Kit v4 board, which I added to my platformio.ini

[platformio]
default_envs = 
    esp32dev
    esp32doit-devkit-v1
    esp32doit-devkit-v1-ble
    esp32doit-devkit-v1-wifi
    esp-wrover-kit
    heltec_wifi_kit_32
    ttgo-t-eight
    ttgo-t-eight-ble
    ttgo-t-eight-wifi
    ttgo-t-display
    az-delivery-devkit-v4

...

[common]
build_flags_az-delivery-devkit-v4 = 
    -D PLATFORMIO_ENV=$PIOENV
    -D PEDALINO_MINI
    -D AZ_DELIVERY_DEVKIT_V4
    -D DEBUG_ESP_PORT=Serial
    -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_WARN
;   -D BATTERY
    -D SSD1306WIRE
    -D WEBSOCKET
    -D DIAGNOSTIC
...

[env:az-delivery-devkit-v4]
build_flags = ${common.build_flags_az-delivery-devkit-v4}
upload_port = /dev/tty.usbserial-0001
monitor_port = ${env:az-delivery-devkit-v4.upload_port}

image

the only issue I've run into is that to flash the firmware or attach to the monitor, one needs to hold the boot button on the wroom board to tell it to listen. I read somewhere that by soldering a small cap in place this can be avoided, not tried it yet.

I found I could not initially build the firmware, seeing the following error:

Compiling .pio/build/az-delivery-devkit-v4/libb64/NimBLE-Arduino/nimble/nimble/host/src/ble_hs_resolv.c.o
.pio/libdeps/az-delivery-devkit-v4/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c:31:26: fatal error: soc/soc_caps.h: No such file or directory
compilation terminated.
*** [.pio/build/az-delivery-devkit-v4/libb64/NimBLE-Arduino/nimble/nimble/host/src/ble_hs_hci_cmd.c.o] Error 1

I found that pinning the NimBLE-Arduino library to version 1.3.7 resolved this. I changed https://github.com/alf45tar/PedalinoMini/blob/master/platformio.ini#L141 to https://github.com/h2zero/NimBLE-Arduino/archive/refs/tags/1.3.7.zip

I decided I wanted 8 'digital' switches (and did not want to use pull down resistors) so I modified the pedal configuration for this board; I don't intend to use analog so I 'stole' GPIO_NUM_32 & GPIO_NUM_33

#elif defined AZ_DELIVERY_DEVKIT_V4
#undef PEDALS
#define PEDALS 8
const byte pinD[] = {GPIO_NUM_25, GPIO_NUM_26, GPIO_NUM_27, GPIO_NUM_14, GPIO_NUM_12, GPIO_NUM_13, GPIO_NUM_32, GPIO_NUM_33};
const byte pinA[] = {GPIO_NUM_36, GPIO_NUM_39, GPIO_NUM_34, GPIO_NUM_35, GPIO_NUM_0, GPIO_NUM_0, GPIO_NUM_0, GPIO_NUM_0};
#define FACTORY_DEFAULT_PIN GPIO_NUM_0
#define USB_MIDI_IN_PIN GPIO_NUM_18
#define USB_MIDI_OUT_PIN GPIO_NUM_19
#define DIN_MIDI_IN_PIN GPIO_NUM_15
#define DIN_MIDI_OUT_PIN GPIO_NUM_4
#define BATTERY_PIN GPIO_NUM_36 // TODO: Check into this
#define FASTLEDS_DATA_PIN GPIO_NUM_5
#else

Seems to work OK.

Pedal: 1     Button: 1    EventType: 0     ButtonState: 0
Action: PRESET -
PROGRAM CHANGE.....Program   0.....Channel  4
Received from BLE MIDI  ProgramChange 0x00   Channel 04
Pedal: 1     Button: 1    EventType: 1     ButtonState: 1
Pedal: 2     Button: 1    EventType: 0     ButtonState: 0
Action: SNAP 1
CONTROL CHANGE.....Code  69......Value   0.....Channel  4
Pedal: 2     Button: 1    EventType: 1     ButtonState: 1
Pedal: 3     Button: 1    EventType: 0     ButtonState: 0
Action: SNAP 2
CONTROL CHANGE.....Code  69......Value   1.....Channel  4
Pedal: 3     Button: 1    EventType: 1     ButtonState: 1
Pedal: 4     Button: 1    EventType: 0     ButtonState: 0
Action: SNAP 3
CONTROL CHANGE.....Code  69......Value   2.....Channel  4
Pedal: 4     Button: 1    EventType: 1     ButtonState: 1
Pedal: 4     Button: 1    EventType: 2     ButtonState: 1
Pedal: 5     Button: 1    EventType: 0     ButtonState: 0
Action: PRESET +
PROGRAM CHANGE.....Program   1.....Channel  4
Received from BLE MIDI  ProgramChange 0x01   Channel 04
Pedal: 5     Button: 1    EventType: 1     ButtonState: 1
Pedal: 6     Button: 1    EventType: 0     ButtonState: 0
Action: TUNER
CONTROL CHANGE.....Code  68......Value   0.....Channel  4
Pedal: 6     Button: 1    EventType: 1     ButtonState: 1
Pedal: 7     Button: 1    EventType: 0     ButtonState: 0
Pedal: 7     Button: 1    EventType: 1     ButtonState: 1
Pedal: 8     Button: 1    EventType: 0     ButtonState: 0
Pedal: 8     Button: 1    EventType: 1     ButtonState: 1

But what does it LOOK like!? IMG_20220601_071450

IMG_20220527_061621 IMG_20220527_112231 IMG_20220601_055635_MP

And those extra windows!?!? I want to have a scribble strip for each footswitch, so I've left space to position an OLED display between pairs of switches. I'm aiming for something like this image

I aim to use a multiplexer to resolve the I2C addressing issue. https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/overview explains how.

I just need to wrap my head around the OLED display code to support this and modify it accordingly; then wire in the multiplexer and additional OLED display panels.

rigr commented 2 years ago

Congratulations, it looks great. Do you aim to share the stl file for your box? Thx! Richard Message ID: @.***>

jisv48 commented 2 years ago

Awesome project…what plastic did you use for the printed box? Thanks

Sent from my iPhone

On Jun 1, 2022, at 7:11 AM, rigr @.***> wrote:

 Congratulations, it looks great. Do you aim to share the stl file for your box? Thx! Richard Message ID: @.***>

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.

Samantha-uk commented 2 years ago

Congratulations, it looks great. Do you aim to share the stl file for your box? Thx! Richard Message ID: @.***>

Here you go :)

enclosure.zip

Samantha-uk commented 2 years ago

Awesome project…what plastic did you use for the printed box? Thanks Sent from my iPhone On Jun 1, 2022, at 7:11 AM, rigr @.> wrote:  Congratulations, it looks great. Do you aim to share the stl file for your box? Thx! Richard Message ID: @.> > — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.

image

mknerr commented 2 years ago

Very nice! And thanks for sharing your files with the community. What wireless protocol are you using to connect to the Stomp, and which dongle are you using? Thanks! Matthew

Samantha-uk commented 2 years ago

Matthew, I've got a CME Widi Master plugged into the Stomp. image I got it so I could use MIDI Designer app on my iPad. The Widi master seems quite good. I can connect to it from Mac OS, Android, Pad OS and, of course, Pedalino. The system is configured to use BLE MIDI Only; I'm not that knowledgable about it ... I believe it is supported by the NimBLE library.

CleanShot 2022-06-02 at 04 28 36@2x

Connection is pretty seamless ... whichever device I turn on second, the BLE link seems to establish in just a few seconds.

mknerr commented 2 years ago

Okay, so can Pedalino connect directly to the widimaster, or only via another device? Thanks,

Samantha-uk commented 2 years ago

When I am using my setup in "gig" mode I have the following

When I power it all on, it connects without further intervention. The Pedalino box starts up quicker than the Stomp.

The MIDI BLE on the Pedalino talks directly to the WIDIMaster, which then passes the MIDI to the HX stomp (MIDI also travels from Stomp thru WIDIMaster to the Pedalino), the only other things I need are in my sound chain (Guitar/cables/amp/cab) 🎸 🔈 😄

mknerr commented 2 years ago

Very nice! Thanks for the explanation.

pruttelherrie commented 2 years ago

And those extra windows!?!? I want to have a scribble strip for each footswitch, so I've left space to position an OLED display between pairs of switches. I'm aiming for something like this image

I aim to use a multiplexer to resolve the I2C addressing issue. https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/overview explains how.

I just need to wrap my head around the OLED display code to support this and modify it accordingly; then wire in the multiplexer and additional OLED display panels.

Hi Samantha, you could possibly do without the multiplexer, take a look at this: https://github.com/bitbank2/Multi_OLED

I have done something similar with cheap chinese colour SPI displays and the TFT_eSPI library, but that won't work with Pedalino I think.

DWSQUIRES commented 1 year ago

Did you ever manage to get the multi displays working? Very interested. I'm also building one to use with an HX Stomp!

Samantha-uk commented 1 year ago

I never did as I got sidetracked with another project (patchbox OS based multi effects, it can run the OSS that Moddevices use on their Dwarf and other pedals). I had intended to go down this kind of route ( https://github.com/bitbank2/Multi_OLED).

Sadly all my possessions were destroyed in a home fire a couple of weeks ago so it’s going to be some time before I can even consider trying it out.

On Thu, 25 Aug 2022 at 21:19, DWSQUIRES @.***> wrote:

Did you ever manage to get the multi displays working? Very interested. I'm also building one to use with an HX Stomp!

— Reply to this email directly, view it on GitHub https://github.com/alf45tar/PedalinoMini/issues/342#issuecomment-1227719412, or unsubscribe https://github.com/notifications/unsubscribe-auth/AK57BQD6FDG2ISRHBCZKM73V27INPANCNFSM5XQNNIRQ . You are receiving this because you authored the thread.Message ID: @.***>

DWSQUIRES commented 1 year ago

Oh no! That's so sad! Did you loose your instruments and pedals too?

Samantha-uk commented 1 year ago

Sadly yes, including a bass I’d hand built and the wood/bits for the second hand build. I focus on the fact that I survived and no one got hurt!

On Fri, 26 Aug 2022 at 21:13, DWSQUIRES @.***> wrote:

Oh no! That's so sad! Did you loose your instruments and pedals too?

— Reply to this email directly, view it on GitHub https://github.com/alf45tar/PedalinoMini/issues/342#issuecomment-1228889773, or unsubscribe https://github.com/notifications/unsubscribe-auth/AK57BQCH7NQP7NGA3VAHRK3V3EQOHANCNFSM5XQNNIRQ . You are receiving this because you authored the thread.Message ID: @.***>