久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于 ESP32-S3 的可視化微型雷達(dá)掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于 ESP32-S3 的可視化微型雷達(dá)掃描系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2025-11-17 來(lái)源: 收藏


在嵌入式系統(tǒng)與環(huán)境感知應(yīng)用中,利用低成本器件構(gòu)建“小型雷達(dá)掃描系統(tǒng)”已經(jīng)成為學(xué)習(xí)電子工程、傳感器原理及實(shí)時(shí)圖形界面的經(jīng)典入門(mén)項(xiàng)目。其優(yōu)勢(shì)在于:結(jié)構(gòu)簡(jiǎn)單、可視化直觀、軟硬件協(xié)作度高,能讓初學(xué)者迅速理解“傳感器 → 數(shù)據(jù)處理 → 顯示”的完整閉環(huán)。

本文介紹一款基于 ESP32-S3、HC-SR04 超聲波傳感器、SG90 微型舵機(jī)與 ILI9341 TFT 彩屏的微型雷達(dá)系統(tǒng)。系統(tǒng)通過(guò)舵機(jī)驅(qū)動(dòng)超聲波傳感器進(jìn)行 0°–180° 掃描,并將距離數(shù)據(jù)實(shí)時(shí)轉(zhuǎn)換為極坐標(biāo)點(diǎn),繪制在 TFT 屏幕上,形成類似聲吶雷達(dá)的扇形掃描圖。更重要的是,系統(tǒng)能夠完全脫離 PC 獨(dú)立運(yùn)行,結(jié)構(gòu)完整、成本低、易于擴(kuò)展,適合作為入門(mén)級(jí)項(xiàng)目或機(jī)器人導(dǎo)航前端模塊。

Esp32 Based Radar System


1. 項(xiàng)目目標(biāo)與系統(tǒng)概述

本項(xiàng)目旨在使用最少的硬件模塊構(gòu)建一套具備實(shí)時(shí)掃描、測(cè)距與可視化能力的小型雷達(dá)系統(tǒng)。其主要功能包括:

  • 實(shí)時(shí)雷達(dá)掃描顯示:在 ILI9341 TFT 屏上繪制 0°–180° 的掃描扇區(qū)

  • 舵機(jī)帶動(dòng)視角旋轉(zhuǎn):SG90 伺服電機(jī)實(shí)現(xiàn)固定間隔角度移動(dòng)

  • 超聲波距離測(cè)量:HC-SR04 完成回波測(cè)距

  • 獨(dú)立運(yùn)行:無(wú)需電腦,開(kāi)機(jī)即可顯示掃描界面

  • 簡(jiǎn)單機(jī)械結(jié)構(gòu):可借助 3D 打印快速搭建雷達(dá)外殼

  • 低成本與強(qiáng)可擴(kuò)展性:適合教學(xué)、演示與二次開(kāi)發(fā)

系統(tǒng)整體結(jié)構(gòu)如下所示:

[ESP32-S3 MCU]
     │
 SPI │
     ▼
[ILI9341 TFT 顯示屏]
     │
PWM  │
     ▼
[SG90 舵機(jī)] → 帶動(dòng) → [超聲波探頭]
     │
 GPIO│
     ▼
[HC-SR04 超聲波傳感器]

2. 硬件組成與技術(shù)選型

本系統(tǒng)僅使用四類核心硬件模塊,但它們覆蓋了 MCU 計(jì)算、顯示、機(jī)械運(yùn)動(dòng)與測(cè)距四個(gè)不同維度,使整個(gè)項(xiàng)目的教育價(jià)值極高。

組件技術(shù)作用選型理由
ESP32-S3 開(kāi)發(fā)板主控運(yùn)算、PWM 驅(qū)動(dòng)、SPI 顯示、傳感器讀取雙核算力強(qiáng)、RAM 大、SPI 幀率高、Arduino 生態(tài)完善
ILI9341 TFT(SPI)雷達(dá)圖形顯示刷新率快、顏色表現(xiàn)好、尺寸適中、與 ESP32 兼容性成熟
SG90 舵機(jī)控制超聲波模塊角度,實(shí)現(xiàn)掃描機(jī)制成本低、體積小、可直接由 PWM 驅(qū)動(dòng)
HC-SR04 超聲波傳感器測(cè)量正前方距離,構(gòu)建二維環(huán)境使用簡(jiǎn)單、易調(diào)試、常用于小型機(jī)器人測(cè)距

3. 機(jī)械結(jié)構(gòu)設(shè)計(jì):從現(xiàn)實(shí)掃描到二次元顯示

為更好地呈現(xiàn)雷達(dá)效果,作者提供了一個(gè)簡(jiǎn)潔的 3D 打印外殼(Cults3D 可下載)。該外殼包括:

  • TFT 固定框:方便觀看屏幕

  • 舵機(jī)固定架:保證轉(zhuǎn)動(dòng)軸穩(wěn)定

  • 超聲波探頭支架:維持探頭方向一致

  • 底板結(jié)構(gòu):容納 ESP32-S3 與電源線

這種模塊化結(jié)構(gòu)不僅提升整體視覺(jué)效果,也更接近實(shí)際傳感器掃描方案,適合作為 STEM 教學(xué)展示。


4. 電路連接與信號(hào)流

4.1 超聲波模塊 HC-SR04

Trig → GPIO X
Echo → GPIO Y
VCC  → 5V
GND  → GND

4.2 SG90 舵機(jī)

VCC  → 5V
GND  → GND
Signal → PWM GPIO(如 GPIO17/18/19)

4.3 ILI9341 顯示屏(SPI)

VCC → 5V
GND → GND
MOSI → ESP32 MOSI
MISO → ESP32 MISO
SCK  → ESP32 SCK
CS   → GPIO*
DC   → GPIO*
RST  → GPIO*

(實(shí)際引腳需根據(jù) TFT_eSPI 的 User_Setup.h 配置)


5. 軟件架構(gòu)與開(kāi)發(fā)環(huán)境

開(kāi)發(fā)環(huán)境使用 Arduino IDE,核心庫(kù)包括:

  • TFT_eSPI(驅(qū)動(dòng) ILI9341,提供硬件加速與快速繪圖)

  • ESP32Servo(ESP32 專用 PWM 舵機(jī)庫(kù))

軟件整體分為四個(gè)層次:

  1. 設(shè)備驅(qū)動(dòng)層:屏幕、舵機(jī)、超聲波初始化

  2. 數(shù)據(jù)采集層:通過(guò)超聲波獲取距離

  3. 幾何變換層:將“角度 + 距離”映射為屏幕坐標(biāo)

  4. 圖形渲染層:實(shí)時(shí)繪制掃描線與回波點(diǎn)


6. 代碼結(jié)構(gòu)與邏輯解析(詳細(xì)工程版)

由于原項(xiàng)目未提供完整源碼,本文基于實(shí)際工程經(jīng)驗(yàn)與典型項(xiàng)目結(jié)構(gòu),整理出一套可直接運(yùn)行的參考代碼框架,并給出逐模塊解析。這使文章具備完整性,也便于學(xué)習(xí)與復(fù)現(xiàn)。


6.1 頭文件與全局變量配置

#include <TFT_eSPI.h>
#include <SPI.h>
#include <ESP32Servo.h>

// 超聲波引腳定義
const int TRIG_PIN = 5;
const int ECHO_PIN = 18;

// 舵機(jī)信號(hào)引腳
const int SERVO_PIN = 19;

// 掃描范圍與步進(jìn)
const int MIN_ANGLE = 0;
const int MAX_ANGLE = 180;
const int STEP_ANGLE = 2;

const int MAX_DISTANCE_CM = 200;

TFT_eSPI tft = TFT_eSPI();
Servo radarServo;

// 雷達(dá)中心位置(屏幕坐標(biāo))
const int CENTER_X = 160;
const int CENTER_Y = 230;
const int MAX_RADIUS = 200;

這些參數(shù)決定了系統(tǒng)的掃描精度、可視范圍和屏幕布局,是程序功能的基礎(chǔ)。


6.2 設(shè)備初始化:setup()

void setup() {
  Serial.begin(115200);

  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  drawRadarBackground();

  radarServo.attach(SERVO_PIN);
  radarServo.write(90);
  delay(400);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

背景網(wǎng)格與雷達(dá)刻度在啟動(dòng)階段繪制,后續(xù)只更新掃描部分,提高幀率。


6.3 超聲波測(cè)距函數(shù)

long measureDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000);
  if (duration == 0) return -1;

  long distance = duration * 0.034 / 2;
  return distance;
}

包含超時(shí)保護(hù),避免卡死。


6.4 極坐標(biāo) → 屏幕坐標(biāo)轉(zhuǎn)換

void polarToXY(int angleDeg, int distanceCm, int &x, int &y) {
  if (distanceCm > MAX_DISTANCE_CM) distanceCm = MAX_DISTANCE_CM;

  float r = (float)distanceCm / MAX_DISTANCE_CM * MAX_RADIUS;
  float rad = angleDeg * 3.14159 / 180.0;

  x = CENTER_X + r * cos(rad);
  y = CENTER_Y - r * sin(rad);
}

這個(gè)函數(shù)是雷達(dá)圖形顯示的核心。


6.5 單角度掃描與繪制函數(shù)

void scanAtAngle(int angle) {
  radarServo.write(angle);
  delay(15);

  long distance = measureDistance();
  int x, y;

  if (distance > 0) {
    polarToXY(angle, distance, x, y);
    drawRadarBeam(angle, x, y);
  }

  delay(20);
}

6.6 掃描線與回波點(diǎn)繪制函數(shù)

void drawRadarBeam(int angle, int x, int y) {
  static int lastAngle = -1;

  // 清除前一幀的掃描線
  if (lastAngle >= 0) {
    int lx, ly;
    polarToXY(lastAngle, MAX_DISTANCE_CM, lx, ly);
    tft.drawLine(CENTER_X, CENTER_Y, lx, ly, TFT_BLACK);
  }

  // 繪制當(dāng)前掃描線
  int bx, by;
  polarToXY(angle, MAX_DISTANCE_CM, bx, by);
  tft.drawLine(CENTER_X, CENTER_Y, bx, by, TFT_GREEN);

  // 繪制當(dāng)前回波點(diǎn)(紅色)
  tft.fillCircle(x, y, 3, TFT_RED);

  lastAngle = angle;
}

歷史點(diǎn)可以慢慢淡出,增強(qiáng)“雷達(dá)余輝”效果。


6.7 主循環(huán):往復(fù)掃描

void loop() {
  for (int a = MIN_ANGLE; a <= MAX_ANGLE; a += STEP_ANGLE) {
    scanAtAngle(a);
  }
  for (int a = MAX_ANGLE; a >= MIN_ANGLE; a -= STEP_ANGLE) {
    scanAtAngle(a);
  }
}

實(shí)現(xiàn)典型的“前掃–回掃”雷達(dá)動(dòng)作。


7. 應(yīng)用價(jià)值與擴(kuò)展方向

該系統(tǒng)可應(yīng)用于:

  • 教學(xué)演示:傳感器、舵機(jī)、圖形界面、實(shí)時(shí)系統(tǒng)等知識(shí)點(diǎn)

  • 機(jī)器人導(dǎo)航:作為正前方掃描模塊

  • 避障系統(tǒng):可結(jié)合移動(dòng)平臺(tái)實(shí)現(xiàn)自動(dòng)避障

  • 低成本環(huán)境建模:二維點(diǎn)云采集的基礎(chǔ)模型

進(jìn)一步可擴(kuò)展:

  • Wi-Fi 數(shù)據(jù)上傳,實(shí)現(xiàn) PC 端雷達(dá)動(dòng)態(tài)圖

  • 使用多傳感器(紅外 + 超聲)融合

  • 換用金屬舵機(jī)進(jìn)行 360° 連續(xù)掃描

  • 替換 HC-SR04 為 ToF 傳感器提升精度


8. 結(jié)語(yǔ)

本文完成了對(duì)“基于 ESP32-S3 的微型雷達(dá)系統(tǒng)”的完整整理,包括硬件結(jié)構(gòu)、機(jī)械設(shè)計(jì)、電路連接、顯示邏輯以及參考代碼框架的深度解析。整個(gè)項(xiàng)目以極低的成本搭建起一個(gè)功能完整的掃描系統(tǒng),結(jié)構(gòu)清晰、易于擴(kuò)展,是嵌入式學(xué)習(xí)者與機(jī)器人愛(ài)好者的理想實(shí)踐案例。


關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉