Advertisement
hms11

ESP32ScaleSwitch0.3.2

Dec 1st, 2023
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1.  
  2. // Fill-in information from your Blynk Template here
  3. #define BLYNK_TEMPLATE_ID "TMPLiTcSd8qR"
  4. #define BLYNK_TEMPLATE_NAME "ScaleSwitch"
  5.  
  6. #define BLYNK_FIRMWARE_VERSION "0.3.2"
  7.  
  8. #define BLYNK_PRINT Serial
  9. //#define BLYNK_DEBUG
  10.  
  11. #define APP_DEBUG
  12.  
  13. // Uncomment your board, or configure a custom board in Settings.h
  14. //#define USE_WROVER_BOARD
  15. //#define USE_TTGO_T7
  16.  
  17. #include "BlynkEdgent.h"
  18.  
  19.  
  20. WidgetLED led1(V1);
  21. WidgetLED led2(V2);
  22. WidgetLED led3(V12);
  23. WidgetLED led4(V13);
  24.  
  25. BlynkTimer timer;
  26.  
  27. char receivedWeight;
  28. int realSwitch = 0;
  29. const int realSwitchPin = 27;
  30. const int batteryPin = 36;
  31. int adc_read = 0;
  32. float batteryVoltage = 0;
  33. int batteryPercent = 0;
  34. bool scaleSwitchOn = false;
  35. bool blynkScaleSwitchOn = false;
  36. bool scaleStart = false;
  37. bool scaleBoot = false;
  38. bool scaleRun = false;
  39. bool scaleOff = false;
  40.  
  41. const int output1 = 4;
  42. const int scaleDisplayMOSFET = 16;
  43. const int output3 = 17;
  44. const int scaleMOSFET = 18;
  45.  
  46.  
  47. void setup()
  48. {
  49. Serial.begin(115200);
  50. Serial2.begin(9600, SERIAL_8N1, 14, 13); // RX pin: 17, TX pin: 16
  51. delay(100);
  52. BlynkEdgent.begin();
  53.  
  54. pinMode(realSwitchPin, INPUT);
  55. pinMode(batteryPin, INPUT);
  56. pinMode(scaleMOSFET, OUTPUT);
  57. pinMode(output1, OUTPUT);
  58. pinMode(output3, OUTPUT);
  59. pinMode(scaleDisplayMOSFET, OUTPUT);
  60.  
  61. digitalWrite(output1, HIGH);
  62. digitalWrite(scaleDisplayMOSFET, LOW);
  63. digitalWrite(scaleMOSFET, LOW);
  64. digitalWrite(output3, LOW);
  65. Blynk.syncAll();
  66. Blynk.virtualWrite(V2, LOW);
  67. timer.setInterval(750,blynkData);
  68. }
  69.  
  70.  
  71. void rs232Comm() {
  72. if (Serial2.available()) {
  73. // Read the incoming byte
  74. receivedWeight = Serial2.read();
  75. }
  76. }
  77.  
  78. void realScaleSwitch() {
  79. realSwitch = digitalRead(realSwitchPin);
  80. if (realSwitch == 0) {
  81. scaleSwitchOn = true;
  82. }
  83. else if (realSwitch == 1) {
  84. scaleSwitchOn = false;
  85. }
  86. }
  87.  
  88.  
  89. void switchState() {
  90. if ((blynkScaleSwitchOn) || (scaleSwitchOn)) {
  91. if (!scaleRun) {
  92. scaleOff = false;
  93. scaleStart = true;
  94. }
  95. }
  96. if ((!scaleSwitchOn) && (!blynkScaleSwitchOn)) {
  97. scaleOff = true;
  98. }
  99. }
  100.  
  101.  
  102. void batteryMonitor() {
  103. adc_read = analogRead(batteryPin);
  104. batteryVoltage = (adc_read * 0.003241);
  105. batteryPercent = map(adc_read, 3708, 3920, 0, 100);
  106. }
  107.  
  108. void scaleOperation() {
  109. rs232Comm();
  110. batteryMonitor();
  111. realScaleSwitch();
  112. switchState();
  113. if (scaleStart) {
  114. scaleBoot = true;
  115. digitalWrite(scaleMOSFET, HIGH);
  116. timer.setTimeout(30000, []()
  117. {
  118. scaleStart = false;
  119. scaleBoot = false;
  120. scaleRun = true;
  121. digitalWrite(scaleDisplayMOSFET, HIGH);
  122. digitalWrite(output3, HIGH);
  123. });
  124. }
  125. else if (scaleOff) {
  126. scaleRun = false;
  127. digitalWrite(scaleDisplayMOSFET, LOW);
  128. digitalWrite(scaleMOSFET, LOW);
  129. digitalWrite(output3, LOW);
  130. }
  131. }
  132.  
  133. void blynkData() {
  134. if (scaleOff) {
  135. Blynk.virtualWrite(V1, LOW);
  136. Blynk.virtualWrite(V2, LOW);
  137. Blynk.virtualWrite(V12, LOW);
  138. Blynk.virtualWrite(V13, HIGH);
  139. }
  140. else if (scaleBoot) {
  141. Blynk.virtualWrite(V1, HIGH);
  142. Blynk.virtualWrite(V13, LOW);
  143. }
  144. else if (scaleRun) {
  145.  
  146. Blynk.virtualWrite(V1, LOW);
  147. Blynk.virtualWrite(V2, HIGH);
  148. Blynk.virtualWrite(V12, HIGH);
  149. }
  150.  
  151. Blynk.virtualWrite(V5, realSwitch);
  152. Blynk.virtualWrite(V9, adc_read);
  153. Blynk.virtualWrite(V4, batteryVoltage);
  154. Blynk.virtualWrite(V3, batteryPercent);
  155. Blynk.virtualWrite(V16, receivedWeight);
  156.  
  157. }
  158.  
  159.  
  160. BLYNK_WRITE (V0) {
  161. if (param.asInt() == 0) {
  162. blynkScaleSwitchOn = false;
  163. }
  164. else if (param.asInt() == 1) {
  165. blynkScaleSwitchOn = true;
  166. }
  167. }
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174. void loop() {
  175. BlynkEdgent.run();
  176. scaleOperation();
  177. timer.run();
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement