#include #include #include #define WIFI_SSID "KAIPPUZHAKKUNNEL" #define WIFI_PASS "7042754150" WiFiServer server(80); SoftwareSerial sensorSerial; unsigned long int lastPrintTime = 0; unsigned long int lastWiFiCheck = 0; int distance_d = 0; void setup() { delay(5000); WiFi.mode(WIFI_STA); WiFi.setAutoReconnect(true); WiFi.begin(WIFI_SSID, WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(500); } String status = WiFi.localIP().toString(); Serial.begin(9600); Serial.println("Got IP: " + status); sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64); server.begin(); } void loop() { uint8_t data_header = 0xFF; uint8_t data[3]; //comprises of data_high, data_low & checksum. if(sensorSerial.available() >= 4) { if(sensorSerial.read() == 0xFF) { data[0] = sensorSerial.read(); data[1] = sensorSerial.read(); data[2] = sensorSerial.read(); uint8_t checksum = (data_header + data[0] + data[1]) & 0xFF; bool correct_checksum = false; if(data[2] == checksum) { correct_checksum = true; distance_d = (data[0] << 8) | data[1]; } else { while(sensorSerial.available()) { sensorSerial.read(); } } if(millis() - lastPrintTime >= 3000) { Serial.println("Got Header Byte."); if(correct_checksum) Serial.println("Checksum is correct."); else Serial.println("Checksum is incorrect."); Serial.printf("Current Distance: %d mm\n", distance_d); lastPrintTime = millis(); } } } if(WiFi.status() != WL_CONNECTED) { if(millis() - lastWiFiCheck >= 10000) { WiFi.reconnect(); lastWiFiCheck = millis(); } return; } WiFiClient client = server.available(); if (client) { unsigned long clientTimeout = millis(); Serial.println("New Client."); while(client.connected() && !client.available()) { if (millis() - clientTimeout > 1000) { Serial.println("Client timeout."); client.stop(); return; } delay(1); } if (client.available()) { while (client.available()) { client.read(); } } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: application/json"); client.println("Connection: close"); client.println(); client.printf("{\"distance\": %d, \"unit\": \"mm\"}\n", distance_d); client.stop(); Serial.println("Client disconnected."); } }