#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);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: