safwan092

Untitled

Mar 1st, 2023
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. #include "DHT.h"
  2. #include <TinyGPSPlus.h>
  3. #include <SoftwareSerial.h>
  4.  
  5. #define redLed 10
  6. #define yellowLED 9
  7. #define greenLED 8
  8. #define WaterLevelLow A0
  9. #define WaterLevelMed A1
  10. #define WaterLevelHigh A2
  11. #define DHTPIN 2
  12. #define GPSrxPin 3
  13. #define GPStxPin 4
  14. #define rxPin 5
  15. #define txPin 6
  16.  
  17. #define DHTTYPE DHT11
  18.  
  19. SoftwareSerial ss(rxPin, txPin);
  20. SoftwareSerial ssGPS(GPSrxPin, GPStxPin);
  21. TinyGPSPlus gps;
  22. DHT dht(DHTPIN, DHTTYPE);
  23.  
  24. float h = 0;
  25. float t = 0;
  26. int waterlevelvalue = 135;//ESP32 Main Project Power
  27. float var1;
  28. float var2;
  29. int var3;
  30. String var4;
  31. String var5;
  32.  
  33. int var6;
  34. int var7;
  35. int var8;
  36.  
  37. int waterLevel = 0;
  38. int WaterLevelLowValue = 0;
  39. int WaterLevelMedValue = 0;
  40. int WaterLevelHighValue = 0;
  41. unsigned long currentTime;
  42. unsigned long lastTime;
  43. char google_maps_link[70];
  44. String google_maps_link_string = "";
  45. String Longitude = "1";
  46. String Latitude = "1";
  47.  
  48.  
  49. void setup() {
  50.  
  51. pinMode(redLed, OUTPUT);
  52. pinMode(yellowLED, OUTPUT);
  53. pinMode(greenLED, OUTPUT);
  54. pinMode(WaterLevelLow, INPUT);
  55. pinMode(WaterLevelMed, INPUT);
  56. pinMode(WaterLevelHigh, INPUT);
  57. digitalWrite(redLed, HIGH);
  58. digitalWrite(yellowLED, LOW);
  59. digitalWrite(greenLED, LOW);
  60. Serial.begin(9600);
  61. ss.begin(9600);
  62. ssGPS.begin(9600);
  63. dht.begin();
  64. currentTime = millis();
  65. lastTime = currentTime;
  66. }
  67.  
  68. void loop () {
  69. read_GPS_receiver();
  70. h = dht.readHumidity();
  71. t = dht.readTemperature();
  72. WaterLevelLowValue = analogRead(WaterLevelLow);
  73. WaterLevelMedValue = analogRead(WaterLevelMed);
  74. WaterLevelHighValue = analogRead(WaterLevelHigh);
  75. if (WaterLevelLowValue < waterlevelvalue && WaterLevelMedValue < waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  76. waterLevel = 0;//tank is @ 0% Empty
  77. digitalWrite(redLed, LOW);
  78. digitalWrite(yellowLED, LOW);
  79. digitalWrite(greenLED, HIGH);
  80. }
  81. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue < waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  82. waterLevel = 30;//tank is @ 30%
  83. digitalWrite(redLed, LOW);
  84. digitalWrite(yellowLED, LOW);
  85. digitalWrite(greenLED, HIGH);
  86. }
  87. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue > waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  88. waterLevel = 60;//tank is @ 60%
  89. digitalWrite(redLed, LOW);
  90. digitalWrite(yellowLED, HIGH);
  91. digitalWrite(greenLED, LOW);
  92. }
  93. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue > waterlevelvalue && WaterLevelHighValue > waterlevelvalue) {
  94. waterLevel = 100;//tank is @ 100% Full
  95. digitalWrite(redLed, HIGH);
  96. digitalWrite(yellowLED, LOW);
  97. digitalWrite(greenLED, LOW);
  98. }
  99. currentTime = millis();
  100. // Every second, calculate and print L/Min
  101. if (currentTime >= (lastTime + 1000))
  102. {
  103. lastTime = currentTime;
  104. Serial.println("______________________");
  105. Serial.print(F("Humidity: "));
  106. Serial.print(h);
  107. Serial.println(F("%"));
  108. Serial.print(F("Temperature: "));
  109. Serial.print(t);
  110. Serial.println(F("°C "));
  111. Serial.println("______________________");
  112. Serial.print("Water Level: ");
  113. Serial.println(waterLevel);
  114. Serial.println("______________________");
  115. Serial.print("LowValue: ");
  116. Serial.println(WaterLevelLowValue);
  117. Serial.print("MedValue: ");
  118. Serial.println(WaterLevelMedValue);
  119. Serial.print("HighValue: ");
  120. Serial.println(WaterLevelHighValue);
  121. var1 = t;
  122. var2 = h;
  123. var3 = waterLevel;
  124. var4 = Latitude;
  125. var5 = Longitude;
  126.  
  127. var6=WaterLevelLowValue;
  128. var7=WaterLevelMedValue;
  129. var8=WaterLevelHighValue;
  130.  
  131. ss.print(var1, 2);
  132. ss.print("A");
  133. ss.print(var2);
  134. ss.print("B");
  135. ss.print(var3);
  136. ss.print("C");
  137. ss.print(var4);
  138. ss.print("D");
  139. ss.print(var5);
  140. ss.print("E");
  141.  
  142. ss.print(var6);
  143. ss.print("F");
  144. ss.print(var7);
  145. ss.print("G");
  146. ss.print(var8);
  147. ss.print("H");
  148.  
  149. ss.print("\n");
  150. }
  151. }
  152.  
  153. void read_GPS_receiver() {
  154. while (ssGPS.available() > 0) {
  155. if (gps.encode(ssGPS.read())) {
  156. if (gps.location.isValid()) {
  157. Latitude = String(gps.location.lat(), 6);
  158. Longitude = String(gps.location.lng(), 6);
  159. Serial.print(Latitude);
  160. Serial.print(",");
  161. Serial.print(Longitude);
  162. Serial.println();
  163. Serial.println("______________________");
  164. google_maps_link_string = "http://maps.google.com/maps?&z=15&mrt=yp&t=k&q=" + Latitude + "+" + Longitude;
  165. google_maps_link_string.toCharArray(google_maps_link, 70);
  166. }
  167. else {
  168. //Serial.println(F("INVALID"));
  169. Latitude ="1.23";
  170. Longitude ="1.23";
  171. }
  172. }
  173. }
  174. if (millis() > 5000 && gps.charsProcessed() < 10) {
  175. Serial.println(F("No GPS detected: check wiring."));
  176. while (true);
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment