Submit

15 / 20

智能停车位

结合测距、红绿灯与 Wi-Fi 车位状态页。

运行此实验 →
ESP32 教学电路插图,显示模组、引脚和本课实验元件

实验目标

从空旷移动到警告再到停车,对照手机上的占用状态。

工作原理

结合测距、红绿灯与 Wi-Fi 车位状态页。 15 厘米为红灯;30 厘米为黄灯;大于 30 厘米为绿灯,车位空闲。 此处为配套教学模型,硬件示例基于经典 ESP32 与 Arduino-ESP32 3.x;网络、声波、负载和机械运动均为简化演示。

动手试一试

  1. 打开此实验
  2. 从空旷移动到警告再到停车,对照手机上的占用状态。

接线

  • 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 厘米为绿灯,车位空闲。

参考资料

Arduino-ESP32 ↗ · GPIO 参考 ↗

MAKE A THOUGHTFUL CHOICE

Your shortlist, side by side.

Pricing models are indicative. Check each official website for current plans and limits.