diff --git a/NodeMCUWiFiModule.ino b/NodeMCUWiFiModule.ino index 11acc7b..f6fab71 100644 --- a/NodeMCUWiFiModule.ino +++ b/NodeMCUWiFiModule.ino @@ -1,97 +1,82 @@ #include +#include #include -#include -#define WIFI_SSID "KAIPPUZHAKKUNNEL" -#define WIFI_PASS "7042754150" +#define WIFI_SSID "" +#define WIFI_PASS "" -WiFiServer server(80); +#define IP_BROADCAST "192.168.1.255" +#define UDP_PORT 8176 -SoftwareSerial sensorSerial; -unsigned long int lastPrintTime = 0; -unsigned long int lastWiFiCheck = 0; +String status = ""; +float distance = -1; +float duration; +WiFiUDP client; + +const int triggerPin = D6; +const int echoPin = D5; + +SPI_DEVICE_TXBIT_LSBFIRST; -int distance_d = 0; void setup() { delay(5000); - WiFi.mode(WIFI_STA); - WiFi.setAutoReconnect(true); WiFi.begin(WIFI_SSID, WIFI_PASS); + pinMode(echoPin, INPUT); + pinMode(triggerPin, OUTPUT); + + status = "Connecting"; while(WiFi.status() != WL_CONNECTED) { delay(500); } - String status = WiFi.localIP().toString(); + status = WiFi.localIP().toString(); Serial.begin(9600); Serial.println("Got IP: " + status); - sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64); - server.begin(); + int err = client.begin(81); + if(err == 0) { + Serial.println("Failed to create UDP Socket"); + } + else { + Serial.println("Created UDP Socket at port 81"); + } + Serial.println(String("IP BROADCAST ID SET TO: ") + String(IP_BROADCAST)); + Serial.println(String("UDP PORT SET TO: ") + String(UDP_PORT)); } - 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); - } + digitalWrite(triggerPin, LOW); + delayMicroseconds(2); + digitalWrite(triggerPin, HIGH); + delayMicroseconds(10); + digitalWrite(triggerPin, LOW); + duration = pulseIn(echoPin, HIGH); + distance = (duration*.0343)/2; - if (client.available()) { - while (client.available()) { - client.read(); + if(WiFi.status() != WL_CONNECTED) { + WiFi.begin(WIFI_SSID, WIFI_PASS); + while(WiFi.status() != WL_CONNECTED) { + delay(500); } - } - - 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."); } + String d = String(distance); + String d2 = String(duration); + Serial.println("Distance is: " + d); + Serial.println("Duration is: " + d2); + byte *buff = new byte[4]; + byte *array = (byte *) &distance; + for(int i=0;i<4;i++) { + buff[i] = array[3-i]; + } + Serial.print("Data flipped is: "); + for(int i=0;i<4;i++) { + Serial.print(buff[i], HEX); + } + Serial.println(""); + + client.beginPacket(IP_BROADCAST, UDP_PORT); + client.write(buff, sizeof(float)); + client.endPacket(); + delay(3000); + delete[] buff; }