Compare commits

...
Sign in to create a new pull request.
Author SHA1 Message Date
edf87bee7d NodeMCUWiFi http code 2026-07-30 17:36:24 +05:30
21b6c3f760 NodeMCUWiFi old code 2026-07-30 15:13:00 +05:30
3f40eba93a v0.0.2 2026-04-09 11:59:34 +05:30

View file

@ -1,82 +1,97 @@
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <spi_flash.h>
#include <SoftwareSerial.h>
#define WIFI_SSID ""
#define WIFI_PASS ""
#define WIFI_SSID "KAIPPUZHAKKUNNEL"
#define WIFI_PASS "7042754150"
#define IP_BROADCAST "192.168.1.255"
#define UDP_PORT 8176
WiFiServer server(80);
String status = "";
float distance = -1;
float duration;
WiFiUDP client;
const int triggerPin = D6;
const int echoPin = D5;
SPI_DEVICE_TXBIT_LSBFIRST;
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);
pinMode(echoPin, INPUT);
pinMode(triggerPin, OUTPUT);
status = "Connecting";
while(WiFi.status() != WL_CONNECTED) {
delay(500);
}
status = WiFi.localIP().toString();
String status = WiFi.localIP().toString();
Serial.begin(9600);
Serial.println("Got IP: " + status);
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));
sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64);
server.begin();
}
void loop() {
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
if(WiFi.status() != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASS);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
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();
}
}
}
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];
if(WiFi.status() != WL_CONNECTED) {
if(millis() - lastWiFiCheck >= 10000) {
WiFi.reconnect();
lastWiFiCheck = millis();
}
return;
}
Serial.print("Data flipped is: ");
for(int i=0;i<4;i++) {
Serial.print(buff[i], HEX);
}
Serial.println("");
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);
}
client.beginPacket(IP_BROADCAST, UDP_PORT);
client.write(buff, sizeof(float));
client.endPacket();
delay(3000);
delete[] buff;
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.");
}
}