Programming #
The NORVI EC-M11-EG-C3-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 controllers with the Arduino IDE.
SoC: ESP32-WROOM32
Programming Port: USB UART
8-pin Connector and wire harness #
Pin Description #
8P Male | Wire color | I/O Configuration |
1 | White | A+ |
2 | Brown | A- |
3 | Green | B+ |
4 | Yellow | B- |
5 | Gray | RS-485A |
6 | Pink | RS-485B |
7 | Blue | Power+ |
8 | Red | Power- |
Load Cell Inputs #
Programming Load Cell Inputs #
Number of Load Cell Inputs | 1 |
Module Type | HX711 |
PD SCK | GPIO32 |
DOUT | GPIO33 |
#include "HX711.h"
const int LOADCELL_DOUT_PIN = 33;
const int LOADCELL_SCK_PIN = 32;
HX711 scale;
void setup() {
Serial.begin(115200);
Serial.println("HX711 Demo");
Serial.println("Initializing the scale");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare(); // reset the scale to 0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
Serial.println("Readings:");
}
void loop() {
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 1);
}
RS-485 Communication #
Driver | MAX485 |
UART RX | GPIO4 |
UART TX | GPIO2 |
Flow Control | GPIO13 |
Programming RS-485 #
NORVI EC-M11-EG series RS-485 connection uses a half-duplex mode of MAX485 transmitter with UART
Communication.
#define RS485_FC 13
void setup() {
Serial.begin(115200);
Serial.println("Device Starting");
pinMode(RS485_FC, OUTPUT);
}
void loop() {
digitalWrite(RS485_FC, HIGH); // Turns on Transmitter Mode
Serial.println("RS-485 Sending");
delay(500);
}
LTE1 Communication #
Model of LTE Modem | SIM7000-E |
FCC ID | 2AJYU-SIM7000 |
TAC | 86615402 |
RXD | GPIO25 |
TXD | GPIO26 |
RESET | GPIO17 |
POWER | GPIO22 |
LTE2 Communication #
Model of LTE Modem | SIM7500 |
FCC ID | 2AQ9M-SIM7500 |
TAC | 86147503 |
RXD | GPIO25 |
TXD | GPIO26 |
RESET | GPIO17 |
POWER | GPIO22 |
Programming LTE Communication #
#define MODEM_RESET 17
#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);
}