I am trying to make a Low power ESP32 Plant monitor, I’ve already made wifi more reliable, but my VirtualWrite Function doesn’t seem to work. I don’t know if it’s my code or some bug. Here is the super early version of the code, and I have tried to get the VirtualWrite to work with delays and stuff, but no luck.
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 10
#define SDA 27
#define SCL 26
char auth[] = "vvCifMo****Punpnktg*hzBH**k_KU2CMf";
char ssid[] = "*********";
char pass[] = "********";
IPAddress blynk_server_ip(45, 55, 96, 146);
IPAddress ip(192, 168, 1, 112); // this 3 lines for a fix IP-address
IPAddress dns1(8, 8, 8, 8);
IPAddress dns2(8, 8, 4, 4);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
uint8_t router_mac[6] = { 0x2e, 0x80, 0x88, 0xe9, 0x16, 0x8f };
int statusLED = 5;
int i;
int retry = 350;
float soil;
float soil1;
float soil2;
int Psoil;
int Psoil1;
int Psoil2;
int o = 4;
void setup() {
pinMode(32, INPUT);
pinMode(33, INPUT);
pinMode(34, INPUT);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
Serial.begin(115200);
delay(200);
Wire.begin(SDA, SCL);
WiFi.config(ip, gateway, subnet, dns1, dns2);
WiFi.begin(ssid, pass, 1, router_mac);
while (WiFi.status() != WL_CONNECTED) {
delay(20);
Serial.print(".");
// for (i = 0; i < retry; i++) {
// Serial.println("RETRYING WiFi CONECTION");
// delay(100);
// }
//goto sleep;
}
Blynk.config(auth, blynk_server_ip);
while (Blynk.connect() == false) {
Serial.print(".");
}
Blynk.run();
digitalWrite(5, HIGH);
delay(100);
digitalWrite(5, LOW);
soil = ReadVoltage(32), 3;
soil1 = ReadVoltage(33), 3;
soil2 = ReadVoltage(34), 3;
Psoil = map(soil, 3, 1, 0, 100);
Blynk.run();
Blynk.virtualWrite(V0, Psoil);
yield();
Blynk.virtualWrite(V6, soil1);
Blynk.virtualWrite(V7, soil2);
yield();
Serial.println(soil);
Serial.println(Psoil);
Blynk.run();
yield();
sleep:
digitalWrite(5, HIGH);
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
" Seconds");
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Blynk.run();
delay(100);
}
void loop() {
}
double ReadVoltage(byte pin) {
double reading = analogRead(pin); // Reference voltage is 3v3 so maximum reading is 3v3 = 4095 in range 0 to 4095
if (reading < 1 || reading > 4095) return 0;
// return -0.000000000009824 * pow(reading,3) + 0.000000016557283 * pow(reading,2) + 0.000854596860691 * reading + 0.065440348345433;
return -0.000000000000016 * pow(reading, 4) + 0.000000000118171 * pow(reading, 3) - 0.000000301211691 * pow(reading, 2) + 0.001109019271794 * reading + 0.034143524634089 + 0.013;
}