Skip to content
NORVI AE01-R Configuration

NORVI AE01-R Configuration

Overview

The NORVI IIOT-AE01-R is an industrial ESP32-WROOM32 controller with built-in relays, transistor outputs, digital inputs, an OLED display, RS-485, and push buttons — all in a DIN-rail-mountable enclosure (IP20). It is CE certified (EN 61131-2, EN 61010-1) and designed for permanent installation in electrical cabinets.

Key differences from a standard ESP32 dev board:

FeatureStandard ESP32 Dev BoardNORVI AE01-R
Supply voltage5V (USB)24V DC
Relay moduleExternal (needs 5V)6 built-in relays (5A 250V AC)
Power supply for relaysSeparate 5V neededIntegrated — powered from 24V
Status indicationBuilt-in LED only0.96" OLED display + external LED
EnclosureOpen board (breadboard)DIN-rail enclosure (IP20)
CertificationsNoneCE (EN 61131-2, EN 61010-1)
WiringScrew terminals / DupontIndustrial screw terminals
Digital inputsNone8x sink/source (18–32V DC)
Additional I/ONone2x transistor output, RS-485
User interfaceNone3 front-panel push buttons

If you already have a 230V AC → 24V DC power supply, the NORVI AE01-R can be powered directly from it — no separate 5V PSU needed.


Pin Assignment

Important hardware limitation: The NORVI’s 8 digital inputs (GPIO18/19/21/22/23/34/35/39) are optocoupler-isolated input-only — they expect 18–32V DC signals and cannot be used for bidirectional 1-Wire (DS18B20) communication.

The firmware uses the NORVI_AE01_R preprocessor macro to select an alternate pin mapping that avoids the occupied and input-only pins:

ConstantNORVI GPIOPurposeConnection
PIN_DS_SOLARGPIO25DS18B20 — Solar collector temperatureExpansion Port Pin 1
PIN_DS_POOLGPIO25DS18B20 — Pool water temperatureShared bus on GPIO25 (expansion)
PIN_RELAY_POOLGPIO14 (R0)Relay — Pool circulation pumpRelay Output 0
PIN_RELAY_SOLARGPIO12 (R1)Relay — Solar heating pumpRelay Output 1
PIN_LED_STATUSGPIO27 (T0.1)Status LED (external, via transistor output)Transistor Output 0.1
PIN_OLED_SDAGPIO16I2C SDA — built-in 0.96" OLED (SSD1306)Internal (I2C)
PIN_OLED_SCLGPIO17I2C SCL — built-in 0.96" OLED (SSD1306)Internal (I2C)
PIN_BUTTON_ADCGPIO323 front-panel buttons (via analog ADC)Internal (resistor ladder)

Connecting the DS18B20 Sensors — Shared OneWire Bus

Both sensors share a single OneWire bus on GPIO25 on the Expansion Port (a 10-pin male header on the side of the NORVI enclosure, 2.54 mm pitch). DATA, 3.3V, and GND are all available on this header — no soldering needed.

   NORVI AE01-R — Expansion Port (10-pin male header, 2.54 mm)
   ┌───────────────────────────────────────────────────────────┐
   │                                                           │
   │  Pin 1  ◄─────── IO25 ──── DS18B20 DATA (yellow)         │
   │  Pin 2         TXD0                                      │
   │  Pin 3         NC                                        │
   │  Pin 4         RXD0                                      │
   │  Pin 5         IO0 (BOOT)                                │
   │  Pin 6         IO32 (buttons)                             │
   │  Pin 7  ◄─────── 3.3V ──── DS18B20 VCC (red)             │
   │  Pin 8         SCL (OLED)                                 │
   │  Pin 9  ◄─────── GND  ──── DS18B20 GND (black)           │
   │  Pin 10        SDA (OLED)                                 │
   │                                                           │
   └───────────────────────────────────────────────────────────┘
                             ↑
               3× Female-Female Dupont cables

Wiring table:

Expansion PortDupont (colour)DS18B20Also connect to
Pin 1 (IO25)YellowDATA4.7 kΩ → 3.3V
Pin 7 (3.3V)RedVCC4.7 kΩ → DATA
Pin 9 (GND)BlackGND

Both sensors share the same three pins — connect both DATA lines to Pin 1, both VCC to Pin 7, and both GND to Pin 9. A single 4.7 kΩ pull-up resistor between Pin 1 and Pin 7 is sufficient for both sensors.

Pull-up resistor color code: Gelb – Violett – Rot – Gold (±5%)

  Gelb  Violett  Rot   Gold
  ┌──┐  ┌──┐  ┌──┐  ┌──┐
  │  │  │  │  │  │  │  │
  └──┘  └──┘  └──┘  └──┘
   4     7    ×100  ±5%
  = 47 × 100 = 4700 Ω = 4,7 kΩ
Shared Bus Details: The firmware uses the NORVI_AE01_R preprocessor macro to create a single DallasTemperature instance shared by both sensor nodes. The solar node (device index 0) drives requestTemperatures(); the pool node (device index 1) reads from the same conversion. Both sensors require a 4.7 kΩ pull-up resistor between the DATA line and 3.3 V — one resistor is enough when they share the same bus.
Used the old soldered GPIO5? If you already soldered your pool sensor to the ESP32 module pin, the firmware falls back to the dedicated-bus mode when NORVI_AE01_R is not defined. You can keep your existing wiring and just omit the build flag, or move both sensors to the shared GPIO25 for a cleaner setup.

Sensor Identification — First Boot

Because both sensors share the same bus, the scan order determines which device is assigned to Solar (index 0) and which to Pool (index 1). To ensure they stay assigned correctly across reboots (e.g., when adding or replacing sensors), use the OLED Sensor Setup Wizard or the serial console.

OLED Setup Wizard (recommended)

  1. Enter setup: long-press (2 s) the left Button B1 on the front panel.
  2. The display shows both detected DS18B20 sensors with their ROM addresses and current temperatures.
  3. Identify your sensors: warm one sensor with your finger — its temperature will rise on the display. Press B2 to assign the currently selected sensor as Solar, or B3 to assign it as Pool.
  4. Repeat for the second sensor. The badge SOLAR or POOL appears next to each assigned device.
  5. Save & reboot: once both sensors are assigned, long-press B2 to write the mapping to NVS and restart. The mapping survives all future reboots.

Cancel: long-press B1 again at any time to exit without saving.

Serial Console

On first boot (or when no mapping is saved), the serial output prints:

• Sensor mapping: no addresses configured — using default device indices
  ℹ To configure: long-press Button 1 → Sensor Setup page → assign sensors

After identifying your sensors (warm one, watch the serial output for its address), you can find the ROM addresses in the boot log and configure them via the Web UI (coming soon).

How the Mapping Works

The 8-byte ROM address of each sensor is stored in NVS (Preferences namespace ds18b20, keys solar_adr and pool_adr). On every subsequent boot, the firmware scans the bus for a device matching the stored address. If found, that device is used — regardless of its bus scan position. If the stored sensor is not found (e.g., it was replaced), the firmware prints a warning and falls back to the default device index.


Wiring Diagram

 ─── POWER SUPPLY ─────────────────────────────────────────────────────

  [230V AC → 24V DC PSU]        [NORVI AE01-R]
   ┌──────────────────┐          ┌──────────────────────────┐
   │ 24V (+) ─────────┼──────────┤ 24V DC (+)              │
   │                  │          │                          │
   │ GND  ────────────┼──────────┤ GND (0V)                │
   └──────────────────┘          │                          │
                                 │  The NORVI powers itself │
                                 │  and the relays from 24V │
                                 └──────────────────────────┘

  ─── SENSORS (Shared OneWire Bus on Expansion Port) ────────────────

   ┌── DS18B20 Solar ──┐    ┌── DS18B20 Pool ───┐    NORVI Expansion Port
   │                   │    │                   │    ┌──────────────────────┐
   │ VDD (red) ────────┼────┼──── VDD (red) ────┼────┤ Pin 7 (3.3V)        │
   │                   │    │                   │    │                      │
   │ GND (blk) ────────┼────┼──── GND (blk) ────┼────┤ Pin 9 (GND)         │
   │                   │    │                   │    │                      │
   │DATA (yel) ────────┼────┼──── DATA (yel) ───┼────┤ Pin 1 (GPIO25)      │
   │                   │    │    │              │    └──────────────────────┘
   └───────────────────┘    │    │              │
                             │    │              │
                             │    └──[4.7kΩ]─────┼── 3.3V (single pull-up)
                             │                  │
                             └──────────────────┘

   One 4.7kΩ resistor between DATA (Pin 1) and 3.3V (Pin 7) is enough.
   Dupont cables: 3× Female-Female (red/yellow/black).

 ─── RELAY OUTPUTS (built-in) ─────────────────────────────────────────

   NORVI Relay Output 0 (GPIO14):   Pool pump
   NORVI Relay Output 1 (GPIO12):   Solar pump

   L (mains) ─── RCD ─── MCB ──┬── Relay COM0 ── Pool Pump NO
                                └── Relay COM1 ── Solar Pump NO
   N (neutral) ───────────────────────── Neutral bar ── Pump N

   The NORVI relays are Normally Open (SPST) — connect your 230V AC
   loads between COM and NO. The relays are rated 5A/250V AC.

 ─── STATUS LED (external) ────────────────────────────────────────────

   NORVI Transistor Output 0.1 (GPIO27):
     GPIO27 ─── 330Ω ─── LED (anode) ─── LED (cathode) ─── GND

   The transistor output is open-collector (100mA max). When the pin
   goes HIGH, the internal transistor switches to GND, completing the
   circuit. Use a standard 5mm LED with a 330Ω series resistor.

Built-in OLED Display

The NORVI AE01-R includes a 0.96" SSD1306 OLED display (128×64, I2C address 0x3C). The firmware uses it to show four information pages:

PageContent
1Pool & solar temperature, pump status, operation mode, and button hints (▲ next page, ▼ toggle pump, ■ cycle mode)
2WiFi SSID, IP address, MQTT connection status, AP mode hint
3System uptime, free heap, low-watermark heap, firmware version
4QR code linking to the web dashboard at http://<device-ip>/

Shared footer: All pages show a separator line at the bottom followed by the current operation mode (page 1 only), local time (HH:MM), firmware version (vX.Y.Z), and page number. The time updates with every display refresh and uses the configured timezone with automatic daylight saving time (DST).

Auto WiFi page: When no WiFi is configured (AP mode) or the connection is lost, the display automatically switches to the Network Status page (page 2) at startup so the user can see the AP name and the setup URL immediately.

QR code page: The last page (page 4) generates a QR code for the web dashboard URL (http://<ip>/). Scan it with your phone’s camera to open the dashboard quickly without typing the IP address. The QR code is generated on-device using the ricmoo/QRCode library.

The display updates every 2 seconds and is controlled by the front-panel buttons (see below).


Front-Panel Buttons

The three push buttons on the front panel are read via analog ADC on GPIO32. Each button produces a distinct voltage level through a built-in resistor ladder:

ButtonAction
1 (left)Cycle OLED display page forward (1 → 2 → 3 → 4 → 1)
2 (middle)In manual mode: toggle pool pump ON/OFF
3 (right)Cycle operation mode (auto → manu → boost → timer → auto)

The ADC thresholds are configured in NorviButtonHandler.hpp. Raw values are logged via serial on startup for calibration.


Power Supply

The NORVI AE01-R runs on 24V DC (±10%). The built-in relays and the ESP32 are both powered from this single supply.

ParameterValue
Rated voltage24V DC
Current consumption400 mA (all relays off)
Recommended PSU1A 24V DC (or more)

Note: Unlike the standard ESP32 dev board setup, the NORVI does not need a separate 5V USB supply or a 5V relay module PSU. Everything runs from the single 24V DC input.


What’s Different — Comparison with Standard Setup

AspectStandard ESP32 Dev BoardNORVI AE01-R
Power5V USB or 5V PSU24V DC (single supply)
RelaysExternal 2-channel module6 built-in (we use 2)
Relay power5V to relay moduleIntegrated (24V → relay coils)
Sensor pinsGPIO32, GPIO33GPIO25 (Exp Port), GPIO5 (solder)
Relay pinsGPIO25, GPIO26GPIO14 (R0), GPIO12 (R1)
Status LEDBuilt-in (GPIO2)External via GPIO27 (T0.1)
OLED displayNoneBuilt-in 0.96" (SSD1306) — 4 info pages + QR code
Push buttonsBOOT button (GPIO0)3 front buttons — cycle pages & modes
MountingBreadboard / enclosureDIN-rail (standard electrical cabinet)

What’s no longer needed

  • External relay module — eliminated (built-in)
  • Separate 5V PSU for relays — eliminated (24V integrated)
  • 5V USB power supply — eliminated (24V single supply)
  • Breadboard / perfboard — eliminated (screw terminals)

What’s still the same

  • DS18B20 sensors with 4.7kΩ pull-up resistors
  • 230V AC wiring (RCD/MCB protection, pump connections)
  • MQTT / Home Assistant / Homie Convention — all software is identical

Building the Firmware

The NORVI variant is selected at compile time via the NORVI_AE01_R preprocessor macro. Use the dedicated PlatformIO environment:

pio run -e norvi_ae01_r -t upload

This environment:

  • Defines -D NORVI_AE01_R to select the alternate pin mapping (shared OneWire bus)
  • Includes Adafruit SSD1306 and Adafruit GFX Library for the OLED
  • Initializes I2C on GPIO16/GPIO17 and the button ADC on GPIO32

To also upload the LittleFS filesystem (web UI):

pio run -e norvi_ae01_r -t uploadfs

Note: The NORVI’s USB port is used for programming but shares the UART with RS-485. Serial.print() may interfere with RS-485 communication — use the OLED display for debug output when RS-485 is active.


NORVI AE01-R Pin Reference

GPIONORVI FunctionUsed by Pool Controller?
0NRST (outputs PWM at boot)
1RS-485 TX (shared with USB)
2Relay Output 4 / Built-in LED
3RS-485 RX (shared with USB)
4RS-485 Flow Control
5— (free GPIO, no NORVI peripheral)DS18B20 Pool (solder)
12Relay Output 1✅ Solar pump
13Relay Output 2
14Relay Output 0✅ Pool pump
15Relay Output 3
16I2C SDA (OLED display)✅ OLED display
17I2C SCL (OLED display)✅ OLED display
18Digital Input 0 (input only)
19Digital Input 4 (input only)
20
21Digital Input 5 (input only)
22Digital Input 6 (input only)
23Digital Input 7 (input only)
25Expansion Port Pin 1DS18B20 Solar
26Transistor Output 0.0❌ (free)
27Transistor Output 0.1✅ Status LED (external)
32Analog Input / Buttons✅ 3 front-panel buttons
33Relay Output 5
34Digital Input 2 (input only)
35Digital Input 3 (input only)
38
39Digital Input 1 (input only)

Note: GPIOs marked “input only” (GPIO34, 35, 39) lack internal pull-ups and are connected to optocoupler circuits. They cannot be used for 1-Wire or any bidirectional protocol.


References

Last updated on