Advertisement
safwan092

Untitled

Oct 28th, 2023
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.28 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 "project_12488"
  11. #define AIO_KEY "aio_QPFX76Hv9PYlF3gN9BRIYsYxhJdW"
  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 Sensor_5_trig_Pin = 21;
  27. int Sensor_5_echo_Pin = 19;
  28.  
  29. int Sensor_6_trig_Pin = 18;
  30. int Sensor_6_echo_Pin = 5;
  31.  
  32. int Parking_status[6] = {0, 0, 0, 0, 0, 0};
  33.  
  34.  
  35. long duration;
  36. int distance;
  37.  
  38. WiFiClientSecure client;
  39. Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
  40. // io.adafruit.com root CA
  41. const char* adafruitio_root_ca = \
  42. "-----BEGIN CERTIFICATE-----\n"
  43. "MIIEjTCCA3WgAwIBAgIQDQd4KhM/xvmlcpbhMf/ReTANBgkqhkiG9w0BAQsFADBh\n"
  44. "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
  45. "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n"
  46. "MjAeFw0xNzExMDIxMjIzMzdaFw0yNzExMDIxMjIzMzdaMGAxCzAJBgNVBAYTAlVT\n"
  47. "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
  48. "b20xHzAdBgNVBAMTFkdlb1RydXN0IFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3\n"
  49. "DQEBAQUAA4IBDwAwggEKAoIBAQC+F+jsvikKy/65LWEx/TMkCDIuWegh1Ngwvm4Q\n"
  50. "yISgP7oU5d79eoySG3vOhC3w/3jEMuipoH1fBtp7m0tTpsYbAhch4XA7rfuD6whU\n"
  51. "gajeErLVxoiWMPkC/DnUvbgi74BJmdBiuGHQSd7LwsuXpTEGG9fYXcbTVN5SATYq\n"
  52. "DfbexbYxTMwVJWoVb6lrBEgM3gBBqiiAiy800xu1Nq07JdCIQkBsNpFtZbIZhsDS\n"
  53. "fzlGWP4wEmBQ3O67c+ZXkFr2DcrXBEtHam80Gp2SNhou2U5U7UesDL/xgLK6/0d7\n"
  54. "6TnEVMSUVJkZ8VeZr+IUIlvoLrtjLbqugb0T3OYXW+CQU0kBAgMBAAGjggFAMIIB\n"
  55. "PDAdBgNVHQ4EFgQUlE/UXYvkpOKmgP792PkA76O+AlcwHwYDVR0jBBgwFoAUTiJU\n"
  56. "IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG\n"
  57. "AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB\n"
  58. "BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud\n"
  59. "HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds\n"
  60. "b2JhbFJvb3RHMi5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEW\n"
  61. "HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDQYJKoZIhvcNAQELBQADggEB\n"
  62. "AIIcBDqC6cWpyGUSXAjjAcYwsK4iiGF7KweG97i1RJz1kwZhRoo6orU1JtBYnjzB\n"
  63. "c4+/sXmnHJk3mlPyL1xuIAt9sMeC7+vreRIF5wFBC0MCN5sbHwhNN1JzKbifNeP5\n"
  64. "ozpZdQFmkCo+neBiKR6HqIA+LMTMCMMuv2khGGuPHmtDze4GmEGZtYLyF8EQpa5Y\n"
  65. "jPuV6k2Cr/N3XxFpT3hRpt/3usU/Zb9wfKPtWpoznZ4/44c1p9rzFcZYrWkj3A+7\n"
  66. "TNBJE0GmP2fhXhP1D/XVfIW/h0yCJGEiV9Glm/uGOa3DXHlmbAcxSyCRraG+ZBkA\n"
  67. "7h4SeM6Y8l/7MBRpPCz6l8Y=\n"
  68. "-----END CERTIFICATE-----\n";
  69. Adafruit_MQTT_Publish Parking_1 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_1");
  70. Adafruit_MQTT_Publish Parking_2 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_2");
  71. Adafruit_MQTT_Publish Parking_3 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_3");
  72. Adafruit_MQTT_Publish Parking_4 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_4");
  73. Adafruit_MQTT_Publish Parking_5 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_5");
  74. Adafruit_MQTT_Publish Parking_6 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Parking_6");
  75.  
  76. void setup() {
  77. Serial.begin(115200);
  78. readAllSensorsAndDisplayOnSerial();
  79. delay(10);
  80. connectToWiFiAndAdafruitIO();
  81. }
  82.  
  83. int period = 15000;
  84. unsigned long prevTime = 0;
  85. void loop() {
  86. MQTT_connect();
  87. readAllSensorsAndDisplayOnSerial();
  88.  
  89. while (millis() - prevTime >= period) {
  90. prevTime = millis();
  91. publishParking_1_status();
  92. publishParking_2_status();
  93. publishParking_3_status();
  94. publishParking_4_status();
  95. publishParking_5_status();
  96. publishParking_6_status();
  97. }
  98. // wait a couple seconds to avoid rate limit 30 Data/Min
  99. //delay(15000);
  100. }
  101.  
  102. void MQTT_connect() {
  103. int8_t ret;
  104. // Stop if already connected.
  105. if (mqtt.connected()) {
  106. return;
  107. }
  108.  
  109. Serial.print("Connecting to MQTT... ");
  110.  
  111. uint8_t retries = 3;
  112. while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
  113. Serial.println(mqtt.connectErrorString(ret));
  114. Serial.println("Retrying MQTT connection in 5 seconds...");
  115. mqtt.disconnect();
  116. delay(5000); // wait 5 seconds
  117. retries--;
  118. if (retries == 0) {
  119. // basically die and wait for WDT to reset me
  120. while (1)
  121. ;
  122. }
  123. }
  124.  
  125. Serial.println("MQTT Connected!");
  126. }
  127.  
  128.  
  129. void readAllSensorsAndDisplayOnSerial() {
  130. showDistanceSerial(readSensor(Sensor_1_trig_Pin, Sensor_1_echo_Pin), 1);
  131. showDistanceSerial(readSensor(Sensor_2_trig_Pin, Sensor_2_echo_Pin), 2);
  132. showDistanceSerial(readSensor(Sensor_3_trig_Pin, Sensor_3_echo_Pin), 3);
  133. showDistanceSerial(readSensor(Sensor_4_trig_Pin, Sensor_4_echo_Pin), 4);
  134. showDistanceSerial(readSensor(Sensor_5_trig_Pin, Sensor_5_echo_Pin), 5);
  135. showDistanceSerial(readSensor(Sensor_6_trig_Pin, Sensor_6_echo_Pin), 6);
  136. Serial.println("########################################################");
  137. }
  138.  
  139. int readSensor(int a_trig, int b_echo) {
  140. pinMode(a_trig, OUTPUT);
  141. pinMode(b_echo, INPUT);
  142. digitalWrite(a_trig, LOW);
  143. delayMicroseconds(5);
  144. digitalWrite(a_trig, HIGH);
  145. delayMicroseconds(10);
  146. digitalWrite(a_trig, LOW);
  147. duration = pulseIn(b_echo, HIGH);
  148. distance = (duration * 0.034 / 2) + 3;
  149. return distance;
  150. }
  151. void showDistanceSerial(int showDistane, int number) {
  152. Serial.print("Distance_");
  153. Serial.print(number);
  154. Serial.print(" = ");
  155. Serial.print(showDistane);
  156. Serial.println(" cm");
  157. if (showDistane < maxDistance) {
  158. Parking_status[number - 1] = 1;
  159. } else {
  160. Parking_status[number - 1] = 0;
  161. }
  162. Serial.print(number);
  163. Serial.print(" = ");
  164. Serial.println(Parking_status[number - 1]);
  165. delay(50);
  166. }
  167.  
  168. void connectToWiFiAndAdafruitIO() {
  169. Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example"));
  170. // Connect to WiFi access point.
  171. Serial.println();
  172. Serial.println();
  173. Serial.print("Connecting to ");
  174. Serial.println(WLAN_SSID);
  175. delay(1000);
  176. WiFi.begin(WLAN_SSID, WLAN_PASS);
  177. delay(2000);
  178. while (WiFi.status() != WL_CONNECTED) {
  179. delay(500);
  180. Serial.print(".");
  181. }
  182. Serial.println();
  183. Serial.println("WiFi connected");
  184. Serial.println("IP address: ");
  185. Serial.println(WiFi.localIP());
  186. // Set Adafruit IO's root CA
  187. client.setCACert(adafruitio_root_ca);
  188. }
  189.  
  190. void publishParking_1_status() {
  191. if (!Parking_1.publish(Parking_status[0])) {
  192. Serial.println(F("[1] Failed"));
  193. } else {
  194. Serial.println(F("[1] OK!"));
  195. }
  196. }
  197. void publishParking_2_status() {
  198. if (!Parking_2.publish(Parking_status[1])) {
  199. Serial.println(F("[2] Failed"));
  200. } else {
  201. Serial.println(F("[2] OK!"));
  202. }
  203. }
  204. void publishParking_3_status() {
  205. if (!Parking_3.publish(Parking_status[2])) {
  206. Serial.println(F("[3] Failed"));
  207. } else {
  208. Serial.println(F("[3] OK!"));
  209. }
  210. }
  211. void publishParking_4_status() {
  212. if (!Parking_4.publish(Parking_status[3])) {
  213. Serial.println(F("[4] Failed"));
  214. } else {
  215. Serial.println(F("[4] OK!"));
  216. }
  217. }
  218. void publishParking_5_status() {
  219. if (!Parking_5.publish(Parking_status[4])) {
  220. Serial.println(F("[5] Failed"));
  221. } else {
  222. Serial.println(F("[5] OK!"));
  223. }
  224. }
  225. void publishParking_6_status() {
  226. if (!Parking_6.publish(Parking_status[5])) {
  227. Serial.println(F("[6] Failed"));
  228. } else {
  229. Serial.println(F("[6] OK!"));
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement