ESP8266連接超聲波模塊
HC-SR04四腳模塊:
超聲波模塊到底是怎么運行的呢?
在使用之前我們必須弄清楚這個傳感器的運行方法,因為傳感器本身只是把它的“ECHO”引腳保持在高電平,使之持續一段時間,這對應於從發送的波形到接收反射(回波)所花費的這一段時間。
模塊發出一陣聲波,同時向回聲引腳施加電壓。
該模塊從聲波接收反射並從回波引腳消除電壓。
在測距的時候,超聲波傳感器中產生脈沖將數據發送到NodeMCU或任何其它的微控制器。
起始脈沖約為10us,基於距離的PWM信號將為150 us-25us。如果沒有障礙物,則NodeMCU生成38us脈沖,以確認沒有檢測到物體。


- 接線:esp8266——HC-SR04
- vin(5v)——vcc
- TRIG——D4(gpio2)
- ECHO——D3(gpio0)
- GND——GND
讀數代碼:
const int trigPin = 2; //D4
const int echoPin = 0; //D3
float distance;
// 定義變量
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT); // 將trigPin設置為輸出
pinMode(echoPin, INPUT); // 將echoPin設置為輸入
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//將trigPin設置為HIGH狀態10微秒
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 讀取echoPin,以微秒為單位返回聲波傳播時間
distance =pulseIn(echoPin, HIGH) / 58.00;
// 打印距離在串行監視器
Serial.print("Distance: ");
Serial.print(distance);
Serial.println("cm");
delay(500);
}
- 探測距離計算公式:

注意
一個系統內一定要共地,外接電源多個時也要共地,不然通信信息讀取會有問題。
代碼補充
由於D4口連接了板內的一個LED燈,所以使用D4口時,rst板會發生無法讀數的結果,所以建議不要使用D0和D4口。
//const int trigPin = 2; //D4
//const int echoPin = 0; //D3
const int trigPin = 5; //D1
const int echoPin = 4; //D2
float distance;
// 定義變量
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT); // 將trigPin設置為輸出
pinMode(echoPin, INPUT); // 將echoPin設置為輸入
}
void loop() {
// Clears the trigPin
Serial.print("begin!");
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//將trigPin設置為HIGH狀態10微秒
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 讀取echoPin,以微秒為單位返回聲波傳播時間
distance =pulseIn(echoPin, HIGH) / 58.00;
// 打印距離在串行監視器
Serial.print("Distance: ");
Serial.print(distance);
Serial.println("cm");
delay(2000);
}


