Programming #
NORVI IIOT AE01-R / AE01-T 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 the Guide to programming NORVI ESP32 Based Controllers with Arduino
SoC : ESP32-WROOM32
Programming Port : USB UART
Digital Inputs #
Wiring Digital Inputs #
The digital inputs of NORVI IIOT range can be configured as both Sink and Source connection. The inverse of the Digital Input polar should be supplied to common terminal.

Programming Digital Inputs #
Reading relevant GPIO of ESP32 gives the value of the Digital Input. When the inputs are in OFF state the GPIO goes HIGH, and when the input is in ON stage GPIO goes LOW.
Refer to the GPIO Allocation Table for Digital Input GPIO
#define INPUT1 18
void setup() {
Serial.begin(115200);
Serial.println("Device Starting");
pinMode(INPUT1, INPUT);
}
void loop() {
Serial.print(digitalRead(INPUT1));
Serial.println("");
delay(500);
}
Relay / Transistor Outputs #
Wiring Relay Outputs #

Wiring Transistor Outputs #

Programming Relay/ Transistor Outputs #
Reading relevant GPIO of ESP32 gives the value of the Digital Input. When the inputs are in OFF state the GPIO goes HIGH, and when the input is in ON stage GPIO goes LOW.
Refer to the GPIO Allocation Table for Digital Input GPIO
#define OUTPUT1 14
void setup() {
Serial.begin(115200);
Serial.println("Device Starting");
pinMode(OUTPUT1 , OUTPUT);
}
void loop() {
digitalWrite(OUTPUT1, HIGH);
delay(500);
digitalWrite(OUTPUT1, LOW);
delay(500);
Serial.println("");
delay(500);
}
RS-485 communication #
RS-485 Wiring

Driver | MAX485 |
UART RX | GPIO3 |
UART TX | GPIO1 |
Flow Control | GPIO4 |
Programming RS-485
The UART Connections of RS-485 of NORVI IIOT AE01 series are shared with the UART connections of USB Serial.
#define RS485_FC 4
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);
}
Built-in OLED Display #
Display driver | SSD1306 |
Communication | I2C |
Module Address | 0x3C |
Resolution | 128 x 64 |
Refer to the GPIO Allocation Table for I2C GPIO of the OLED Display
Library Supported Adafruit_SSD0306 Library
Wire.begin(SDA, SCL); is required to initialize I2C on correct pins
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Wire.begin(16,17);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
delay(2000); // Pause for 2 seconds
}
void loop() {
}
Built-in Buttons #
Read mode | ADC (Analog to Digital Conversion) |
Analog IO | GPIO32 |
