Advertisement
safwan092

Untitled

Oct 26th, 2023
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. #include <WiFi.h>
  2. #include "WiFiClientSecure.h"
  3. #include "Adafruit_MQTT.h"
  4. #include "Adafruit_MQTT_Client.h"
  5.  
  6. #define WLAN_SSID "network"
  7. #define WLAN_PASS "123456789"
  8. #define AIO_SERVER "io.adafruit.com"
  9. #define AIO_SERVERPORT 8883
  10. #define AIO_USERNAME "gobavi2999"
  11. #define AIO_KEY "aio_VmeQ97kt1AKUit5SYRTw1dmYVtkN"
  12.  
  13. int maxDistance = 50;
  14. int Sensor_1_trig_Pin = 32;
  15. int Sensor_1_echo_Pin = 33;
  16.  
  17. int Sensor_2_trig_Pin = 26;
  18. int Sensor_2_echo_Pin = 25;
  19.  
  20. int Sensor_3_trig_Pin = 27;
  21. int Sensor_3_echo_Pin = 14;
  22.  
  23. int Sensor_4_trig_Pin = 22;
  24. int Sensor_4_echo_Pin = 23;
  25.  
  26. int Parking_status[4] = {0,0,0,0};
  27.  
  28.  
  29. long duration;
  30. int distance;
  31.  
  32. WiFiClientSecure client;
  33. Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
  34. const char* adafruitio_root_ca =
  35. "-----BEGIN CERTIFICATE-----\n"
  36. "MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n"
  37. "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
  38. "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
  39. "QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n"
  40. "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
  41. "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n"
  42. "9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n"
  43. "CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n"
  44. "nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n"
  45. "43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n"
  46. "T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n"
  47. "gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n"
  48. "BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n"
  49. "TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n"
  50. "DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n"
  51. "hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n"
  52. "06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n"
  53. "PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n"
  54. "YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n"
  55. "CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n"
  56. "-----END CERTIFICATE-----\n";
  57. Adafruit_MQTT_Publish Parking_1 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_1");
  58. Adafruit_MQTT_Publish Parking_2 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_2");
  59. Adafruit_MQTT_Publish Parking_3 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_3");
  60. Adafruit_MQTT_Publish Parking_4 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_4");
  61.  
  62. void setup() {
  63. Serial.begin(115200);
  64. readAllSensorsAndDisplayOnSerial();
  65. delay(10);
  66. connectToWiFiAndAdafruitIO();
  67. }
  68.  
  69. void loop() {
  70. MQTT_connect();
  71. readAllSensorsAndDisplayOnSerial();
  72. publishParking_1_status();
  73. publishParking_2_status();
  74. publishParking_3_status();
  75. publishParking_4_status();
  76. // wait a couple seconds to avoid rate limit 30 Data/Min
  77. delay(8000);
  78. }
  79.  
  80. void MQTT_connect() {
  81. int8_t ret;
  82. // Stop if already connected.
  83. if (mqtt.connected()) {
  84. return;
  85. }
  86.  
  87. Serial.print("Connecting to MQTT... ");
  88.  
  89. uint8_t retries = 3;
  90. while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
  91. Serial.println(mqtt.connectErrorString(ret));
  92. Serial.println("Retrying MQTT connection in 5 seconds...");
  93. mqtt.disconnect();
  94. delay(5000); // wait 5 seconds
  95. retries--;
  96. if (retries == 0) {
  97. // basically die and wait for WDT to reset me
  98. while (1)
  99. ;
  100. }
  101. }
  102.  
  103. Serial.println("MQTT Connected!");
  104. }
  105.  
  106.  
  107. void readAllSensorsAndDisplayOnSerial() {
  108. showDistanceSerial(readSensor(Sensor_1_trig_Pin, Sensor_1_echo_Pin), 1);
  109. showDistanceSerial(readSensor(Sensor_2_trig_Pin, Sensor_2_echo_Pin), 2);
  110. showDistanceSerial(readSensor(Sensor_3_trig_Pin, Sensor_3_echo_Pin), 3);
  111. showDistanceSerial(readSensor(Sensor_4_trig_Pin, Sensor_4_echo_Pin), 4);
  112. Serial.println("########################################################");
  113. }
  114.  
  115. int readSensor(int a_trig, int b_echo) {
  116. pinMode(a_trig, OUTPUT);
  117. pinMode(b_echo, INPUT);
  118. digitalWrite(a_trig, LOW);
  119. delayMicroseconds(5);
  120. digitalWrite(a_trig, HIGH);
  121. delayMicroseconds(10);
  122. digitalWrite(a_trig, LOW);
  123. duration = pulseIn(b_echo, HIGH);
  124. distance = (duration * 0.034 / 2) + 3;
  125. return distance;
  126. }
  127. void showDistanceSerial(int showDistane, int number) {
  128. Serial.print("Distance_");
  129. Serial.print(number);
  130. Serial.print(" = ");
  131. Serial.print(showDistane);
  132. Serial.println(" cm");
  133. if (showDistane < maxDistance) {
  134. Parking_status[number - 1] = 1;
  135. } else {
  136. Parking_status[number - 1] = 0;
  137. }
  138. Serial.print(number);
  139. Serial.print(" = ");
  140. Serial.println(Parking_status[number - 1]);
  141. delay(50);
  142. }
  143.  
  144. void connectToWiFiAndAdafruitIO() {
  145. Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example"));
  146. // Connect to WiFi access point.
  147. Serial.println();
  148. Serial.println();
  149. Serial.print("Connecting to ");
  150. Serial.println(WLAN_SSID);
  151. delay(1000);
  152. WiFi.begin(WLAN_SSID, WLAN_PASS);
  153. delay(2000);
  154. while (WiFi.status() != WL_CONNECTED) {
  155. delay(500);
  156. Serial.print(".");
  157. }
  158. Serial.println();
  159. Serial.println("WiFi connected");
  160. Serial.println("IP address: ");
  161. Serial.println(WiFi.localIP());
  162. // Set Adafruit IO's root CA
  163. client.setCACert(adafruitio_root_ca);
  164. }
  165.  
  166. void publishParking_1_status() {
  167. if (!Parking_1.publish(Parking_status[0])) {
  168. Serial.println(F("[1] Failed"));
  169. } else {
  170. Serial.println(F("[1] OK!"));
  171. }
  172. }
  173. void publishParking_2_status() {
  174. if (!Parking_2.publish(Parking_status[1])) {
  175. Serial.println(F("[2] Failed"));
  176. } else {
  177. Serial.println(F("[2] OK!"));
  178. }
  179. }
  180. void publishParking_3_status() {
  181. if (!Parking_3.publish(Parking_status[2])) {
  182. Serial.println(F("[3] Failed"));
  183. } else {
  184. Serial.println(F("[3] OK!"));
  185. }
  186. }
  187. void publishParking_4_status() {
  188. if (!Parking_4.publish(Parking_status[3])) {
  189. Serial.println(F("[4] Failed"));
  190. } else {
  191. Serial.println(F("[4] OK!"));
  192. }
  193. }
  194.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement