Modular Preamp Design

Hello
Congratulations on your project and thank you very much for sharing it.
My intention is to build it with the unbalanced input board and for the output I need one unbalanced and one balanced. My question is if the Daughterboard will work for me in reverse, turning balanced into unbalanced.
As you can see my knowledge is limited, but I am good at DIY with good advice.
I see that no release has been published on GitHub and since I don't know programming either, I'll be grateful if you can provide me with the latest firmware available for the ESP32 and the Atmega since I plan to do both and try which one is better for me.
As I have said, thank you very much for sharing your project, I have been looking for something like this for a long time and everything I have found is incomplete or difficult to understand for my knowledge, on the other hand, yours is very well documented and easy to understand.
Sorry for my English, I used the Google translator.
Thank you so much
 
  • Like
Reactions: Frabor
On this same Easy EDA diagram, there are several terminal assignment errors. Does anyone know how to read the Arduino program to understand which inputs and outputs have been assigned? For example, there is an inversion between the flight encoder and the pulse button.
 
In this view the connector has 16 pins

b7234b1b1fd645a6a57313fd096b881f.png
 
I found for pin assignment in the program. Under Data->src->falk-pre-conf

// ====== DEFINE PINS ====== //
#define WIFI_BUTTON 35
#define SCREEN_CS 5
#define SCREEN_DC 15
#define SCREEN_RST 13
#define MUTE_BUTTON 34
#define INP_ENCODER_A 14
#define INP_ENCODER_B 27
#define VOL_ENCODER_A 26
#define VOL_ENCODER_B 25
#define POWER_BUTTON GPIO_NUM_33
#define POWER_CONTROL GPIO_NUM_32
 
Hey, apologies for the delay, I wasn't getting notifications!

It sounds like you have two different versions of the boards:
  • The control board is the 16-pin variant, which includes power button and LED connections
  • The display board is the 14-pin variant, which doesn't include those connections
This is probably my fault, I can't work out how to update the display board OSHW project to the latest version, it's stuck at an older version of the project. It's a very janky application.

Otherwise the two boards are the same though. As long as you have pins 1-14 connected correctly, I can't see why the screen wouldn't work. For the screen to work, you really only need 3v3, GND and the DISP_ connections - in fact, you can even wire them directly to the display if you use dupont connections.

The pin assignments should all be correct, as I run this firmware on my preamp. Can you tell me which pins you think are wrong?

These are the pin connections for the display board
1736361411917.png


These are the pin connections for the control board. Note that pins 1-14 are the same
1736361460204.png


Do you have the rotary encoders connected? If so, do they work?

Some photos of what you're working with will make it a little easier to troubleshoot.

I will also upload the newer version of the display board to the GitHub repo (https://github.com/gilphilbert/falk/tree/main/pa-01) tonight, I didn't realize it was missing. The files are much easier to manage from there.
 
Hello, I am really happy to read you.
Incredible thing today, just before your message, I managed to debug my card.
I had trouble understanding that all the outputs could not be referenced in the program. I did not know that libraries were loaded at the time of download, affecting these connections.
The fact that it did not work for me is that I remade a single card connecting the screen, the buttons and the ESP32.
As I took as a reference the mix of old card with new ones. I ended up with the volume and input selector inputs reversed.
Thank you for your help.
 
Also, I can't understand the PWR_BUT input.
It has no reference voltage and goes through Bistable switch
Can you explain to me how its programming works?
Does the infrared port work on the advanced board? If so, where can I find the hex code to program a transmitter.
 
Great, so you have the display working?

The button is a simple momentary push button, just needs to be wired across PWR_BUT and 3v3. When it goes high, the ESP32 will go into sleep mode (esp_deep_sleep_start();). Pressing it again will wake the ESP32 again (esp_sleep_enable_ext0_wakeup(POWER_BUTTON, 1); //let the power button wake the MCU). Check out these:
https://github.com/gilphilbert/falk-pa01-advanced/blob/master/src/main.cpp#L109
https://github.com/gilphilbert/falk-pa01-advanced/blob/master/src/main.cpp#L281

I used a bluetooth remote for mine in the end, so I never ended up using the infrared. Since nobody else ever asked for it, I didn't implement anything. That said, it should be pretty trivial if you want to give it a go.
 
Yes, my screen turns on now.
I still have a problem with the sleep mode via PWR_BUT, that I set the voltage to 3V3, the ESP goes to sleep and restarts immediately.
Have you ever had this case? Is there anything else that can wake up the ESP
 
My best guess is that you're catching debounce from the switch. I have a capacitor across the switch - a simple 104 I think from memory. You could try adding one, or you can try increasing the debounce delay (line 301 in in main.cpp, currently set at 250ms)
 
Yes, that's debounce. Either add a capacitor across the button or increase the delay on line 301. Just be aware that increasing it may feel odd - when you press the button there may be a more noticeable delay between pressing the button and the unit actually powering off. I would start with a capacitor across the switch first.