Programming # The NORVI EC-M11-BC-C4-LTE 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 Male Wire color I/O Configuration 1 White Thermocouple + 2 Brown Thermocouple – 3 Green – 4 Yellow – 5 Gray – 6 Pink – 7 Blue – 8 Red –
3P Male Wire color I/O Configuration 1 Blue Solar Panel + 2 Black Not in Use 3 Brown Solar Panel –
Thermocouple Input # SPI MISO GPIO19 SPI SCK GPIO18 CS GPIO5
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);
}
LTE1 Communication # Model of LTE Modem SIM7000-E FCC ID 2AJYU-SIM7000 TAC 86615402 RXD GPIO25 TXD GPIO26 RESET GPIO32 POWER GPIO22
GPIO Connections of LTE1 Communication LTE2 Communication # Model of LTE Modem SIM7500 FCC ID 2AQ9M-SIM7500 TAC 86147503 RXD GPIO25 TXD GPIO26 RESET GPIO32 POWER GPIO22
GPIO Connections of LTE2 Communication Programming LTE Communication # #define MODEM_RESET 32
#define MODEM_FLIGHT 22
#define MODEM_RX 26
#define MODEM_TX 25
long timer1;
void setup() { // initialize both serial ports:
Serial.begin(115200);
pinMode(MODEM_FLIGHT , OUTPUT); // FLIGHT MODE ENABLE
pinMode(MODEM_RESET , OUTPUT); // MODEM RESET PIN
digitalWrite(MODEM_FLIGHT, HIGH); // FLIGHT MODE
MODEM_RESET_CYC();
delay(2000);
Serial2.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
Serial.println("SIM AT ATART >>>>>>>>>>>>>>");
delay(2000);
Serial2.println("AT");
delay(2000);
Serial2.println("AT+CPIN?");
delay(2000);
Serial2.println("AT+CNMP?");
}
void loop() {
delay(3000);
timer1 = millis();
Serial2.println("AT");
while(millis()<timer1+10000){
while (Serial2.available()) {
int inByte = Serial2.read();
Serial.write(inByte);
}
}
timer1 = millis();
Serial2.println("AT+CPIN?");
while(millis()<timer1+10000){
while (Serial2.available()) {
int inByte = Serial2.read();
Serial.write(inByte);
}
}
Serial.println("AT SCAN DONE"); // read from port 0, send to port 1:
while (Serial.available()) {
int inByte = Serial.read();
Serial2.write(inByte);
}
while (Serial2.available()) {
int inByte = Serial2.read();
Serial.write(inByte);
}
}
void MODEM_RESET_CYC() {
digitalWrite(MODEM_RESET,HIGH );
delay(1000);
digitalWrite(MODEM_RESET,LOW );
delay(1000);
digitalWrite(MODEM_RESET, HIGH);
}
Solar Input # Solar Powered Model CN3083 Maximum Charge Current 600mA Maximum Voltage 6V Input Voltage monitor ADS1115 – 0x49 – AIN2
Battery Input # Battery Type 103040 Lithium polymer battery Nominal Capacity 1200mAh Nominal Voltage 3.75V Overcharge 4.2V Over-discharge Cutoff Voltage 3V
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(" ");
}