XStore

NORVI X-T4 – USER GUIDE

Updated on September 21, 2026

10 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-T4 is a 4 channel thermistor input expansion module built for this platform. It provides four analog input channels dedicated to NTC (Negative Temperature Coefficient) thermistor(10kΩ) -based temperature sensing. Each channel is read through a shared 16-bit ADS1115 I2C ADC, which keeps the module simple to add without using up extra MCU pins on the CPU module beyond the shared I2C bus. The X-T4 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 everything needed to confidently install, wire, and commission the module, including safety requirements, technical specifications, terminal and address configuration, wiring steps, software setup, diagnostic test code, and troubleshooting.

Key Features #

  • 4 analog input channels for NTC thermistor(10kΩ)-based temperature sensing
  • Each channel read through a shared 16-bit ADS1115 I2C ADC for high-resolution measurement
  • I2C communication interface, so only two GPIOs (SCL and SDA) are used from the CPU
  • Suitable for multi-zone industrial temperature monitoring
  • Onboard DIP switch for I2C address selection, allowing multiple thermistor modules on the same bus
  • DIN rail mountable enclosure with spring terminals
  • Plug and play connection to the CPU module through the expansion bus
  • CE / EMC compliant (EN 61131-2:2007, EN 61010-1:2010+A1:2019, EN IEC 61010-2-201:2018, 2014/30/EU)

Safety Information #

Warning: Disconnect all power sources before installing, wiring, or servicing the NORVI X-T4. Failure to do so may result in electric shock or damage to the equipment.

  • 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, since the module draws its power through the expansion port rather than a separate connection.
  • This module reads low-level analog signals from thermistors to keep sensor wiring running short and separated from AC power or relay wiring to avoid measurement noise and error.
  • Mount the module on a DIN rail inside a suitably rated enclosure. It carries an IP20 protection rating and is not designed 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 connect or disconnect the module from the expansion bus while the system is powered.
  • Follow all local and national electrical codes applicable to industrial control panel wiring.

Technical Specifications #

Electrical #

Rated Supply Voltage24V DC
Current Consumption40mA @ 24V DC

Input Specifications #

Number of Thermistor Inputs4
Analog to Digital Converter (ADC)ADS1115, 16-bit, I2C, 3.3V supply
Thermistor TypeNTC (Negative Temperature Coefficient) / (10kΩ)
B-ValueApprox. 3950 K
Resistance / B-Value Tolerance±1% to ±3%
Sensor Configuration2-wire NTC thermistor
Sensor Operating Temperature RangeAt least -40°C to +125°C
Output DiagnosticsAlert Indicator
Power supply24V DC, shared with CPU through the expansion port
Communication busInternal expansion bus (I2C)
Connector TypeSpring terminal

Hardware Layout & GPIO Map #

The table below lists the terminals on the X-T4 and how they map into the ADS1115 ADC. Unlike relay or digital I/O modules, none of the host CPU’s GPIO pins are claimed by the sensor channels themselves – only SCL and SDA are shared across the I2C bus.

TerminalFunction
TM1+Positive Input – Channel 1
TM1-Negative Input – Channel 1
TM2+Positive Input – Channel 2
TM2-Negative Input – Channel 2
TM3+Positive Input – Channel 3
TM3-Negative Input – Channel 3
TM4+Positive Input – Channel 4
TM4-Negative Input – Channel 4
AGNDAnalog Ground

Each channel is a 2-wire NTC thermistor input. To read a channel, connect the thermistor’s two leads across the TM_n+ and TM_n- terminals for that channel; AGND provides the shared analog reference for the module.

I2C Address Selection

Address Selection
DIP 1DIP 2DIP 3DIP 4Address
ONOFFOFFOFF0x49
OFFONOFFOFF0x4B
OFFOFFONOFF0x4A
OFFOFFOFFON0x48

Note: the ADS1115 that directly drives the 4 thermistor input channels is itself addressed at 0x48; the DIP-selectable addresses apply when the module is daisy-chained with other I2C-addressed NORVI expansion modules on the same bus.

Wiring Guide #

GPIO pin assignments for the I2C bus are listed in the Expansion Port table below (Section 6.4); this section covers how to physically wire the module, not the pin numbers themselves.

Power Connection #

The X-T4 requires no separate power supply. It receives 24V DC from the CPU module through the shared expansion port connector, provided the CPU is powered from a regulated 24V DC source with adequate current headroom.

Thermistor Input Wiring #

  • Each of the four channels is a 2-wire NTC thermistor input.
  • Connect the two leads of each thermistor across the TM_n+ and TM_n- terminals for that channel.
  • AGND provides the shared analog ground reference for all four channels.
  • Keep thermistor wiring runs short, and route them separately from AC power, relay, or motor wiring to minimize induced noise on the analog signal.
  • If extending the sensor leads over long distances, use shielded twisted-pair cable and ground the shield at one end only.
  • Confirm each thermistor’s resistance at a known temperature (e.g. room temperature) with a multimeter before wiring, to catch a faulty sensor early.
Figure 1: NORVI X-T4 Thermistor Input Terminal Wiring
Figure 1: NORVI X-T4 Thermistor Input Terminal Wiring

Mounting and Connecting the Module #

  • Power off the entire system before touching any wiring or seating the module.
  • Mount the X-T4 on the DIN rail next to the CPU module (or next to another expansion module already in the chain) and seat it firmly onto the expansion bus connector.
  • Set the I2C address using the onboard DIP switches. Leave at the default for a single X-T4; if adding more than one I2C-addressed module to the same bus, set a unique address on each. See the I2C Address Selection table in Section 5.1.
  • Wire your thermistors to the TM1 through TM4 terminal pairs, connecting each sensor’s two leads to the + and – terminals for that channel, with AGND as the shared reference.
  • Power the system back on.
  • Upload the module’s test sketch from the NORVI GitHub repository to confirm each channel reads correctly before wiring it into your final control logic.
Figure 2: NORVI CPU Controller with NORVI X-T4 Expansion Module
Figure 2: NORVI CPU Controller with NORVI X-T4 Expansion Module

Expansion Port (50 pin) #

The X-T4 connects to the CPU through the shared 50-pin expansion bus. The pins actually used by this module are SCL, SDA, GND, 5V, and 24V. The rest pass through for other modules on the same bus.

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
35IO21IO21ESP32-S3
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-T4 is read 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

  1. Connect the Controller

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

  1. 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
Figure 3: Arduino IDE Board and Tools Menu Configuration
Figure 3: Arduino IDE Board and Tools Menu Configuration
Figure 4: Upload Settings under the Tools Menu
Figure 4: Upload Settings under the Tools Menu
  1. Configure Board Settings

Under the Tools menu, configure the following settings:

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
  • Adafruit_ADS1X15
  • TFT_eSPI
  • Free_Fonts

Install the Required Library #

Install the Wire library through:

Sketch → Include Library → Manage Libraries

Search for Wire and install it if required.

Figure 5: Opening the Arduino IDE Library Manager
Figure 5: 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-T4 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.

I2C Bus Scan #

Run this first after wiring and setting the DIP switch address, to confirm the ADS1115 on the X-T4 is being detected before testing thermistor readings.

Copy
// I2C SCANNER
void I2C_SCAN() {

  byte error;
  byte address;

  int deviceCount = 0;

  Serial.println();
  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");

  }
  else {

    Serial.println("Scanning complete");

  }
}

Thermistor Channel Read #

A simple sequence that reads all four raw ADC channels on the ADS1115, useful for confirming each physical terminal responds before applying the temperature conversion.

Copy
int16_t adc0;
int16_t adc1;
int16_t adc2;
int16_t adc3;

adc0 = ads1.readADC_SingleEnded(0);
adc1 = ads1.readADC_SingleEnded(1);
adc2 = ads1.readADC_SingleEnded(2);
adc3 = ads1.readADC_SingleEnded(3);

}

Converting Readings to Temperature #

The Beta equation below converts a channel’s resistance to temperature. It assumes a fixed series (bias) resistor forms a voltage divider with the thermistor, which the ADS1115 then reads.

Copy
float temp0 = readThermistorC(adc0);
float temp1 = readThermistorC(adc1);
float temp2 = readThermistorC(adc2);
float temp3 = readThermistorC(adc3);

Validating the Full Test Sketch #

When the complete test sketch runs successfully with the X-T4 attached, you should see:

  • I2C scans the ADS1115 on the X-T4 appears at its configured address (0x48-0x4B depending on DIP setting) alongside any other I2C devices on the bus.
  • Channel readings all four channels return stable, non-zero raw values that change when a thermistor is warmed, cooled, or disconnected.
  • Temperature output – once the series resistor and scaling are confirmed, converted values track ambient/applied temperature sensibly (e.g. near room temperature at idle).
  • No I2C errors – the Serial Monitor shows no failed transmissions or address conflicts while the test runs.

If a channel does not respond, or the ADS1115 does not appear on the I2C scan, stop and check the wiring and DIP switch address before relying on any readings.

Troubleshooting #

SymptomSuggested Action
Module not detected on I2C scanReseat the module on the expansion bus, confirm the DIP switch address does not conflict with another module, and check the CPU is powered with sufficient current headroom.
Reads negative or erratic temperatureCheck thermistor wiring polarity and connections at TM_n+ / TM_n- / AGND, and confirm the sensor itself with a multimeter.
All channels read the same or a stuck valueConfirm the ADS1115 I2C address in your sketch matches the DIP switch setting, and rerun the I2C bus scan.
Address conflict with another I2C moduleChange the DIP switch setting on one of the modules so each device on the bus has a unique address.
Readings noisy or unstableSeparate thermistor wiring from AC power or relay wiring runs; consider shielded cable for longer sensor leads.
Temperature values plausible but offset from actualConfirm the series resistor value and R25/B-value constants used in the conversion match the actual sensor and module design.
System resets unexpectedly under loadCheck the CPU’s power supply current rating, especially when several expansion modules are attached to the same bus.

Support & Resources #

Product documentation & datasheets: https://norvi.io/docs/norvi-x-t4-datasheet/
Product page: https://norvi.io/
Technical support: support@norvi.io