Advertisement
safwan092

Untitled

Sep 17th, 2023
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.19 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;// 50 cm < x
  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.  
  58. Adafruit_MQTT_Publish Parking_1 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_1");
  59. Adafruit_MQTT_Publish Parking_2 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_2");
  60. Adafruit_MQTT_Publish Parking_3 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_3");
  61. Adafruit_MQTT_Publish Parking_4 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_4");
  62.  
  63. void setup() {
  64. Serial.begin(115200);
  65. readAllSensorsAndDisplayOnSerial();
  66. delay(10);
  67. connectToWiFiAndAdafruitIO();
  68. }
  69.  
  70. void loop() {
  71. MQTT_connect();
  72. readAllSensorsAndDisplayOnSerial();
  73. publishParking_1_status();
  74. publishParking_2_status();
  75. publishParking_3_status();
  76. publishParking_4_status();
  77. // wait a couple seconds to avoid rate limit 30 Data/Min
  78. delay(8000);
  79. }
  80.  
  81. void MQTT_connect() {
  82. int8_t ret;
  83. // Stop if already connected.
  84. if (mqtt.connected()) {
  85. return;
  86. }
  87.  
  88. Serial.print("Connecting to MQTT... ");
  89.  
  90. uint8_t retries = 3;
  91. while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
  92. Serial.println(mqtt.connectErrorString(ret));
  93. Serial.println("Retrying MQTT connection in 5 seconds...");
  94. mqtt.disconnect();
  95. delay(5000); // wait 5 seconds
  96. retries--;
  97. if (retries == 0) {
  98. // basically die and wait for WDT to reset me
  99. while (1)
  100. ;
  101. }
  102. }
  103.  
  104. Serial.println("MQTT Connected!");
  105. }
  106.  
  107.  
  108. void readAllSensorsAndDisplayOnSerial() {
  109. showDistanceSerial(readSensor(Sensor_1_trig_Pin, Sensor_1_echo_Pin), 1);
  110. showDistanceSerial(readSensor(Sensor_2_trig_Pin, Sensor_2_echo_Pin), 2);
  111. showDistanceSerial(readSensor(Sensor_3_trig_Pin, Sensor_3_echo_Pin), 3);
  112. showDistanceSerial(readSensor(Sensor_4_trig_Pin, Sensor_4_echo_Pin), 4);
  113. Serial.println("########################################################");
  114. }
  115.  
  116. int readSensor(int a_trig, int b_echo) {
  117. pinMode(a_trig, OUTPUT);
  118. pinMode(b_echo, INPUT);
  119. digitalWrite(a_trig, LOW);
  120. delayMicroseconds(5);
  121. digitalWrite(a_trig, HIGH);
  122. delayMicroseconds(10);
  123. digitalWrite(a_trig, LOW);
  124. duration = pulseIn(b_echo, HIGH);//1000 milli second = 1 second
  125. //speed of sound = 0.034 [cm]/[milli second]
  126. distance = (duration * 0.034 / 2) + 3;// cm
  127. return distance;
  128. }
  129. void showDistanceSerial(int showDistane, int number) {
  130. Serial.print("Distance_");
  131. Serial.print(number);
  132. Serial.print(" = ");
  133. Serial.print(showDistane);
  134. Serial.println(" cm");
  135. if (showDistane < maxDistance) {
  136. Parking_status[number - 1] = 1;
  137. } else {
  138. Parking_status[number - 1] = 0;
  139. }
  140. Serial.print(number);
  141. Serial.print(" = ");
  142. Serial.println(Parking_status[number - 1]);
  143. delay(50);
  144. }
  145.  
  146. void connectToWiFiAndAdafruitIO() {
  147. Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example"));
  148. // Connect to WiFi access point.
  149. Serial.println();
  150. Serial.println();
  151. Serial.print("Connecting to ");
  152. Serial.println(WLAN_SSID);
  153. delay(1000);
  154. WiFi.begin(WLAN_SSID, WLAN_PASS);
  155. delay(2000);
  156. while (WiFi.status() != WL_CONNECTED) {
  157. delay(500);
  158. Serial.print(".");
  159. }
  160. Serial.println();
  161. Serial.println("WiFi connected");
  162. Serial.println("IP address: ");
  163. Serial.println(WiFi.localIP());
  164. // Set Adafruit IO's root CA
  165. client.setCACert(adafruitio_root_ca);
  166. }
  167.  
  168. void publishParking_1_status() {
  169. if (!Parking_1.publish(Parking_status[0])) {
  170. Serial.println(F("[1] Failed"));
  171. } else {
  172. Serial.println(F("[1] OK!"));
  173. }
  174. }
  175. void publishParking_2_status() {
  176. if (!Parking_2.publish(Parking_status[1])) {
  177. Serial.println(F("[2] Failed"));
  178. } else {
  179. Serial.println(F("[2] OK!"));
  180. }
  181. }
  182. void publishParking_3_status() {
  183. if (!Parking_3.publish(Parking_status[2])) {
  184. Serial.println(F("[3] Failed"));
  185. } else {
  186. Serial.println(F("[3] OK!"));
  187. }
  188. }
  189. void publishParking_4_status() {
  190. if (!Parking_4.publish(Parking_status[3])) {
  191. Serial.println(F("[4] Failed"));
  192. } else {
  193. Serial.println(F("[4] OK!"));
  194. }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement