Pump Controller
Gloria does everything Daffodil does as a sensor unit and adds pump control. It reads flow meters, tank and trough levels on four sensor channels, and switches a pump through a relay. A hardware emergency switch cuts the relay whatever the software is doing. An OLED display, nine status LEDs, a START button and an AUTO / MANUAL switch let you run it from the front panel.
The pump is wired to the relay terminal. Three controls decide whether it runs, and the first one is pure hardware.
Gloria is two boards. Valentino is the base board with the ESP32, radio and power; Gloria is the shield that plugs on top through two 10-pin headers.
Base board · full details
| MCU | ESP32 |
| Radio | LoRa 433 MHz (Ra-02) |
| RTC | PCF8563 (I²C 0x51) |
| Watchdog | TPL5010 hardware timer |
| Power | MPPT solar charger, LiFePO4 or lead-acid battery |
| Current sensing | INA219 on the solar input and the battery |
Pump control and sensor shield
| Relay | SRD-05VDC-SL-C, screw terminal J5, driven from GPIO17 |
| Emergency stop | Slide switch in series with the relay coil, state read by the ADC |
| Controls | START push button, AUTO / MANUAL slide switch |
| Sensors | 4 channels, each digital (level-shifted) or analog (ADS1115, 16-bit), 0–5 V |
| Display | 1.54″ OLED, SSD1309, 128×64, I²C |
| LEDs | 9× WS2812B on GPIO16 |
| Config | 5-way DIP switch on a resistor ladder (second ADS1115) |
| Power | TPS2051 load switch turns the shield's 5 V rail on and off (GPIO19) |
| Rail | Feeds |
|---|---|
| 5 V always on | Load switch input, emergency switch, relay coil |
| 5 V switched | LEDs, OLED, both ADS1115s, sensor pull-ups, sensor supply terminal J7 |
| 3.3 V | Level shifters and pull-ups on the ESP32 side |
The load switch is rated 500 mA continuous. Nine LEDs at full white would draw about 540 mA, so the firmware caps LED brightness.
Four sensor channels on two 2-pin screw terminals, J3 and J6. Each terminal pin goes through two jumpers. The digital jumper connects it to a level shifter (5 V sensor to 3.3 V ESP32 logic), for pulse sensors such as flow meters or float switches. The analog jumper connects it to a 16-bit ADS1115 input, for 0–5 V sensors such as tank and trough level. A separate terminal, J7, supplies the sensors with 5 V and ground, which suits flow meters that need at least 4.5 V.
| Terminal | Digital jumper | GPIO | Analog jumper | ADS1115 (0x49) |
|---|---|---|---|---|
J3 pin 2 | JP5 | 33 | JP8 | AIN0 |
J3 pin 1 | JP6 | 18 | JP7 | AIN1 |
J6 pin 2 | JP1 | 32 | JP3 | AIN2 |
J6 pin 1 | JP2 | 23 | JP4 | AIN3 |
J7 | PWR Pin 1: switched 5 V · Pin 2: GND (sensor supply) | |||
J3 and J6 have no power pins; take sensor power from J7. The J3 channels match Daffodil (GPIO33 with AIN0, GPIO18 with AIN1).
J6 pin 1 can also be a 1-wire bus for a DS18B20 probe: close JP2, leave JP4 open, and take the probe's power and ground from J7. The pull-up is already on the board. Not tested on hardware yet.
Like Daffodil, Gloria has a 5-position DIP switch on a resistor ladder. Each combination gives a different voltage, read by the shield's second ADS1115 (0x4A, AIN2), so the 5 switches give 32 positions. The positions select what the unit measures and how it behaves.
The ladder runs from 5 V on Gloria (3.3 V on Daffodil), so Daffodil's thresholds don't apply. The readings for all 32 positions will be measured on the first boards, and the functions assigned in the firmware. The table will be published here and in the manual.
A 1.54″ monochrome OLED (SSD1309 driver, 128×64 pixels) on the I²C bus. The hardware test firmware shows the relay state, AUTO / MANUAL mode, the START button, the emergency switch and the config switch reading. The pages for the production firmware will be designed with it.
Nine WS2812B RGB LEDs on one data line (GPIO16), powered from the switched 5 V rail. Brightness is capped in firmware to keep the current well under the load switch's 500 mA rating. The LED display patterns will be documented once the firmware is written.
Shield J1 mates with Valentino J3; shield J4 mates with Valentino J4. All nine GPIOs available to a shield are used.
| Pin | J1 (Valentino J3) | J4 (Valentino J4) |
|---|---|---|
| 1 | GPIO32Sensor, J6 pin 2 | GPIO5AUTO / MANUAL switch |
| 2 | GPIO33Sensor, J3 pin 2 | GPIO18Sensor, J3 pin 1 |
| 3 | GPIO16LED data | GPIO23Sensor, J6 pin 1, or 1-wire |
| 4 | GPIO17Relay | GPIO195 V switch enable (low = on) |
| 5 | 3.3 V | SDA |
| 6 | GPIO27START button | SCL |
| 7 | NC | 3.3 V |
| 8 | NC | 5 V |
| 9 | GND | GND |
| 10 | GND | GND |
| Address | Device |
|---|---|
0x18 | MCP9808 temperature (Valentino) |
0x3C | OLED (Gloria), expected; 0x3D on some modules |
0x40 | INA219 solar current (Valentino) |
0x41 | INA219 battery current (Valentino) |
0x48 | ADS1115 (Valentino) |
0x49 | ADS1115 sensors (Gloria) |
0x4A | ADS1115 config + emergency sense (Gloria) |
0x51 | PCF8563 RTC (Valentino) |
The Gloria devices are on the switched 5 V rail, so GPIO19 must be low before they answer.
Wiring, jumper settings, configuration positions and pump setup. The manual is being written and will be available here.