NodeMCUWiFi http code

This commit is contained in:
unrealdragon 2026-07-30 17:36:24 +05:30
commit edf87bee7d

View file

@ -1,78 +1,97 @@
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <spi_flash.h> #include <spi_flash.h>
#include <SoftwareSerial.h>
#define WIFI_SSID "KAIPPUZHAKKUNNEL" #define WIFI_SSID "KAIPPUZHAKKUNNEL"
#define WIFI_PASS "7042754150" #define WIFI_PASS "7042754150"
#define IP_BROADCAST "192.168.1.255" WiFiServer server(80);
#define UDP_PORT 8176
String status = ""; SoftwareSerial sensorSerial;
float distance = -1; unsigned long int lastPrintTime = 0;
float duration; unsigned long int lastWiFiCheck = 0;
WiFiUDP client;
const int triggerPin = D6; int distance_d = 0;
const int echoPin = D5;
void setup() { void setup() {
delay(5000); delay(5000);
WiFi.mode(WIFI_STA);
WiFi.setAutoReconnect(true);
WiFi.begin(WIFI_SSID, WIFI_PASS); WiFi.begin(WIFI_SSID, WIFI_PASS);
pinMode(echoPin, INPUT);
pinMode(triggerPin, OUTPUT);
status = "Connecting";
while(WiFi.status() != WL_CONNECTED) { while(WiFi.status() != WL_CONNECTED) {
delay(500); delay(500);
} }
status = WiFi.localIP().toString(); String status = WiFi.localIP().toString();
Serial.begin(9600); Serial.begin(9600);
Serial.println("Got IP: " + status); Serial.println("Got IP: " + status);
Serial.println("Sending messages to: " + String(IP_BROADCAST)); sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64);
int err = client.begin(81); server.begin();
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() { void loop() {
digitalWrite(triggerPin, LOW);
delayMicroseconds(20);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(200);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH, 40000);
distance = (duration*.0343)/2;
if(WiFi.status() != WL_CONNECTED) { uint8_t data_header = 0xFF;
WiFi.begin(WIFI_SSID, WIFI_PASS); uint8_t data[3]; //comprises of data_high, data_low & checksum.
while(WiFi.status() != WL_CONNECTED) { if(sensorSerial.available() >= 4) {
delay(500); 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); if(WiFi.status() != WL_CONNECTED) {
String d2 = String(duration); if(millis() - lastWiFiCheck >= 10000) {
Serial.println("Distance is: " + d); WiFi.reconnect();
Serial.println("Duration is: " + d2); lastWiFiCheck = millis();
byte *buff = new byte[4]; }
byte *array = (byte *) &distance; return;
for(int i=0;i<4;i++) {
buff[i] = array[3-i];
} }
Serial.print("Data flipped is: 0x"); WiFiClient client = server.available();
for(int i=0;i<4;i++) { if (client) {
Serial.print(buff[i], HEX); unsigned long clientTimeout = millis();
} Serial.println("New Client.");
Serial.println(""); while(client.connected() && !client.available()) {
if (millis() - clientTimeout > 1000) {
Serial.println("Client timeout.");
client.stop();
return;
}
delay(1);
}
client.beginPacket(IP_BROADCAST, UDP_PORT); if (client.available()) {
client.write(buff, sizeof(float)); while (client.available()) {
client.endPacket(); client.read();
delete[] buff; }
delay(3000); }
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.");
}
} }