15 / 20
智能停车位
结合测距、红绿灯与 Wi-Fi 车位状态页。
运行此实验 →实验目标
从空旷移动到警告再到停车,对照手机上的占用状态。
工作原理
结合测距、红绿灯与 Wi-Fi 车位状态页。 15 厘米为红灯;30 厘米为黄灯;大于 30 厘米为绿灯,车位空闲。 此处为配套教学模型,硬件示例基于经典 ESP32 与 Arduino-ESP32 3.x;网络、声波、负载和机械运动均为简化演示。
动手试一试
- 打开此实验
- 从空旷移动到警告再到停车,对照手机上的占用状态。
接线
- GPIO 5 / 19 — 触发/回波
- GPIO 25 / 26 / 27 — 红/黄/绿经各自电阻
- Wi-Fi — HTTP 车位状态
示例代码
#include <WiFi.h>
#include <WebServer.h>
WebServer server(80);
bool lightOn = false;
float distanceCm = -1;
void setup() {
pinMode(5, OUTPUT); pinMode(19, INPUT);
for (int pin : {25, 26, 27}) pinMode(pin, OUTPUT);
WiFi.begin("YOUR_SSID", "YOUR_PASSWORD");
while (WiFi.status() != WL_CONNECTED) delay(250);
server.on("/", []() { server.send(200, "text/plain", distanceCm < 0 ? "UNKNOWN" : distanceCm <= 30 ? "TAKEN" : "FREE"); });
server.begin();
}
void loop() {
digitalWrite(5, LOW); delayMicroseconds(2);
digitalWrite(5, HIGH); delayMicroseconds(10);
digitalWrite(5, LOW);
unsigned long echo = pulseIn(19, HIGH, 30000);
float cm = echo ? echo / 58.0f : -1;
distanceCm = cm;
digitalWrite(25, cm >= 0 && cm <= 15);
digitalWrite(26, cm > 15 && cm <= 30);
digitalWrite(27, cm > 30);
server.handleClient(); delay(50);
}检查理解
距离恰好为 15 和 30 厘米时是什么状态?
查看答案
15 厘米为红灯;30 厘米为黄灯;大于 30 厘米为绿灯,车位空闲。