XStore
View Categories

EC-M11-EG-C3-S – USER GUIDE

3 min read

Programming  #

The NORVI EC-M11-EG-C3-S 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 MaleWire colorI/O Configuration
1WhiteA+
2BrownA-
3GreenB+
4YellowB-
5GrayRS-485A
6PinkRS-485B
7BluePower+
8RedPower-

Load Cell Inputs #

Programming Load Cell Inputs #

Number of Load Cell Inputs1
Module TypeHX711
PD SCKGPIO32
DOUTGPIO33
#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 #

DriverMAX485
UART RXGPIO4
UART TXGPIO2
Flow ControlGPIO13
GPIO Connections of RS-485

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

LoRa Transceiver Module #

SpecificationLong Range(LoRa)
RF TransceiverOrder depending on regional regulations
SPI MISOGPIO19
SPI MOSIGPIO23
SPI SCKGPIO18
NSSGPIO26
DIO0GPIO25
DIO1GPIO27
DIO2NOT CONNECTED
RESETGPIO15

Programming LoRa Modules #

#include <lmic.h>
#include <hal/hal.h>
#include <SPI.h>
#define CONFIRMED_MSG_RETRY_COUNT 3
static const u1_t PROGMEM APPEUI[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

void os_getArtEui (u1_t* buf) {
  memcpy_P(buf, APPEUI, 8);
}

static const u1_t PROGMEM DEVEUI[8] = {0x4B, 0x11, 0x3F, 0xB1, 0x3C, 0xBE, 0xD6, 0x56};
void os_getDevEui (u1_t* buf) {
  memcpy_P(buf, DEVEUI, 8);
}

static const u1_t PROGMEM APPKEY[16] = {0xF9, 0x65, 0xE4, 0xED, 0xFF, 0x8A, 0x89, 0x27, 0x23, 0xA6, 0xB7, 0x42, 0x2F, 0x05, 0x8E, 0x9F};
void os_getDevKey (u1_t* buf) {
  memcpy_P(buf, APPKEY, 16);
}

static uint8_t mydata[] = "Hello, world!";
static osjob_t sendjob;
const unsigned TX_INTERVAL = 60;
const lmic_pinmap lmic_pins = {
  .nss = 26,
  .rxtx = LMIC_UNUSED_PIN,
  .rst = 15,
  .dio = {25, 27, -1},
};

void printHex2(unsigned v) {
  v &= 0xff;
  if (v < 16)
    Serial.print('0');
  Serial.print(v, HEX);
}