From 963aca1e6a771ddd98a9b380c2fe64722ec9e9f0 Mon Sep 17 00:00:00 2001 From: sjamma2 <sjamma2@illinois.edu> Date: Thu, 2 May 2024 05:27:38 -0500 Subject: [PATCH] Upload New File --- .../swarna/espNow_dispenser_recieve_data.ino | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 notebooks/swarna/espNow_dispenser_recieve_data.ino diff --git a/notebooks/swarna/espNow_dispenser_recieve_data.ino b/notebooks/swarna/espNow_dispenser_recieve_data.ino new file mode 100644 index 0000000..f5e253a --- /dev/null +++ b/notebooks/swarna/espNow_dispenser_recieve_data.ino @@ -0,0 +1,146 @@ +/********* + Rui Santos + Complete project details at https://RandomNerdTutorials.com/esp-now-one-to-many-esp32-esp8266/ + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files. + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. +*********/ + +#include <esp_now.h> +#include <WiFi.h> +#include <Stepper.h> +#include <math.h> + +// Motor Driver Pins +#define t1 8 +#define t2 9 +#define t3 10 +#define t4 11 + +#define a1 12 +#define a2 13 +#define a3 14 +#define a4 15 + +#define b1 8 +#define b2 9 +#define b3 10 +#define b4 11 + +const int stepsPerRevolution = 100; + +//Structure example to receive data +//Must match the sender structure +typedef struct test_struct { + float ph; + float tds; + float temp; +} test_struct; + +//Create a struct_message called myData +test_struct myData; +float tds; +float ph = 7; +float temp; +int tds_flag = 0; + +//callback function that will be executed when data is received +void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { + memcpy(&myData, incomingData, sizeof(myData)); + Serial.print("Bytes received: "); + Serial.println(len); + Serial.print("ph: "); + Serial.println(myData.ph); + Serial.print(" TDS: "); + Serial.println(myData.tds); + Serial.print(" Temp: "); + Serial.println(myData.temp); + Serial.println(); + + /// ASSIGN VARIABLES HERE + ph = myData.ph; + tds = myData.tds; + temp = myData.temp; + +} + +// initialize the stepper library +Stepper chlor_stepper(stepsPerRevolution, t1, t2, t3, t4); +Stepper acid_stepper(stepsPerRevolution, a1, a2, a3, a4); +Stepper basic_stepper(stepsPerRevolution, b1, b2, b3, b4); + +void setup() { + //Initialize Serial Monitor + Serial.begin(115200); + + // Set device as a Wi-Fi Station + WiFi.mode(WIFI_STA); + + // Init ESP-NOW + if (esp_now_init() != ESP_OK) { + Serial.println("Error initializing ESP-NOW"); + return; + } + + //stepper motors init + chlor_stepper.setSpeed(150); + acid_stepper.setSpeed(150); + basic_stepper.setSpeed(150); + + // Once ESPNow is successfully Init, we will register for recv CB to + // get recv packer info + esp_now_register_recv_cb(OnDataRecv); +} + +int loop_num; +void loop() { + // tds = 11500; + delay(4000); + ph = 7.1; + if (ph < 7.2) { + loop_num = ceil((7.6 - ph)/0.1); // one rotation for every 0.1 ph lower than normal --> change 0.1 to actual value + // Serial.print(loop_num); + chlor_stepper.step(stepsPerRevolution*9*loop_num); + // Serial.print(" One round "); + } + + if (ph > 7.8) { + loop_num = floor((7.4 - ph)/0.1); // change 0.1 to how much increases + acid_stepper.step(stepsPerRevolution); + } + + // if (tds_flag == 1) { + // if (old_tds > tdsValue+25) { + // tds_flag = 0; + // Serial.println("Chlorine helped lower TDS value."); + // } else { + // Serial.println("Chlorine did not change TDS value. Please filter your water."); + // tds_flag = 0; + // } + if (tds > 1000) { + loop_num = (tds - 1000)/12; // how much it actually lowers (normally 1/10000 lbs/gal for 12ppm increase) + chlor_stepper.step(stepsPerRevolution); + } + + //TDS output + // Serial.print(" TDS Value:"); + // Serial.print(tds,0); + // Serial.println("ppm"); + + //pH output + // Serial.print(" pH Value:"); + // Serial.print(ph); + + // if (temp < 26 || temp > 28) { + // Serial.print("Temperature is out of range."); + // } else { + // Serial.print("Temperature is within the proper range."); + // } + + // ph = 7.5; + delay(4000); // one minute + +} \ No newline at end of file -- GitLab