TiltBridge - Tilt-to-WiFi Device for Tilt Hydrometer

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.

Thorrak

Supporting Member
HBT Supporter
Joined
Feb 7, 2016
Messages
4,006
Reaction score
2,725
Location
New York, NY

I am pleased to announce the release of TiltBridge - a hardware Tilt Hydrometer-to-WiFi bridge.

TiltBridge is a single component ESP32-based hardware solution for bridging the gap between your Tilt Hydrometer's bluetooth signal and a number of cloud logging options. It is designed to be able to be placed near your fermenters in place of traditional options like an old tablet or cell phone. TiltBridge also supports an OLED display so that you can see the gravity of your fermenting beers at a glance.


Key Features:
  • Single component Tilt-to-WiFi Bridge
  • Supports logging to Fermentrack, Brewer's Friend, and Google Sheets
  • HTTP dashboard allows checking on your beer from your home network
  • Simple to construct/install, with no soldering or wiring required
  • Supports over-the-air updates for simple maintainance


Screenshots & Photos

TiltBridge /w Case



TiltBridge w/o Case




TiltBridge Dashboard



Hardware/Installation:

The TiltBridge firmware should work on any ESP32 board without any additional soldering/components, however there is a list of boards that have been shown in the past to work with TiltBridge available in the documentation (including ones that come with an attached OLED screen). The TiltBridge firmware is available for download on GitHub for installation with esptool.py, or is available for installation directly from within Fermentrack.

For additional information, see the TiltBridge documentation.


Documentation:
Written documentation is available at: http://docs.tiltbridge.com/ as well as on the TiltBridge website.
 
This is just about the coolest thing ever, @Thorrak. My Tilt has been very frustrating and hasn't been reliable due to the conical and the fridge it is in. Can't wait to put one of these together and put it in my fridge. Thanks for your efforts!
 
Awesome!

I was hoping AliExpress would have dimensions, but I couldn’t find them. Could you supply the dimensions of the overall board and the OLED screen please? (Trying to see how I can incorporate this into my current build) I have the TTGO in my shopping cart, and ready to order. [emoji51]
 
Awesome!

I was hoping AliExpress would have dimensions, but I couldn’t find them. Could you supply the dimensions of the overall board and the OLED screen please? (Trying to see how I can incorporate this into my current build) I have the TTGO in my shopping cart, and ready to order. [emoji51]

The "TTGO" OLED ones are roughly 50.3mm x 21.1mm. Only downside is that they don't really have any way of mounting them (no screw holes, etc.)
 
[...]Only downside is that they don't really have any way of mounting them (no screw holes, etc.)

Dontcha hate it when form factors are too small for a couple of holes? I had the same problem with the ESP32-CAM modules.

Seriously, nice work here Thorrak!

Cheers!
 
Dontcha hate it when form factors are too small for a couple of holes? I had the same problem with the ESP32-CAM modules.

Seriously, nice work here Thorrak!

Cheers!
Amen. That’s why I originally was in the non-TTGO OLED board camp, but for those they literally use double-sided tape to stick the OLED screen to the board - and don’t do a good job of placing them uniformly. There’s over a 1mm difference between these, for example:

E9893636-529F-4A69-8D41-71E11089F377.jpeg
 
The "TTGO" OLED ones are roughly 50.3mm x 21.1mm. Only downside is that they don't really have any way of mounting them (no screw holes, etc.)

Ok, so looking at the ESP32 OLED the documented dimensions of the board is 64mm x 27mm (+/- 3mm) [emoji23]. Looking at the Thingverse Enclosure you have referenced, the screen opening looks to be 23.8mm x 13.6mm. (Is that a fairly accurate description?)

**Super Noob Question**
Instead of using USB to power the board. Can I just run lines from my AC to 5 V DC Power Supply Module to power the board?
 
Ok, so looking at the ESP32 OLED the documented dimensions of the board is 64mm x 27mm (+/- 3mm) [emoji23]. Looking at the Thingverse Enclosure you have referenced, the screen opening looks to be 23.8mm x 13.6mm. (Is that a fairly accurate description?)

**Super Noob Question**
Instead of using USB to power the board. Can I just run lines from my AC to 5 V DC Power Supply Module to power the board?

Yep, that's the dimensions of the hole you need for the OLED board they use on most of these! You can definitely power the board with the 5V DC power supply as well - as @day_trippr said, just run to the +5V and GND pins (or VBUS or USB for those boards that differentiate)
 
Also, I have a 3D printable case for the other style of all-in-one OLED style cases (the one I was complaining about earlier) but I want to try to get it "thingiverse customizer" ready before publishing it, due to the issue placing the hole for the OLED screen. That's this week's project.
 
Hi.

Even though its called tiltbridge, any hope of it working for iSpindel devices as well ?

[edit]... eh scratch that i guess... dont think theres any bluetooth on the iSpindel ? to early here and not enough coffee... Sorry bout the noice...

regs,
peram
 
Last edited:
Hi.

Even though its called tiltbridge, any hope of it working for iSpindel devices as well ?

[edit]... eh scratch that i guess... dont think theres any bluetooth on the iSpindel ? to early here and not enough coffee... Sorry bout the noice...

regs,
peram

Yeah - if your iSpindel isn’t reaching your WiFi, you’d need to move your router closer, unfortunately. Sorry. :(
 
Great work! Is there a chance of you teaming up with Tilt to make the Tilt an all-in-one (basically where this board is built into the Tilt)? This would be a huge step forward.
 
Great work! Is there a chance of you teaming up with Tilt to make the Tilt an all-in-one (basically where this board is built into the Tilt)? This would be a huge step forward.

Unfortunately, no -- but only because the technology wouldn’t work.

BLE is -VERY- low energy in comparison to WiFi. The Tilt transmits readings once every 0.8 seconds and has a battery that lasts for years. WiFi would dramatically increase the power usage which would require readings to be read/sent several orders of magnitude less frequently - and it would still have dramatically shorter battery life.

As a side note - the Tilt folks are awesome and were very helpful when I was working on the project. Definite shout out to them!
 
Indeed, unless there is a similar Wifi paradigm to the BTLE "beacon" connectionless messaging method going Wifi would be a lose-lose proposition...

Cheers!
 
My board is slowly making its way from China. Seems like it was stuck on a Chinese airplane for about seven days, which had me a little worried. I can't wait to get this set up and running.
 
I'm getting this error when I try to flash the device. Any ideas?

TypeError at /firmware/flash/9/
__init__() got an unexpected keyword argument 'max_errors'
Request Method: POST
Request URL: http://192.168.86.29/firmware/flash/9/
Django Version: 1.11.20
Exception Type: TypeError
Exception Value:
__init__() got an unexpected keyword argument 'max_errors'
Exception Location: /home/fermentrack/venv/lib/python3.5/site-packages/redis/connection.py in make_connection, line 1025
Python Executable: /home/fermentrack/venv/bin/python3
Python Version: 3.5.3
Python Path:
['/home/fermentrack/venv/lib/python3.5/site-packages/git/ext/gitdb',
'/home/fermentrack/venv/bin',
'/home/fermentrack/fermentrack',
'/home/fermentrack/venv/lib/python3.5/site-packages',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-arm-linux-gnueabihf',
'/usr/lib/python3.5/lib-dynload',
'.',
'/home/fermentrack/venv/lib/python3.5/site-packages/gitdb/ext/smmap']
Server time: Thu, 18 Apr 2019 02:20:29 +0000
 
I'm getting this error when I try to flash the device. Any ideas?

TypeError at /firmware/flash/9/
__init__() got an unexpected keyword argument 'max_errors'
Request Method: POST
Request URL: http://192.168.86.29/firmware/flash/9/
Django Version: 1.11.20
Exception Type: TypeError
Exception Value:
__init__() got an unexpected keyword argument 'max_errors'
Exception Location: /home/fermentrack/venv/lib/python3.5/site-packages/redis/connection.py in make_connection, line 1025
Python Executable: /home/fermentrack/venv/bin/python3
Python Version: 3.5.3
Python Path:
['/home/fermentrack/venv/lib/python3.5/site-packages/git/ext/gitdb',
'/home/fermentrack/venv/bin',
'/home/fermentrack/fermentrack',
'/home/fermentrack/venv/lib/python3.5/site-packages',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-arm-linux-gnueabihf',
'/usr/lib/python3.5/lib-dynload',
'.',
'/home/fermentrack/venv/lib/python3.5/site-packages/gitdb/ext/smmap']
Server time: Thu, 18 Apr 2019 02:20:29 +0000

This is the same issue @Jerrydfl noted in the ESP8266 thread - the issue is that one of the libraries Fermentrack relies upon updated earlier this month in a way that isn’t backwards compatible. I need to refactor parts of Fermentrack to get Huey back up and running - this should be done by EOD tomorrow. I’ll post once it’s in. Sorry for the delay!
 
There are 5V and GND header pins that will allow you to direct-feed 5VDC to either of the boards listed...

Cheers!
Can I also run a regular USB to micro USB from my Raspberry to power the ESP32? I would rather not use an additional wall socket to power the esp32.
 
Mine came today so I've been trying to set it up tonight. Disclaimer, this is the first time playing around with one of these boards. I'm having a bit if a problem since flashing it.

Quick version: Bought one of the ESP32 "OLED" boards linked to in the documentation. I opted to install using esptool.py. Flash appeared to be successful, but ever since I flashed it, the display has been blank. Any ideas?

Longer version: The first few attempts to flash it failed with an error indicating esptool timed out waiting for packet header. I googled the error and found info indicating I needed to hold down the Boot button while attempting to flash it. That seemed to work and the flash appeared to be successful. However, as I indicated above, the display is now blank. Also, no detectable WiFi.

Chip is ESP32DOWDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None

All hash of data verified. Last two lines in command prompt indicate:
Leaving...
Hard resetting via RTS pin...

I'm able to re-flash with the same results each time, but still nothing on the display. Also, none of my devices are seeing the TiltBridgeAP, so it doesn't seem to be just a display issue.

I'm sure it's due to user error or inexperience. Any ideas?
 
Mine came today so I've been trying to set it up tonight. Disclaimer, this is the first time playing around with one of these boards. I'm having a bit if a problem since flashing it.

Quick version: Bought one of the ESP32 "OLED" boards linked to in the documentation. I opted to install using esptool.py. Flash appeared to be successful, but ever since I flashed it, the display has been blank. Any ideas?

Longer version: The first few attempts to flash it failed with an error indicating esptool timed out waiting for packet header. I googled the error and found info indicating I needed to hold down the Boot button while attempting to flash it. That seemed to work and the flash appeared to be successful. However, as I indicated above, the display is now blank. Also, no detectable WiFi.

Chip is ESP32DOWDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None

All hash of data verified. Last two lines in command prompt indicate:
Leaving...
Hard resetting via RTS pin...

I'm able to re-flash with the same results each time, but still nothing on the display. Also, none of my devices are seeing the TiltBridgeAP, so it doesn't seem to be just a display issue.

I'm sure it's due to user error or inexperience. Any ideas?
Have you tried connecting to the board in AP mode? Meaning, after you flash it, use your phone to connect to it like a wifi hotspot in a coffee shop. Make sure you turn off the mobile data on your phone to force it to connect to the board. Then open a website and navigate to any site. You should be able to set it up to connect to your network. See if that does anything.
 
Have you tried connecting to the board in AP mode? Meaning, after you flash it, use your phone to connect to it like a wifi hotspot in a coffee shop. Make sure you turn off the mobile data on your phone to force it to connect to the board. Then open a website and navigate to any site. You should be able to set it up to connect to your network. See if that does anything.
I think I must have gotten a bum board... or my big meat mitts somehow managed to damage it
I ended up ordering another board off of Amazon and it was up and running in a matter of minutes.

The following is the replacement board I ordered through Amazon. The overall size is just a tad longer, maybe 1/4". My buddy is going to print an enclosure for me, so hopefully it fits.

HiLetgo 0.96" ESP32 OLED ESP-WROOM-32 ESP32 ESP-32 OLED WiFi Bluetooth Development OLED Display for Arduino AP STA https://www.amazon.com/dp/B072HBW53G/ref=cm_sw_r_cp_apa_i_XGqVCb9417RN1

1555892749807.jpeg
 
I think I must have gotten a bum board... or my big meat mitts somehow managed to damage it
I ended up ordering another board off of Amazon and it was up and running in a matter of minutes.

The following is the replacement board I ordered through Amazon. The overall size is just a tad longer, maybe 1/4". My buddy is going to print an enclosure for me, so hopefully it fits.

HiLetgo 0.96" ESP32 OLED ESP-WROOM-32 ESP32 ESP-32 OLED WiFi Bluetooth Development OLED Display for Arduino AP STA https://www.amazon.com/dp/B072HBW53G/ref=cm_sw_r_cp_apa_i_XGqVCb9417RN1

View attachment 623330

Out of curiousity, was the supplier of the "bum" board one of the ones that was linked in the TiltBridge documentation? If so, which was it so I can remove the link?


Yeah - one of the biggest issues with a lot of these projects is being able to obtain working, genuine hardware. For the ESP8266-based BrewPi port, it's easy - I recommend the Lolin D1 Mini boards. For this project, they don't make a version with an attached OLED screen, unfortunately. Instead, every supplier is "off-brand", so quality/uniformity isn't always guaranteed. Not ideal, but until something changes, it's all that is available. :(
 
I'm getting this error when I try to flash the device. Any ideas?

TypeError at /firmware/flash/9/
__init__() got an unexpected keyword argument 'max_errors'
Request Method: POST
Request URL: http://192.168.86.29/firmware/flash/9/
Django Version: 1.11.20
Exception Type: TypeError
Exception Value:
__init__() got an unexpected keyword argument 'max_errors'
Exception Location: /home/fermentrack/venv/lib/python3.5/site-packages/redis/connection.py in make_connection, line 1025
Python Executable: /home/fermentrack/venv/bin/python3
Python Version: 3.5.3
Python Path:
['/home/fermentrack/venv/lib/python3.5/site-packages/git/ext/gitdb',
'/home/fermentrack/venv/bin',
'/home/fermentrack/fermentrack',
'/home/fermentrack/venv/lib/python3.5/site-packages',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-arm-linux-gnueabihf',
'/usr/lib/python3.5/lib-dynload',
'.',
'/home/fermentrack/venv/lib/python3.5/site-packages/gitdb/ext/smmap']
Server time: Thu, 18 Apr 2019 02:20:29 +0000

This bug should be fixed now. Sorry about that.
 
Can I use this device to output a Tilt to a laptop computer running Linux?
Yep.

The TiltBridge will push data to Fermentrack which can be run on many flavors of Linux. You’ll need to have something running to receive the data though - Fermentrack being the option that this was initially designed for.
 
Out of curiousity, was the supplier of the "bum" board one of the ones that was linked in the TiltBridge documentation? If so, which was it so I can remove the link?


Yeah - one of the biggest issues with a lot of these projects is being able to obtain working, genuine hardware. For the ESP8266-based BrewPi port, it's easy - I recommend the Lolin D1 Mini boards. For this project, they don't make a version with an attached OLED screen, unfortunately. Instead, every supplier is "off-brand", so quality/uniformity isn't always guaranteed. Not ideal, but until something changes, it's all that is available. :(
This is the one, https://m.aliexpress.com/item/32896...-Dual-ESP-32-ESP-32S-ESP8266-OLED-For-Arduino

To be honest though, it might have been me that screwed it up. I'm pretty technically inclined, but this is the first time playing around with these boards. I have a buddy who's company does property management including a whole bunch of automation. He has some guys that work with ESP32 boards all the time, and they apparently have some diagnostic equipment, so he's going to let them look at it and see if it's a bad board, if I broke it (shorted it?), whatever.
 
To double the sample size, I had the same problem with the same board. It seemed to flash okay, then nothing and no way to access it in AP mode.

I had ordered the other LCD board in the links and that one worked the first time without trouble.
 
Thats... not a good success rate with that board. I'll strip the link when I next update the docs. One more reason to opt for the TTGO-style board, I guess... :(
 
Thats... not a good success rate with that board. I'll strip the link when I next update the docs. One more reason to opt for the TTGO-style board, I guess... :(
Wait, don't do that. The TTGO style board is the one that didn't work for me. So it looks like there is an instance of both kinds not working. I'll try to retrace my steps to see what I could have done to bork in on flash.
 
Amen. That’s why I originally was in the non-TTGO OLED board camp, but for those they literally use double-sided tape to stick the OLED screen to the board - and don’t do a good job of placing them uniformly. There’s over a 1mm difference between these, for example:

View attachment 620094

@Thorrak, are these on Thingiverse? My surface mountable wood enclosure is a very similar design solution. (My Enclosure is more a proof in concept...still pretty ugly)

My experience with CAD is poorly using Sketch-Up. If the above Enclosure is your design, I wouldn’t mind taking a stab at trying to modify the design to work as a surface mountable Enclosure, or giving you the dimensions of my Enclosure and letting you modify. (Or something in between)
 
Last edited:
Thorak thank you for the info regarding powering the ESP32 off my raspberry usb port. I do have a new issue that I hope you can help with.
I have been running fermentrack for several brews now with no issues it has been a pleasure.
I received a tilt hydrometer and wanted to setup the tilt bridge as it will be in a SS fermentor in a freezer.

I received my ESP32 ( the second one listed on tilt bridge website from Ali express Brand OOTDTY). I tried connecting and flashing the device last night. To do this I connected via USB cable the ESP32 to my Raspberry PI 3 B. I disconnected my arduino board from the raspberry at the same time( I thought that is what the instructions said in order to not flash the wrong device). After flashing the ESP32 I got this message
Status : Failed
Firmware Flashed:
Board Type Selected:ESP32-Esp32
Serial Port Used:/dev/ttyUSB0
Result Text: Flas process returned code 2

esptool.py v2.6
serial port /dev/ttyUSB0
Connecting.....______
A fatal error occurred: Failed to connect to ESP32 timed out waiting for packet header

at the same time now my script has stopped running. When I tried to debug I got the following
Connection setting
Connection type serial
USB Serial number Arduino.www.aruduino.cc_0043....
Locate port true
serial alt none

Test performed
Device status updating failed device not active
Udev Availability linux failed pyudev is not available or isn't loaded

I do not know how to check if the device is active or not

If you need any further info please be specific on how to get it as I am a complete novice .
Again thank you ALL for all of the support and have loved using Fermentrack .
 
After flashing the ESP32 I got this message
Status : Failed
Firmware Flashed:
Board Type Selected:ESP32-Esp32
Serial Port Used:/dev/ttyUSB0
Result Text: Flas process returned code 2

esptool.py v2.6
serial port /dev/ttyUSB0
Connecting.....______
A fatal error occurred: Failed to connect to ESP32 timed out waiting for packet header

I received the same error, Apparently there was/is something wrong with my USB to UART Bridge and flashing from RaspberryPi. My fix was to hold down the Boot button as I was flashing with Fermentrack. When holding the boot button, Fermentrack was able to successfully flash my ESP32 and I avoided the error. (BTW...I ordered the same ESP32 from AliExpress)

—Edit—
The other thing I noticed, I see you’re trying to flash to serial port ttyUSB0. (Someone more knowledgeable will need to chime in) but since you already have a controller flashed, I would have thought your TiltBridge would be flashing to ttyUSB1. I thought the procedure for flashing was to connect all flashed controllers via USB, run the equipment scan, connect the ESP32 via USB, then scan for new a new controller. (All the while leaving your other controller connected.)
 
Last edited:
Back
Top