BrewPiLessGx: BrewPiLess with Touched TFT display

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
I don't have any 1-wire relay. Neither do I have idea about what goes wrong.
The way PTC and capping control use actuators is the same as calling and heating, which uses a virtual "Actuator" class that might be
"DigitalPinActuator" or "OneWireActuator".
Thanks @pocketmon I'll start looking into the Actuator class.

I tried using io pin 22 to control the relay for PTC (instead of one of the two DS2413 1-wire boards that share io pin 21) This worked as expected: temperature higher then set point switched on the relay..

I did same for Capper using io pin 22 and that worked as expected too.

So it appears that PTC and Capper don't work on 1-wire using a DS2413.

To summarize the settings I tried in the Devices list for BrewPiLess with two DS2413 boards on io pin 21:

i) IOA1, IOB1, IOA2, IOB2: heat, cool, PTC, Capper
ii) IOA1, IOB1, IOA2, IOB2: PTC, Capper, heat, cool
iii) IOA1, IOB1, IOA2, IOB2: PTC, Capper, None, None
PTC and Capper didn't work as expected. (although I can toggle Capper manually in Control window)

Using IO pin 22 directly:
iv) IOA1, IOB1, IO22: Heat, Cool, PTC
v) IOA1, IOB1, IO22: Heat, Cool, Capper
Both of these worked as expected.

I need to figure this out as I can now have either capper or PTC by using io pin 22, but not both. Still, a big step forward :) I will look into Actuator class.
 
Last edited:
I compared the source with temperatureControl.
The only difference I saw is that in Capping and PTC,
the actuator is compared to 'defaultActuator' before 'setActive()', which seems unnecessary and was not done in temperatureControl.
However, I don't see that would matter.
 
I compared the source with temperatureControl.
The only difference I saw is that in Capping and PTC,
the actuator is compared to 'defaultActuator' before 'setActive()', which seems unnecessary and was not done in temperatureControl.
However, I don't see that would matter.
Thanks for looking into it. Maybe it is something in the way 1-wire is implemented although I can't imagine what. I will see if I can find anything.
 
I still cannot get BrewPiLess to recognize my DS2413. I've tested the relay to make sure it wasn't a dud and it works. I wired it up to a mini PCB breadboard and also wired it directly to the relay. I'm lost as to why it won't populate on on the devices list. Any help is appreciated!!
Screenshot 2024-05-17 at 7.34.48 PM.png
IMG_1129.jpeg
Untitled.jpg
 
fwiw, the DS2413 uses a "parasitic power" scheme which requires the host to be capable of same. The original version of BrewPi never supported parasitic powered ds18b20's and afaik none of the derivatives do, either, so I wonder if they could support the DS2413...

Cheers!
 
Check you have both the DS2413 and DS18B20 connected to the same three pins on the esp32: 3.3V, GND and GPIO 17:

Your should have a ~2.2k ohm resistor (or similar) pulling up both the IO pin on the DS2413 and the signal pin on the DS18B20 to 3.3V. Yours looks like 4.7k which may be ok, but if the wiring looks right and it still doesn't work then try a 2.2k ohm instead.

Another way to describe it is that one end of the 2.2k ohm resistor is connected to the 3.3V pin on the esp32, the other end is connected to GPIO 17. The signal pin from the DS18B20 and the IO pin from the DDS2413 are connected together and to GPIO 17.

Mine show up like this:
1715991904567.png
 
fwiw, the DS2413 uses a "parasitic power" scheme which requires the host to be capable of same. The original version of BrewPi never supported parasitic powered ds18b20's and afaik none of the derivatives do, either, so I wonder if they could support the DS2413...

Cheers!
I found I could power two of them with a 2.2k ohm on this esp32 3.3V line, so I think it must be a wiring issue unless @akgal12 is using an esp32 that permits less current on the 3.3V line (I can only get heat and cool to work from the DS2413 though but I think that's a separate issue)
 
Last edited:
A 2.2K pull-up to 3.3V is only a 1.5ma source. ESP32 IO pins are rated up to 40ma each (of course you can't actually use them like that ;)) so 1.5ma is a walk in the park. Also, the DS2413 spec for the IO pull-up is 1.5K min/2.2K max so there isn't much range there.

If the ESP32 One-Wire driver understands how to handle parasitic power, the DS2413 should work, I believe...


Cheers!
 
A 2.2K pull-up to 3.3V is only a 1.5ma source. ESP32 IO pins are rated up to 40ma each (of course you can't actually use them like that ;)) so 1.5ma is a walk in the park. Also, the DS2413 spec for the IO pull-up is 1.5K min/2.2K max so there isn't much range there.

If the ESP32 One-Wire driver understands how to handle parasitic power, the DS2413 should work, I believe...


Cheers!
For my issue could it be that there's enough power to allow the esp32 to detect both of the DS2413 boards (to give four controllable pins) but just not enough power left to drive all four relays? Maybe I can try an external supply for the DS2413 (with common ground).

(I'm starting to wonder whether given the amount I've invested in brewing up to this point, an oscilloscope is a logical next step and would be lost in the financial noise... and is surely justifiable to swmbo...)

Edit: or maybe I can repurpose one of my esp32 as a slow scope :)
 
Last edited:
Still no go. The only thing I can think of now, is if it's my code? I have the libraries, but maybe it's not loading onto the module or activated somehow?

Found the build flag... to be continued.
 
Last edited:
I was able to ditch the DS2413 and use GPIO11 as the oneWire pin. GPIO17/18 are the heating/cooling actuators. I was also able to get my WT32 SC01+ up and running. Now all that's left to do is mount to my freezer and actually brew a beer with it. I am indebted to @OpenFermenter and @pocketmon for not being annoyed by all my issues and constant badgering. Hahaha, I appreciate all you hard work getting this project out there and up and running.

Cheers!!
 
I was able to ditch the DS2413 and use GPIO11 as the oneWire pin. GPIO17/18 are the heating/cooling actuators. I was also able to get my WT32 SC01+ up and running. Now all that's left to do is mount to my freezer and actually brew a beer with it. I am indebted to @OpenFermenter and @pocketmon for not being annoyed by all my issues and constant badgering. Hahaha, I appreciate all you hard work getting this project out there and up and running.

Cheers!!
All credit to @pocketmon, I'm just following along too! Great project!
 
IMG_1163.jpeg
Needless update: I’ve found the SC01+ to be more stable than the ESP32 7” module. I’ll just have to deal with the smaller screen. In any case it’s going to be amazing to be able to watch my brew from inside. The SC01+ has a much more responsive screen and reliable WiFi signal when I need to use it while in the garage. Without having to check the webpage.
 
I'm not sure if anyone else has tried the new update, but I wasn't able to get a successful flash for OTA. http://brewpiless.local/update either doesn't load or just loads a blank page. I tried with the assigned IP address with the same results.
 
Did someone tried to compile the WT32-SC01 plus version recently (after 7 july 2024)?
I tried it today and I'm getting errors because the AsyncElegantOTA library is Deprecated:

1724101383087.png


On the Github site it is mentioned that we should use ElegantOTA instead!
1724101196737.png
 
In the meantime I found a previous version of AsyncElagantOTA (2.2.8) in another project and installed it in the lib folder. After this I could compile and upload it to my WT32-SC01 plus.
 
Yesterday everything was working fine on my WT32-SC01+ except reading from sensors nor controlling actuators because I did not yet received the mx1.25 cables to connect them. But this didn't bother me of doing some tests on the display and on the webpage.
But because I was convinced that my WT32-SC01+ has 16MB flash I changed the platformio.ini to 16M. After flashing and uploading I couldn't get it to start anymore so I did a rollback and at first glance it seems to work again only as soon as I configure the wifi I get the following error messages:
Code:
ELF file SHA256: 918e38cf81900895

Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x420f1a29
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4
[  2207][E][vfs_api.cpp:105] open(): /littlefs/eeprom_device_definition does not exist, no permits for creation
[  2222][E][vfs_api.cpp:105] open(): /littlefs/eeprom_control_constant does not exist, no permits for creation
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x4211f473  PS      : 0x00060e30  A0      : 0x820fc964  A1      : 0x3fcecf10
A2      : 0x00000000  A3      : 0x3fcce078  A4      : 0xcbe03875  A5      : 0x3fca2da4
A6      : 0x0000009d  A7      : 0x3fccda7c  A8      : 0x80386454  A9      : 0x3fcecef0
A10     : 0x3fccc638  A11     : 0x3fccc638  A12     : 0x00000001  A13     : 0x00000004
A14     : 0x0000180c  A15     : 0x3fcabca8  SAR     : 0x0000001b  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000  LBEG    : 0x40056f5c  LEND    : 0x40056f72  LCOUNT  : 0x00000000


Backtrace: 0x4211f470:0x3fcecf10 0x420fc961:0x3fcecf30 0x42056a42:0x3fcecf50 0x42056a93:0x3fcecf70 0x42056aa9:0x3fcecf90 0x4200d1b0:0x3fcecfb0 0x4200fda9:0x3fcecfd0 0x420107fe:0x3fced000 0x42010976:0x3fced2f0 0x42010a1e:0x3fced330 0x4201e416:0x3fced350 0x42069375:0x3fced370

  #0  0x4211f470:0x3fcecf10 in AsyncClient::space() at .pio/libdeps/WT32SC01PLUS_ota/AsyncTCP/src/AsyncTCP.cpp:741
  #1  0x420fc961:0x3fcecf30 in AsyncClient::canSend() at .pio/libdeps/WT32SC01PLUS_ota/AsyncTCP/src/AsyncTCP.cpp:1154
  #2  0x42056a42:0x3fcecf50 in AsyncWebSocketClient::_queueMessage(AsyncWebSocketMessage*) at .pio/libdeps/WT32SC01PLUS_ota/ESP Async WebServer/src/AsyncWebSocket.cpp:557
      (inlined by) AsyncWebSocketClient::_queueMessage(AsyncWebSocketMessage*) at .pio/libdeps/WT32SC01PLUS_ota/ESP Async WebServer/src/AsyncWebSocket.cpp:544
  #3  0x42056a93:0x3fcecf70 in AsyncWebSocketClient::text(char const*, unsigned int) at .pio/libdeps/WT32SC01PLUS_ota/ESP Async WebServer/src/AsyncWebSocket.cpp:842
  #4  0x42056aa9:0x3fcecf90 in AsyncWebSocketClient::text(char const*) at .pio/libdeps/WT32SC01PLUS_ota/ESP Async WebServer/src/AsyncWebSocket.cpp:845  
  #5  0x4200d1b0:0x3fcecfb0 in std::_Function_handler<void (char const*), sayHelloWS()::{lambda(char const*)#1}>::_M_invoke(std::_Any_data const&, char const*&&) at src/bpl/BrewPiLess.cpp:1031
      (inlined by) _M_invoke at c:\users\wim\.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32s3-elf\include\c++\8.4.0\bits/std_function.h:297
  #6  0x4200fda9:0x3fcecfd0 in std::function<void (char const*)>::operator()(char const*) const at c:\users\wim\.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32s3-elf\include\c++\8.4.0\bits/std_function.h:687
  #7  0x420107fe:0x3fced000 in greeting(std::function<void (char const*)>) at src/bpl/BrewPiLess.cpp:991
  #8  0x42010976:0x3fced2f0 in sayHelloWS() at src/bpl/BrewPiLess.cpp:1030
  #9  0x42010a1e:0x3fced330 in sayHello() at src/bpl/BrewPiLess.cpp:1199
      (inlined by) bpl_loop() at src/bpl/BrewPiLess.cpp:2231
  #10 0x4201e416:0x3fced350 in loop() at src/esp32/main.cpp:60
  #11 0x42069375:0x3fced370 in loopTask(void*) at C:/Users/wim/.platformio/packages/[email protected]/cores/esp32/main.cpp:50      




ELF file SHA256: 918e38cf81900895

Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x4003c33b
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4
[  2208][E][vfs_api.cpp:105] open(): /littlefs/eeprom_device_definition does not exist, no permits for creation
[  2224][E][vfs_api.cpp:105] open(): /littlefs/eeprom_control_constant does not exist, no permits for creation
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

When I disable the Wifi through the touchscreen the reboot stops but them I'm still getting these error messages:

Code:
ELF file SHA256: 918e38cf81900895

Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x4211e15a
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4
[  3205][E][vfs_api.cpp:105] open(): /littlefs/eeprom_device_definition does not exist, no permits for creation
[  3222][E][vfs_api.cpp:105] open(): /littlefs/eeprom_control_constant does not exist, no permits for creation
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x8 (TG1WDT_SYS_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x42073563
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4
[  6204][E][vfs_api.cpp:105] open(): /littlefs/eeprom_device_definition does not exist, no permits for creation
[  6220][E][vfs_api.cpp:105] open(): /littlefs/eeprom_control_constant does not exist, no permits for creation
[ 95470][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[ 95474][E][vfs_api.cpp:105] open(): /littlefs/index.htm.gz does not exist, no permits for creation
[ 95479][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[103940][E][vfs_api.cpp:105] open(): /littlefs/generate_204 does not exist, no permits for creation
[103942][E][vfs_api.cpp:105] open(): /littlefs/generate_204.gz does not exist, no permits for creation
[106415][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation
[106418][E][vfs_api.cpp:105] open(): /littlefs/config.htm.gz does not exist, no permits for creation
[106423][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation

Anyone an idea how I can fix this? I already tried a 'erase Flash' but without any result.
 
Today I tried it again but on another dev board the ESP32-2432S032 this time

ESP32_2432S032C_back .jpg


and it works except the font is not so readable (in reality it is even worst):

ESP32_2432S032C_front.jpg


And I do have those Littefs errors again in the monitor:

Code:
--- Terminal on COM6 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13192
load:0x40080400,len:3028
entry 0x400805e4
[    22][E][vfs_api.cpp:105] open(): /littlefs/bpl.cfg does not exist, no permits for creation
[  6323][E][vfs_api.cpp:105] open(): /littlefs/eeprom_device_definition does not exist, no permits for creation
[  6325][E][vfs_api.cpp:105] open(): /littlefs/eeprom_control_setting does not exist, no permits for creation
[ 60039][E][WiFiSTA.cpp:317] begin(): connect failed! 0x300a
[323253][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[323256][E][vfs_api.cpp:105] open(): /littlefs/index.htm.gz does not exist, no permits for creation
[323261][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[325365][E][vfs_api.cpp:105] open(): /littlefs/favicon.ico does not exist, no permits for creation
[325367][E][vfs_api.cpp:105] open(): /littlefs/favicon.ico.gz does not exist, no permits for creation
[330156][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation
[330159][E][vfs_api.cpp:105] open(): /littlefs/config.htm.gz does not exist, no permits for creation
[330164][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation
[447206][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[447421][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[450429][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[450644][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[451928][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[452576][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[455151][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[455371][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[457051][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[457638][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
[540590][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[540595][E][vfs_api.cpp:105] open(): /littlefs/index.htm.gz does not exist, no permits for creation
[540602][E][vfs_api.cpp:105] open(): /littlefs/index.htm does not exist, no permits for creation
[542795][E][vfs_api.cpp:105] open(): /littlefs/favicon.ico does not exist, no permits for creation
[542799][E][vfs_api.cpp:105] open(): /littlefs/favicon.ico.gz does not exist, no permits for creation
[655819][E][vfs_api.cpp:105] open(): /littlefs/logging.htm does not exist, no permits for creation
[655825][E][vfs_api.cpp:105] open(): /littlefs/logging.htm.gz does not exist, no permits for creation
[655830][E][vfs_api.cpp:105] open(): /littlefs/logging.htm does not exist, no permits for creation
[674961][E][vfs_api.cpp:105] open(): /littlefs/chrome-variations/seed does not exist, no permits for creation
[674965][E][vfs_api.cpp:105] open(): /littlefs/chrome-variations/seed.gz does not exist, no permits for creation
[1023786][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation
[1023791][E][vfs_api.cpp:105] open(): /littlefs/config.htm.gz does not exist, no permits for creation
[1023797][E][vfs_api.cpp:105] open(): /littlefs/config.htm does not exist, no permits for creation
ERROR: Too many messages queued
ERROR: Too many messages queued
ERROR: Too many messages queued

I'm not used to work with PlatformIO so am I doing something wrong or am I missing some step?
And is there a way to switch back to DHCP once you entered a fixed?
 
Sorry for late response due to my vocation mood.

First of all, the LittleFS errors are normal. When a page was request by the browser, the controller try to find if it is available on the file system before responding the default content. Those "errors" are generated because the files are not available on file system.

The issue of "Idling" display is that the width of that item is not big enough. It can be fixed by editing the JSON file.

Also, I've noticed that the color on LCD is a bit off, on mine too. It seems like over saturated or over contrasted. I thought there might be some settings in the initial setup steps in the display driver, but I have not dig it out.
 
Hey Guys I have this working on my CYD, Very slick project and super easy to use. I would like to use IO35 as a Heater as I have no need for a pressure sensor in my use case. How can I accomplish modifying the code to make that pin assignable? Sorry for the N00b question. I am using Code VS.

UPDATE: Figured it out.
 
Last edited:
Sorry for late response due to my vocation mood.

First of all, the LittleFS errors are normal. When a page was request by the browser, the controller try to find if it is available on the file system before responding the default content. Those "errors" are generated because the files are not available on file system.

The issue of "Idling" display is that the width of that item is not big enough. It can be fixed by editing the JSON file.

Also, I've noticed that the color on LCD is a bit off, on mine too. It seems like over saturated or over contrasted. I thought there might be some settings in the initial setup steps in the display driver, but I have not dig it out.

I check the initial commands to initiate LCD and found that gamma curve might be the problem. However, I know nothing about this, although changing to other curve seems to do better on my ESP32-2432S032. You might try the latest update of LGFX version on GitHub.
 
OK, reinstating this question. I have sourced 4 ESP32-2432S032 boards. These appear to be identical to the ones vitotai references from Aliexpress is the read me. I don't need a pressure sensor, and would prefer to use the 35 pin for Heater relay control. I am using visual studio with Platform.io. In the platformio.ini file I have added the -DSupportPressureTransducer=false build flag under the [env:ESP32_2432S032C] Macro I Think its is called, and haver updated the pindef.h file to device actuatorPin2 for 35. The code loads but Pin 35 does not show up for actuator assignment. Where else do i need to edit this to make this work? I am melting my brain talking to AI to figure this out.
 
I have ESP 32 working with brewpiless 4.4, pressure transducer, auto spund and temp control. Great work @pocketmon

I have a display that seems compatible that I've wired in without the touch interface as I'm not bothered with that aspect.

www.aliexpress.com/item/1005003936535877.html?spm=a2g0n.order_detail.order_detail_item

Assuming that I need to use the GX version to stand a chance of seeing anything on the display.
But what and where are the bits that need to be built and how do I put them into the ESP? It's different from flashing firmware via brewflasher.

Clearly you can tell my ignorance for this.
 
Back
Top