XStore

NORVI X-Q8 – USER GUIDE

Updated on September 8, 2026

9 min read

Overview #

NORVI X is a next generation modular industrial controller designed to power smart automation and IoT solutions. Built around a CPU module and a range of plug and play expansion modules, the platform scales from a handful of I/O points up to 200, giving system integrators, OEMs, and industrial engineers a flexible foundation for automation, remote monitoring, and data acquisition projects.

The NORVI X-Q8 is an 8-channel transistor output expansion module for the NORVI X modular controller platform. It provides eight high-side switching channels for driving industrial actuators, relays, and solenoids.

Each output is optically isolated and uses a high-side MOSFET switch, with integrated fuse protection for reliable control of DC loads in industrial environments.

The X-Q8 is not a standalone device. It needs to be paired with a NORVI X CPU module, such as the CPU ESPS3 X1, to be programmed and operated.

This guide covers installation, wiring, technical specifications, terminal and address configuration, software setup, test code, diagnostics, and troubleshooting.

Key Features #

  • 8 high-side transistor output channels using P-channel MOSFETs
  • Up to 24 V DC switching
  • Full optical isolation with dual opto-isolation per channel
  • Per-channel resettable PTC fuse and surge protection
  • Individual LED status indicators for each output
  • DIN rail mountable enclosure with push-in front terminals
  • CE / EMC compliant

Safety Information #

  • Install and wire this module only if you are a qualified electrician or trained technician familiar with industrial control equipment.
  • Confirm the host CPU is running from a regulated 24 V DC supply.
  • Mount the module on a DIN rail inside a suitably rated enclosure.
  • The module has an IP20 protection rating and is not intended for direct outdoor or wash down exposure.
  • Keep the operating environment within minus 40 to plus 85 degrees C and avoid condensing humidity.
  • Do not exceed 0.5 A per channel or the total 4 to 5 A supply current across all eight channels.
  • Do not connect or disconnect the module from the expansion bus while the system is powered.
  • Follow all applicable local and national electrical codes.

Technical Specifications #

Electrical #

Rated Supply Voltage24V DC
Current Consumption90mA @ 24V DC

Output Specifications #

Number of Outputs8 Transistor Output channels
Transistor Output Current0.5A per channel
Maximum Supply Voltage24V DC
Maximum Supply Current4–5A
Output TypeHigh-Side Switch
Switching TransistorP-Channel MOSFET
Isolation TypeOptocoupler Isolation
Protection (Per Channel)Per-channel resettable PTC fuse
Output DiagnosticsIndividual LED indicators
Connector TypeSpring terminal

Hardware Layout & GPIO Map #

The X-Q8 does not claim direct ESP32-S3 GPIO pins for its output channels. It uses the shared I2C bus together with the module control signals.

Expansion Port PinPurposeGPIO / SignalSource
5SCLIO9ESP32-S3
6SDAIO8ESP32-S3
35RESETIO21ESP32-S3

Output Terminals #

TerminalFunction
TR1Transistor Output 1
TR2Transistor Output 2
TR3Transistor Output 3
TR4Transistor Output 4
TR5Transistor Output 5
TR6Transistor Output 6
TR7Transistor Output 7
TR8Transistor Output 8
GNDGround

I2C Address Selection #

The PCA9539 that directly drives the eight transistor channels is addressed at 0x75. The DIP-selectable addresses 0x70 to 0x73 apply when the module is daisy-chained with other I2C-addressed NORVI expansion modules on the same bus.

NORVI X-Q8 I2C address selector
I2C Address Selector
Address Selection
DIP 1DIP 2DIP 3DIP 4Address
OFFOFF××0x73
ONOFF××0x72
OFFON××0x71
ONON××0x70

Wiring Guide #

GPIO pin assignments for every output are listed in the Hardware Layout and GPIO Map section. This section covers the physical wiring of the module.

Power Connection #

The module receives its internal 24 V DC supply through the expansion port shared with the CPU. The X-Q8 also provides a separate POWER terminal block for supplying the transistor output loads.

Transistor Output Wiring #

  • Each output channel switches through an internal opto-isolated MOSFET between its TRx terminal and the POWER block’s 24V rail.
  • Connect one lead of the load, such as a relay coil, solenoid, actuator, or indicator, to the corresponding TRx terminal. Connect the other lead of the load to GND.
  • The transistor outputs are powered from the dedicated POWER terminal block containing 24V, 24V, GND, GND, and GND terminals.
  • Connect an external 24 V DC supply to one of the POWER 24V terminals and its return to a POWER GND terminal before wiring any loads.
  • When a channel is ON, its TRx terminal is internally connected to the POWER block’s 24 V rail and sources 24 V DC to the load.
  • When a channel is OFF, the TRx terminal is left floating at high impedance.
  • The output block GND terminal and the POWER block GND terminals share a common ground reference.
  • Since all eight outputs share the same POWER supply and GND reference, use consistent wiring across all channels.
  • For inductive loads such as relay coils or solenoids, keep the load within the per-channel fuse and switching limits.
NORVI X-Q8 transistor output terminal wiring
NORVI X-Q8 Transistor Output Terminal Wiring

Connecting the Module to the CPU #

  1. Power off the system.
  2. Mount the X-Q8 on the DIN rail next to the CPU module or an adjacent expansion module.
  3. Seat it firmly onto the expansion bus connector until it locks into place.
  4. If daisy-chaining multiple I2C-addressable modules, set the DIP switches first so each module has a unique address.
  5. Wire the loads to TR1 through TR8 and confirm that each load remains within the 0.5 A per-channel and 24 V DC rating.
  6. Power the system back on.
  7. Upload the module’s test sketch from the NORVI GitHub repository to confirm each output channel operates correctly.
NORVI X-Q8 connected with NORVI X CPU
NORVI CPU Controller with NORVI X-Q8 Expansion Module

Expansion Port (50 pin) #

The X-Q8 connects to the CPU through the shared 50 pin expansion bus. The pins used by this module include SCL, SDA, GND, 24V, and 5V. The remaining pins pass through for other expansion modules.

PIN INDEXPurposeGPIOSOURCE
1MOSIIO11ESP32-S3
2MISOIO13
3SCLKIO12
4GND—-
5SCLIO9
6SDAIO8
7GND—-
8RX1IO18
9TX1IO17
10GND—-
11D+—-
12D-—-
13GND—-
14CS1P1_0PCA9539
I2C Address 0x75
15CS2P0_7
16CS3P0_6
17CS4P0_5
18IO1IO1ESP32-S3
19IO2IO2
20IO4IO4
21IO5IO5
22IO6IO6
23IO7IO7
24IO10IO10
25IO11IO35
26IO12IO41
27IO13IO37
28IO14IO14
29RS485_TXIO15
30GND—-
31GND—-
32RS485_RXIO16
33P1_1P1_1PCA9539
I2C Address 0x75
34P1_2P1_2
35IO21IO21PCA9538 Reset
36GND—-
37GND—-
38P1_3P1_3PCA9539
I2C Address 0x75
39P1_4P1_4
40P1_5P1_5
41IO39IO39ESP32-S3
42IO40IO40
43NC—-
44NC—-
45NC—-
46GND—-
475V5V
48GNDGND
4924V24V
5024V24V

Software Setup (Arduino IDE) #

The NORVI X-Q8 is driven through the host CPU using the Arduino IDE with the ESP32 board package. Firmware examples and required libraries are maintained in the NORVI GitHub repository.

Board Configuration #

  1. Install Arduino IDE

    Install the Arduino IDE and add ESP32 board support:

    Tools → Board → Boards Manager → ESP32
  2. Connect the Controller

    Connect the NORVI X CPU to your computer using the USB interface.

  3. Select Board and Port

    Configure the board and communication port:

    Tools → Board → ESP32 Arduino → ESP32S3 Dev Module
    Tools → Port → Select the corresponding COM/serial port
Arduino IDE Board and Tools Menu Configuration
Arduino IDE Board and Tools Menu Configuration

Configure Board Settings #

Under the Tools menu, configure the following settings:

Upload Settings under the Arduino IDE Tools Menu
Upload Settings under the Tools Menu
SettingSelection
USB CDC On BootEnabled
Flash Size16MB (128Mb)
PSRAMQSPI PSRAM

Test Code Examples #

Required Libraries #

Install these via Arduino IDE → Sketch → Include Library → Manage Libraries before compiling any of the examples below:

  • Wire
  • WiFi
  • SPI
  • PCA9538
  • TFT_eSPI
  • CST816S
  • Free_Fonts

Install the Required Library #

Install the Wire library through:

Sketch → Include Library → Manage Libraries

Search for Wire and install it if required.

Opening the Arduino IDE Library Manager
Opening the Arduino IDE Library Manager
The libraries are available in the NORVI-X-Version-02 GitHub repository .

Open and Upload the Test Sketch #

  1. Open the X-Q8 test sketch from the NORVI GitHub repository .
  2. Verify the board and port selections.
  3. Click Upload to upload the test sketch to the NORVI X CPU.

Transistor Output Drive #

The following setup initializes the PCA9538 and configures the eight transistor output channels.

#include <Wire.h>
#include <PCA9538.h>

#define PCA9538_ADDR 0x73
#define SDA 8
#define SCL 9
#define PCA_RESET 21

#define TR1 1
#define TR2 2
#define TR3 3
#define TR4 4
#define TR5 5
#define TR6 6
#define TR7 7
#define TR8 8

PCA9538 io(PCA9538_ADDR);

void setup() {
    pinMode(PCA_RESET, OUTPUT);
    digitalWrite(PCA_RESET, HIGH);

    Wire.begin(SDA, SCL);

    io.pinMode(TR1, OUTPUT);
    io.pinMode(TR2, OUTPUT);
    io.pinMode(TR3, OUTPUT);
    io.pinMode(TR4, OUTPUT);
    io.pinMode(TR5, OUTPUT);
    io.pinMode(TR6, OUTPUT);
    io.pinMode(TR7, OUTPUT);
    io.pinMode(TR8, OUTPUT);
}

Driving a Channel #

io.digitalWrite(TR1, HIGH);
delay(300);

io.digitalWrite(TR1, LOW);
delay(300);

I2C Bus Scan #

Run the I2C scan after wiring and setting the DIP switch address to confirm that the PCA9538 on the X-Q8 is being detected.

void I2C_SCAN() {
    byte error, address;
    int deviceCount = 0;

    Serial.println("Scanning...");

    for (address = 1; address < 127; address++) {
        Wire.beginTransmission(address);
        error = Wire.endTransmission();

        if (error == 0) {
            Serial.print("I2C device found at address 0x");

            if (address < 16)
                Serial.print("0");

            Serial.print(address, HEX);
            Serial.println(" !");

            deviceCount++;
            delay(1);
        }
        else if (error == 4) {
            Serial.print("Unknown error at address 0x");

            if (address < 16)
                Serial.print("0");

            Serial.println(address, HEX);
        }
    }

    if (deviceCount == 0)
        Serial.println("No I2C devices found\n");
    else
        Serial.println("Scanning complete\n");
}

Validating the Full Test Sketch #

When wired correctly, toggling each channel in the test sketch should energize the corresponding transistor output, light its status LED, and switch the connected load within roughly one loop cycle.

Troubleshooting #

SymptomSuggested Action
Output stays off Check wiring polarity and confirm GND is properly connected to the load’s return path.
LED stays off despite command Confirm I2C communication with the PCA9539 at 0x75 is succeeding. Check SDA, SCL wiring, and pull-ups.
Output stays on / won’t turn off Check for a shorted or overloaded channel that may have tripped the PTC fuse. Power-cycle the system to reset.
Module not detected by the CPU Power down, reseat the module on the expansion bus, and confirm that there is no address conflict with other daisy-chained modules.
Inconsistent switching on multiple modules Confirm each daisy-chained module has a unique I2C address according to the DIP switch table.
TFT display blank or not working Check three settings under Tools: USB CDC On Boot set to Enabled, Flash Size set to 16MB (128Mb), and PSRAM set to QSPI PSRAM.

Support & Resources #

Product Documentation & Datasheets NORVI X-Q8 Datasheet
Product Page Visit NORVI
Firmware Examples & Libraries NORVI X Version 02 GitHub Repository
Technical Support support@norvi.io