XStore
View Categories

EC-M11-BC-C4-B95 -USER GUIDE

2 min read

Programming  #

The NORVI EC-M11-BC-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

Wiring Thermocouple Input, and Solar. #

8-pin and 3-pin connectors and wire harness #

Pin Description #

8P MaleWire colorI/O Configuration
1WhiteThermocouple +
2BrownThermocouple –
3Green
4Yellow
5Gray
6Pink
7Blue
8Red
3P MaleWire colorI/O Configuration
1BlueSolar Panel +
2BlackNot in Use
3BrownSolar Panel –

Thermocouple Input #

SPI MISOGPIO19
SPI SCKGPIO18
CSGPIO5

Programming Thermocouple Inputs #

#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 #

ModemNB-101
RXGPIO25
TX GPIO26
POWERGPIO22
RESETGPIO32

Programming NB-IoT #

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);
  }
}

Solar Input #

Solar Powered ModelCN3083 
Maximum Charge Current 600mA 
Maximum Voltage 6V 
Input Voltage monitor ADS1115 – 0x49 – AIN2

Battery Input #

Battery Type103040 Lithium polymer battery
Nominal Capacity 1200mAh  
Nominal Voltage3.75V
Overcharge4.2V
Over-discharge Cutoff Voltage3V

Programming Solar and Battery #

#include <Adafruit_SSD1306.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads1;
int analog_value = 0;
void setup() {
  Serial.begin(115200);// put your setup code here, to run once:
  Wire.begin(16,17);
  if (!ads1.begin(0x49)) {
    Serial.println("Failed to initialize ADS 1 .");
    while (1);
  }
}
void loop() {
  int16_t adc0, adc1, adc2, adc3;
  adc0 = ads1.readADC_SingleEnded(0);
  adc1 = ads1.readADC_SingleEnded(1);
  adc2 = ads1.readADC_SingleEnded(2);
  adc3 = ads1.readADC_SingleEnded(3);
  Serial.println("-----------------------------------------------------------");
  Serial.print("AIN1: "); Serial.print(adc0); Serial.println("  ");
  Serial.print("AIN2: "); Serial.print(adc1); Serial.println("  ");
  Serial.print("SOLAR: "); Serial.print(adc2); Serial.println("  ");
  Serial.print("AIN4: "); Serial.print(adc3); Serial.println("  ");   
}