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 <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <spi_flash.h> #include <spi_flash.h>
#include <SoftwareSerial.h>
#define WIFI_SSID "" #define WIFI_SSID "KAIPPUZHAKKUNNEL"
#define WIFI_PASS "" #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;
const int echoPin = D5;
SPI_DEVICE_TXBIT_LSBFIRST;
int distance_d = 0;
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);
int err = client.begin(81); sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64);
if(err == 0) { server.begin();
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); uint8_t data_header = 0xFF;
delayMicroseconds(2); uint8_t data[3]; //comprises of data_high, data_low & checksum.
digitalWrite(triggerPin, HIGH); if(sensorSerial.available() >= 4) {
delayMicroseconds(10); if(sensorSerial.read() == 0xFF) {
digitalWrite(triggerPin, LOW); data[0] = sensorSerial.read();
duration = pulseIn(echoPin, HIGH); data[1] = sensorSerial.read();
distance = (duration*.0343)/2; data[2] = sensorSerial.read();
uint8_t checksum = (data_header + data[0] + data[1]) & 0xFF;
if(WiFi.status() != WL_CONNECTED) { bool correct_checksum = false;
WiFi.begin(WIFI_SSID, WIFI_PASS); if(data[2] == checksum) {
while(WiFi.status() != WL_CONNECTED) { correct_checksum = true;
delay(500); 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: "); 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();
delay(3000); }
delete[] buff; }
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.");
}
} }