Wireless WM
Wireless WM
h>
#include <WiFi.h>
#include <esp_now.h>
#include "MCP_ADC.h"
#include "ESP32TimerInterrupt.h"
#define MCP_DIN 6
#define MCP_DO 7
#define MCP_CLK 5
#define MCP_CS 4
esp_now_peer_info_t peerInfo;
uint8_t Slave_MAC_addr[6];
int i=0;
// MY bad
void setup() { // run once:
Serial.begin(115200);
// configure for automatic base-line restoration and single scan mode:
acPower.begin(acVoltRange, acCurrRange, RMS_WINDOW, ADC_12BIT, BLR_ON,
SGL_SCAN);
acPower.start(); //start measuring
mcp.begin(4);
if (ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS * 1000,
TimerHandler1)) //interrupt init
{
Serial.print(F("Starting ITimer1 OK, millis() = "));
Serial.println(millis());
}
else
Serial.println(F("Can't set ITimer1. Select another freq. or timer"));
initESPNow();
Serial.print("MCP Channels: ");
Serial.print(mcp.channels());
Serial.print("max Value: ");
Serial.println(mcp.maxValue());
}
void loop() {
//Serial.println("Raw adc value0 : " + String(val1));
Serial.println("Interrupt itterations (i index): " + String(i));
acPower.publish();
Serial.print(acPower.rmsVal1,1);
Serial.print(", ");
Serial.print(acPower.rmsVal2,1);
Serial.print(", ");
Serial.print(acPower.apparentPwr,1);
Serial.print(", ");
Serial.print(acPower.realPwr,1);
Serial.print(", ");
Serial.print(acPower.pf,2);
Serial.print(", ");
Serial.print(acPower.dcBias1);
Serial.print(", ");
Serial.println(acPower.dcBias2);
espNow_data.realPwr = acPower.realPwr;
espNow_data.rmsVal1 = acPower.rmsVal1;
espNow_data.rmsVal2 = acPower.rmsVal2;
espNow_data.apparentPwr = acPower.apparentPwr;
espNow_data.pf = acPower.pf;
esp_now_send(Slave_MAC_addr, (uint8_t *)&espNow_data, sizeof(espNow_data));
acPower.start(); // In single scan mode, restart the acquisition after
publishing.
delay(50);
}
void initESPNow() {
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) { // Init ESP-NOW
Serial.println("Error initializing ESP-NOW");
return;
}
for (int i=0; i<6; i++){Slave_MAC_addr[i] = 0xFF;}
memcpy(peerInfo.peer_addr, Slave_MAC_addr, 6); // add Register peer
peerInfo.channel = 0;
peerInfo.encrypt = false;
esp_now_add_peer(&peerInfo); // Add peer
/
***********************************************************************************
***********
*
***********************************************************************************
************/
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
if (status == 0) {
//Serial.println("Delivery Success :)");
}
else {
//Serial.println("Delivery Fail :(");
}
}
/
***********************************************************************************
***********
*
***********************************************************************************
************/
// Callback when data is received
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {