Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/s60sc/esp32_specificgravity
Calculates fermentation Specific Gravity from tilt angle of floating sensor
https://github.com/s60sc/esp32_specificgravity
beer esp32 esp32-arduino fermentation hydrometer mpu6050 specific-gravity spindel
Last synced: 3 days ago
JSON representation
Calculates fermentation Specific Gravity from tilt angle of floating sensor
- Host: GitHub
- URL: https://github.com/s60sc/esp32_specificgravity
- Owner: s60sc
- License: agpl-3.0
- Created: 2020-08-04T15:42:04.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-22T13:04:11.000Z (4 months ago)
- Last Synced: 2024-07-23T14:48:46.651Z (4 months ago)
- Topics: beer, esp32, esp32-arduino, fermentation, hydrometer, mpu6050, specific-gravity, spindel
- Language: C++
- Homepage:
- Size: 1.19 MB
- Stars: 11
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ESP32_SpecificGravity
Device to calculate Specific Gravity of wort during fermentation from tilt angle of floating sensor, where tilt angle varies with liquid density.
Designed to provide a qualified rather than precise value for Specific Gravity for simplicity of calibration.Uses the hardware design approach from http://www.ispindel.de/docs/README_en.html
but simplified to use an ESP32 module with an integral 18650 battery holder and battery management IC TPS5400, and obtain G force readings and temperature from a separate MCU6050 accelerometer on GY-521 module.
The code base has been independently developed.The generated data is packaged into a json string, this data can be viewed:
* whilst the ESP32 is awake by using its own web server accessed from a browser.
* on a remote host listening receiving json data using a http client.On power up, ESP32 will remain awake for calibration purposes (see below) until user presses the __Start__ button on the web page.
The ESP32 will then periodically wakeup to collect data and send this to the remote host, then return to deep sleep.## Installation
Download github files into the Arduino IDE sketch folder, removing `-main` from the application folder name.
Compile using arduino core v2.x or V3.x (min v3.0.3) and the following Partition scheme:
* ESP32-S3 - `8M with spiffs (...)`
* ESP32 - `Minimal SPIFFS (...)`On first installation, the application will start in wifi AP mode - connect to SSID: **ESP32_SG_...**, to allow router and password details to be entered via the web page on `192.168.4.1`. The configuration data file (except passwords) is automatically created, and the application web pages automatically downloaded from GitHub to the SD card **/data** folder when an internet connection is available.
Subsequent updates to the application, or to the **/data** folder files, can be made using the **OTA Upload** tab. The **/data** folder can also be reloaded from GitHub using the **Reload /data** button on the **Edit Config** tab, or by using a WebDAV client.
## Setup and Calibration
The ESP32 and GY-521 modules fit snugly into a 33mm width x 120mm height PETling:
![image1](extras/device.png)
To view current data and calibrate device before each use:
* Open App web page to get readings.
* Balance device in PETling so settles at c. 25 deg angle in plain water at 20C, then press __Set WA__ button to set lower range of curve.
* Use hydrometer to measure the original gravity of the wort prior to fermentation.
* Enter hydrometer value into __Original Gravity__ field, e.g. 1.045.
* Place device in wort and wait till angle settles, then press __Set OG__ button to set upper range of curve.
* Press __Start__ button to start monitoring, device will go to sleep
* Press __Reset__ to reenter calibration mode.
If the device is in deep sleep, pressing boot button has same effect.![image1](extras/webpage.png)
## Configuration
The device can be configured from the web page under __Edit Config__ tab:
* __Wifi__: to change wifi details, in particular IP address of remote client.
* __Sensors__: pin selection etc.
* __Other__: time that device is awake and time that device is asleep (to save battery)
* Press __Save__ button for changes to persist, then __Reboot ESP__ to apply changes