基于FPGA的智能小車設計(包含代碼)/ 全棧FPGA智能小車:Verilog實現藍牙/語音/多傳感器融合的移動平臺

首先先聲明一下,本項目已經歷多輪測試,可以放心根據我的設計進行二次開發和直接套用!!!

代碼有詳細的注釋,方便同學進行學習!!

制作不易,記得三連哦,給我動力,持續更新!!!

完整工程文件下載:基于FPGA的智能小車完整工程下載?(點擊藍色字體獲取)


引言

????????在智能硬件爆發的時代,基于MCU的智能小車方案已屢見不鮮,但FPGA在實時控制與并行處理上的潛力卻鮮被挖掘。本文將揭秘一款全棧式FPGA智能小車——通過純Verilog實現藍牙遙控、語音指令識別、紅外尋跡與超聲波避障等多模態交互系統。

與傳統方案相比,這款設計實現了三大突破:

  1. 硬件加速:利用FPGA的并行架構,超聲波測距與電機PWM控制實現納秒級響應

  2. 高度集成:單一芯片同時處理4路傳感器數據流,資源利用率較STM32提升60%

  3. 可擴展性:通過自定義IP核設計,可快速接入激光雷達、攝像頭、云臺等外設(本人接FPGA項目設計

  4. 穩定性:全部設計由verilog硬件描述語言實現,使小車在運行中更加穩定

一、系統設計概述

????????本設計的智能小車采用?FPGA(現場可編程門陣列)?作為核心控制器,通過?Verilog HDL?實現硬件邏輯設計,構建了一個高度并行、低延遲的多模態控制系統。系統集成了?藍牙遙控、語音識別、紅外尋跡、超聲波避障?等功能,并采用模塊化設計,確保各功能獨立運行且高效協同。? ? ?先給大家看一個最終的效果,嘻嘻嘻!!小車的主題顏色可以定制,都是我自己用3D打印出來的,這是我的騷紅色。排線有點亂,后期慢慢更新版本。

二、設計實現功能

(1)藍牙控制小車運動方式,和模式切換

(2)語音控制小車運動方式,和模式切換

(3)支持紅外尋跡功能模式

(4)支持超聲波避障功能模式

(5)數碼管/OLED顯示車載信息

三、設計選型

(1)FPGA主芯片:?EP4CE6F17C8N (其他的也都可以,純verilog代碼,方便移植)

(2)電機型號:步進電機,TT直流電機等(可以定制)

(3)語音模塊:SU-03T系列芯片

(4)藍牙模塊:HC-05的JDY-31藍牙模塊

(5)超聲波模塊:HC-SR04超聲波模塊

(6)紅外模塊:TCRT5000傳感器

(7)小車底板:自己設計3D打印(可定制)

四、設計方案

本設計主要通過FPGA實時接收各個傳感器的數據和狀態,來驅動四個車輪的電機,驅動小車的行駛以及工作模式,并通過OLED或者數碼管顯示車載狀態,以及配合語音和安卓手機來控制小車的狀態。其主要設計框圖如下所示:

五、硬件介紹

5.1 電機驅動模塊

要想使馬達和輪胎轉動,不能只給電機高低電平,而是需要使用電機驅動模塊去連接FPGA開發板和馬達。

本設計采用的電機驅動模塊為:L298N直流電機驅動,此電機可以驅動兩個馬達,但是咱們使用的是四個馬達,所以需要將一邊的兩個馬達串聯到一起接到電機驅動上,然后就可以實現控制四個馬達了。

電機驅動模塊原理:

L298N是一款經典的雙H橋電機驅動芯片,能夠驅動兩個直流電機或一個步進電機

模塊引腳說明

一、電源部分

  1. 12V/VCC:電機驅動電壓輸入(5-35V)

  2. GND:電源地

  3. 5V:輸出5V(當使能跳線帽連接時)或5V輸入(當斷開跳線帽時)

二、控制部分

  1. ENA/ENB:電機A/B使能端(PWM調速)

  2. IN1-IN4:電機控制輸入端:

    • IN1/IN2控制電機A

    • IN3/IN4控制電機B

三、輸出部分

  1. OUT1-OUT4:電機輸出端:

    • OUT1/OUT2接電機A

    • OUT3/OUT4接電機B

通過控制Q1-Q4的通斷組合(IN1-4),可以實現:

  • 正轉(Q1和Q4導通)

  • 反轉(Q2和Q3導通)

  • 制動(Q1和Q2或Q3和Q4導通)

  • 停止(所有Q斷開)

5.2?藍牙模塊

本次設計的藍牙模塊采用的是藍牙3.0模塊 SPP透傳 兼容HC-05的JDY-31,其采用的是六線制,支持藍牙3.0,可以使用安卓手機和Windows電腦進行通信,暫時不支持和蘋果手機進行通信

藍牙模塊原理:

模塊引腳說明

  1. VCC:3.3V電源輸入(2.4-3.6V)

  2. GND:電源地

  3. TXD:模塊串口發送端(接FPGA的RXD)

  4. RXD:模塊串口接收端(接FPGA的TXD)

  5. STATE:連接狀態指示(可選)

  6. EN:使能引腳(高電平工作,低電平進入AT模式)

工作原理圖解

?[MCU] --UART--> [JDY-31] --BLE無線--> [手機/主機設備](TXD/RXD) ? ? ?  (藍牙射頻)

詳細工作流程

  1. 初始化階段

    • 上電后模塊自動進入廣播狀態

    • 默認名稱"JDY-31"可被藍牙設備掃描到

  2. 配對連接

    • 手機/主機設備掃描并連接模塊

    • 建立安全的GATT連接

    • 模塊STATE引腳輸出高電平(如果連接)

  3. 數據傳輸

    • MCU通過UART發送數據→模塊通過BLE轉發給主機

    • 主機發送數據→模塊通過UART轉發給FPGA

    • 全雙工透明傳輸,波特率可配置

  4. 低功耗模式

    • 無連接時自動進入低功耗狀態

    • 收到數據或主機連接請求時快速喚醒

通信協議

AT指令:

查詢版本指令:AT+VERSION (可以通過這個指令查詢串口連接是否正常,以及波特率是否正常)

波特率設置指令:AT+BAUD8,(4:9600, 8:115200)

設置藍牙昵稱:AT+NAMExiaoche,(設置藍牙昵稱為xioache)

5.3 語音模塊

本設計采用的語音模塊為:SU-03T系列芯片,喇叭采用的是內磁小喇叭揚聲器8歐1瓦,拾音器采用的52DB電容式拾音器。

SU-03T是一款基于AI語音識別技術的低成本離線語音識別模塊,廣泛應用于智能家居、語音控制和物聯網設備中,下面主要講解他的原理和通信協議

語音模塊原理:

模塊引腳說明

  1. VCC:3.3V電源輸入(3.3-5V)

  2. GND:電源地

  3. TXD:模塊串口發送端(接FPGA的RXD)

  4. RXD:模塊串口接收端(接FPGA的TXD)

  5. MIC+ :外接拾音器正極

  6. MIC-:外接拾音器負極

  7. SPK+:外接揚聲器正極

  8. SPK-:外接揚聲器負極

工作流程詳解

  1. 聲波采集階段

    • 通過駐極體麥克風將聲波轉換為電信號

    • 信號經過低噪聲放大器(LNA)放大

    • 24-bit ADC進行模數轉換(采樣率16kHz)

  2. 語音預處理

    • 自適應降噪算法(ANS)消除環境噪聲

    • 回聲消除(AEC)處理

    • 語音活動檢測(VAD)區分人聲與環境音

  3. 特征提取

    • 梅爾頻率倒譜系數(MFCC)分析

    • 動態時間規整(DTW)匹配

    • 本地神經網絡模型處理(非云端)

  4. 指令匹配

    • 與預燒錄的35條指令詞進行比對

    • 采用動態時間規整算法提高識別率

  5. 輸出控制

    • 通過UART發送識別結果(ASCII格式)

    • 或直接通過GPIO/PWM輸出控制信號

5.4?超聲波測距模塊

本次設計的超聲波測距模塊采用的是HC-SR04,然后外接一個自己設計的超聲波測距模塊支架,放到第二層的前面,用膠槍固定即可。

同時我還自己設計了一個專門放超聲波模塊的支架,如下圖所示,可以把超聲波模塊固定在小車底盤上

超聲波模塊工作原理:

模塊引腳說明

  1. VCC:2.8-5.5V電源輸入

  2. Trig:觸發控制信號輸入

  3. Echo:回響信號輸出

  4. GND:地線

工作原理圖解

?[FPGA] --Trig脈沖--> [HC-SR04] --超聲波發射--> 物體↑[FPGA] <--Echo脈沖-- [HC-SR04] <--超聲波反射-- 物體

詳細工作流程

  1. 觸發階段

    • 微控制器向Trig引腳發送至少10μs的高電平脈沖

    • 模塊內部自動發出8個40kHz的超聲波脈沖

  2. 發射階段

    • 超聲波換能器發射一束40kHz的聲波

    • 聲波在空氣中傳播(聲速約343m/s,25℃時)

  3. 接收階段

    • 如果前方有障礙物,聲波會被反射

    • 模塊接收器檢測返回的聲波

  4. 信號輸出

    • 模塊通過Echo引腳輸出高電平

    • 高電平持續時間與距離成正比:距離 = (高電平時間 × 聲速)/2

    • 如果沒有檢測到回波,Echo會在約38ms后返回低電平(表示超出量程)

時序圖

5.5?紅外尋跡模塊

本次紅外尋跡模塊采用的是一個三路紅外尋組,并沒有單獨的使用紅外尋跡模塊,這樣節省了一些線的連接,使我們的設計看起來更加精簡和美觀。

也可以采用單獨的紅外模塊,這個可以自行選擇,我默認用的是單獨的

紅外尋跡原理:

一個典型的紅外尋跡模塊由以下幾部分組成:

  1. 紅外發射管(IR LED):發射紅外光
  2. 紅外接收管(光電晶體管或光電二極管):接收反射的紅外光
  3. 比較器電路:將接收信號轉換為數字信號
  4. 輸出接口:將檢測結果輸出給控制器
  5. 通過多個傳感器的輸出組合可以判斷軌跡線的位置和方向

工作原理示意圖:

[紅外發射管] → 發射紅外光 → 地面反射 → [紅外接收管] → 信號處理 → 數字輸出

  • 當反射光強(白色表面)→輸出低電平(0)
  • 當反射光弱(黑色表面)→輸出高電平(1)

總之一句話:

沒反射——D0輸出高電平——滅燈

反射——D0輸出低電平——點亮

5.6 底盤設計

底盤是我自己設計的一個模型,然后通過3D打印機的出來的,因為市面上亞克力板的底盤價格真的太貴了,我就自己設計了一個,節約率成本,也實現了自主可控

其中底盤的顏色也可以自行定制,這個需要的小伙伴可以找我來定制哦!!

六、代碼實現

6.1 頂層設計

頂層設計主要是例化項目中使用的各個模塊,以及FPGA對外接口的定義

部分代碼如下:

`timescale 1ns / 1ps
module top_car(
input   clk  ,     //50M系統時鐘
input   rst_n,     //系統復位  低電平有效
input   echo ,     // 超聲波接受端口  
output  trig ,      //超聲波控制端口input		rx_lanya,		//藍牙模塊給入的串行數據
input		rx_yuying,		//語音模塊給入的串行數據input	wire en1,//左循跡
input wire en2,//循跡前進
input wire en3,//右循跡output  [7:0] seg,	//數碼管片選
output  [3:0] sel ,  //數碼管位選output flag1,//左輪
output flag2,//左輪output flag3,//右輪
output flag4 //右輪);wire [24:0]  dis; //超聲波測量的距離	wire  [7:0] data_rx;//rx藍牙模塊接收并保存的并行數據wire			done;wire  [7:0] data_rx1;//rx語音模塊接收并保存的并行數據	wire			done1;//超聲波測距模塊+數碼管顯示	
top top_u(
.clk  	(clk  ),     //50M系統時鐘
.rst_n	(rst_n),     //系統復位  低電平有效
.echo 	(echo ),     // 超聲波接受端口  
.trig 	(trig ),      //超聲波控制端口
.seg		(seg	),		//數碼管片選
.sel 		(sel 	),	  //數碼管位選
.dis 		(dis 	)		//超聲波測量的距離	);		car car_u(
.clk  		(clk  		),
.rst_n		(rst_n		),
.dis 		(dis),

6.2 電機控制模塊

此模塊是通過各自傳感器模塊發的數據,且通過他們的處理模塊輸出的數據,來對小車的電機進行控制,來實現各自功能,以及工作模式的選擇。

`timescale 1ns / 1psmodule car(
input wire clk,
input wire rst_n,
input	wire en1,		//左循跡信號
input wire en2,		//循跡前進信號
input wire en3,			//右循跡信號
input wire [24:0]  dis, //超聲波測量的距離	
input wire [7:0] data_rx,//手機藍牙發串行指令給rx接收模塊,調用串口rx的并行數據作為小車的運動指令
input wire done,//串口接收完畢一字節的結束信號input wire [7:0] data_rx1,//語音模塊發串行指令給rx接收模塊,調用串口rx的并行數據作為小車的運動指令
input wire done1,//串口接收完畢一字節的結束信號output  flag1,//左輪
output  flag2,//左輪output  flag3,//右輪
output  flag4 //右輪
);reg [3:0] flag;assign {flag1, flag2, flag3, flag4} = flag;//循跡模式切換
reg [1:0] mode;
always @ (posedge clk, negedge rst_n) beginif (!rst_n)mode <= 0;else if (data_reg == 8'h10 )	//正常模式mode <= 1;else if (data_reg == 8'h11 )			//避障模式mode <= 2;else if (data_reg == 8'h12 )			//循跡模式mode <= 3;
end

6.3 數碼管顯示模塊

此模塊主要是通過數碼管顯示各自數據信息,如果選擇用OLED顯示的話,此處換為OLED顯示模塊即可

module seven_tube(clk,rst_n,data_in,seg,sel);input clk,rst_n;input [15:0] data_in;output reg [7:0] seg;output reg [3:0] sel;parameter t = 50_000_000/1000/2 - 1;  reg  [3:0] data_temp;reg [31:0] cnt;reg clk_1khz;//*****產生1khz時鐘******//always @(posedge clk,negedge rst_n)beginif(!rst_n)begincnt <= 0;clk_1khz <= 0;endelseif(cnt < t)begincnt <= cnt + 1;clk_1khz <= clk_1khz;endelsebegincnt <= 0;clk_1khz <= ~clk_1khz;endend//*****位選******//always @(posedge clk_1khz,negedge rst_n)beginif(!rst_n)beginsel <= 4'b0111;endelsesel <= {sel[0],sel[3:1]};

別的模塊就不多介紹了,想要了解的可以通過文章開頭部分藍色字體自行下載即可

七、測試部分

將代碼編譯,然后生成sof文件,先通過JTAG進行下載測試,保證功能沒問題之后,然后生成jjc文件,固化到FPGA開發板中。

我這邊就直接給大家演示一段視頻把,這樣測試更加直觀

基于FPGA的智能小車

制作不易,記得三連哦,給我動力,持續更新!!!

下期繼續在這個小車基礎上,添加功能!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Object.defineProperties 詳解

Object.defineProperties 詳解 Object.defineProperties 是 JavaScript 中用于在一個對象上定義或修改多個屬性的方法。它是 Object.defineProperty 的復數版本&#xff0c;允許你一次性定義多個屬性。 基本語法 Object.defineProperties(obj, props)obj&#xff1a;要在其上定…

MyBatis-Plus:深入探索與最佳實踐

MyBatis-Plus作為MyBatis的增強版&#xff0c;已經在Java開發中得到了廣泛應用。它不僅繼承了MyBatis的所有功能&#xff0c;還提供了許多強大的擴展功能&#xff0c;幫助開發者提升開發效率和代碼質量。本文將深入探討MyBatis-Plus的高級特性及其在實際項目中的最佳實踐。一、…

勞斯萊斯數字孿生技術:重構航空發動機運維的綠色革命

在航空工業邁向智能化的浪潮中&#xff0c;勞斯萊斯以數字孿生技術為核心&#xff0c;構建了發動機全生命周期管理的創新范式。這項技術不僅重新定義了航空發動機的維護策略&#xff0c;更通過數據驅動的決策體系&#xff0c;實現了運營效率與生態效益的雙重突破。本文將從技術…

NPM組件 querypilot 等竊取主機敏感信息

【高危】NPM組件 querypilot 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 querypilot 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-2kgq-v17b處置建議強烈建議修復發現時間2025-07-05投毒倉庫np…

創業商業融資計劃書PPT模版

創業商業融資計劃書PPT模版&#xff1a;https://pan.quark.cn/s/25a043e4339e

解決GitHub倉庫推送子文件夾后打不開的問題

從你描述的情況來看&#xff0c;IELTS_AI_Assessment 很可能被識別為了 Git 子模塊&#xff08;submodule&#xff09;&#xff0c;而不是普通文件夾&#xff0c;這會導致在 GitHub 上無法直接打開查看內容。以下是具體原因和解決辦法&#xff1a;為什么文件夾無法打開&#xf…

Web后端開發-請求響應

文章目錄概述請求Postman簡單參數原始方式SpringBootRequestParam注解小結實體參數數組集合參數日期參數Json參數路徑參數總結響應響應-案例概述 請求 Postman 簡單參數 原始方式 // 1. 簡單參數 // 原始方式RequestMapping("/simpleParam")public String …

Javascript基礎內容回顧—變量提升、事件循環和閉包等內容

以下是前端面試中 JavaScript 基礎易錯問題的詳解&#xff0c;結合常見考點和易混淆概念進行解析&#xff1a; ?? 一、變量作用域與提升 var vs let/const ? 變量提升&#xff1a;var 聲明的變量會提升到作用域頂部&#xff08;值為 undefined&#xff09;&#xff0c;而 …

UNIX程序設計基本概念和術語

unix體系結構從嚴格意義上說&#xff0c;可將操作系統定義為一種軟件&#xff0c;它控制計算機硬件資源&#xff0c;提供程序運行環境。我們通常將這種軟件稱為內核&#xff08;kernel&#xff09;&#xff0c;因為它相對較小&#xff0c;而且位于環境的核心。內核的接口被稱為…

【WEB】Polar靶場 16-20題 詳細筆記

目錄 十六.簽到題 十七.簽到 十八.session文件包含 PHP 偽協議&#xff08;PHP Stream Wrappers&#xff09; base64加解密獲取源代碼 Session文件包含 namenameShell 是什么&#xff1f; 十九.Dont touch me 二十.robots robots.txt 十六.簽到題 把didino改成didiy…

數據結構*搜索樹

什么是搜索樹 搜索樹是一種樹形數據結構&#xff0c;用于高效地存儲和檢索數據。其核心特點是每個節點包含一個鍵&#xff08;Key&#xff09;&#xff0c;并遵循特定的排序規則。常見的搜索樹有二叉搜索樹、自平衡二叉樹、多叉搜索樹等。AVL樹、紅黑樹、Splay樹都屬于自平衡二…

語音交互新紀元:Hugging Face LeRobot如何讓機器人真正“懂你”

機器人之言&#xff1a;早在2024年&#xff0c;Hugging Face正式進軍真實世界機器人應用領域&#xff0c;推出了開源機器人項目LeRobot。LeRobot不僅僅是一個模型庫&#xff0c;它是一個完整的機器人學習平臺&#xff0c;融合了模仿學習、強化學習、數據可視化以及仿真環境。其…

搭建個人博客系列--MySql

前期提要&#xff1a;搭建個人博客系列--docker-CSDN博客 目前已經擁有了docker所以只需要將MySql安裝在docker上即可。 一、在docker安裝mysql docker pull mysql 二、查詢docker內的mysql鏡像 三、啟動msql docker run -d -p 33060:3306 -v /home/mysql/conf:/mysql/conf.d…

【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含認證流程設計

Spring Boot OAuth2 JWT Gateway的完整落地方案&#xff0c;包含認證流程設計網關在服務中的使用一、整體架構設計二、核心組件實現1. OAuth2認證服務器&#xff08;auth-service&#xff09;2. JWT自定義增強&#xff08;存儲用戶信息&#xff09;三、Gateway全局攔截&…

第一個小程序

一、前言隨著移動互聯網的發展&#xff0c;用戶對“即用即走”的輕量級應用需求日益增長&#xff0c;而傳統 App 在下載安裝、更新維護等方面存在一定的門檻。小程序應運而生&#xff0c;它是一種無需下載即可使用的應用程序形態。本文將帶你完成人生中第一個微信小程序的開發全…

【辦公類-54-07】20250901 2025學年第一學期班級點名冊模版(雙休國定假涂成灰色、修改標題和頁眉,批量導出PDF)

背景需求: 制作了校歷單后,第二個要制作的就是點名冊(灰色版) 【辦公類-54-03】20240828班級點名冊模版(雙休國定假涂成灰色)2024學年第一學期_姓名周一到周五的點名冊怎么畫-CSDN博客文章瀏覽閱讀2.1k次,點贊24次,收藏4次。【辦公類-54-03】20240828班級點名冊模版(…

iOS App首次啟動請求異常調試:一次冷啟動鏈路抓包與初始化流程修復

在一次 iOS App 大版本更新后&#xff0c;部分用戶反饋首次打開 App 時會出現“無法連接服務器”的提示&#xff0c;需要重啟 App 才能正常使用。而后續使用過程中接口調用都正常。服務器端并未記錄請求到達&#xff0c;日志中只有 sporadic&#xff08;零星&#xff09;斷連記…

【Linux網絡篇】:網絡中的其他重要協議或技術——DNS,ICMP協議,NAT技術等

?感謝您閱讀本篇文章&#xff0c;文章內容是個人學習筆記的整理&#xff0c;如果哪里有誤的話還請您指正噢? ? 個人主頁&#xff1a;余輝zmh–CSDN博客 ? 文章所屬專欄&#xff1a;Linux篇–CSDN博客 文章目錄其他重要協議或技術1.DNS2.ICMP協議3.NAT技術4.代理服務器其他重…

HarmonyOS學習4 --- 創建一個頁面

1、聲明式UI語法Entry Component struct My_page {State isLogin: boolean falsebuild() {Row() {Image(this.isLogin ? $r(app.media.icon_leon) : $r(app.media.icon)).height(60).width(60).onClick(() > {this.isLogin !this.isLogin})Text(this.isLogin ? $r(app.s…

【Java EE】Spring MVC 的使用

1. 路由映射&#xff1a;RequestMapping&#xff1a;當用戶訪問某個 URL 時&#xff0c;該注解會根據 URL 的路徑映射到具體的程序中對應的類或方法&#xff08;路由映射&#xff09;。修飾方法時&#xff0c;路徑為類路徑 方法路徑。默認情況下同時支持 GET 和 POST&#xff…