Advertisement
vitareinforce

ultrasonic_sensor.ino

Jan 7th, 2025 (edited)
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <ESP8266WiFi.h>
  2. #include <PubSubClient.h>
  3.  
  4. #define SOUND_VELOCITY 0.034
  5. long duration;
  6. float distanceCm;
  7.  
  8. // Update these with values suitable for your network.
  9.  
  10. const char* ssid = "LSKKWorks";
  11. const char* password = "1234567890";
  12. const char* mqtt_server = "192.168.7.2";
  13. int mqtt_port = 1883;
  14. const char* mqtt_user = "camera";
  15. const char* mqtt_pass = "camera";
  16. const char* mqtt_topic = "sensor/1";
  17.  
  18. const char* CL = "b2da3fb1-7b7f-43f5-bbae-21f3e0c6a7b7_MEGABOT_Sensor_01";//nama alat
  19. String guid = "b2da3fb1-7b7f-43f5-bbae-21f3e0c6a7b7";
  20. int loop_count  = 0 ;
  21. const int input1 = D1;
  22. const int input2 = D2;
  23.  
  24.  
  25. byte mac[6];
  26. String MACAddress;
  27. uint8_t MAC_array[6];
  28. char MAC_char[18];
  29.  
  30. String button_status[8];
  31.  
  32. WiFiClient espClient;
  33. PubSubClient client(espClient);
  34. unsigned long lastMsg = 0;
  35. #define MSG_BUFFER_SIZE (50)
  36. char msg[MSG_BUFFER_SIZE];
  37. int value = 0;
  38.  
  39. String mac2String(byte ar[]) {
  40.   String s;
  41.   for (byte i = 0; i < 6; ++i)
  42.   {
  43.     char buf[3];
  44.     sprintf(buf, "%2X", ar[i]);
  45.     s += buf;
  46.     if (i < 5) s += ':';
  47.   }
  48.   return s;
  49. }
  50.  
  51. void printMACAddress() {
  52.   WiFi.macAddress(mac);
  53.   MACAddress = mac2String(mac);
  54.   Serial.println(MACAddress);
  55. }
  56.  
  57. void setup_wifi() {
  58.  
  59.   delay(10);
  60.   // We start by connecting to a WiFi network
  61.   Serial.println();
  62.   Serial.print("Connecting to ");
  63.   Serial.println(ssid);
  64.  
  65.   WiFi.mode(WIFI_STA);
  66.   WiFi.begin(ssid, password);
  67.  
  68.   while (WiFi.status() != WL_CONNECTED) {
  69.     delay(500);
  70.     Serial.print(".");
  71.   }
  72.  
  73.   randomSeed(micros());
  74.  
  75.   Serial.println("");
  76.   Serial.println("WiFi connected");
  77.   Serial.println("IP address: ");
  78.   Serial.println(WiFi.localIP());
  79.  
  80.   WiFi.macAddress(MAC_array);
  81.   for (int i = 0; i < sizeof(MAC_array) - 1; ++i) {
  82.     sprintf(MAC_char, "%s%02x:", MAC_char, MAC_array[i]);
  83.   }
  84.   sprintf(MAC_char, "%s%02x", MAC_char, MAC_array[sizeof(MAC_array) - 1]);
  85. }
  86.  
  87. void callback(char* topic, byte* payload, unsigned int length) {
  88.   Serial.print("Message arrived [");
  89.   Serial.print(topic);
  90.   Serial.print("] ");
  91.   for (int i = 0; i < length; i++) {
  92.     Serial.print((char)payload[i]);
  93.   }
  94.   Serial.println();
  95.  
  96.   // Switch on the LED if an 1 was received as first character
  97.   if ((char)payload[0] == '1') {
  98.     digitalWrite(BUILTIN_LED, LOW);   // Turn the LED on (Note that LOW is the voltage level
  99.     // but actually the LED is on; this is because
  100.     // it is active low on the ESP-01)
  101.   } else {
  102.     digitalWrite(BUILTIN_LED, HIGH);  // Turn the LED off by making the voltage HIGH
  103.   }
  104.  
  105. }
  106.  
  107. void reconnect() {
  108.   printMACAddress();
  109.   // Loop until we're reconnected
  110.   while (!client.connected()) {
  111.     Serial.print("Attempting MQTT connection...");
  112.     // Create a random client ID
  113.     String clientId = "ESP8266Client-";
  114.     clientId += String(random(0xffff), HEX);
  115.     // Attempt to connect
  116.     if (client.connect(CL, mqtt_user, mqtt_pass)) {
  117.       Serial.println("connected");
  118.     } else {
  119.       Serial.print("failed, rc=");
  120.       Serial.print(client.state());
  121.       Serial.println(" try again in 5 seconds");
  122.       // Wait 5 seconds before retrying
  123.       delay(5000);
  124.     }
  125.   }
  126. }
  127.  
  128. void setup() {
  129.   pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
  130.   Serial.begin(115200);
  131.  
  132.   pinMode(input1, OUTPUT);
  133.   pinMode(input2, INPUT);
  134.  
  135.   setup_wifi();
  136.   client.setServer(mqtt_server, mqtt_port);
  137.   client.setCallback(callback);
  138. }
  139.  
  140. void loop() {
  141.  
  142.   String pubmsg = "";
  143.  
  144.   if (!client.connected()) {
  145.     reconnect();
  146.   }
  147.   client.loop();
  148.  
  149.   delay(1000);
  150.   digitalWrite(input1, LOW);
  151.   delayMicroseconds(2);
  152.   digitalWrite(input1, HIGH);
  153.   delayMicroseconds(2);
  154.   digitalWrite(input1, LOW);
  155.   duration = pulseIn(input2, HIGH);
  156.   distanceCm = duration * SOUND_VELOCITY/2;
  157.  
  158.   pubmsg = guid + "#" + String(distanceCm);
  159.  
  160.   Serial.print("Publish message: ");
  161.   Serial.println(pubmsg);
  162.   client.publish(mqtt_topic, pubmsg.c_str());  
  163. }
  164.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement