Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 8,232
» Latest member: muhammadahmed12
» Forum threads: 3,602
» Forum posts: 18,569

Full Statistics

Online Users
There are currently 29 online users.
» 0 Member(s) | 14 Guest(s)
AhrefsBot, Amazonbot, Bing, Crawl, PetalBot, Sogou web, bot

Latest Threads
N20 ESPHome & HA - Line t...
Forum: N20
Last Post: WestCoastXS
10 hours ago
» Replies: 0
» Views: 6
Automation lamps A16_V3+E...
Forum: KC868-A16v3
Last Post: admin
Yesterday, 11:18 PM
» Replies: 6
» Views: 131
KC868-A2 ESP32 I/O pin de...
Forum: KC868-A2
Last Post: admin
Yesterday, 11:16 PM
» Replies: 16
» Views: 6,639
flash kc868-a4
Forum: KC868-A series and Uair Smart Controller
Last Post: admin
Yesterday, 11:14 PM
» Replies: 9
» Views: 158
KC868-COLB Analog Sensor ...
Forum: Development
Last Post: admin
Yesterday, 11:13 PM
» Replies: 12
» Views: 112
Driver recommendation for...
Forum: DIY Project
Last Post: guycaluwaerts
Yesterday, 08:54 PM
» Replies: 7
» Views: 1,335
N30 installation for Home...
Forum: N30
Last Post: guy
Yesterday, 05:46 AM
» Replies: 13
» Views: 90
Raspberry Pi5 Compute Mod...
Forum: Pi5
Last Post: admin
Yesterday, 05:42 AM
» Replies: 1
» Views: 10
E16T is not detected when...
Forum: KC868-E16T
Last Post: admin
12-08-2025, 11:36 PM
» Replies: 6
» Views: 79
KC868-A16 rs485
Forum: KC868-A16
Last Post: admin
12-08-2025, 11:24 PM
» Replies: 1
» Views: 12

  KC868 0-5 inputs
Posted by: vincent - 08-04-2025, 08:30 AM - Forum: KC868-A6v3 - Replies (7)

I have a Kincony KC868-A6 and I wonder if I could convert the 2 4-20mA inputs to 0-5v DC inputs. 
I went trough the documentation (and diagram) and I can’t figure out how to do this. 
https://www.kincony.com/download/KC868-A6-schematic.pdf

I understand that I need to replace two resistance switch "4-20mA" --> "0-5v" type signal but I can't figure out what to do.
Best regards,
Vincent

Print this item

  "KCS" v3.11.3 firmware BIN file download
Posted by: admin - 08-04-2025, 12:43 AM - Forum: "KCS" v3 firmware - Replies (2)

v3.11.3 improvement:

1. added support for Z1,N60,T32M,T64M,T128M.
2. IFTTT support DO as IF condition.
3. support copy learned IR signal for new IR button.
4. tuya license support new "Singapore" server location.
5. fixed bug with HAv2 board when RisingEdge/FallingEdge= EvtTog control DO wrongly.
6. Optimize G1 SIM7600 suspension speed.
7. Fix the issue of DS18B20 occasionally reading incorrect data.
8. Fix the issue where Tuya license can't communicate through the SIM7600E 4G module.
9. Fix Monitor page does not display Tuya connectivity status correctly when using 4G communication.
10. support Tuya module select different product ID.

new board first time downloaded firmware, start up need about 10--30 seconds. next time start up about 5 seconds.



Attached Files
.zip   KCS_A2V3_V3.11.3.zip (Size: 1.06 MB / Downloads: 243)
.zip   KCS_A6V3_V3.11.3.zip (Size: 1.03 MB / Downloads: 245)
.zip   KCS_A8V3_V3.11.3.zip (Size: 1.09 MB / Downloads: 267)
.zip   KCS_A16V3_V3.11.3.zip (Size: 1.11 MB / Downloads: 305)
.zip   KCS_A32PRO_V3.11.3.zip (Size: 1.07 MB / Downloads: 255)
.zip   KCS_AG8_V3.11.3.zip (Size: 1.06 MB / Downloads: 249)
.zip   KCS_ALR_V3.11.3.zip (Size: 1.02 MB / Downloads: 218)
.zip   KCS_B8M_V3.11.3.zip (Size: 1.1 MB / Downloads: 246)
.zip   KCS_B16_V3.11.3.zip (Size: 1.1 MB / Downloads: 239)
.zip   KCS_B16M_V3.11.3.zip (Size: 1.1 MB / Downloads: 251)
.zip   KCS_F8_V3.11.3.zip (Size: 1.09 MB / Downloads: 238)
.zip   KCS_F16_V3.11.3.zip (Size: 1.1 MB / Downloads: 256)
.zip   KCS_F24_V3.11.3.zip (Size: 1.1 MB / Downloads: 235)
.zip   KCS_G1_V3.11.3.zip (Size: 1.06 MB / Downloads: 253)
.zip   KCS_KC_TA_V3.11.3.zip (Size: 1.05 MB / Downloads: 248)
.zip   KCS_N60_V3.11.3.zip (Size: 1.09 MB / Downloads: 251)
.zip   KCS_T16M_V3.11.3.zip (Size: 1.05 MB / Downloads: 241)
.zip   KCS_T32M_V3.11.3.zip (Size: 1.07 MB / Downloads: 238)
.zip   KCS_T64M_V3.11.3.zip (Size: 1.07 MB / Downloads: 223)
.zip   KCS_T128M_V3.11.3.zip (Size: 1.07 MB / Downloads: 228)
.zip   KCS_Z1_V3.11.3.zip (Size: 1.21 MB / Downloads: 240)
Print this item

  [Help] KC868-A16 stopped working with ESPhome
Posted by: johnsmith8439 - 08-03-2025, 05:44 PM - Forum: KC868-A16 - Replies (10)

Hello,

My KC868-A16 stopped working with ESPHome. There is power, but there is no network connection. I can still flash directly with USB-C port.

Here is the esphome logs:



Attached Files
.txt   logs.txt (Size: 60.45 KB / Downloads: 129)
.txt   logs (1).txt (Size: 28.23 KB / Downloads: 105)
Print this item

  N60 software data structure
Posted by: admin - 08-03-2025, 03:31 AM - Forum: N60 - No Replies

   

Print this item

  [arduino code examples for N60]-05 collect N60 all data demo
Posted by: admin - 08-03-2025, 03:27 AM - Forum: N60 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Demo Program for Reading Data from KinCony N60 Energy Meter (60-channel version)
* via RS485 Modbus using ESP32 and NonBlockingModbusMaster library.
*
* This example:
* - Initializes RS485 Modbus communication
* - Reads current, power, energy, voltage, frequency, temperature, power factor from 6 chips
* - Prints all data to Serial Monitor
* - Uses TaskScheduler to run periodic tasks
*/

#include "TaskScheduler.h"
#include "HardwareSerial.h"
//#include "modbus-rtu.h"
#include "NonBlockingModbusMaster.h"  // Include non-blocking Modbus master library

/////defined anything here====================
#define MAX_U16DATA_LEN  68  // Number of 16-bit registers to read per chip

// Define RS485 serial and control pins
#define TX_PIN 8
#define DE_PIN 3
#define RX_PIN 18

// Define Modbus function codes
typedef enum{
  FC_READ_COIL = 1,
  FC_READ_HOLDREG = 3,
  FC_READ_INPUTREG = 4,
  FC_FORCE_COIL = 5,
  FC_FORCE_COILS = 15,
  FC_WRITE_REG = 6,
  FC_WRITE_REGS = 16,
}FC_DEF;

// Define structure to hold all the electrical parameters per chip
typedef struct
{
    uint32_t RMS_1;        //0    //XX.XXX    A        0.001A/LSB
    uint32_t RMS_2;
    uint32_t RMS_3;
    uint32_t RMS_4;
    uint32_t RMS_5;
    uint32_t RMS_6;
    uint32_t RMS_7;
    uint32_t RMS_8;
    uint32_t RMS_9;
    uint32_t RMS_10;
    uint32_t WATT_1;        //20 XXXX.X    W        0.1W/LSB
    uint32_t WATT_2;
    uint32_t WATT_3;
    uint32_t WATT_4;
    uint32_t WATT_5;
    uint32_t WATT_6;
    uint32_t WATT_7;
    uint32_t WATT_8;
    uint32_t WATT_9;
    uint32_t WATT_10;//
    uint32_t Energy_1;        //40 XXXXXX    kWh   1kWh/LSB,MAX:65535kWh
    uint32_t Energy_2;
    uint32_t Energy_3;
    uint32_t Energy_4;
    uint32_t Energy_5;
    uint32_t Energy_6;
    uint32_t Energy_7;
    uint32_t Energy_8;
    uint32_t Energy_9;
    uint32_t Energy_10; //
    uint32_t Energy_Sum; //60
    uint16_t RMS_V;            //62 XXX.X    V            0.01V/LSB
    uint16_t Period;        //63 XX.XX    Hz        0.01Hz/LSB
    float TPS1;            //64 XX.XX ℃            0.1℃/LSB
    float PF;  //66
}Elect_StructDef_JKE;

typedef union{
  Elect_StructDef_JKE jke_n60_str[6]; ////6 chips each have MAX_STRU_LEN data
  ushort read_regs_arr[6][MAX_U16DATA_LEN];
}COLLECT_UNION;

////define instance here================================================================
COLLECT_UNION jke_n60_data_union = {0};
HardwareSerial collectSerial(2);
Scheduler ts;   // Task scheduler
NonBlockingModbusMaster nbModbusMaster;

////define macros here===================
static void collectAllChipData();
static void PrintfInfo();

////define my work task==================================
Task collectDataTask(200,TASK_FOREVER,[]()
{
  collectAllChipData();
});

Task heartBeatTask(1000,TASK_FOREVER,[]()
{
  ////do anything in heartBeatTask to make sense for anyone or other.
  Serial.println("heartbeat task is running.");
});


void setup() {
  // put your setup code here, to run once:

  // Open serial communications and wait for port to open:
    Serial.begin(115200);
    collectSerial.begin(115200,SERIAL_8N1,9,10);///RX & TX
    float bitduration = 1.f / 115200;
    float charlen = 10.0f; // 8 bits + 1 stop, parity ?
    float preDelayBR = bitduration * charlen * 3.5f * 1e6  + 1; // in us
    float postDelayBR = bitduration * charlen * 3.5f * 1e6 + 1; // in us
    nbModbusMaster.initialize(collectSerial, preDelayBR, postDelayBR,1000);

  ////add task to scheduler
  ts.addTask(collectDataTask);
  ts.addTask(heartBeatTask);

  ////start task
  collectDataTask.enable(); ///start task
  heartBeatTask.enable();
}

bool isMbConnect = false;
int cnt_chip = 0;

void loop() {
  static int retryCount = 0;
  // put your main code here, to run repeatedly:
  ts.execute();

  if (nbModbusMaster.justFinished())
  {
   
    // check for errors
    int err = nbModbusMaster.getError(); // 0 for OK
    if (err) {
      isMbConnect = false;   
      Serial.print("Error: "); nbModbusMaster.printHex(err, Serial); Serial.println();
      if ((err == nbModbusMaster.ku8MBResponseTimedOut) ) {
        retryCount++;
        Serial.println("Mbtask Retry");
        nbModbusMaster.retry(); // send same cmd again
      }
    } else {
      retryCount = 0; // success
    }
    if (err == 0) {
      isMbConnect = true;
      if(cnt_chip==5)
      {
        PrintfInfo();
      }

      for (int i = 0; i < nbModbusMaster.getResponseBufferLength(); i++) {
        jke_n60_data_union.read_regs_arr[cnt_chip][i] = nbModbusMaster.getResponseBuffer(i);
        //nbModbusMaster.printHex(nbModbusMaster.getResponseBuffer(i), Serial); Serial.print(" ");
      }

      cnt_chip++;
      if(cnt_chip >= 6) cnt_chip = 0;

    }
  }

}

static void PrintfInfo()
{
  char send_buf[100] = {0};
  uint32_t *ptr;
  uint16_t *ptr2;
  float *ptr3;

  memset(send_buf,0,100);
    ///// PRINTF ALL DATA READ FROM CHIP REGISTER.

    for(int j=0;j<6;j++)
    {
    sprintf(send_buf,">>chip/socket : %d Info:",j+1);
    Serial.println(send_buf);     

    ptr= &jke_n60_data_union.jke_n60_str[j].RMS_1;
    ptr2 = &jke_n60_data_union.jke_n60_str[j].RMS_V;
    ptr3 = &jke_n60_data_union.jke_n60_str[j].TPS1;

    for(int i=0;i<35;i++)
    {
      if(i < 10)       
      {
        sprintf(send_buf,"RMS_%d:    %.2f A,",i+1,*(ptr+i) * 0.001);
        Serial.println(send_buf);
      }
      else if(i < 20)       
      {
        sprintf(send_buf,"WATT_%d:    %.2f W,",i+1-10,*(ptr+i) * 0.1);
        Serial.println(send_buf);
      }
      else if(i < 30)       
      {
        sprintf(send_buf,"Energy_%d:    %d kWh,",i+1-20,*(ptr+i) );
        Serial.println(send_buf);
      }
      else if(i == 30)       
      {
        sprintf(send_buf,"Energy_sum:    %d kWh,",*(ptr+i) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 31)       
      {
        sprintf(send_buf,"RMS_V:    %.2f V,",*ptr2 *0.01); ///62
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 32)       
      {
        sprintf(send_buf,"Period:    %.2f Hz,",*(ptr2+1) *0.01);
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 33)       
      {
        sprintf(send_buf,"Chip_Temp:    %.1f ^C,",*ptr3  );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 34)       
      {
        sprintf(send_buf,"PF:    %.4f .",*(ptr3+1) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
    }

    if(j==5)
      Serial.println(">>Data Finished!>>"); 

  }
}

static void collectAllChipData()
{
  int read_addr_start = (cnt_chip+1) * 100;
 
  String str = "";
  uint16_t size = MAX_U16DATA_LEN;

  nbModbusMaster.readHoldingRegisters(1, read_addr_start, size);
 
}
arduino ino file download:

.zip   collect_n60_data_demo.zip (Size: 2.45 KB / Downloads: 241)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   collect_n60_data_demo.ino.merged.zip (Size: 189.94 KB / Downloads: 227)

before run the code, you need to install NonBlockingModbusMaster arduino library.
   

modify library .h file replace the number as photo.
   

after running code, will print all data by USB port:
Code:
y_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,

RMS_V:    233.58 V,
Period:    49.70 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.4 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    3.20 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.50 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.2 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.8 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.57 V,
Period:    49.71 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.0 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.49 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.

Print this item

  [arduino code examples for N10]-05 collect N10 all data demo
Posted by: admin - 08-03-2025, 03:27 AM - Forum: N10 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Demo Program for Reading Data from KinCony N60 Energy Meter (60-channel version)
* via RS485 Modbus using ESP32 and NonBlockingModbusMaster library.
*
* This example:
* - Initializes RS485 Modbus communication
* - Reads current, power, energy, voltage, frequency, temperature, power factor from 6 chips
* - Prints all data to Serial Monitor
* - Uses TaskScheduler to run periodic tasks
*/

#include "TaskScheduler.h"
#include "HardwareSerial.h"
//#include "modbus-rtu.h"
#include "NonBlockingModbusMaster.h"  // Include non-blocking Modbus master library

/////defined anything here====================
#define MAX_U16DATA_LEN  68  // Number of 16-bit registers to read per chip

// Define RS485 serial and control pins
#define TX_PIN 8
#define DE_PIN 3
#define RX_PIN 18

// Define Modbus function codes
typedef enum{
  FC_READ_COIL = 1,
  FC_READ_HOLDREG = 3,
  FC_READ_INPUTREG = 4,
  FC_FORCE_COIL = 5,
  FC_FORCE_COILS = 15,
  FC_WRITE_REG = 6,
  FC_WRITE_REGS = 16,
}FC_DEF;

// Define structure to hold all the electrical parameters per chip
typedef struct
{
    uint32_t RMS_1;        //0    //XX.XXX    A        0.001A/LSB
    uint32_t RMS_2;
    uint32_t RMS_3;
    uint32_t RMS_4;
    uint32_t RMS_5;
    uint32_t RMS_6;
    uint32_t RMS_7;
    uint32_t RMS_8;
    uint32_t RMS_9;
    uint32_t RMS_10;
    uint32_t WATT_1;        //20 XXXX.X    W        0.1W/LSB
    uint32_t WATT_2;
    uint32_t WATT_3;
    uint32_t WATT_4;
    uint32_t WATT_5;
    uint32_t WATT_6;
    uint32_t WATT_7;
    uint32_t WATT_8;
    uint32_t WATT_9;
    uint32_t WATT_10;//
    uint32_t Energy_1;        //40 XXXXXX    kWh   1kWh/LSB,MAX:65535kWh
    uint32_t Energy_2;
    uint32_t Energy_3;
    uint32_t Energy_4;
    uint32_t Energy_5;
    uint32_t Energy_6;
    uint32_t Energy_7;
    uint32_t Energy_8;
    uint32_t Energy_9;
    uint32_t Energy_10; //
    uint32_t Energy_Sum; //60
    uint16_t RMS_V;            //62 XXX.X    V            0.01V/LSB
    uint16_t Period;        //63 XX.XX    Hz        0.01Hz/LSB
    float TPS1;            //64 XX.XX ℃            0.1℃/LSB
    float PF;  //66
}Elect_StructDef_JKE;

typedef union{
  Elect_StructDef_JKE jke_n60_str[6]; ////6 chips each have MAX_STRU_LEN data
  ushort read_regs_arr[6][MAX_U16DATA_LEN];
}COLLECT_UNION;

////define instance here================================================================
COLLECT_UNION jke_n60_data_union = {0};
HardwareSerial collectSerial(2);
Scheduler ts;   // Task scheduler
NonBlockingModbusMaster nbModbusMaster;

////define macros here===================
static void collectAllChipData();
static void PrintfInfo();

////define my work task==================================
Task collectDataTask(200,TASK_FOREVER,[]()
{
  collectAllChipData();
});

Task heartBeatTask(1000,TASK_FOREVER,[]()
{
  ////do anything in heartBeatTask to make sense for anyone or other.
  Serial.println("heartbeat task is running.");
});


void setup() {
  // put your setup code here, to run once:

  // Open serial communications and wait for port to open:
    Serial.begin(115200);
    collectSerial.begin(115200,SERIAL_8N1,9,10);///RX & TX
    float bitduration = 1.f / 115200;
    float charlen = 10.0f; // 8 bits + 1 stop, parity ?
    float preDelayBR = bitduration * charlen * 3.5f * 1e6  + 1; // in us
    float postDelayBR = bitduration * charlen * 3.5f * 1e6 + 1; // in us
    nbModbusMaster.initialize(collectSerial, preDelayBR, postDelayBR,1000);

  ////add task to scheduler
  ts.addTask(collectDataTask);
  ts.addTask(heartBeatTask);

  ////start task
  collectDataTask.enable(); ///start task
  heartBeatTask.enable();
}

bool isMbConnect = false;
int cnt_chip = 0;

void loop() {
  static int retryCount = 0;
  // put your main code here, to run repeatedly:
  ts.execute();

  if (nbModbusMaster.justFinished())
  {
   
    // check for errors
    int err = nbModbusMaster.getError(); // 0 for OK
    if (err) {
      isMbConnect = false;   
      Serial.print("Error: "); nbModbusMaster.printHex(err, Serial); Serial.println();
      if ((err == nbModbusMaster.ku8MBResponseTimedOut) ) {
        retryCount++;
        Serial.println("Mbtask Retry");
        nbModbusMaster.retry(); // send same cmd again
      }
    } else {
      retryCount = 0; // success
    }
    if (err == 0) {
      isMbConnect = true;
      if(cnt_chip==5)
      {
        PrintfInfo();
      }

      for (int i = 0; i < nbModbusMaster.getResponseBufferLength(); i++) {
        jke_n60_data_union.read_regs_arr[cnt_chip][i] = nbModbusMaster.getResponseBuffer(i);
        //nbModbusMaster.printHex(nbModbusMaster.getResponseBuffer(i), Serial); Serial.print(" ");
      }

      cnt_chip++;
      if(cnt_chip >= 6) cnt_chip = 0;

    }
  }

}

static void PrintfInfo()
{
  char send_buf[100] = {0};
  uint32_t *ptr;
  uint16_t *ptr2;
  float *ptr3;

  memset(send_buf,0,100);
    ///// PRINTF ALL DATA READ FROM CHIP REGISTER.

    for(int j=0;j<6;j++)
    {
    sprintf(send_buf,">>chip/socket : %d Info:",j+1);
    Serial.println(send_buf);     

    ptr= &jke_n60_data_union.jke_n60_str[j].RMS_1;
    ptr2 = &jke_n60_data_union.jke_n60_str[j].RMS_V;
    ptr3 = &jke_n60_data_union.jke_n60_str[j].TPS1;

    for(int i=0;i<35;i++)
    {
      if(i < 10)       
      {
        sprintf(send_buf,"RMS_%d:    %.2f A,",i+1,*(ptr+i) * 0.001);
        Serial.println(send_buf);
      }
      else if(i < 20)       
      {
        sprintf(send_buf,"WATT_%d:    %.2f W,",i+1-10,*(ptr+i) * 0.1);
        Serial.println(send_buf);
      }
      else if(i < 30)       
      {
        sprintf(send_buf,"Energy_%d:    %d kWh,",i+1-20,*(ptr+i) );
        Serial.println(send_buf);
      }
      else if(i == 30)       
      {
        sprintf(send_buf,"Energy_sum:    %d kWh,",*(ptr+i) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 31)       
      {
        sprintf(send_buf,"RMS_V:    %.2f V,",*ptr2 *0.01); ///62
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 32)       
      {
        sprintf(send_buf,"Period:    %.2f Hz,",*(ptr2+1) *0.01);
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 33)       
      {
        sprintf(send_buf,"Chip_Temp:    %.1f ^C,",*ptr3  );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 34)       
      {
        sprintf(send_buf,"PF:    %.4f .",*(ptr3+1) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
    }

    if(j==5)
      Serial.println(">>Data Finished!>>"); 

  }
}

static void collectAllChipData()
{
  int read_addr_start = (cnt_chip+1) * 100;
 
  String str = "";
  uint16_t size = MAX_U16DATA_LEN;

  nbModbusMaster.readHoldingRegisters(1, read_addr_start, size);
 
}
arduino ino file download:

.zip   collect_n60_data_demo.zip (Size: 2.45 KB / Downloads: 244)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   collect_n60_data_demo.ino.merged.zip (Size: 189.94 KB / Downloads: 241)

before run the code, you need to install NonBlockingModbusMaster arduino library.
   

modify library .h file replace the number as photo.
   

after running code, will print all data by USB port:
Code:
y_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,

RMS_V:    233.58 V,
Period:    49.70 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.4 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    3.20 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.50 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.2 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.8 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.57 V,
Period:    49.71 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.0 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.49 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.

Print this item

  [arduino code examples for N20]-05 collect N20 all data demo
Posted by: admin - 08-03-2025, 03:27 AM - Forum: N20 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Demo Program for Reading Data from KinCony N60 Energy Meter (60-channel version)
* via RS485 Modbus using ESP32 and NonBlockingModbusMaster library.
*
* This example:
* - Initializes RS485 Modbus communication
* - Reads current, power, energy, voltage, frequency, temperature, power factor from 6 chips
* - Prints all data to Serial Monitor
* - Uses TaskScheduler to run periodic tasks
*/

#include "TaskScheduler.h"
#include "HardwareSerial.h"
//#include "modbus-rtu.h"
#include "NonBlockingModbusMaster.h"  // Include non-blocking Modbus master library

/////defined anything here====================
#define MAX_U16DATA_LEN  68  // Number of 16-bit registers to read per chip

// Define RS485 serial and control pins
#define TX_PIN 8
#define DE_PIN 3
#define RX_PIN 18

// Define Modbus function codes
typedef enum{
  FC_READ_COIL = 1,
  FC_READ_HOLDREG = 3,
  FC_READ_INPUTREG = 4,
  FC_FORCE_COIL = 5,
  FC_FORCE_COILS = 15,
  FC_WRITE_REG = 6,
  FC_WRITE_REGS = 16,
}FC_DEF;

// Define structure to hold all the electrical parameters per chip
typedef struct
{
    uint32_t RMS_1;        //0    //XX.XXX    A        0.001A/LSB
    uint32_t RMS_2;
    uint32_t RMS_3;
    uint32_t RMS_4;
    uint32_t RMS_5;
    uint32_t RMS_6;
    uint32_t RMS_7;
    uint32_t RMS_8;
    uint32_t RMS_9;
    uint32_t RMS_10;
    uint32_t WATT_1;        //20 XXXX.X    W        0.1W/LSB
    uint32_t WATT_2;
    uint32_t WATT_3;
    uint32_t WATT_4;
    uint32_t WATT_5;
    uint32_t WATT_6;
    uint32_t WATT_7;
    uint32_t WATT_8;
    uint32_t WATT_9;
    uint32_t WATT_10;//
    uint32_t Energy_1;        //40 XXXXXX    kWh   1kWh/LSB,MAX:65535kWh
    uint32_t Energy_2;
    uint32_t Energy_3;
    uint32_t Energy_4;
    uint32_t Energy_5;
    uint32_t Energy_6;
    uint32_t Energy_7;
    uint32_t Energy_8;
    uint32_t Energy_9;
    uint32_t Energy_10; //
    uint32_t Energy_Sum; //60
    uint16_t RMS_V;            //62 XXX.X    V            0.01V/LSB
    uint16_t Period;        //63 XX.XX    Hz        0.01Hz/LSB
    float TPS1;            //64 XX.XX ℃            0.1℃/LSB
    float PF;  //66
}Elect_StructDef_JKE;

typedef union{
  Elect_StructDef_JKE jke_n60_str[6]; ////6 chips each have MAX_STRU_LEN data
  ushort read_regs_arr[6][MAX_U16DATA_LEN];
}COLLECT_UNION;

////define instance here================================================================
COLLECT_UNION jke_n60_data_union = {0};
HardwareSerial collectSerial(2);
Scheduler ts;   // Task scheduler
NonBlockingModbusMaster nbModbusMaster;

////define macros here===================
static void collectAllChipData();
static void PrintfInfo();

////define my work task==================================
Task collectDataTask(200,TASK_FOREVER,[]()
{
  collectAllChipData();
});

Task heartBeatTask(1000,TASK_FOREVER,[]()
{
  ////do anything in heartBeatTask to make sense for anyone or other.
  Serial.println("heartbeat task is running.");
});


void setup() {
  // put your setup code here, to run once:

  // Open serial communications and wait for port to open:
    Serial.begin(115200);
    collectSerial.begin(115200,SERIAL_8N1,9,10);///RX & TX
    float bitduration = 1.f / 115200;
    float charlen = 10.0f; // 8 bits + 1 stop, parity ?
    float preDelayBR = bitduration * charlen * 3.5f * 1e6  + 1; // in us
    float postDelayBR = bitduration * charlen * 3.5f * 1e6 + 1; // in us
    nbModbusMaster.initialize(collectSerial, preDelayBR, postDelayBR,1000);

  ////add task to scheduler
  ts.addTask(collectDataTask);
  ts.addTask(heartBeatTask);

  ////start task
  collectDataTask.enable(); ///start task
  heartBeatTask.enable();
}

bool isMbConnect = false;
int cnt_chip = 0;

void loop() {
  static int retryCount = 0;
  // put your main code here, to run repeatedly:
  ts.execute();

  if (nbModbusMaster.justFinished())
  {
   
    // check for errors
    int err = nbModbusMaster.getError(); // 0 for OK
    if (err) {
      isMbConnect = false;   
      Serial.print("Error: "); nbModbusMaster.printHex(err, Serial); Serial.println();
      if ((err == nbModbusMaster.ku8MBResponseTimedOut) ) {
        retryCount++;
        Serial.println("Mbtask Retry");
        nbModbusMaster.retry(); // send same cmd again
      }
    } else {
      retryCount = 0; // success
    }
    if (err == 0) {
      isMbConnect = true;
      if(cnt_chip==5)
      {
        PrintfInfo();
      }

      for (int i = 0; i < nbModbusMaster.getResponseBufferLength(); i++) {
        jke_n60_data_union.read_regs_arr[cnt_chip][i] = nbModbusMaster.getResponseBuffer(i);
        //nbModbusMaster.printHex(nbModbusMaster.getResponseBuffer(i), Serial); Serial.print(" ");
      }

      cnt_chip++;
      if(cnt_chip >= 6) cnt_chip = 0;

    }
  }

}

static void PrintfInfo()
{
  char send_buf[100] = {0};
  uint32_t *ptr;
  uint16_t *ptr2;
  float *ptr3;

  memset(send_buf,0,100);
    ///// PRINTF ALL DATA READ FROM CHIP REGISTER.

    for(int j=0;j<6;j++)
    {
    sprintf(send_buf,">>chip/socket : %d Info:",j+1);
    Serial.println(send_buf);     

    ptr= &jke_n60_data_union.jke_n60_str[j].RMS_1;
    ptr2 = &jke_n60_data_union.jke_n60_str[j].RMS_V;
    ptr3 = &jke_n60_data_union.jke_n60_str[j].TPS1;

    for(int i=0;i<35;i++)
    {
      if(i < 10)       
      {
        sprintf(send_buf,"RMS_%d:    %.2f A,",i+1,*(ptr+i) * 0.001);
        Serial.println(send_buf);
      }
      else if(i < 20)       
      {
        sprintf(send_buf,"WATT_%d:    %.2f W,",i+1-10,*(ptr+i) * 0.1);
        Serial.println(send_buf);
      }
      else if(i < 30)       
      {
        sprintf(send_buf,"Energy_%d:    %d kWh,",i+1-20,*(ptr+i) );
        Serial.println(send_buf);
      }
      else if(i == 30)       
      {
        sprintf(send_buf,"Energy_sum:    %d kWh,",*(ptr+i) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 31)       
      {
        sprintf(send_buf,"RMS_V:    %.2f V,",*ptr2 *0.01); ///62
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 32)       
      {
        sprintf(send_buf,"Period:    %.2f Hz,",*(ptr2+1) *0.01);
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 33)       
      {
        sprintf(send_buf,"Chip_Temp:    %.1f ^C,",*ptr3  );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 34)       
      {
        sprintf(send_buf,"PF:    %.4f .",*(ptr3+1) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
    }

    if(j==5)
      Serial.println(">>Data Finished!>>"); 

  }
}

static void collectAllChipData()
{
  int read_addr_start = (cnt_chip+1) * 100;
 
  String str = "";
  uint16_t size = MAX_U16DATA_LEN;

  nbModbusMaster.readHoldingRegisters(1, read_addr_start, size);
 
}
arduino ino file download:

.zip   collect_n60_data_demo.zip (Size: 2.45 KB / Downloads: 234)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   collect_n60_data_demo.ino.merged.zip (Size: 189.94 KB / Downloads: 227)

before run the code, you need to install NonBlockingModbusMaster arduino library.
   

modify library .h file replace the number as photo.
   

after running code, will print all data by USB port:
Code:
y_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,

RMS_V:    233.58 V,
Period:    49.70 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.4 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    3.20 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.50 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.2 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.8 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.57 V,
Period:    49.71 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.0 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.49 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.

Print this item

  [arduino code examples for N30]-05 collect N30 all data demo
Posted by: admin - 08-03-2025, 03:27 AM - Forum: N30 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Demo Program for Reading Data from KinCony N60 Energy Meter (60-channel version)
* via RS485 Modbus using ESP32 and NonBlockingModbusMaster library.
*
* This example:
* - Initializes RS485 Modbus communication
* - Reads current, power, energy, voltage, frequency, temperature, power factor from 6 chips
* - Prints all data to Serial Monitor
* - Uses TaskScheduler to run periodic tasks
*/

#include "TaskScheduler.h"
#include "HardwareSerial.h"
//#include "modbus-rtu.h"
#include "NonBlockingModbusMaster.h"  // Include non-blocking Modbus master library

/////defined anything here====================
#define MAX_U16DATA_LEN  68  // Number of 16-bit registers to read per chip

// Define RS485 serial and control pins
#define TX_PIN 8
#define DE_PIN 3
#define RX_PIN 18

// Define Modbus function codes
typedef enum{
  FC_READ_COIL = 1,
  FC_READ_HOLDREG = 3,
  FC_READ_INPUTREG = 4,
  FC_FORCE_COIL = 5,
  FC_FORCE_COILS = 15,
  FC_WRITE_REG = 6,
  FC_WRITE_REGS = 16,
}FC_DEF;

// Define structure to hold all the electrical parameters per chip
typedef struct
{
    uint32_t RMS_1;        //0    //XX.XXX    A        0.001A/LSB
    uint32_t RMS_2;
    uint32_t RMS_3;
    uint32_t RMS_4;
    uint32_t RMS_5;
    uint32_t RMS_6;
    uint32_t RMS_7;
    uint32_t RMS_8;
    uint32_t RMS_9;
    uint32_t RMS_10;
    uint32_t WATT_1;        //20 XXXX.X    W        0.1W/LSB
    uint32_t WATT_2;
    uint32_t WATT_3;
    uint32_t WATT_4;
    uint32_t WATT_5;
    uint32_t WATT_6;
    uint32_t WATT_7;
    uint32_t WATT_8;
    uint32_t WATT_9;
    uint32_t WATT_10;//
    uint32_t Energy_1;        //40 XXXXXX    kWh   1kWh/LSB,MAX:65535kWh
    uint32_t Energy_2;
    uint32_t Energy_3;
    uint32_t Energy_4;
    uint32_t Energy_5;
    uint32_t Energy_6;
    uint32_t Energy_7;
    uint32_t Energy_8;
    uint32_t Energy_9;
    uint32_t Energy_10; //
    uint32_t Energy_Sum; //60
    uint16_t RMS_V;            //62 XXX.X    V            0.01V/LSB
    uint16_t Period;        //63 XX.XX    Hz        0.01Hz/LSB
    float TPS1;            //64 XX.XX ℃            0.1℃/LSB
    float PF;  //66
}Elect_StructDef_JKE;

typedef union{
  Elect_StructDef_JKE jke_n60_str[6]; ////6 chips each have MAX_STRU_LEN data
  ushort read_regs_arr[6][MAX_U16DATA_LEN];
}COLLECT_UNION;

////define instance here================================================================
COLLECT_UNION jke_n60_data_union = {0};
HardwareSerial collectSerial(2);
Scheduler ts;   // Task scheduler
NonBlockingModbusMaster nbModbusMaster;

////define macros here===================
static void collectAllChipData();
static void PrintfInfo();

////define my work task==================================
Task collectDataTask(200,TASK_FOREVER,[]()
{
  collectAllChipData();
});

Task heartBeatTask(1000,TASK_FOREVER,[]()
{
  ////do anything in heartBeatTask to make sense for anyone or other.
  Serial.println("heartbeat task is running.");
});


void setup() {
  // put your setup code here, to run once:

  // Open serial communications and wait for port to open:
    Serial.begin(115200);
    collectSerial.begin(115200,SERIAL_8N1,9,10);///RX & TX
    float bitduration = 1.f / 115200;
    float charlen = 10.0f; // 8 bits + 1 stop, parity ?
    float preDelayBR = bitduration * charlen * 3.5f * 1e6  + 1; // in us
    float postDelayBR = bitduration * charlen * 3.5f * 1e6 + 1; // in us
    nbModbusMaster.initialize(collectSerial, preDelayBR, postDelayBR,1000);

  ////add task to scheduler
  ts.addTask(collectDataTask);
  ts.addTask(heartBeatTask);

  ////start task
  collectDataTask.enable(); ///start task
  heartBeatTask.enable();
}

bool isMbConnect = false;
int cnt_chip = 0;

void loop() {
  static int retryCount = 0;
  // put your main code here, to run repeatedly:
  ts.execute();

  if (nbModbusMaster.justFinished())
  {
   
    // check for errors
    int err = nbModbusMaster.getError(); // 0 for OK
    if (err) {
      isMbConnect = false;   
      Serial.print("Error: "); nbModbusMaster.printHex(err, Serial); Serial.println();
      if ((err == nbModbusMaster.ku8MBResponseTimedOut) ) {
        retryCount++;
        Serial.println("Mbtask Retry");
        nbModbusMaster.retry(); // send same cmd again
      }
    } else {
      retryCount = 0; // success
    }
    if (err == 0) {
      isMbConnect = true;
      if(cnt_chip==5)
      {
        PrintfInfo();
      }

      for (int i = 0; i < nbModbusMaster.getResponseBufferLength(); i++) {
        jke_n60_data_union.read_regs_arr[cnt_chip][i] = nbModbusMaster.getResponseBuffer(i);
        //nbModbusMaster.printHex(nbModbusMaster.getResponseBuffer(i), Serial); Serial.print(" ");
      }

      cnt_chip++;
      if(cnt_chip >= 6) cnt_chip = 0;

    }
  }

}

static void PrintfInfo()
{
  char send_buf[100] = {0};
  uint32_t *ptr;
  uint16_t *ptr2;
  float *ptr3;

  memset(send_buf,0,100);
    ///// PRINTF ALL DATA READ FROM CHIP REGISTER.

    for(int j=0;j<6;j++)
    {
    sprintf(send_buf,">>chip/socket : %d Info:",j+1);
    Serial.println(send_buf);     

    ptr= &jke_n60_data_union.jke_n60_str[j].RMS_1;
    ptr2 = &jke_n60_data_union.jke_n60_str[j].RMS_V;
    ptr3 = &jke_n60_data_union.jke_n60_str[j].TPS1;

    for(int i=0;i<35;i++)
    {
      if(i < 10)       
      {
        sprintf(send_buf,"RMS_%d:    %.2f A,",i+1,*(ptr+i) * 0.001);
        Serial.println(send_buf);
      }
      else if(i < 20)       
      {
        sprintf(send_buf,"WATT_%d:    %.2f W,",i+1-10,*(ptr+i) * 0.1);
        Serial.println(send_buf);
      }
      else if(i < 30)       
      {
        sprintf(send_buf,"Energy_%d:    %d kWh,",i+1-20,*(ptr+i) );
        Serial.println(send_buf);
      }
      else if(i == 30)       
      {
        sprintf(send_buf,"Energy_sum:    %d kWh,",*(ptr+i) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 31)       
      {
        sprintf(send_buf,"RMS_V:    %.2f V,",*ptr2 *0.01); ///62
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 32)       
      {
        sprintf(send_buf,"Period:    %.2f Hz,",*(ptr2+1) *0.01);
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 33)       
      {
        sprintf(send_buf,"Chip_Temp:    %.1f ^C,",*ptr3  );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
      else if(i == 34)       
      {
        sprintf(send_buf,"PF:    %.4f .",*(ptr3+1) );
        Serial.println(send_buf);
        memset(send_buf,0,100);
      }
    }

    if(j==5)
      Serial.println(">>Data Finished!>>"); 

  }
}

static void collectAllChipData()
{
  int read_addr_start = (cnt_chip+1) * 100;
 
  String str = "";
  uint16_t size = MAX_U16DATA_LEN;

  nbModbusMaster.readHoldingRegisters(1, read_addr_start, size);
 
}
arduino ino file download:

.zip   collect_n60_data_demo.zip (Size: 2.45 KB / Downloads: 227)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   collect_n60_data_demo.ino.merged.zip (Size: 189.94 KB / Downloads: 216)

before run the code, you need to install NonBlockingModbusMaster arduino library.
   

modify library .h file replace the number as photo.
   

after running code, will print all data by USB port:
Code:
y_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,

RMS_V:    233.58 V,
Period:    49.70 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.4 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    3.20 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.50 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.2 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.0 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.8 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.57 V,
Period:    49.71 Hz,
Chip_Temp:    25.5 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.
heartbeat task is running.
>>chip/socket : 1 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    24.0 ^C,
PF:    0.0000 .
>>chip/socket : 2 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.8 ^C,
PF:    0.0000 .
>>chip/socket : 3 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 4 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    23.6 ^C,
PF:    0.0000 .
>>chip/socket : 5 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    0.00 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    0.00 V,
Period:    9.53 Hz,
Chip_Temp:    25.3 ^C,
PF:    0.0000 .
>>chip/socket : 6 Info:
RMS_1:    0.00 A,
RMS_2:    0.00 A,
RMS_3:    0.00 A,
RMS_4:    0.00 A,
RMS_5:    0.00 A,
RMS_6:    0.00 A,
RMS_7:    0.00 A,
RMS_8:    0.00 A,
RMS_9:    0.00 A,
RMS_10:    0.00 A,
WATT_1:    0.00 W,
WATT_2:    1.50 W,
WATT_3:    0.00 W,
WATT_4:    0.00 W,
WATT_5:    0.00 W,
WATT_6:    0.00 W,
WATT_7:    0.00 W,
WATT_8:    0.00 W,
WATT_9:    0.00 W,
WATT_10:    0.00 W,
Energy_1:    0 kWh,
Energy_2:    0 kWh,
Energy_3:    0 kWh,
Energy_4:    0 kWh,
Energy_5:    0 kWh,
Energy_6:    0 kWh,
Energy_7:    0 kWh,
Energy_8:    0 kWh,
Energy_9:    0 kWh,
Energy_10:    0 kWh,
Energy_sum:    0 kWh,
RMS_V:    233.49 V,
Period:    49.71 Hz,
Chip_Temp:    25.7 ^C,
PF:    0.0000 .
>>Data Finished!>>
heartbeat task is running.

Print this item

  [arduino code examples for N60]-04 Print TEXT on SSD1306 OLED displayer
Posted by: admin - 08-03-2025, 03:21 AM - Forum: N60 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* This Arduino program demonstrates how to display text on an SSD1306 128x64 OLED display using the U8g2 library.
* The program draws two lines of text on the display:
* - The first line is "KINCONY" in a larger font.
* - The second line is "www.kincony.com" in a smaller font.
*
* The display is connected via I2C (software implementation) with:
* - SCL (clock) on pin IO17
* - SDA (data) on pin IO18
*
* The display's I2C address is set to 0x3C.
*/

#include <U8g2lib.h>  // Include the U8g2 library for controlling the OLED display
#include <Wire.h>     // Include the Wire library for I2C communication

// Initialize the display using the software I2C method (SCL = IO18, SDA = IO8)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,  17, 18, U8X8_PIN_NONE);  // Screen rotation: U8G2_R0

// Function to display page 1 content
void page1() {
  // Set font size 18 for the larger "KINCONY" text
  u8g2.setFont(u8g2_font_timR18_tf);  // Use the Times Roman font, size 18
  u8g2.setFontPosTop();               // Set the text position at the top of the display
  u8g2.setCursor(5, 0);               // Position the cursor at coordinates (5, 0)
  u8g2.print("KINCONY");              // Display the text "KINCONY" on the screen

  // Set font size 12 for the smaller "www.kincony.com" text
  u8g2.setFont(u8g2_font_timR12_tf);  // Use the Times Roman font, size 12
  u8g2.setCursor(0, 40);              // Position the cursor at coordinates (0, 40)
  u8g2.print("www.kincony.com");      // Display the text "www.kincony.com"
}

// Setup function, runs once when the program starts
void setup() {
  // Set the I2C address for the display to 0x3C
  u8g2.setI2CAddress(0x3C*2);  // I2C address shift for 8-bit format
 
  // Initialize the display
  u8g2.begin();
 
  // Enable UTF-8 character printing for the display
  u8g2.enableUTF8Print();  // Allow UTF-8 encoded text to be printed
}

// Main loop function, continuously runs after setup()
void loop() {
  // Begin the display drawing process
  u8g2.firstPage();  // Prepare the first page for drawing
  do {
    // Call the page1() function to draw content on the display
    page1();
  } while (u8g2.nextPage());  // Continue to the next page until all pages are drawn
}
arduino ino file download:

.zip   4-oled-ssd1306.zip (Size: 1.11 KB / Downloads: 227)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   4-oled-ssd1306.ino.merged.zip (Size: 202.58 KB / Downloads: 260)

Print this item

  [arduino code examples for N10]-04 Print TEXT on SSD1306 OLED displayer
Posted by: admin - 08-03-2025, 03:21 AM - Forum: N10 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* This Arduino program demonstrates how to display text on an SSD1306 128x64 OLED display using the U8g2 library.
* The program draws two lines of text on the display:
* - The first line is "KINCONY" in a larger font.
* - The second line is "www.kincony.com" in a smaller font.
*
* The display is connected via I2C (software implementation) with:
* - SCL (clock) on pin IO17
* - SDA (data) on pin IO18
*
* The display's I2C address is set to 0x3C.
*/

#include <U8g2lib.h>  // Include the U8g2 library for controlling the OLED display
#include <Wire.h>     // Include the Wire library for I2C communication

// Initialize the display using the software I2C method (SCL = IO18, SDA = IO8)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,  17, 18, U8X8_PIN_NONE);  // Screen rotation: U8G2_R0

// Function to display page 1 content
void page1() {
  // Set font size 18 for the larger "KINCONY" text
  u8g2.setFont(u8g2_font_timR18_tf);  // Use the Times Roman font, size 18
  u8g2.setFontPosTop();               // Set the text position at the top of the display
  u8g2.setCursor(5, 0);               // Position the cursor at coordinates (5, 0)
  u8g2.print("KINCONY");              // Display the text "KINCONY" on the screen

  // Set font size 12 for the smaller "www.kincony.com" text
  u8g2.setFont(u8g2_font_timR12_tf);  // Use the Times Roman font, size 12
  u8g2.setCursor(0, 40);              // Position the cursor at coordinates (0, 40)
  u8g2.print("www.kincony.com");      // Display the text "www.kincony.com"
}

// Setup function, runs once when the program starts
void setup() {
  // Set the I2C address for the display to 0x3C
  u8g2.setI2CAddress(0x3C*2);  // I2C address shift for 8-bit format
 
  // Initialize the display
  u8g2.begin();
 
  // Enable UTF-8 character printing for the display
  u8g2.enableUTF8Print();  // Allow UTF-8 encoded text to be printed
}

// Main loop function, continuously runs after setup()
void loop() {
  // Begin the display drawing process
  u8g2.firstPage();  // Prepare the first page for drawing
  do {
    // Call the page1() function to draw content on the display
    page1();
  } while (u8g2.nextPage());  // Continue to the next page until all pages are drawn
}
arduino ino file download:

.zip   4-oled-ssd1306.zip (Size: 1.11 KB / Downloads: 220)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   4-oled-ssd1306.ino.merged.zip (Size: 202.58 KB / Downloads: 249)

Print this item