#include <ESP8266WiFi.h>
const char *ssid="OnePlus Nord CE5 7BA4", *pass="11111111", *api="NK93HONG7QVNHFIY";
#define TRIG D5
#define ECHO D6

unsigned long last=0;
unsigned int samples=3;

void setup(){
  Serial.begin(115200);
  pinMode(TRIG,OUTPUT); digitalWrite(TRIG,LOW);
  pinMode(ECHO,INPUT);
  WiFi.begin(ssid,pass);
}

unsigned int readCM(){
  unsigned long sum=0;
  for(uint8_t i=0;i<samples;i++){
    digitalWrite(TRIG,LOW); delayMicroseconds(2);
    digitalWrite(TRIG,HIGH); delayMicroseconds(10);
    digitalWrite(TRIG,LOW);
    unsigned long d = pulseIn(ECHO,HIGH,30000UL); // 30ms timeout
    if(d==0) d=30000UL;
    sum += d / 58UL; // duration(us) / 58 ≈ cm
    delay(40);
  }
  return (unsigned int)(sum / samples);
}

void sendTS(unsigned int cm){
  if(WiFi.status()!=WL_CONNECTED){ WiFi.reconnect(); unsigned long t=millis(); while(WiFi.status()!=WL_CONNECTED && millis()-t<3000) delay(100); }
  if(WiFi.status()==WL_CONNECTED){
    WiFiClient c;
    if(c.connect("api.thingspeak.com",80)){
      c.print(String("GET /update?api_key=")+api+"&field1="+cm+" HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\n\r\n");
      while(c.connected() && !c.available()) delay(1);
      while(c.available()) c.read();
      c.stop();
    }
  }
}

void loop(){
  unsigned int d = readCM();
  Serial.println(d);                        // keep for debugging; remove to shrink code
  if(millis()-last >= 15000UL){ sendTS(d); last=millis(); }
  delay(200);
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: