Norvi Logo
  • HOME
  • PRODUCTS
  • STORE
  • DOCUMENTATION
  • BLOG
  • CONTACT US
  • HOME
  • PRODUCTS
  • STORE
  • DOCUMENTATION
  • BLOG
  • CONTACT US

NORVI ESP32 HMI

  • ESP-HMI-5C-CI – DATASHEET
  • ESP-HMI-5C-VI – DATASHEET
  • ESP-HMI-5C-CI – USER GUIDE
  • ESP-HMI-5C-VI – USER GUIDE
  • GETTING STARTED WITH NORVI ESP32 HMI
  • LVGL EXAMPLE GUIDE FOR NORVI ESP32 HMI
  • SQUARELINE STUDIOS FOR NORVI ESP32 HMI GUI DESIGN
  • NORVI ESP32 HMI DISPLAY TOUCH CALIBRATION
  • NORVI HMI GUI DESIGN FOR I/O AND MODBUS

NORVI RASPBERRY PI HMI

  • RPI-PC-AM8-TO7 – DATASHEET
  • RPI-PC-AV8-TO7 – DATASHEET
  • USER MANUAL- RASPBERRY PI HMI
  • NODE-RED STARTUP GUIDE – RASPBERRY PI HMI
  • FLASHING OS FOR EMMC – RASPBERRY PI HMI

NORVI WITH MODBUS PROTOCOL

  • NORVI RS485 GPIO ALLOCATION TABLE
  • NORVI DEVICE AS A MODBUS RTU SLAVE
  • NORVI DEVICE AS A MODBUS RTU MASTER
  • MODBUS RTU COMMUNICATION THROUGH NORVI
  • NORVI HMI WITH MODBUS PROTOCOL
  • NORVI IIOT MODBUS TO MQTT GUIDE

NORVI IIOT-AE06-CS-M6

  • NORVI IIOT-AE06-CS-M6-HSE – TEST PROGRAM
  • NORVI IIOT-AE06-CS-M6-HSE- QSG

NORVI IIOT

  • NORVI IIOT-AE01-T
    • NORVI IIOT-AE01-T – Test Program
    • NORVI IIOT-AE01-T – Datasheet
    • NORVI IIOT-AE01-T – User Guide
  • NORVI IIOT-AE01-R
    • NORVI IIOT-AE01-R – Datasheet
    • NORVI IIOT-AE01-R – User Guide
    • NORVI IIOT-AE01-R – Test Program
  • NORVI IIOT-AE02-V
    • NORVI IIOT-AE02-V – Datasheet
    • NORVI IIOT-AE02-V – User Guide
    • NORVI IIOT-AE02-V – Test Program
  • NORVI IIOT-AE02-I
    • NORVI IIOT-AE02-I – Test Program
    • NORVI IIOT-AE02-I – Datasheet
    • NORVI IIOT-AE02-I – User Guide
  • NORVI IIOT-AE03
    • NORVI IIOT-AE03 – Test Program
    • NORVI IIOT-AE03 – Datasheet
    • NORVI IIOT-AE03 – User Guide
  • NORVI IIOT-AE04-I
    • NORVI IIOT-AE04-I – User Guide
    • NORVI IIOT-AE04-I – Test Program
    • NORVI IIOT-AE04-I – Datasheet
  • NORVI IIOT-AE04-V
    • NORVI IIOT-AE04-V – Datasheet
    • NORVI IIOT-AE04-V – User Guide
    • NORVI IIOT-AE04-V – Test Program

NORVI ENET

  • NORVI ENET-AE06-I
    • NORVI ENET-AE06-I – DATASHEET
    • NORVI ENET-AE06-I – USER GUIDE
    • NORVI ENET-AE06-I – TEST PROGRAM
  • NORVI ENET-AE06-V
    • NORVI ENET-AE06-V – DATASHEET
    • NORVI ENET-AE06-V – USER GUIDE
    • NORVI ENET-AE06-V – TEST PROGRAM
  • NORVI ENET-AE06-R
    • NORVI ENET-AE06-R – DATASHEET
    • NORVI ENET-AE06-R – USER GUIDE
    • NORVI ENET-AE06-R – TEST PROGRAM
  • NORVI ENET-AE06-T
    • NORVI ENET-AE06-T – DATASHEET
    • NORVI ENET-AE06-T – USER GUIDE
    • NORVI ENET-AE06-T – TEST PROGRAM

NORVI GSM 2G

  • NORVI GSM-AE02-I-G
    • NORVI GSM-AE02-I-G – DATASHEET
    • NORVI GSM-AE02-I-G- USER GUIDE
    • NORVI GSM-AE02-I-G TEST PROGRAM
  • NORVI GSM-AE02-V-G
    • NORVI GSM-AE02-V-G – DATASHEET
    • NORVI GSM-AE02-V-G – USER GUIDE
    • NORVI GSM-AE02-V-G – TEST PROGRAM
  • NORVI GSM-AE04-I-G
    • NORVI GSM-AE04-I-G – DATASHEET
    • NORVI GSM-AE04-I-G – USER GUIDE
    • NORVI GSM-AE04-I-G – TEST PROGRAM
  • NORVI GSM-AE04-V-G
    • NORVI GSM-AE04-V-G – DATASHEET
    • NORVI GSM-AE04-V-G – USER GUIDE
    • NORVI GSM-AE04-V-G – TEST PROGRAM
  • NORVI GSM-AE08-R-G
    • NORVI GSM-AE08-R-G – DATASHEET
    • NORVI GSM-AE08-R-G – USER GUIDE
    • NORVI GSM-AE08-R-G – TEST PROGRAM
  • NORVI GSM-AE07-R-G
    • NORVI GSM-AE07-R-G – DATASHEET
    • NORVI GSM-AE07-R-G – USER GUIDE
    • NORVI GSM-AE07-R-G – TEST PROGRAM
  • NORVI GSM-AE08-I-G
    • NORVI GSM-AE08-I-G – Datasheet
    • NORVI GSM-AE08-I-G – USER GUIDE
    • NORVI GSM-AE08-I-G – TEST PROGRAM
  • NORVI GSM-AE08-T-G
    • NORVI GSM-AE08-T-G – DATASHEET
    • NORVI GSM-AE08-T-G – USER GUIDE
    • NORVI GSM-AE08-T-G – TEST PROGRAM
  • NORVI GSM-AE07-T-G
    • NORVI GSM-AE07-T-G – DATASHEET
    • NORVI GSM-AE07-T-G – USER GUIDE
    • NORVI GSM-AE07-T-G – TEST PROGRAM
  • NORVI GSM-AE08-V-G
    • NORVI GSM-AE08-V-G – Datasheet
    • NORVI GSM-AE08-V-G – USER GUIDE
    • NORVI GSM-AE08-V-G – EST PROGRAM

NORVI GSM 4G LTE

  • NORVI GSM-AE02-V-L
    • NORVI GSM-AE02-V-L – DATASHEET
    • NORVI GSM-AE02-V-L – USER GUIDE
    • NORVI GSM-AE02-V-L – TEST PROGRAM
  • NORVI GSM-AE02-I-L
    • NORVI GSM-AE02-I-L – DATASHEET
    • NORVI GSM-AE02-I-L – USER GUIDE
    • NORVI GSM-AE02-I-L – TEST PROGRAM
  • NORVI GSM-AE04-I-L
    • NORVI GSM-AE04-I-L – DATASHEET
    • NORVI GSM-AE04-I-L – USER GUIDE
    • NORVI GSM-AE04-I-L – TEST PROGRAM
  • NORVI GSM-AE08-T-L
    • NORVI GSM-AE08-T-L – DATASHEET
    • NORVI GSM-AE08-T-L – USER GUIDE
    • NORVI GSM-AE08-T-L – TEST PROGRAM
  • NORVI GSM-AE07-R-L
    • NORVI GSM-AE07-R-L – DATASHEET
    • NORVI GSM-AE07-R-L – USER GUIDE
    • NORVI GSM-AE07-R-L – TEST PROGRAM
  • NORVI GSM-AE07-T-L
    • NORVI GSM-AE07-T-L – DATASHEET
    • NORVI GSM-AE07-T-L – USER GUIDE
    • NORVI GSM-AE07-T-L – TEST PROGRAM
  • NORVI GSM-AE08-V-L
    • NORVI GSM-AE08-V-L – DATASHEET
    • NORVI GSM-AE08-V-L – USER GUIDE
    • NORVI GSM-AE08-V-L – TEST PROGRAM
  • NORVI GSM-AE08-I-L
    • NORVI GSM-AE08-I-L – DATASHEET
    • NORVI GSM-AE08-I-L – USER GUIDE
    • NORVI GSM-AE08-I-L – TEST PROGRAM
  • NORVI GSM-AE08-R-L
    • NORVI GSM-AE08-R-L – DATASHEET
    • NORVI GSM-AE08-R-L – USER GUIDE
    • NORVI GSM-AE08-R-L – TEST PROGRAM
  • NORVI GSM-AE04-V-L
    • NORVI GSM-AE04-V-L – DATASHEET
    • NORVI GSM-AE04-V-L – USER GUIDE
    • NORVI GSM-AE04-V-L – TEST PROGRAM

NORVI AGENT1

  • NORVI AGENT 1-BT01-ES-SI
    • NORVI AGENT 1-BT01 – DATASHEET
    • NORVI AGENT 1-BT01 – TEST PROGRAM
    • NORVI AGENT 1-BT01 – USER GUIDE
  • NORVI AGENT 1-BT02-ES-SI
    • NORVI AGENT 1-BT02 – DATASHEET
    • NORVI AGENT 1-BT02 – TEST PROGRAM
    • NORVI AGENT 1-BT02 – USER GUIDE
  • NORVI AGENT 1-BT03-ES-SI
    • NORVI AGENT 1-BT03 – DATASHEET
    • NORVI AGENT 1-BT03 – TEST PROGRAM
    • NORVI AGENT 1-BT03 – USER GUIDE
  • NORVI AGENT 1-BT05-ES-SI
    • NORVI AGENT 1-BT05 – DATASHEET
    • NORVI AGENT 1-BT05 – TEST PROGRAM
    • NORVI AGENT 1-BT05 – USER GUIDE
  • NORVI AGENT 1-BM01-ES-SI
    • NORVI AGENT 1-BM01 – DATASHEET
    • NORVI AGENT 1-BM01 – USER GUIDE
    • NORVI AGENT 1-BM01 – TEST PROGRAM
  • NORVI AGENT 1-BT06-ES-SI
    • NORVI AGENT 1-BT06 – DATASHEET
    • NORVI AGENT 1-BT06 – TEST PROGRAM
    • NORVI AGENT 1-BT06 – USER GUIDE
  • NORVI AGENT 1-BM02-ES-SI
    • NORVI AGENT 1-BM02 – DATASHEET
    • NORVI AGENT 1-BM02 – TEST PROGRAM
    • NORVI AGENT 1-BM02 – USER GUIDE

NORVI AGENT1 LoRa

  • NORVI AGENT 1-BT05-ES-L
    • NORVI AGENT 1-BT05-ES-L – DATASHEET
    • NORVI AGENT 1-BT05-ES-L – USER GUIDE
    • NORVI AGENT 1-BT05-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BT02-ES-L
    • NORVI AGENT 1-BT02-ES-L – DATASHEET
    • NORVI AGENT 1-BT02-ES-L – USER GUIDE
    • NORVI AGENT 1-BT02-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BT03-ES-L
    • NORVI AGENT 1-BT03-ES-L – DATASHEET
    • NORVI AGENT 1-BT03-ES-L – USER GUIDE
    • NORVI AGENT 1-BT03-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BM02-ES-L
    • NORVI AGENT 1-BM02-ES-L – DATASHEET
    • NORVI AGENT 1-BM02-ES-L – USER GUIDE
    • NORVI AGENT 1-BM02-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BT01-ES-L
    • NORVI AGENT 1-BT01-ES-L – DATASHEET
    • NORVI AGENT 1-BT01-ES-L – USER GUIDE
    • NORVI AGENT 1-BT01-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BT06-ES-L
    • NORVI AGENT 1-BT06-ES-L – DATASHEET
    • NORVI AGENT 1-BT06-ES-L – USER GUIDE
    • NORVI AGENT 1-BT06-ES-L – TEST PROGRAM
  • NORVI AGENT 1-BM01-ES-L
    • NORVI AGENT 1-BM01-ES-L – DATASHEET
    • NORVI AGENT 1-BM01-ES-L – USER GUIDE
    • NORVI AGENT 1-BM01-ES-L – TEST PROGRAM

NORVI AGENT1 NB-IoT

  • NORVI AGENT 1-BM01-ES-N
    • NORVI AGENT 1-BM01-ES-N – DATASHEET
    • NORVI AGENT 1-BM01-ES-N – USER GUIDE
    • NORVI AGENT 1-BM01-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BM02-ES-N
    • NORVI AGENT 1-BM02-ES-N – DATASHEET
    • NORVI AGENT 1-BM02-ES-N – USER GUIDE
    • NORVI AGENT 1-BM02-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BT02-ES-N
    • NORVI AGENT 1-BT02-ES-N – DATASHEET
    • NORVI AGENT 1-BT02-ES-N – USER GUIDE
    • NORVI AGENT 1-BT02-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BT01-ES-N
    • NORVI AGENT 1-BT01-ES-N – DATASHEET
    • NORVI AGENT 1-BT01-ES-N – USER GUIDE
    • NORVI AGENT 1-BT01-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BT03-ES-N
    • NORVI AGENT 1-BT03-ES-N – DATASHEET
    • NORVI AGENT 1-BT03-ES-N – USER GUIDE
    • NORVI AGENT 1-BT03-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BT05-ES-N
    • NORVI AGENT 1-BT05-ES-N – DATASHEET
    • NORVI AGENT 1-BT05-ES-N – USER GUIDE
    • NORVI AGENT 1-BT05-ES-N – TEST PROGRAM
  • NORVI AGENT 1-BT06-ES-N
    • NORVI AGENT 1-BT06-ES-N – DATASHEET
    • NORVI AGENT 1-BT06-ES-N – USER GUIDE
    • NORVI AGENT 1-BT06-ES-N – TEST PROGRAM

NORVI AGENT1 4G LTE

  • NORVI AGENT 1-BT06-LTE
    • NORVI AGENT 1-BT06-LTE – DATASHEET
    • NORVI AGENT 1-BT06-LTE – USER GUIDE
    • NORVI AGENT 1-BT06-LTE – TEST PROGRAM
  • NORVI AGENT 1-BT05-LTE
    • NORVI AGENT 1-BT05-LTE – DATASHEET
    • NORVI AGENT 1-BT05-LTE – USER GUIDE
    • NORVI AGENT 1-BT05-LTE – TEST PROGRAM
  • NORVI AGENT 1-BT03-LTE
    • NORVI AGENT 1-BT03-LTE – DATASHEET
    • NORVI AGENT 1-BT03-LTE – USER GUIDE
    • NORVI AGENT 1-BT03-LTE – TEST PROGRAM
  • NORVI AGENT 1-BT02-LTE
    • NORVI AGENT 1-BT02-LTE – DATASHEET
    • NORVI AGENT 1-BT02-LTE – USER GUIDE
    • NORVI AGENT 1-BT02-LTE – TEST PROGRAM
  • NORVI AGENT 1-BT01-LTE
    • NORVI AGENT 1-BT01-LTE – DATASHEET
    • NORVI AGENT 1-BT01-LTE – USER GUIDE
    • NORVI AGENT 1-BT01-LTE – TEST PROGRAM
  • NORVI AGENT 1-BM01-LTE
    • NORVI AGENT 1-BM01-LTE – DATASHEET
    • NORVI AGENT 1-BM01-LTE – USER GUIDE
    • NORVI AGENT 1-BM01-LTE – TEST PROGRAM
  • NORVI AGENT 1-BM02-LTE
    • NORVI AGENT 1-BM02-LTE – DATASHEET
    • NORVI AGENT 1-BM02-LTE – USER GUIDE
    • NORVI AGENT 1-BM02-LTE – TEST PROGRAM

NORVI AGENT2

  • NORVI AGENT 2-AP01-BC1
    • NORVI AGENT 2-BC1 – DATASHEET
    • NORVI AGENT 2-BC1 – USER GUIDE
  • NORVI AGENT 2-AP01-BC2
    • NORVI AGENT 2-BC2 – DATASHEET
    • NORVI AGENT 2-BC2 – USER GUIDE
  • NORVI AGENT 2-AP01-BA1
    • NORVI AGENT 2-BA1 – DATASHEET
    • NORVI AGENT 2-BA1 – USER GUIDE
  • NORVI AGENT 2-AP01-BA2
    • NORVI AGENT 2-BA2 – DATASHEET
    • NORVI AGENT 2-BA2 – USER GUIDE

EC-M11-EG

  • EC-M11-EG-C1
    • EC-M11-EG-C1 – DATASHEET
    • EC-M11-EG-C1 – USER GUIDE
    • EC-M11-EG-C1 – TEST PROGRAM
  • EC-M11-EG-C2
    • EC-M11-EG-C2 – DATASHEET
    • EC-M11-EG-C2 – USER GUIDE
    • EC-M11-EG-C2 – TEST PROGRAM
  • EC-M11-EG-C3
    • EC-M11-EG-C3 – DATASHEET
    • EC-M11-EG-C3 – USER GUIDE
    • EC-M11-EG-C3 – TEST PROGRAM
  • EC-M11-EG-C4
    • EC-M11-EG-C4 – DATASHEET
    • EC-M11-EG-C4 – USER GUIDE
    • EC-M11-EG-C4 – TEST PROGRAM
  • EC-M11-EG-C5
    • EC-M11-EG-C5 – DATASHEET
    • EC-M11-EG-C5 – USER GUIDE
    • EC-M11-EG-C5 – TEST PROGRAM

EC-M11-EG 4G LTE

  • EC-M11-EG-C1-LTE
    • EC-M11-EG-C1-LTE – DATASHEET
    • EC-M11-EG-C1-LTE – USER GUIDE
    • EC-M11-EG-C1-LTE – TEST PROGRAM
  • EC-M11-EG-C2-LTE
    • EC-M11-EG-C2-LTE – DATASHEET
    • EC-M11-EG-C2-LTE – USER GUIDE
    • EC-M11-EG-C2-LTE – TEST PROGRAM
  • EC-M11-EG-C3-LTE
    • EC-M11-EG-C3-LTE – DATASHEET
    • EC-M11-EG-C3-LTE – USER GUIDE
    • EC-M11-EG-C3-LTE – TEST PROGRAM
  • EC-M11-EG-C4-LTE
    • EC-M11-EG-C4-LTE – DATASHEET
    • EC-M11-EG-C4-LTE – USER GUIDE
    • EC-M11-EG-C4-LTE – TEST PROGRAM
  • EC-M11-EG-C5-LTE
    • EC-M11-EG-C5-LTE – DATASHEET
    • EC-M11-EG-C5-LTE – USER GUIDE
    • EC-M11-EG-C5-LTE – TEST PROGRAM

EC-M11-EG NB-IoT

  • EC-M11-EG-C1-B95
    • EC-M11-EG-C1-B95 – DATASHEET
    • EC-M11-EG-C1-B95 – USER GUIDE
    • EC-M11-EG-C1-B95 – TEST PROGRAM
  • EC-M11-EG-C2-B95
    • EC-M11-EG-C2-B95 – DATASHEET
    • EC-M11-EG-C2-B95 – USER GUIDE
    • EC-M11-EG-C2-B95 – TEST PROGRAM
  • EC-M11-EG-C3-B95
    • EC-M11-EG-C3-B95 – DATASHEET
    • EC-M11-EG-C3-B95 – USER GUIDE
    • EC-M11-EG-C3-B95 – TEST PROGRAM
  • EC-M11-EG-C4-B95
    • EC-M11-EG-C4-B95 – DATASHEET
    • EC-M11-EG-C4-B95 – USER GUIDE
    • EC-M11-EG-C4-B95 – TEST PROGRAM
  • EC-M11-EG-C5-B95
    • EC-M11-EG-C5-B95 – DATASHEET
    • EC-M11-EG-C5-B95 – USER GUIDE
    • EC-M11-EG-C5-B95 – TEST PROGRAM

EC-M11-EG LoRa

  • EC-M11-EG-C4-S
    • EC-M11-EG-C4-S – DATASHEET
    • EC-M11-EG-C4-S – USER GUIDE
    • EC-M11-EG-C4-S – TEST PROGRAM
  • EC-M11-EG-C3-S
    • EC-M11-EG-C3-S – DATASHEET
    • EC-M11-EG-C3-S – USER GUIDE
    • EC-M11-EG-C3-S – TEST PROGRAM
  • EC-M11-EG-C2-S
    • EC-M11-EG-C2-S – DATASHEET
    • EC-M11-EG-C2-S – USER GUIDE
    • EC-M11-EG-C2-S – TEST PROGRAM
  • EC-M11-EG-C1-S
    • EC-M11-EG-C1-S – DATASHEET
    • EC-M11-EG-C1-S – USER GUIDE
    • EC-M11-EG-C1-S – TEST PROGRAM
  • EC-M11-EG-C5-S
    • EC-M11-EG-C5-S – DATASHEET
    • EC-M11-EG-C5-S – USER GUIDE
    • EC-M11-EG-C5-S – TEST PROGRAM

EC-M11-BC

  • EC-M11-BC-C1
    • EC-M11-BC-C1_V2 – DATASHEET
    • EC-M11-BC-C1 – USER GUIDE
    • EC-M11-BC-C1 – TEST PROGRAM
    • EC-M11-BC-C1 – DATASHEET
    • EC-M11-BC-C1_V2 – USER GUIDE
    • EC-M11-BC-C1_V2 – TEST PROGRAM
    • EC-M11-BC-C1_V3 – USER GUIDE
  • EC-M11-BC-C2
    • EC-M11-BC-C2 -DATASHEET
    • EC-M11-BC-C2 -USER GUIDE
    • EC-M11-BC-C2 – TEST PROGRAM
  • EC-M11-BC-C3
    • EC-M11-BC-C3 – DATASHEET
    • EC-M11-BC-C3 – USER GUIDE
    • EC-M11-BC-C3 – TEST PROGRAM
  • EC-M11-BC-C4
    • EC-M11-BC-C4 – DATASHEET
    • EC-M11-BC-C4 – USER GUIDE
    • EC-M11-BC-C4 – TEST PROGRAM

EC-M11-BC 4G LTE

  • EC-M11-BC-C1-LTE
    • EC-M11-BC-C1-LTE – DATASHEET
    • EC-M11-BC-C1-LTE – USER GUIDE
    • EC-M11-B-C1-LTE – TEST PROGRAM
    • EC-M11-BC-C1-LTE_V2 – DATASHEET
    • EC-M11-BC-C1-LTE_V2 – USER GUIDE
    • EC-M11-B-C1-LTE_V2 – TEST PROGRAM
    • EC-M11-BC-C1-LTE_V3 – USER GUIDE
  • EC-M11-BC-C2-LTE
    • EC-M11-BC-C2-LTE – DATASHEET
    • EC-M11-BC-C2-LTE – USER GUIDE
    • EC-M11-BC-C2-LTE – TEST PROGRAM
  • EC-M11-BC-C3-LTE
    • EC-M11-BC-C3-LTE – DATASHEET
    • EC-M11-BC-C3-LTE – USER GUIDE
    • EC-M11-BC-C3-LTE -TEST PROGRAM
  • EC-M11-BC-C4-LTE
    • EC-M11-BC-C4-LTE – DATASHEET
    • EC-M11-BC-C4-LTE – USER GUIDE
    • EC-M11-BC-C4-LTE – TEST PROGRAM

EC-M11-BC NB-IoT

  • EC-M11-BC-C1-B95
    • EC-M11-BC-C1-B95 – DATASHEET
    • EC-M11-BC-C1-B95 – USER GUIDE
    • EC-M11-BC-C1-B95 – TEST PROGRAM
    • EC-M11-BC-C1-B95_V2 – DATASHEET
    • EC-M11-BC-C1-B95_V2 – USER GUIDE
    • EC-M11-BC-C1-B95_V2 – TEST PROGRAM
    • EC-M11-BC-C1-B95_V3 – USER GUIDE
  • EC-M11-BC-C2-B95
    • EC-M11-BC-C2-B95 – DATASHEET
    • EC-M11-BC-C2-B95 – USER GUIDE
    • EC-M11-BC-C2-B95 – TEST PROGRAM
  • EC-M11-BC-C3-B95
    • EC-M11-BC-C3-B95 – DATASHEET
    • EC-M11-BC-C3-B95 – USER GUIDE
    • EC-M11-BC-C3-B95 – TEST PROGRAM
  • EC-M11-BC-C4-B95
    • EC-M11-BC-C4-B95 -DATASHEET
    • EC-M11-BC-C4-B95 -USER GUIDE
    • EC-M11-BC-C4-B95 -TEST PROGRAM

EC-M11-BC LoRa

  • EC-M11-BC-C4-S
    • EC-M11-BC-C4-S – DATASHEET
    • EC-M11-BC-C4-S – USER GUIDE
    • EC-M11-BC-C4-S – TEST PROGRAM
  • EC-M11-BC-C1-S
    • EC-M11-BC-C1-S – DATASHEET
    • EC-M11-BC-C1-S – USER GUIDE
    • EC-M11-BC-C1-S – TEST PROGRAM
    • EC-M11-BC-C1-S_V2 – USER GUIDE
    • EC-M11-BC-C1-S_V2 – DATASHEET
    • EC-M11-BC-C1-S_V2 – TEST PROGRAM
    • EC-M11-BC-C1-S_V3 – USER GUIDE
  • EC-M11-BC-C2-S
    • EC-M11-BC-C2-S – DATASHEET
    • EC-M11-BC-C2-S – USER GUIDE
    • EC-M11-BC-C2-S – TEST PROGRAM
  • EC-M11-BC-C3-S
    • EC-M11-BC-C3-S – DATASHEET
    • EC-M11-BC-C3-S – USER GUIDE
    • EC-M11-BC-C3-S – TEST PROGRAM

NORVI ANALOG EXPANSION

  • NORVI EX-ANV16
    • NORVI EX-ANV16 – DATASHEET
    • NORVI EX-ANV16 – USER GUIDE
    • NORVI EX-ANV16 – TEST PROGRAM
  • NORVI EX-ANQ 04
    • NORVI EX-ANQ 04 – DATASHEET
    • NORVI EX-ANQ 04 – USER GUIDE
    • NORVI EX-ANQ 04 – TEST PROGRAM
  • NORVI EX-ANV01
    • NORVI-EX-ANV01 – DATASHEET
    • NORVI-EX-ANV01 – USER GUIDE
    • NORVI EX-ANV01 – TEST PROGRAM
  • NORVI EX-ANI01
    • NORVI-EX-ANI01 – USER GUIDE
    • NORVI-EX-ANI01 – DATASHEET
    • NORVI EX-ANI01 – TEST PROGRAM

NORVI DIGITAL INPUT EXPANSION

  • NORVI EX-I4
    • NORVI-EX-I4 – DATASHEET
    • NORVI-EX-I4 – USER GUIDE
    • NORVI EX-I4 – TEST PROGRAM
  • NORVI EX-I8
    • NORVI-EX-I8 – DATASHEET
    • NORVI-EX-I8 – USER GUIDE
    • NORVI EX-I8 – TEST PROGRAM
  • NORVI EX-I16
    • NORVI-EX-I16 – DATASHEET
    • NORVI-EX-I16 – USER GUIDE
    • NORVI EX-I16 – TEST PROGRAM

NORVI TRANSISTOR OUTPUT EXPANSION

  • NORVI EX-Q4
    • NORVI-EX-Q4 – DATASHEET
    • NORVI-EX-Q4 – USER GUIDE
    • NORVI EX-Q4 – TEST PROGRAM
  • NORVI EX-Q8
    • NORVI-EX-Q8 – DATASHEET
    • NORVI-EX-Q8 – USER GUIDE
    • NORVI EX-Q8 – TEST PROGRAM
  • NORVI EX-Q16
    • NORVI-EX-Q16 – DATASHEET
    • NORVI-EX-Q16 – USER GUIDE
    • NORVI EX-Q16 – TEST PROGRAM

NORVI RELAY OUTPUT EXPANSION

  • NORVI EX-R8
    • NORVI-EX-R8 – DATASHEET
    • NORVI-EX-R8 – USER GUIDE
    • NORVI EX-R8 – TEST PROGRAM
  • NORVI EX-R16
    • NORVI-EX-R16 – DATASHEET
    • NORVI-EX-R16 – USER GUIDE
    • NORVI EX-R16 – TEST PROGRAM

NORVI CEMA

  • NORVI CEMA-M1
    • NORVI CEMA-M1 – DATASHEET
    • NORVI CEMA-M1 – USER GUIDE
    • NORVI CEMA-M1 – TEST PROGRAM
  • NORVI CEMA-M2
    • NORVI CEMA-M2 – DATASHEET
    • NORVI CEMA-M2 – USER GUIDE
    • NORVI CEMA-M2 – TEST PROGRAM

NORVI ARITA MEGA

  • NORVI ARITA-MEGA-M5
    • NORVI ARITA-MEGA-M5 – DATASHEET
    • NORVI ARITA-MEGA-M5 – USER GUIDE
    • NORVI ARITA-MEGA-M5 – TEST PROGRAM
  • NORVI ARITA-MEGA-M6
    • NORVI ARITA-MEGA-M6 – DATASHEET
    • NORVI ARITA-MEGA-M6 – USER GUIDE
    • NORVI ARITA-MEGA-M6 – TEST PROGRAM
  • NORVI ARITA-MEGA-M7
    • NORVI ARITA-MEGA-M7 – DATASHEET
    • NORVI ARITA-MEGA-M7 – USER GUIDE
    • NORVI ARITA-MEGA-M7 – TEST PROGRAM
  • NORVI ARITA-MEGA-M8
    • NORVI ARITA-MEGA-M8 – DATASHEET
    • NORVI ARITA-MEGA-M8 – USER GUIDE
    • NORVI ARITA-MEGA-M8 – TEST PROGRAM

NORVI ARITA STM32

  • NORVI ARITA-STM32-M5
    • NORVI ARITA-STM32-M5 – DATASHEET
    • NORVI ARITA-STM32-M5 – USER GUIDE
  • NORVI ARITA-STM32-M6
    • NORVI ARITA-STM32-M6 – DATASHEET
    • NORVI ARITA-STM32-M6 – USER GUIDE
  • NORVI ARITA-STM32-M7
    • NORVI ARITA-STM32-M7 – DATASHEET
    • NORVI ARITA-STM32-M7 – USER GUIDE
  • NORVI ARITA-STM32-M8
    • NORVI ARITA-STM32-M8 – DATASHEET
    • NORVI ARITA-STM32-M8 – USER GUIDE

NORVI WITH MQTT PROTOCOL

  • NORVI IIOT MQTT Guide
  • MQTT with QUECTEL EC25 Guide on NORVI GSM Series
  • Secure MQTT with QUECTEL EC25 Guide on NORVI GSM Series
  • MQTT with SIMCOM SIM7500 Guide on NORVI GSM Series
  • Secure MQTT with SIMCOM SIM7500 Guide on NORVI GSM Series

INDUSTRIAL CAMERA

  • NORVI AI OPTIC
    • NORVI AI OPTIC -DATASHEET
    • NORVI AI OPTIC – USER GUIDE
    • ESP32 S3 CAMERA OBJECT DETECTION GUIDE
    • ESP32 S3 CAMERA TFT DISPLAY INITIALIZATION AND GRAPHICS DEMO

NORVI EXPANSION

  • NORVI-EX-LRWAN
    • NORVI-EX-LRWAN-915 – DATASHEET
    • NORVI-EX-LRWAN-915 – USER GUIDE
    • NORVI EX-LRWAN-915 – TEST PROGRAM
  • NORVI EX-F16
    • NORVI EX-F16 – DATASHEET
    • NORVI EX-F16 – USER GUIDE
    • NORVI EX-F16 – TEST PROGRAM
  • NORVI EX-NB-IoT
    • NORVI EX-NB95G – DATASHEET
    • NORVI-EX-NB95G – USER GUIDE
    • NORVI EX-NB95G – TEST PROGRAM
  • NORVI EX-BR01
    • NORVI EX-BR01 – DATASHEET
    • NORVI-EX-BR01 – USER GUIDE
    • NORVI EX-BR01 – TEST PROGRAM
  • NORVI EX-TEX01
    • NORVI EX-TEX01 – DATASHEET
    • NORVI EX-TEX01 – TEST PROGRAM
  • NORVI EX-TEX02
    • NORVI EX-TEX02 – DATASHEET
  • NORVI-EX-LTE
    • NORVI EX-LTE – DATASHEET

OTA on ESP32

  • OTA UPDATES ON ESP32 WITH CELLULAR NETWORK
  • OTA UPDATES ON ESP32 OVER WIFI
View Categories
  • Home
  • Documentation
  • OTA on ESP32
  • OTA UPDATES ON ESP32 WITH CELLULAR NETWORK

OTA UPDATES ON ESP32 WITH CELLULAR NETWORK

OTA UPDATES ON ESP32 WITH SIM7500 #

Introduction #

The ESP32 microcontroller, in conjunction with the SIM7500 module, enables over-the-air (OTA) firmware updates. By storing the latest firmware on a GitHub repository, the ESP32 can periodically check for updates and download them via GPRS, ensuring that the device always runs the most recent version of the firmware. This process eliminates the need for physical access to the device and allows for efficient deployment of new features and security patches.

Project Overview #

The firmware update process works as follows:

  • Current Version Check: The ESP32 checks the version.txt file in the GitHub repository to determine the latest firmware version.
  • New Firmware Detection: If a new version is detected (i.e., different from the current firmware version running on the ESP32), the device downloads the latest (firmware_vX.X.X.bin) firmware file.
  • OTA Update: The ESP32 initiates the OTA update and installs the new firmware. Once the update is complete, the ESP32 restarts and runs the new firmware.

Branch Setup

• The release branch of your GitHub repository should contain:
o The latest firmware file (firmware_vX.X.X.bin)
o A version.txt file that stores the version number of the latest firmware.

/release/
├── firmware_v1.0.1.bin
├── version.txt

• version.txt: This file should contain only the version number of the latest firmware. e.g., 1.0.1

Key components

• SIM7500 Module: Responsible for connecting to the internet via GPRS and making HTTPS requests.
• TinyGSM and SSLClient Libraries: Used for secure communication with the GitHub repository.
• ArduinoHttpClient Library: Handles the GET request to fetch the firmware version and download the binary file.

• Root CA Certificate: As GitHub uses HTTPS, the CA root certificate for raw.githubusercontent.com must be uploaded to the SIM module to ensure secure communication. This is required since the OTA process downloads the firmware from a secure GitHub URL. The cert.h file in this repository contains the CA root certificate.

Software Setup #

A. Install the ESP32 board in Arduino IDE:

  • a. Go to File > Preferences.
  • b. Go to Tools > Boards > Boards Manager, search for “ESP32”, and install.
  • c. OTA on ESP32 (https://github.com/IndustrialArduino/OTA-on-ESP.git )

B. Install Required Libraries (Arduino):

a. Go to Sketch > Include Library > Manage Libraries and install:

  • Wire.h, Update.h: For communication and OTA functionality
  • TinyGsmClient.h: For GSM modem communication.
  • ArduinoHttpClient.h: For making HTTP requests
  • SSLClient.h: For secure communication.
  • cert.h: Contains the CA certificate needed for HTTPS communication.

C. Configure the code:

  • Open the code provided in your Arduino IDE.
  • Replace the GPRS credentials (apn, user, pass) with your SIM card provider details.
  • Set the correct server (raw.githubusercontent.com) and firmware version file paths.

Code Explanation #

This Arduino code demonstrates how to implement an Over-The-Air (OTA) firmware update on an ESP32 using a SIM7500 modem to connect to the internet. The program fetches the latest firmware version from a GitHub repository, compares it with the current version running on the device, and downloads the new firmware if necessary. Here’s a breakdown of the key components of the code.

  • part 1
#include <Arduino.h>
#include <Wire.h>
#include <Update.h>

#define TINY_GSM_MODEM_SIM7500
// Increase RX buffer
#define TINY_GSM_RX_BUFFER 1030
#include <TinyGsmClient.h>
#include <ArduinoHttpClient.h>
#include "SSLClient.h"
#include "cert.h"

#define TINY_GSM_TEST_GPRS          true
#define TINY_GSM_TEST_TCP           true

#define SerialMon Serial
#define SerialAT Serial1
#define GSM_PIN ""

// Your GPRS credentials
const char apn[] = "dialogbb";
const char user[] = "";
const char pass[] = "";

const char server[] = "raw.githubusercontent.com";
const int port = 443;

#define CURRENT_VERSION_ADDR 2
#define UART_BAUD 115200

#define MODEM_TX 32
#define MODEM_RX 33
#define GSM_RESET 21

This Part defines essential libraries, constants, and variables for an OTA firmware update project on an ESP32 using the SIM7500 module. It includes libraries for communication, HTTP requests, and SSL, and defines parameters for the GSM module, GPRS credentials, and firmware update settings.

  • part 2
String current_version = "1.0.0";
String new_version;
const char version_url[] = "/IndustrialArduino/OTA-on-ESP/release/version.txt";

String firmware_url;

//variabls to blink without delay:
const int led1 = 2;
const int led2 = 12;
unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 1000;           // interval at which to blink (milliseconds)
int ledState = LOW;             // ledState used to set the LED

#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(SerialAT, SerialMon);
TinyGsm modem(debugger);
#else
TinyGsm modem(SerialAT);
#endif

// HTTPS Transport
TinyGsmClient base_client(modem, 0);
SSLClient secure_layer(&base_client);
HttpClient client = HttpClient(secure_layer, server, port);

This code initializes variables for firmware versions and LED control. It defines the URL of the text file containing the latest version number and sets up the HTTPS transport for communication with the SIM7500 module. Additionally, it includes conditional compilation for debugging output based on the DUMP_AT_COMMANDS preprocessor directive.

  • Part 3
void setup() {
  // Set console baud rate
  Serial.begin(115200);
  delay(10);

  SerialAT.begin(UART_BAUD, SERIAL_8N1, MODEM_RX, MODEM_TX);

  delay(2000);
  pinMode(GSM_RESET, OUTPUT);
  digitalWrite(GSM_RESET, HIGH);  // RS-485
  delay(10);
  SerialMon.println("Wait...");

  //Add CA Certificate
  secure_layer.setCACert(root_ca);

  Serial.println("Initializing modem...");
  modem.restart();

  String modemInfo = modem.getModemInfo();
  Serial.print("Modem: ");
  Serial.println(modemInfo);

  Serial.print("Waiting for network...");
  if (!modem.waitForNetwork())
  {
    Serial.println(" fail");
    delay(10000);
    return;
  }
  Serial.println(" OK");

  Serial.print("Connecting to ");
  Serial.print(apn);
  if (!modem.gprsConnect(apn, user, pass))
  {
    Serial.println(" fail");
    delay(10000);
    return;
  }
  Serial.println(" OK");

This code initializes serial communication, resets the SIM7500 module, adds the CA certificate for secure communication, and establishes a GPRS connection. It checks for network connectivity and prints relevant information to the serial monitor, providing feedback on the setup process.

  • Part 4
void loop() {

  if (checkForUpdate(firmware_url)) {
    performOTA(firmware_url.c_str());
  }
  delay(1000);

  //add the code need to run and this is an example program
  //loop to blink without delay
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    // if the LED is off turn it on and vice-versa:
    ledState = not(ledState);

    // set the LED with the ledState of the variable:
    digitalWrite(led1,  ledState);
    digitalWrite(led2,  ledState);
  }

}

This code loop() function continuously checks for firmware updates by calling the check ForUpdate() function. If an update is available, the performOTA() function is executed to download and install the new firmware. A delay of 1000 milliseconds is then added to prevent excessive polling. The code also includes an example program that blinks two LEDs without using delays, demonstrating the basic structure for adding other functionalities to the main loop.

  • Part 5
//Check the version of the latest firmware which has uploaded to Github
bool checkForUpdate(String &firmware_url) {
  Serial.println("Making GET request securely...");
  client.get(version_url);
  int status_code = client.responseStatusCode();
  delay(1000);
  String response_body = client.responseBody();
  delay(1000);

  Serial.print("Status code: ");
  Serial.println(status_code);
  Serial.print("Response: ");
  Serial.println(response_body);

  response_body.trim();
  response_body.replace("\r", "");  // Remove carriage returns
  response_body.replace("\n", "");  // Remove newlines

  // Extract the version number from the response
  new_version = response_body;

  Serial.println("Current version: " + current_version);
  Serial.println("Available version: " + new_version);
  client.stop();

  if (new_version != current_version) {
    Serial.println("New version available. Updating...");
    firmware_url = String("/IndustrialArduino/OTA-on-ESP/release/firmware_v") + new_version + ".bin";
    Serial.println("Firmware URL: " + firmware_url);
    return true;

  } else {
    Serial.println("Already on the latest version");
  }

  return false;
}

//Update the latest firmware which has uploaded to Github
void performOTA(const char* firmware_url) {
  // Initialize HTTP

  Serial.println("Making GET request securely...");
  client.get(firmware_url);
  int status_code = client.responseStatusCode();
  delay(1000);
  long contentlength = client.contentLength();
  delay(1000);

  Serial.print("Contentlength: ");
  Serial.println(contentlength);

  if (status_code == 200) {

    if (contentlength <= 0) {
      SerialMon.println("Failed to get content length");
      client.stop();
      return;
    }

This code checks for updates by making a GET request to the GitHub repository and extracting the latest version number from the response. It compares the current version with the available version and updates the firmware URL if a new version is found. The code also prints relevant information to the serial monitor, including the status code, response body, and current and available versions.

  • Part 6
// Begin OTA update
    bool canBegin = Update.begin(contentlength);
    size_t written ;
    long totalBytesWritten = 0;
    uint8_t buffer[1024];
    int bytesRead ;
    long contentlength_real = contentlength;

    if (canBegin) {
      while (contentlength  > 0) {
        bytesRead = client.readBytes(buffer, sizeof(buffer));
        if (bytesRead > 0) {
          written = Update.write(buffer, bytesRead);
          if (written != bytesRead) {
            Serial.println("Error: written bytes do not match read bytes");
            Update.abort();
            return;
          }
          totalBytesWritten += written;  // Track total bytes written
          contentlength -= bytesRead;  // Reduce remaining content length
        } else {
          Serial.println("Error: Timeout or no data received");
          break;
        }
      }

      if (totalBytesWritten == contentlength_real) {
        Serial.println("Written : " + String(totalBytesWritten) + " successfully");
      } else {
        Serial.println("Written only : " + String(written) + "/" + String(contentlength_real) + ". Retry?");
      }

      if (Update.end()) {
        SerialMon.println("OTA done!");
        if (Update.isFinished()) {
          SerialMon.println("Update successfully completed. Rebooting.");
          delay(300);
          ESP.restart();
        } else {
          SerialMon.println("Update not finished? Something went wrong!");
        }
      } else {
        SerialMon.println("Error Occurred. Error #: " + String(Update.getError()));
      }
    } else {
      Serial.println("Not enough space to begin OTA");
    }
  } else {
    Serial.println("Cannot download firmware. HTTP code: " + String(status_code));
  }

  client.stop();
}

This code implements an OTA (Over-the-Air) update mechanism for an ESP32 device. It first checks if there’s enough space to initiate the update. If so, it downloads the firmware from a specified server, writes it to the device’s flash memory, and verifies the integrity of the written data. Finally, it reboots the device to apply the new firmware. If any errors occur during the process, the update is aborted, and an error message is displayed.

How OTA Update work #

1.Version Check: The ESP32 sends a request to the server (GitHub) to check the latest firmware version by fetching a simple text file version.txt.

  • Current version on ESP32: 1.0.0.
  • Latest version from the server: e.g., 1.1.0.

2.Download Firmware: If a newer version is detected, the firmware binary is downloaded securely via HTTPS. The firmware file is hosted at a URL like:https://github.com/yknivag/ESP_OTA_GitHub

3.Perform OTA Update: The downloaded binary is written to the ESP32’s memory. After a successful update, the ESP32 will restart automatically and run the new firmware.

Testing setup #

1.Upload the Initial Firmware

  • Compile and upload the firmware to the ESP32 with the initial version (1.0.0).
  • Verify that the device is connected to the GSM network.

2.Host a New Firmware

  • After making changes to the code export the code as binary and then rename the binary file
  • as the new version of the firmware (e.g., 1.1.0) and upload the binary file to your server.
  • Update the version.txt file to reflect the new version number.
  • Monitor the Update
  • Open the Serial Monitor at 115200 baud.
    The ESP32 will:

• Connect to the GSM network.
• Fetch the latest version from the server.
• Compare the versions.
• If an update is available, it will download the firmware and install it.
• Reboot the device with the updated firmware.

3.Expected Output:

• ESP32 logs network connection and update status.
• If an update is available, the new firmware is downloaded and applied.

Error Handling #

Connection Failure: Ensure that the APN, username, and password are correct for your SIM card provider. Check for proper power supply to the SIM7500 module


• HTTPS Failures: If there are SSL/HTTPS errors, verify that the root CA certificate is properly loaded in the cert.h file.
• OTA Failures: If the update fails, the device will continue running the current version. Ensure that the binary file is correct and available at the specified URL.

Troubleshooting #

ESP32 Doesn’t Connect to Cellular Network:
• Double-check the wiring between the SIM7500 and the ESP32.
• Make sure the SIM card has an active data plan and is properly inserted.

OTA Update Fails:
• Check the size of the binary file and ensure there’s enough memory on the ESP32for the update.
• Ensure the server is reachable, and the firmware URL is correct.

HTTPS Request Fails:
• Confirm that the root CA is correctly added for HTTPS communication.
• Check if the GitHub URL is accessible and the server isn’t blocking your requests.

What are your Feelings
Share This Article :
  • Facebook
  • X
  • LinkedIn
  • Pinterest
Still stuck? How can we help?

How can we help?

Updated on October 29, 2024

Powered by BetterDocs

Table of Contents
  • OTA UPDATES ON ESP32 WITH SIM7500
    • Introduction
    • Project Overview
    • Software Setup
    • Code Explanation
    • How OTA Update work
    • Testing setup
    • Error Handling
    • Troubleshooting

Creating sustainable solutions that empower integrators, solution providers, and consumers.

Products

  • NORVI IIOT
  • NORVI ENET
  • NORVI GSM
  • NORVI AGENT 1
  • NORVI AGENT 2
  • Expansions
  • Solar Powered
  • Outdoor
  • NORVI HMI
  • RASPBERRY PI

Get Started

  • Documentation
  • Example Programs
  • Support

About

  • Blog
  • Stories
  • Community
  • Careers
  • Brand Assets

© 2018 All rights reserved

Twitter Facebook-f Youtube Medium