BrewPiLessGx: BrewPiLess with Touched TFT display

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Just found this: the way I interpret it, I can assign ADC to any pin 4-14 (and a few others).

GPIO pins​

ESP32-S3 has 45 GPIO pins, where a subset can be used as ADC channel and as low-power digital input/output in deep-sleep mode, the so-called RTC GPIOs. Some of them are used by special SoC components and are not broken out on all ESP32-S3 modules. The following table gives a short overview.

PinTypeADCRTCPU / PDSpecial functionRemarks
GPIO0In/Out-XX-Bootstrapping
GPIO1In/OutXXX--
GPIO2In/OutXXX--
GPIO3In/OutXXX-Bootstrapping
GPIO4In/OutXXX--
GPIO5In/OutXXX--
GPIO6In/OutXXX--
GPIO7In/OutXXX--
GPIO8In/OutXXX--
GPIO9In/OutXXX--
GPIO10In/OutXXX--
GPIO11In/OutXXX--
GPIO12In/OutXXX--
GPIO13In/OutXXX--
GPIO14In/OutXXX--
GPIO15In/OutXXXXTAL_32K_PExternal 32k crystal
GPIO16In/OutXXXXTAL_32K_NExternal 32k crystal
GPIO17In/OutXXX--
GPIO18In/OutXXX--
GPIO19In/OutXXXUSB D-USB 2.0 OTG / USB-JTAG bridge
GPIO20In/OutXXXUSB D+USB 2.0 OTG / USB-JTAG bridge
GPIO21In/Out-XX--
GPIO26In/Out--XFlash/PSRAM SPICS1not available if SPI RAM is used
GPIO27In/Out--XFlash/PSRAM SPIHDnot available
GPIO28In/Out--XFlash/PSRAM SPIWPnot available
GPIO29In/Out--XFlash/PSRAM SPICS0not available
GPIO30In/Out--XFlash/PSRAM SPICLKnot available
GPIO31In/Out--XFlash/PSRAM SPIQnot available
GPIO32In/Out--XFlash/PSRAM SPIDnot available
GPIO33In/Out--XFlash/PSRAM SPIQ4not available if octal Flash or SPI RAM is used
GPIO34In/Out--XFlash/PSRAM SPIQ5not available if octal Flash or SPI RAM is used
GPIO35In/Out--XFlash/PSRAM SPIQ6not available if octal Flash or SPI RAM is used
GPIO36In/Out--XFlash/PSRAM SPIQ7not available if octal Flash or SPI RAM is used
GPIO37In/Out--XFlash/PSRAM SPIQ8not available if octal Flash or SPI RAM is used
GPIO38In/Out--XFlash/PSRAM SPIDQSnot available if octal Flash or SPI RAM is used
GPIO39In/Out--XMTCKJTAG interface
GPIO40In/Out--XMTDOJTAG interface
GPIO41In/Out--XMTDIJTAG interface
GPIO42In/Out--XMTMSJTAG interface
GPIO43In/Out--XUART0 TXConsole
GPIO44In/Out--XUART0 RXConsole
GPIO45In/Out--X-Bootstrapping (0 - 3.3V, 1 - 1.8V)
GPIO46In/Out--X-Bootstrapping
GPIO47In/Out--XSPICLK_P-
GPIO48In/Out--XSPICLK_N-
PSRAM - Stands for pseudo-static RAM and refers to the SPI RAM.

ADC: Pins that can be used as ADC channels.
RTC: Pins that are RTC GPIOs and can be used in deep-sleep mode.
PU/PD: Pins that have software configurable pull-up/pull-down functionality.

Strapping pins​

GPIO0, GPIO3, GPIO45 and GPIO46 are bootstrapping. GPIO0 and GPIO46 pins are used to boot ESP32-S3 in different modes:

GPIO0GPIO46Mode
1XSPI Boot mode to boot the firmware from flash (default mode)
01Download Boot mode for flashing the firmware


If EFUSE_STRAP_JTAG_SEL is set, GPIO3 is used to select the interface that is used as JTAG interface.

GPIO3Mode
1USB-JTAG bridge at GPIO19 and GPIO20 is used as JTAG interface
0GPIO39 to GPIO42 are used as JTAG interface


NoteIf EFUSE_DIS_USB_JTAG or EFUSE_DIS_PAD_JTAG are set, the interface selection is fixed and GPIO3 is not used as bootstrapping pin.
GPIO45 is used to select the voltage VDD_SPI for the Flash/PSRAM interfaces SPI0 and SPI1.

ADC Channels​

ESP32-S3 integrates two 12-bit ADCs (ADC1 and ADC2) with 20 channels in total:

  • ADC1 supports 10 channels: GPIO1 ... GPIO10
  • ADC2 supports 10 channels: GPIO11 ... GPIO20
Source: https://doc.riot-os.org/group__cpu__esp32__esp32s3.html
 
I've been playing with the WT32-SC01 Plus to get it running on this project but cannot seem to get past a Pressure Monitor error when trying to build. I added the build flag mentioned in the ReadMe file but to no avail.

src/bpl/PressureMonitor.cpp: In member function 'int PressureMonitorClass::_readInternalAdc()':
src/bpl/PressureMonitor.cpp:63:28: error: 'ADC1_GPIOPressureAdcPin_CHANNEL' was not declared in this scope
#define ConcateChanel(pin) ADC1_GPIO ## pin ## _CHANNEL
^~~~~~~~~
src/bpl/PressureMonitor.cpp:64:34: note: in expansion of macro 'ConcateChanel'
#define AdcChannelFromPinNr(pin) ConcateChanel(pin)
^~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:86:37: note: in expansion of macro 'AdcChannelFromPinNr'
adc_reading += adc1_get_raw(AdcChannelFromPinNr(PressureAdcPin));
^~~~~~~~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:63:28: note: suggested alternative: 'ADC1_GPIO7_CHANNEL'
#define ConcateChanel(pin) ADC1_GPIO ## pin ## _CHANNEL
^~~~~~~~~
src/bpl/PressureMonitor.cpp:64:34: note: in expansion of macro 'ConcateChanel'
#define AdcChannelFromPinNr(pin) ConcateChanel(pin)
^~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:86:37: note: in expansion of macro 'AdcChannelFromPinNr'
adc_reading += adc1_get_raw(AdcChannelFromPinNr(PressureAdcPin));
^~~~~~~~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp: In member function 'void PressureMonitorClass::_initInternalAdc()':
src/bpl/PressureMonitor.cpp:154:13: error: 'PressureAdcPin' was not declared in this scope
pinMode(PressureAdcPin, INPUT);
^~~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:154:13: note: suggested alternative: 'PressureDecode'
pinMode(PressureAdcPin, INPUT);
^~~~~~~~~~~~~~
PressureDecode
src/bpl/PressureMonitor.cpp:63:28: error: 'ADC1_GPIOPressureAdcPin_CHANNEL' was not declared in this scope
#define ConcateChanel(pin) ADC1_GPIO ## pin ## _CHANNEL
^~~~~~~~~
src/bpl/PressureMonitor.cpp:64:34: note: in expansion of macro 'ConcateChanel'
#define AdcChannelFromPinNr(pin) ConcateChanel(pin)
^~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:157:31: note: in expansion of macro 'AdcChannelFromPinNr'
adc1_config_channel_atten(AdcChannelFromPinNr(PressureAdcPin),ADC_ATTEN_DB_11); // 3.9v scale
^~~~~~~~~~~~~~~~~~~
Compiling .pio/build/WT32_SC01_PLUS/src/bpl/TiltListener.cpp.o
src/bpl/PressureMonitor.cpp:63:28: note: suggested alternative: 'ADC1_GPIO7_CHANNEL'
#define ConcateChanel(pin) ADC1_GPIO ## pin ## _CHANNEL
^~~~~~~~~
src/bpl/PressureMonitor.cpp:64:34: note: in expansion of macro 'ConcateChanel'
#define AdcChannelFromPinNr(pin) ConcateChanel(pin)
^~~~~~~~~~~~~
src/bpl/PressureMonitor.cpp:157:31: note: in expansion of macro 'AdcChannelFromPinNr'
adc1_config_channel_atten(AdcChannelFromPinNr(PressureAdcPin),ADC_ATTEN_DB_11); // 3.9v scale
^~~~~~~~~~~~~~~~~~~
*** [.pio/build/WT32_SC01_PLUS/src/bpl/PressureMonitor.cpp.o] Error 1

This is the text output in VScode. I don't need pressure monitoring... From my research, ADC pins are not available on this display module unless you disable WiFi which I do not want to do.

For reference, this is my addition to the pindef.h file:

#if WT32_SC01_PLUS
#define oneWirePin 21
#define actuatorPin1 10
#define actuatorPin2 11
#define actuatorPin3 12
#define actuatorPin4 13
#define actuatorPin5 14
#endif

WT32 SC01+ is a ESP32S3 device, so add
-DCONFIG_IDF_TARGET_ESP32S3=true
to the
build_flags
in platformio.ini
.

Moreover, only GPIO 10, in this case, is good for ADC.
 
I've been fermenting for five days now and found that if there's a gap in logging (my power supply was connected to the smart switch I use for Christmas tree lights :) then when you start up again there's a gap in the log. That's as expected. But if it happens a second time (because I am slow and it took me another day to figure out what was going on :) then the first gap disappears, the data to the right of where the gap was moved to the left. So it appears to allow only a single concurrent gap in the log and concatenates to the left if there's a second gap when power is applied again. This is admittedly a niche case as one would normally keep the power on. (I'll transfer to cask in a couple of days then I'll dismantle the breadboard to check if there's anything interfering with the parasite glycol switch). I transferred to cask a week later than intended. Dismantled the circuit but didn't find any issues with the layout or soldering. There may be an issue with PTC and Capper control over one-wire with DS2413. PTC didn't go high when "room" temp went above set point. Capper valve would open or close by toggling "Spunding" in "Control" menu, but wouldn't close automatically once pressure dropped below set pressure.

A separate observation: if I tap the graph in the web interface, all the plots disappear until the next update. I think the xy axes may get transposed I think the time-axis auto-scale may get confused when there's data missing when you tap the graph, as all the square green icons (indicating profile, or set constant temp etc) along the x-axis all bunch up above each other on the y axis. This happened in both the web and android mobile interface. If you wait for the next data update then it appears again. It would be handy if we could edit the log to remove bad points (or to add missing points).
 
Last edited:
For pressure measurement, is there any advantage in using a separate ADC chip when using an esp32 or is that only really necessary for an esp8266 (when the adc analogRead() is occasionally interrupted when used by wifi). I understand the esp32 ADC is nonlinear but it appears to be reproducible; I've not noticed any obvious offset at returning to 0 psi at least.
 
I ran test build with the flag "-DSupportPressureTransducer=false" with a fresh clone into VScode. For some reason this is what throws the build into failing. I don't know if anyone else has ran into this issue. Of course, my build with the SC01 + has other issues besides this, but I thought I'd bring it up.
 
I see in the esp32_smartdisplay.h file that the #ifdef ESP32_3248S035R display is listed.

I have this board,is it now just a matter of setting up the build flags in platformio.ini file to compile for my board ,or is it not that simple ?

If so,could someone advise what should be added.

First time using platformio ,thanks for any assistance.

Cheers
 
I see in the esp32_smartdisplay.h file that the #ifdef ESP32_3248S035R display is listed.

I have this board,is it now just a matter of setting up the build flags in platformio.ini file to compile for my board ,or is it not that simple ?

If so,could someone advise what should be added.

First time using platformio ,thanks for any assistance.

Cheers
I don't have that display and haven't tested on it. It is supported by SmartDisplay library. However, I've ditched SmartDisplay library and change to LGFX library for more drivers.
 
I see in the esp32_smartdisplay.h file that the #ifdef ESP32_3248S035R display is listed.

I have this board,is it now just a matter of setting up the build flags in platformio.ini file to compile for my board ,or is it not that simple ?

If so,could someone advise what should be added.

First time using platformio ,thanks for any assistance.

Cheers
As far as my experience goes, it's not that simple. You have to make sure the drivers are the same for that display, in addition you'll need to adjust several file to fit you device, the least of which is the pindef.h file to define the pins available for actuators, pressure monitoring, and OneWire. I've tried to get the build of a SC01+ plus going but haven't gotten any good progress (I'm hung-up on disabling the pressure monitoring right now) and have recently toyed with the ESP32-8048S070C and haven't made any progress with that module either. I'll let you know if I can get any headway with either.
 
As far as my experience goes, it's not that simple. You have to make sure the drivers are the same for that display, in addition you'll need to adjust several file to fit you device, the least of which is the pindef.h file to define the pins available for actuators, pressure monitoring, and OneWire. I've tried to get the build of a SC01+ plus going but haven't gotten any good progress (I'm hung-up on disabling the pressure monitoring right now) and have recently toyed with the ESP32-8048S070C and haven't made any progress with that module either. I'll let you know if I can get any headway with either.
Yeah. It took me a while to adapt to LGFX. Although the driver matches the chip, there are parameters that seems to differ from drivers to drivers, like rotation, color, and even position shift.

I would suggest to use GPIO10 for ADC, because ADC2, GPIO 11~20, is also used by WiFi. That is the reason I didn't define the macro for GPIO11-20.

https://docs.espressif.com/projects...i-reference/peripherals/adc.html#adc-channels

BTW, I have a SC01+ on hand without a flasher, which seems to be necessary to flash the SC01+. I'll try to make it work after figuring how to flash it.
 
Yeah. It took me a while to adapt to LGFX. Although the driver matches the chip, there are parameters that seems to differ from drivers to drivers, like rotation, color, and even position shift.

I would suggest to use GPIO10 for ADC, because ADC2, GPIO 11~20, is also used by WiFi. That is the reason I didn't define the macro for GPIO11-20.

https://docs.espressif.com/projects...i-reference/peripherals/adc.html#adc-channels

BTW, I have a SC01+ on hand without a flasher, which seems to be necessary to flash the SC01+. I'll try to make it work after figuring how to flash it.
I was able to flash this example, https://github.com/SubCoderHUN/WT32-SC01-PLUS, using a USB-c. I had to go through a few cords to find one that worked. The port came up with the name "/dev/cu.usbmodem14201"

As an aside, I don't think the ESP32-8048S070C has enough pins available or the correct ones available to run this project. There isn't much documentation about it, so this observation is only based off the schematic that's available. Besides the fact that its an 800*480 screen, so I'm not even sure there's enough space to run it.
 
Hi @pocketmon
I am trying to get this project working on an ESP32-2432S028R device, it loads fine and I can communicate via the web interface but the display doesn't come on, is there something I need to do in the platformio.ini file? I expected it to work with the original settings as the display is much the same only physically smaller.
thanks for your effort in giving us the opportunity to utilise this great project
 
I'm excited to see if you can get it working!
It took me a while to bring WT-SC01+ on, for
1. I had to find a way to make it in download mode. Finally I found that shorting GPIO0 and GND works 30~50% of the time for me.
2. The device won't boot-up normally but remain in download mode after downloaded, which makes me think it's dead.
3. I seldom see the debugging information from UART, which resulted in slow progress.
A frustrated journey.
 
Hi @pocketmon
I am trying to get this project working on an ESP32-2432S028R device, it loads fine and I can communicate via the web interface but the display doesn't come on, is there something I need to do in the platformio.ini file? I expected it to work with the original settings as the display is much the same only physically smaller.
thanks for your effort in giving us the opportunity to utilise this great project
Please read the "Readme.md" in the project, Custom Hardware section.
I would recommend against resistive touch panel. According to my experience, calibration is necessary. My experience might be outdated, though.
 
It took me a while to bring WT-SC01+ on, for
1. I had to find a way to make it in download mode. Finally I found that shorting GPIO0 and GND works 30~50% of the time for me.
2. The device won't boot-up normally but remain in download mode after downloaded, which makes me think it's dead.
3. I seldom see the debugging information from UART, which resulted in slow progress.
A frustrated journey.
I appreciate the work you put into it! I wish these modules were a bit more plug and play, instead of all over the place.

EDIT: I've found that I can't flash even with EN grounded. Maybe I'm not doing it at the right time? So frustrating to be staring at the finish line and not be able to get to it!! I've purchased the debugging/flashing adapter from aliexpress so will try again in a few weeks when it arrives. In the meantime, I'm going to play with the ESP-8048S070C even tho its lacking on available pins. I was able to get a successful build, but the screen only flashed a few boxes and colors when it uploaded.
 
Last edited:
I appreciate the work you put into it! I wish these modules were a bit more plug and play, instead of all over the place.

EDIT: I've found that I can't flash even with EN grounded. Maybe I'm not doing it at the right time? So frustrating to be staring at the finish line and not be able to get to it!! I've purchased the debugging/flashing adapter from aliexpress so will try again in a few weeks when it arrives. In the meantime, I'm going to play with the ESP-8048S070C even tho its lacking on available pins. I was able to get a successful build, but the screen only flashed a few boxes and colors when it uploaded.

I found this when struggling flashing the device:
https://github.com/janick/WT32-SqLn

I think my first flashing was successful, but either it was in download mode or the program crashed just after boot-up. (The bug was fixed later) Seeing no response, I tried another flashing. It failed at 38%. Then it kept failing at 38%, sometimes 39%. I've tried at least 20 times and failed.
I changed all cables I have according to your hint without luck. However, suddenly I got some boot-up messages stated that it is in download mode, using my original USB cable. I uploaded successfully, and after that I can flash the device if it is in download mode, even seeing no serial message. Shorting pin#6 and pin#7 of the "debug port" will reset the device and it might boot in download mode, like in 30% chance.
 
I found this when struggling flashing the device:
https://github.com/janick/WT32-SqLn

I think my first flashing was successful, but either it was in download mode or the program crashed just after boot-up. (The bug was fixed later) Seeing no response, I tried another flashing. It failed at 38%. Then it kept failing at 38%, sometimes 39%. I've tried at least 20 times and failed.
I changed all cables I have according to your hint without luck. However, suddenly I got some boot-up messages stated that it is in download mode, using my original USB cable. I uploaded successfully, and after that I can flash the device if it is in download mode, even seeing no serial message. Shorting pin#6 and pin#7 of the "debug port" will reset the device and it might boot in download mode, like in 30% chance.
My first few flashes were successful as well, but now it doesn't want to enter boot mode/flash. I've seen these build flags on some of the projects:

-DARDUINO_USB_CDC_ON_BOOT
;-DARDUINO_USB_MSC_ON_BOOT
;-DARDUINO_USB_DFU_ON_BOOT
;-DUSE_USB_CDC_CONSOLE
;-DARDUINO_USB_MODE

I think its supposed to bypass the issue, but with my "none" knowledge of coding this thinking is probably wrong. In any case, even with the flag initialized, I still can't get it to flash.
 
I saw an old post about pre-loading the wifi credentials in platformio.ini before uploading using build flags like:
-DSSID_NAME="my_ssid"
-DSSID_PASWORD="my_password"

You mentioned hard-coding it in one of the files instead but I couldn't see where to do that (it may have changed since the post). Is there a way to do that now?

Also is there a way to remove bad points from the currently acquiring log? (like a very high temperature that gets autoscaled to.)
 
I was able to get a successful build and upload to the 7.0" screen: ESP32-8048S070C. The next step will be to get the pins situated and functional if that's even possible. From the schematic, it looks like only 17 and 18 are available options. But with the DS2413, I might get lucky!
 
I was able to get a successful build and upload to the 7.0" screen: ESP32-8048S070C. The next step will be to get the pins situated and functional if that's even possible. From the schematic, it looks like only 17 and 18 are available options. But with the DS2413, I might get lucky!
Good luck! DS2413 worked great for me for heating and cooling from a single pin.
Are you using pressure (capper) and glycol (Parasitic Temperature Control)? If so it will be good to see if they behave as expected.
 
Good luck! DS2413 worked great for me for heating and cooling from a single pin.
Are you using pressure (capper) and glycol (Parasitic Temperature Control)? If so it will be good to see if they behave as expected.
No pressure monitoring for now. I just delved into that world recently and will circle back to it once I have a few more brews under my belt. I don't plan on glycol chilling at all because I'm happy with my freezer set up. I'm reworking a new control box to make it more roomy, tho still a birds nest haha.
 
I saw an old post about pre-loading the wifi credentials in platformio.ini before uploading using build flags like:
-DSSID_NAME="my_ssid"
-DSSID_PASWORD="my_password"

You mentioned hard-coding it in one of the files instead but I couldn't see where to do that (it may have changed since the post). Is there a way to do that now?

Also is there a way to remove bad points from the currently acquiring log? (like a very high temperature that gets autoscaled to.)
They are defined in Config.h, but you can change it in "System" page.
 
IMG_1070.jpeg
IMG_1071.jpeg
@OpenFermenter, how were you able to get your DS2413 recognized in devices? i'm lost on how to wire it. The GND and 3.3V pins are going to my oneWire block and that's working perfect for my three temp probes. But can't figure out how to wire the 2 channel relay to the DS2413. I need a 5V pin to go... somewhere and can't for the life of me figure it out. I'll share a pick of my new set-up.
 
Last edited:
@akgal12 You need a pull-up resistor on the DS2413 IO pin (I am using five 1-wire devices and chose a 2.2k ohm resistor to 3.3V). I power the relay board with 5V and toggle four relays on or off using the IOA or IOB from a pair of DS2413 boards:

From the ESP32_2432S032C:
i) Gnd, goes to Gnd on the DS2413
ii) pin 22 goes to IO on the DS2413
iii) 3.3V goes via a 2.2k ohm resistor to IO on the DS2413 (pull up resistor)

My relay board has a 6 pin header. Pins 1 and 6 are connected to Gnd and 5V to power the board,
Pins 2,3,4,5 are the pins that open or close the four relays.
They are connected to IOA and IOB on the DS2413, so the relays open or close depending on the state of IOA or IOB.

In my case from the DS2413:
IOA goes to IN1 on the relay board
IOB goes to IN2 on the relay board

I have a second DS2413 where its IOA and IOB go to IN3 and IN4 on the relay board.
Pin 22 from the esp32 goes to the IO pin on both of the DS2413, and they share the same 2.2k ohm pull-up resistor to 3.3v, (the three DS18B20 1-wire temperature sensors are also connected to pin 22 so they also share the same 2.2k pull-up resistor to 3.3V).

Wired this way the four IOA1 IOB1 IOA2 IOB2 and the three temperature sensors all appear in the devices list in BrewPiLess.

The picture in post #28 is my half-arsed attempt to show the layout (if you imagine the 2x DS2413 are connected along the bottom, and the two telephone sockets are at the top. THe numbers "40" and "06" refer to the last two digits of the DS2413 IDs that appear in the device list in BrewPiLess. "T:" is where the temperature probes all connect to one phone socket, and "P:" is where the pressure sensor connects to the other phone socket. "5V only" goes to pins 6 on the relay board and to the pressure sensor. The pin at coordinates J5 is where pin 22 comes in from the esp32.

I'm using the pressure sensor that @pocketmon recommended which needs 5V so I get that from the esp32 and use it to power both the pressure sensor and the relay.
I hope that helps.

1715522790412.png


1715524137372.png
 
@akgal12 You need a pull-up resistor on the DS2413 IO pin (I am using five 1-wire devices and chose a 2.2k ohm resistor to 3.3V). I power the relay board with 5V and toggle four relays on or off using the IOA or IOB from a pair of DS2413 boards:

From the ESP32_2432S032C:
i) Gnd, goes to Gnd on the DS2413
ii) pin 22 goes to IO on the DS2413
iii) 3.3V goes via a 2.2k ohm resistor to IO on the DS2413 (pull up resistor)

My relay board has a 6 pin header. Pins 1 and 6 are connected to Gnd and 5V to power the board,
Pins 2,3,4,5 are the pins that open or close the four relays.
They are connected to IOA and IOB on the DS2413, so the relays open or close depending on the state of IOA or IOB.

In my case from the DS2413:
IOA goes to IN1 on the relay board
IOB goes to IN2 on the relay board

I have a second DS2413 where its IOA and IOB go to IN3 and IN4 on the relay board.
Pin 22 from the esp32 goes to the IO pin on both of the DS2413, and they share the same 2.2k ohm pull-up resistor to 3.3v, (the three DS18B20 1-wire temperature sensors are also connected to pin 22 so they also share the same 2.2k pull-up resistor to 3.3V).

Wired this way the four IOA1 IOB1 IOA2 IOB2 and the three temperature sensors all appear in the devices list in BrewPiLess.

The picture in post #28 is my half-arsed attempt to show the layout (if you imagine the 2x DS2413 are connected along the bottom, and the two telephone sockets are at the top. THe numbers "40" and "06" refer to the last two digits of the DS2413 IDs that appear in the device list in BrewPiLess. "T:" is where the temperature probes all connect to one phone socket, and "P:" is where the pressure sensor connects to the other phone socket. "5V only" goes to pins 6 on the relay board and to the pressure sensor. The pin at coordinates J5 is where pin 22 comes in from the esp32.
So for my setup, would I need to get a relay board? The ESP32-8048S070C only has two pins available. Which is fine for my rig since I’m not using pressure. And I can leave my pin_def.h file as:
#define oneWirePin 17
#define actuatorPin1 18
#define PressureAdcPin 10 <— dummy pin
 
So for my setup, would I need to get a relay board? The ESP32-8048S070C only has two pins available. Which is fine for my rig since I’m not using pressure. And I can leave my pin_def.h file as:
#define oneWirePin 17
#define actuatorPin1 18
#define PressureAdcPin 10 <— dummy pin
@akgal12 The board with two relays on it in your photo looks similar to mine but with just two relays rather than four, so that should be fine for controlling heating and cooling. I can't see what board it is though. It will likely need 5V and Gnd, then send the IOA and IOB to the IN1 and IN2 pins on it for heat and cool. You can use either pin 17 or 18 from the esp32 to control the DS2413 (IO pin), with a pull-up resistor to 3.3V. Just make sure you call out which pin you are using in the pindef.h (although you need to define a section for the ESP32-8048S070C in both pindef.h and in platformio.ini first although you've probably already done that)

(That single pin (18 or 17) can address more than twenty 1-wire devices (hence the name) Every 1-wire device has a unique address encoded in a 64 bit address space so there could be up to ~2x10^19 possible unique devices).


This looks like your relay board. I don't see any connection to VCC in your picture. You need 5V on VCC (3.3V might work but I'm using 5V). Your DS2413 IOA and IOB look like they go to IN1 and IN2 on the relay board which should work. I can't see where your IO or gnd pins in the DS2413 go to though. Gnd should common for the relay board, the DS2413 and the esp32.

You should see both IOA and IOB for the DS2413 in BrewPiLess devices list if you have the IO pin pulled up to 3.3V via the resistor, and have it connected to your pin 17 (or pin 18), provided you have that called out in pindef.h and a section in platformio.ini that represents the ESP32-8048S070C

Separate issue: @pocketmon mentioned that the higher resolution screens may be a problem for this project as it uses more resources than the smaller ones, with not enough left for the rest of the features.


1715536747461.png
 
Last edited:
I have relay GND wired to the GND on the DS2413 board. The 3.3V and GND from the ESP32 going to the black 3screw terminal block connecting to the probe wires. Thats what I couldn’t figure out, how to connect the VCC from the relay to 5V. I tried tying it into the terminal block with the OneWire probes that already has the 4.7k ohm resistor, but that didn’t work.
 
I use 5V from the esp32 to power the relay module, 3.3V from the esp32 to power the ds2413 (via the pull-up resistor) and the temperature probes. The signal pin on the temperature probe is also pulled up via the same resistor. The gnd for everything is connected to the esp32 gnd: temp probes, relay module, and the ds2413.
 
I’m going to get a breakout board like yours and go from there. My other option might be to tie the wires together and see if that would work. Thanks for the tips, it gives me some avenues to test :)
 
Thanks @pocketmon I see the settings for the local web interface in Config.h but I was looking for somewhere to put my lan ssid and password.
For static ssid and password:
Line 332 in src/bpl/WiFiSetup.cpp in bool WiFiSetupClass::stayConnected(void)
change:
else WiFi.begin();
to:
else WiFi.begin("ssid","password");

There are several instances of WiFi.begin(), it's the last one. WiFi settings are preserved on re-upload so only needed if you erase the flash too. I wanted to do this because I'm too lazy to go to the garage and set up WiFi with my phone, as I remote into a machine there to flash it while I try to figure out why I can't get capper or PTC to work)

To set the "Information" skin as default, in BPLSettings.cpp set
syscfg->skin = 1;
instead of 0
(currently line 210)
 
Last edited:
@OpenFermenter: you mention the 5V from the ESP32 to relay, but if you're using the 032C display module, where are you getting the 5V from? From the images I only see 3.3V from the extendedIO available?
 
@OpenFermenter: you mention the 5V from the ESP32 to relay, but if you're using the 032C display module, where are you getting the 5V from? From the images I only see 3.3V from the extendedIO available?
There's another 4P connector next to the USB socket called "power supply base" that has 5V. (Had to buy more connectors with the wires attached as the screen only came with one). The 5V there is sufficient for both the pressure sensor and the relay board when powered by USB. (Also works with an external 5V wall wart powering that pin instead of USB)
 
Yeah I see that on mine too, but i wan't able to power my board with the set-up i have via the USB. So i'm using the power port for that. It does have a duplicate 3.3V, GND, IO17, IO18 that's SH 1.0, so i ordered a 1.0 4pin cable for it to see if I could power the DS2413 with that.

EDIT: **sigh** I can see why @pocketmon avoids wiring at all costs haha. I have several options now that I've done some more "extensive" research. I have a solderless breadboard power supply that I was playing with and couldn't get to work. But it might be due to my lack of patience and/or wiring capabilities. So I will continue down that path while I wait for my other options to arrive from Amazon.
 
Last edited:
Yeah I see that on mine too, but i wan't able to power my board with the set-up i have via the USB. So i'm using the power port for that. It does have a duplicate 3.3V, GND, IO17, IO18 that's SH 1.0, so i ordered a 1.0 4pin cable for it to see if I could power the DS2413 with that.
Once you have the pigtail connectors I'd try again using the onboard 3.3V, 5V and Gnd when the unit is powered by USB. Just be sure the connections are good. (And only use 5V to power the relay, 3.3V is fine for the temperature sensors and the DS2413, and they can share a single pull-up resistor)
 

Latest posts

Back
Top