---
title: "EC-M11-EG-C4-B95 – USER GUIDE"
description: "## Programming  The NORVI EC-M11-EG-C4-B95 has a mini USB port for serial connection with the SoC for programming. Any ESP32-supported programming IDE can be used to program the controller. Follow this guide to programming NORVI ESP32-based controllers with the Arduino…"
url: "https://norvi.io/docs/norvi-ec-m11-eg-c4-b95-user-guide/"
updated: "2026-03-24"
category: "OTHER PRODUCTS / EC-M11-EG NB-IoT / EC-M11-EG-C4-B95"
---

# EC-M11-EG-C4-B95 – USER GUIDE

## Programming 

The NORVI EC-M11-EG-C4-B95 has a mini USB port for serial connection with the SoC for programming. Any ESP32-supported programming IDE can be used to program the controller. Follow this guide to programming NORVI ESP32-based controllers with the Arduino IDE.

SoC: ESP32-WROOM32
Programming Port: USB UART

## **8-pin Connector and wire harness**

![](https://norvi.io/wp-content/uploads/2024/09/345-34.jpg)

### **Pin Description**

| 8P Male | Wire color | I/O Configuration |
| --- | --- | --- |
| 1 | White | Thermocouple + |
| 2 | Brown | Thermocouple - |
| 3 | Green | - |
| 4 | Yellow | - |
| 5 | Gray | - |
| 6 | Pink | - |
| 7 | Blue | Power+ |
| 8 | Red | Power- |

## **Thermocouple Input**

| SPI MISO | GPIO19 |
| --- | --- |
| SPI SCK | GPIO18 |
| CS | GPIO5 |

### ****Programming Thermocouple Inputs** **

```cpp

                #include <SPI.h>
#include "Adafruit_MAX31855.h"
#define MAXDO  19
#define MAXCS   5
#define MAXCLK 18                // Initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

void setup() {
  Serial.begin(115200);
  Serial.println("MAX31855 test");             // Wait for MAX chip to stabilize
  delay(500);
  Serial.print("Initializing sensor...");
  if (!thermocouple.begin()) {
    Serial.println("ERROR.");
    while (1) delay(10);
  }
  Serial.println("DONE.");
}

void loop() {
  Serial.print("Internal Temp = ");
  Serial.println(thermocouple.readInternal());
  double c = thermocouple.readCelsius();
  if (isnan(c)) {
    Serial.println("Thermocouple fault(s) detected!");
    uint8_t e = thermocouple.readError();
    if (e & MAX31855_FAULT_OPEN) Serial.println("FAULT: Thermocouple is open - no connections.");
    if (e & MAX31855_FAULT_SHORT_GND) Serial.println("FAULT: Thermocouple is short-circuited to GND.");
    if (e & MAX31855_FAULT_SHORT_VCC) Serial.println("FAULT: Thermocouple is short-circuited to VCC.");
  }
  else {
    Serial.print("C = ");
    Serial.println(c);
  }
  //Serial.print("F = ");
  //Serial.println(thermocouple.readFahrenheit());
  Serial.println("");
  Serial.print("Analog Read : ");
  Serial.print(analogRead(36));
  Serial.println("");
  delay(1000);
}
```

## **NB-IoT Module**

| Modem | NB-101 |
| --- | --- |
| RX | GPIO25 |
| TX |  GPIO26 |
| POWER | GPIO22 |
| RESET | GPIO17 |

### **Programming NB-IoT**

```cpp

                const int GSM_RST = 17;        // Define the pin for modem reset
const int GSM_PWR_KEY = 22;    // Define the pin for modem power key
const int MODEM_RX = 25;      // Define the pin for ESP32's RX to modem's TX
const int MODEM_TX = 26;      // Define the pin for ESP32's TX to modem's RX

void setup() {
  pinMode(GSM_RST, OUTPUT);
  pinMode(GSM_PWR_KEY, OUTPUT);
  digitalWrite(GSM_PWR_KEY, HIGH);  // Set modem to flight mode
  digitalWrite(GSM_RST, HIGH);
  delay(1000);
  digitalWrite(GSM_RST, LOW);
  delay(1000);
  digitalWrite(GSM_RST, HIGH);
  delay(1000);
  Serial.begin(9600);  // Initialize the serial monitor
  Serial2.begin(9600, SERIAL_8N1, MODEM_RX, MODEM_TX);
  // Initialize communication with modem
  Serial.println("SIM AT START >>>>>>>>>>>>>>");
  delay(2000);
  Serial.flush();
  Serial2.println("AT+NCONFIG=AUTOCONNECT,TRUE");
  delay(2000);
  while (Serial2.available()) {
    char response = Serial2.read();
    Serial.write(response);
  }
  Serial2.println("AT");
  delay(2000);
  while (Serial2.available()) {
    char response = Serial2.read();
    Serial.write(response);
  }
  Serial2.println("AT+CEREG?");
  delay(2000);
  while (Serial2.available()) {
    char response = Serial2.read();
    Serial.write(response);
  }
  Serial.flush();
}

void loop() {
  Serial.print(".");
  Serial2.println("AT");
  while (Serial2.available()) {
    char response = Serial2.read();
    Serial.write(response);
  }
  delay(5000);
  Serial2.println("AT+CEREG?");
  delay(2000);
  while (Serial2.available()) {
    char response = Serial2.read();
    Serial.write(response);
  }
}
```
