Advertisement
safwan092

Untitled

Jan 16th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <WiFi.h>
  3. #include <FirebaseESP32.h>
  4. #include <addons/TokenHelper.h>
  5. #include <addons/RTDBHelper.h>
  6. #include <TinyGPSPlus.h>
  7. #include <NTPClient.h>
  8. #include <WiFiUdp.h>
  9.  
  10. #define btn 21
  11. #define echoPin 23 // Echo Pin
  12. #define trigPin 22 // Trigger Pin
  13.  
  14. int f = 0 ;
  15. int distance_FULL_BIN = 20;
  16. int btn_state = 0;
  17. long duration, distance;
  18. //--------------------------Firebase Variables
  19. String string_lat = "0.00";
  20. String string_lng = "0.00";
  21. String formattedDate;
  22. String dayStamp;
  23. String timeStamp;
  24. String binState;// Empty/Full
  25. //---------------------------------------------
  26.  
  27. TinyGPSPlus gps;
  28. const unsigned long interval = 1000; // Send every 5 seconds
  29. unsigned long previousMillis = 0;
  30.  
  31. WiFiUDP ntpUDP;
  32. NTPClient timeClient(ntpUDP);
  33.  
  34. #define WIFI_SSID "7771"
  35. #define WIFI_PASSWORD "112345677"
  36. #define API_KEY "AIzaSyBpMXzUecKFHuAepfFcDIt-4Cq-YE_ucRg"
  37. #define USER_EMAIL "aiioq111112@gmail.com"
  38. #define USER_PASSWORD "123456789"
  39. #define DATABASE_URL "project-b1c1d-default-rtdb.firebaseio.com"
  40. #define DATABASE_SECRET "iD1W8EpEndvrza8891JtQSnvUVpVbXJnno5RWYkw"
  41. FirebaseData fbdo;
  42. FirebaseAuth auth;
  43. FirebaseConfig config;
  44.  
  45. unsigned long dataMillis = 0;
  46.  
  47. void setup() {
  48.  
  49. Serial.begin(115200);
  50. Serial2.begin(9600);
  51. pinMode(trigPin, OUTPUT);
  52. pinMode(echoPin, INPUT);
  53. pinMode(btn, INPUT_PULLUP);
  54. WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  55. Serial.print("Connecting to Wi-Fi");
  56. while (WiFi.status() != WL_CONNECTED)
  57. {
  58. Serial.print(".");
  59. delay(300);
  60. }
  61. timeClient.begin();
  62. timeClient.setTimeOffset(10800);
  63. Serial.println();
  64. Serial.print("Connected with IP: ");
  65. Serial.println(WiFi.localIP());
  66. Serial.println();
  67. Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
  68. config.api_key = API_KEY;
  69. auth.user.email = USER_EMAIL;
  70. auth.user.password = USER_PASSWORD;
  71. config.database_url = DATABASE_URL;
  72. Firebase.reconnectNetwork(true);
  73. fbdo.setBSSLBufferSize(4096, 1024);
  74. fbdo.setResponseSize(4096);
  75. String base_path = "/UsersData/";
  76. config.token_status_callback = tokenStatusCallback; // see addons/TokenHelper.h
  77. Firebase.begin(&config, &auth);
  78. String var = "$userId";
  79. String val = "($userId === auth.uid && auth.token.premium_account === true && auth.token.admin === true)";
  80. Firebase.setReadWriteRules(fbdo, base_path, var, val, val, DATABASE_SECRET);
  81. }
  82.  
  83.  
  84. void loop() {
  85. gps_loop();
  86. send_to_firebase();
  87. time_and_date();
  88. ultrasonic ();
  89. read_btn();
  90.  
  91. if (distance > distance_FULL_BIN && btn_state == 0 && f == 0) {
  92. f = 1;
  93. time_and_date_send_to_firebase();
  94. }
  95.  
  96. }//end of Loop
  97.  
  98. void gps_loop() {
  99. while (Serial2.available() > 0) {
  100. if (gps.encode(Serial2.read())) {
  101. if (gps.location.isValid()) {
  102. string_lat = String(gps.location.lat(), 6);
  103. string_lng = String(gps.location.lng(), 6);
  104. Serial.print("Latitude: ");
  105. Serial.println(string_lat);
  106. Serial.print("Longitude: ");
  107. Serial.println(string_lng);
  108. }
  109. else {
  110. string_lat = "21.861541";
  111. string_lng = "39.067064";
  112. // Serial.println("inv..");
  113. }
  114. }
  115. }
  116. }
  117.  
  118. void time_and_date() {
  119. while (!timeClient.update()) {
  120. timeClient.forceUpdate();
  121. }
  122. formattedDate = timeClient.getFormattedDate();
  123. //Serial.println(formattedDate);
  124. // Extract date
  125. int splitT = formattedDate.indexOf("T");
  126. dayStamp = formattedDate.substring(0, splitT);
  127. Serial.print("DATE: ");
  128. Serial.println(dayStamp);
  129. // Extract time
  130. timeStamp = formattedDate.substring(splitT + 1, formattedDate.length() - 1);
  131. Serial.print("HOUR: ");
  132. Serial.println(timeStamp);
  133. //delay(1000);
  134.  
  135. }
  136.  
  137. void send_to_firebase() {
  138. if (millis() - dataMillis > 5000 && Firebase.ready()) {
  139. dataMillis = millis();
  140. Firebase.setString(fbdo, "/lat", string_lat);
  141. Firebase.setString(fbdo, "/lng", string_lng);
  142. Firebase.setString(fbdo, "/Bin_State", binState);
  143.  
  144. }
  145. }
  146.  
  147. void time_and_date_send_to_firebase() {
  148. if (Firebase.ready()) {
  149. Firebase.setString(fbdo, "/empty", 1);//flag for Android App
  150. Firebase.setString(fbdo, "/time", timeStamp);
  151. Firebase.setString(fbdo, "/date", dayStamp);
  152. }
  153. }
  154.  
  155. void ultrasonic () {
  156. digitalWrite(trigPin, LOW);
  157. delayMicroseconds(2);
  158. digitalWrite(trigPin, HIGH);
  159. delayMicroseconds(10);
  160. digitalWrite(trigPin, LOW);
  161. duration = pulseIn(echoPin, HIGH);
  162. distance = duration * 0.034 / 2;
  163. //Serial.println(distance);
  164. delay(10);
  165. if (distance > distance_FULL_BIN) {
  166. binState = "Empty";
  167. }
  168. else {
  169. binState = "Full";
  170. f = 0;
  171. }
  172. }
  173. void read_btn() {
  174. btn_state = digitalRead(btn);
  175. Serial.print(btn_state);
  176. Serial.print(" | ");
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement