STM32智能交通監測系統教程

目錄

  1. 引言
  2. 環境準備
  3. 智能交通監測系統基礎
  4. 代碼實現:實現智能交通監測系統 4.1 數據采集模塊 4.2 數據處理與控制模塊 4.3 通信與網絡系統實現 4.4 用戶界面與數據可視化
  5. 應用場景:交通監測與管理
  6. 問題解決方案與優化
  7. 收尾與總結

1. 引言

智能交通監測系統通過STM32嵌入式系統結合各種傳感器、執行器和通信模塊,實現對交通數據的實時監控、自動處理和數據傳輸。本文將詳細介紹如何在STM32系統中實現一個智能交通監測系統,包括環境準備、系統架構、代碼實現、應用場景及問題解決方案和優化方法。

2. 環境準備

硬件準備

  1. 開發板:STM32F4系列或STM32H7系列開發板
  2. 調試器:ST-LINK V2或板載調試器
  3. 傳感器:如超聲波傳感器、紅外傳感器、攝像頭、速度傳感器等
  4. 執行器:如交通信號燈、報警器
  5. 通信模塊:如Wi-Fi模塊、LoRa模塊
  6. 顯示屏:如OLED顯示屏
  7. 按鍵或旋鈕:用于用戶輸入和設置
  8. 電源:電源適配器

軟件準備

  1. 集成開發環境(IDE):STM32CubeIDE或Keil MDK
  2. 調試工具:STM32 ST-LINK Utility或GDB
  3. 庫和中間件:STM32 HAL庫和FreeRTOS

安裝步驟

  1. 下載并安裝STM32CubeMX
  2. 下載并安裝STM32CubeIDE
  3. 配置STM32CubeMX項目并生成STM32CubeIDE項目
  4. 安裝必要的庫和驅動程序

3. 智能交通監測系統基礎

控制系統架構

智能交通監測系統由以下部分組成:

  1. 數據采集模塊:用于采集交通中的車輛數量、速度、車距、車牌等數據
  2. 數據處理與控制模塊:對采集的數據進行處理和分析,生成控制信號
  3. 通信與網絡系統:實現交通數據與服務器或其他設備的通信
  4. 顯示系統:用于顯示系統狀態和交通數據
  5. 用戶輸入系統:通過按鍵或旋鈕進行設置和調整

功能描述

通過各種傳感器采集交通數據,并實時顯示在OLED顯示屏上。系統通過數據處理和網絡通信,實現對交通數據的監測和管理。用戶可以通過按鍵或旋鈕進行設置,并通過顯示屏查看當前狀態。

4. 代碼實現:實現智能交通監測系統

4.1 數據采集模塊

配置超聲波傳感器

使用STM32CubeMX配置GPIO接口:

  1. 打開STM32CubeMX,選擇您的STM32開發板型號。
  2. 在圖形化界面中,找到需要配置的GPIO引腳,設置為輸入和輸出模式。
  3. 生成代碼并導入到STM32CubeIDE中。

代碼實現:

#include "stm32f4xx_hal.h"#define TRIG_PIN GPIO_PIN_0
#define ECHO_PIN GPIO_PIN_1
#define GPIO_PORT GPIOAvoid GPIO_Init(void) {__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = TRIG_PIN;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);GPIO_InitStruct.Pin = ECHO_PIN;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}uint32_t Read_Distance(void) {HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_RESET);HAL_Delay(2);HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_SET);HAL_Delay(10);HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_RESET);uint32_t startTime = HAL_GetTick();while (HAL_GPIO_ReadPin(GPIO_PORT, ECHO_PIN) == GPIO_PIN_RESET) {if (HAL_GetTick() - startTime > 100) {return 0; // Timeout}}startTime = HAL_GetTick();while (HAL_GPIO_ReadPin(GPIO_PORT, ECHO_PIN) == GPIO_PIN_SET) {if (HAL_GetTick() - startTime > 100) {return 0; // Timeout}}uint32_t travelTime = HAL_GetTick() - startTime;uint32_t distance = travelTime * 0.034 / 2; // Calculate distance in cmreturn distance;
}int main(void) {HAL_Init();SystemClock_Config();GPIO_Init();uint32_t distance;while (1) {distance = Read_Distance();HAL_Delay(1000);}
}
配置速度傳感器

使用STM32CubeMX配置TIM接口:

  1. 打打開STM32CubeMX,選擇您的STM32開發板型號。
  2. 在圖形化界面中,找到需要配置的TIM引腳,設置為輸入模式。
  3. 生成代碼并導入到STM32CubeIDE中。

代碼實現:

#include "stm32f4xx_hal.h"TIM_HandleTypeDef htim2;void TIM2_Init(void) {__HAL_RCC_TIM2_CLK_ENABLE();TIM_ClockConfigTypeDef sClockSourceConfig = {0};TIM_MasterConfigTypeDef sMasterConfig = {0};htim2.Instance = TIM2;htim2.Init.Prescaler = 0;htim2.Init.CounterMode = TIM_COUNTERMODE_UP;htim2.Init.Period = 0xFFFFFFFF;htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;HAL_TIM_Base_Init(&htim2);sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);HAL_TIM_IC_Init(&htim2);sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
}uint32_t Read_Speed(void) {HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);HAL_Delay(100);uint32_t count = __HAL_TIM_GET_COUNTER(&htim2);HAL_TIM_IC_Stop(&htim2, TIM_CHANNEL_1);return count;
}int main(void) {HAL_Init();SystemClock_Config();TIM2_Init();uint32_t speed;while (1) {speed = Read_Speed();HAL_Delay(1000);}
}
配置紅外傳感器

使用STM32CubeMX配置GPIO接口:

  1. 打打開STM32CubeMX,選擇您的STM32開發板型號。
  2. 在圖形化界面中,找到需要配置的GPIO引腳,設置為輸入模式。
  3. 生成代碼并導入到STM32CubeIDE中。

代碼實現:

#include "stm32f4xx_hal.h"#define IR_PIN GPIO_PIN_0
#define GPIO_PORT GPIOBvoid GPIOB_Init(void) {__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = IR_PIN;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}uint8_t Read_IR_Sensor(void) {return HAL_GPIO_ReadPin(GPIO_PORT, IR_PIN);
}int main(void) {HAL_Init();SystemClock_Config();GPIOB_Init();uint8_t ir_status;while (1) {ir_status = Read_IR_Sensor();HAL_Delay(1000);}
}

4.2 數據處理與控制模塊

數據處理模塊將傳感器數據轉換為可用于控制系統的數據,并進行必要的計算和分析。

交通控制算法

實現一個簡單的交通控制算法,根據傳感器數據控制交通信號燈和報警器:

#define DISTANCE_THRESHOLD 20
#define SPEED_THRESHOLD 100
#define CAR_DETECTED 1void Control_Traffic(uint32_t distance, uint32_t speed, uint8_t ir_status) {if (distance < DISTANCE_THRESHOLD || speed > SPEED_THRESHOLD || ir_status == CAR_DETECTED) {// 打開紅燈和報警器HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // 紅燈HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // 報警器} else {// 打開綠燈,關閉報警器HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // 紅燈HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // 報警器HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET); // 綠燈}
}void GPIOB_Init(void) {__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}int main(void) {HAL_Init();SystemClock_Config();GPIOB_Init();GPIO_Init();TIM2_Init();uint32_t distance, speed;uint8_t ir_status;while (1) {distance = Read_Distance();speed = Read_Speed();ir_status = Read_IR_Sensor();Control_Traffic(distance, speed, ir_status);HAL_Delay(1000);}
}

4.3 通信與網絡系統實現

配置Wi-Fi模塊

使用STM32CubeMX配置UART接口:

  1. 打打開STM32CubeMX,選擇您的STM32開發板型號。
  2. 在圖形化界面中,找到需要配置的UART引腳,設置為UART模式。
  3. 生成代碼并導入到STM32CubeIDE中。

代碼實現:

#include "stm32f4xx_hal.h"
#include "usart.h"
#include "wifi_module.h"UART_HandleTypeDef huart1;void UART1_Init(void) {huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;HAL_UART_Init(&huart1);
}void Send_Traffic_Data_To_Server(uint32_t distance, uint32_t speed, uint8_t ir_status) {char buffer[128];sprintf(buffer, "Distance: %lu, Speed: %lu, IR: %u", distance, speed, ir_status);HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
}int main(void) {HAL_Init();SystemClock_Config();UART1_Init();GPIO_Init();TIM2_Init();uint32_t distance, speed;uint8_t ir_status;while (1) {distance = Read_Distance();speed = Read_Speed();ir_status = Read_IR_Sensor();Send_Traffic_Data_To_Server(distance, speed, ir_status);HAL_Delay(1000);}
}

4.4 用戶界面與數據可視化

配置OLED顯示屏

使用STM32CubeMX配置I2C接口:

  1. 打打開STM32CubeMX,選擇您的STM32開發板型號。
  2. 在圖形化界面中,找到需要配置的I2C引腳,設置為I2C模式。
  3. 生成代碼并導入到STM32CubeIDE中。

代碼實現:

首先,初始化OLED顯示屏:

#include "stm32f4xx_hal.h"
#include "i2c.h"
#include "oled.h"void Display_Init(void) {OLED_Init();
}

然后實現數據展示函數,將交通數據展示在OLED屏幕上:

void Display_Data(uint32_t distance, uint32_t speed, uint8_t ir_status) {char buffer[32];sprintf(buffer, "Distance: %lu cm", distance);OLED_ShowString(0, 0, buffer);sprintf(buffer, "Speed: %lu", speed);OLED_ShowString(0, 1, buffer);sprintf(buffer, "IR: %u", ir_status);OLED_ShowString(0, 2, buffer);
}int main(void) {HAL_Init();SystemClock_Config();I2C1_Init();Display_Init();GPIOB_Init();GPIO_Init();TIM2_Init();uint32_t distance, speed;uint8_t ir_status;while (1) {distance = Read_Distance();speed = Read_Speed();ir_status = Read_IR_Sensor();// 顯示交通數據Display_Data(distance, speed, ir_status);HAL_Delay(1000);}
}

5. 應用場景:交通監測與管理

智能交通信號控制

智能交通監測系統可以用于城市交通信號控制,通過實時采集交通數據,實現自動控制,提高交通管理效率和安全性。

道路交通監控

在道路交通監控中,智能交通監測系統可以實現對車輛流量、速度和車距的實時監控,確保道路交通的暢通和安全。

智能停車管理

智能交通監測系統可以用于智能停車管理,通過數據采集和分析,為停車場的管理和優化提供科學依據。

智能交通研究

智能交通監測系統可以用于智能交通研究,通過數據采集和分析,為交通管理和優化提供科學依據。

?幫大家整理了單片機的資料

包括stm32的項目合集【源碼+開發文檔】

點擊下方藍字即可領取,感謝支持!?

點擊領取更多嵌入式詳細資料

問題討論,stm32的資料領取可以私信!

6. 問題解決方案與優化

常見問題及解決方案

傳感器數據不準確

確保傳感器與STM32的連接穩定,定期校準傳感器以獲取準確數據。

解決方案:檢查傳感器與STM32之間的連接是否牢固,必要時重新焊接或更換連接線。同時,定期對傳感器進行校準,確保數據準確。

交通數據處理不穩定

優化處理算法和硬件配置,減少數據處理的不穩定性,提高系統反應速度。

解決方案:優化處理算法,調整參數,減少振蕩和超調。使用高精度傳感器,提高數據采集的精度和穩定性。選擇更高效的執行器,提高數據處理的響應速度。

數據傳輸失敗

確保Wi-Fi模塊與STM32的連接穩定,優化通信協議,提高數據傳輸的可靠性。

解決方案:檢查Wi-Fi模塊與STM32之間的連接是否牢固,必要時重新焊接或更換連接線。優化通信協議,減少數據傳輸的延遲和丟包率。選擇更穩定的通信模塊,提升數據傳輸的可靠性。

顯示屏顯示異常

檢查I2C通信線路,確保顯示屏與MCU之間的通信正常,避免由于線路問題導致的顯示異常。

解決方案:檢查I2C引腳的連接是否正確,確保電源供電穩定。使用示波器檢測I2C總線信號,確認通信是否正常。如有必要,更換顯示屏或MCU。

優化建議

數據集成與分析

集成更多類型的傳感器數據,使用數據分析技術進行交通狀態的預測和優化。

建議:增加更多監測傳感器,如雷達傳感器、攝像頭等。使用云端平臺進行數據分析和存儲,提供更全面的交通監測和管理服務。

用戶交互優化

改進用戶界面設計,提供更直觀的數據展示和更簡潔的操作界面,增強用戶體驗。

建議:使用高分辨率彩色顯示屏,提供更豐富的視覺體驗。設計簡潔易懂的用戶界面,讓用戶更容易操作。提供圖形化的數據展示,如實時交通圖表、歷史記錄等。

智能化控制提升

增加智能決策支持系統,根據歷史數據和實時數據自動調整交通管理策略,實現更高效的交通環境控制和管理。

建議:使用數據分析技術分析交通數據,提供個性化的交通管理建議。結合歷史數據,預測可能的問題和需求,提前優化控制策略。

7. 收尾與總結

本教程詳細介紹了如何在STM32嵌入式系統中實現智能交通監測系統,從硬件選擇、軟件實現到系統配置和應用場景都進行了全面的闡述。通過合理的技術選擇和系統設計,可以構建一個高效且功能強大的智能交通監測系統。

?

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

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

相關文章

Linux--線程池(包含日志的解釋)

線程系列&#xff1a; Linux–線程的認識(一) Linux–線程的分離、線程庫的地址關系的理解、線程的簡單封裝&#xff08;二&#xff09; 線程的互斥&#xff1a;臨界資源只能在同一時間被一個線程使用 生產消費模型 信號量 線程池 線程池&#xff08;Thread Pool&#xff09;是…

Qt 統計圖編程

學習目標&#xff1a;Qt 折線圖&#xff0c;柱形圖和扇形統計圖編程 學習基礎 Qt QChart 曲線圖表操作-CSDN博客 學習內容 Qt中繪制三種常見的圖表非常方便, 主要步驟如下: 1. 折線圖: - 使用QLineSeries定義折線數據,添加多個坐標點 - 使用QValueAxis創建X軸和Y軸 - 將…

dockerfile配置和yml配置

dockerfile docker build 使用dockerfile自動構建鏡像文件 FROM python:3.9WORKDIR /appCOPY requirements.txt. RUN pip install -r requirements.txtCOPY..CMD ["python", "main.py"]docker build dockerifle自動構建拉取python3.9鏡像&#xff0c;并執…

拷貝文件的一些操作

利用fputc 、fgetc實現文件的拷貝 int main(int argc, const char *argv[]) {FILE* rfpfopen(argv[1],"r");FILE* wfpfopen(argv[2],"w");if(rfpNULL || wfpNULL){perror("fopen");return 1;}while(1){char resfgetc(rfp);if(feof(rfp)1){break;…

PointCloudLib LocalMaximum_DeleteMaxPoint C++版本

測試效果 簡介 在點云庫&#xff08;Point Cloud Library&#xff0c;PCL&#xff09;中&#xff0c;處理點云數據時&#xff0c;經常需要去除局部最大點&#xff08;Local Maximum&#xff09;&#xff0c;這通常用于去除噪聲、提取特定形狀的特征或者簡化點云數據。局部最大…

[米聯客-安路飛龍DR1-FPSOC] FPGA基礎篇連載-14 SPI MASET發送程序設計

軟件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系統&#xff1a;WIN10 64bit 硬件平臺&#xff1a;適用安路(Anlogic)FPGA 實驗平臺&#xff1a;米聯客-MLK-L1-CZ06-DR1M90G開發板 板卡獲取平臺&#xff1a;https://milianke.tmall.com/ 登錄“米聯客”FPGA社區 ht…

數據庫管理-第220期 Oracle的高可用-03(20240715)

數據庫管理220期 2024-07-15 數據庫管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09;1 AC/TAC2 配置Service3 用戶權限4 端口開放總結 數據庫管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09; 作者&#xff1a;胖頭魚的魚缸&#xff08;尹海文…

Modbus - 筆記

1 Modbus Poll/Slave 模擬器使用教程 Modbus Poll/Slave 模擬器使用教程_modbus poll 使用教程-CSDN博客 https://item.jd.com/67488830087.html

Node.js 爬蟲開發實戰:構建一個高效、優雅的網絡數據抓取器

在大數據時代&#xff0c;從網頁上自動抓取數據的需求日益增長。Node.js&#xff0c;以其異步非阻塞I/O模型&#xff0c;成為了構建高性能網絡爬蟲的理想選擇。本文將引導你如何使用Node.js&#xff0c;結合axios和cheerio兩個流行庫&#xff0c;創建一個能夠從目標網站抓取信息…

51單片機10(蜂鳴器介紹)

一、蜂鳴器介紹&#xff1a; 1、蜂鳴器是一種一體化結構的電子訊響器&#xff0c;采用直流電壓供電&#xff0c;廣泛應用于電子產品中作為發聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器。 &#xff08;1&#xff09;壓電式蜂鳴器&#xff0c;它主要由多諧的一個增脹器…

【學習筆記】無人機(UAV)在3GPP系統中的增強支持(八)-通過無人機進行無線接入

引言 本文是3GPP TR 22.829 V17.1.0技術報告&#xff0c;專注于無人機&#xff08;UAV&#xff09;在3GPP系統中的增強支持。文章提出了多個無人機應用場景&#xff0c;分析了相應的能力要求&#xff0c;并建議了新的服務級別要求和關鍵性能指標&#xff08;KPIs&#xff09;。…

電腦出現錯誤——找不到msvcp140.dll無法繼續執行代碼,有效解決錯誤dll文件

msvcp140.dll是一個屬于 Microsoft Visual C Redistributable for Visual Studio 2015 的 DLL 文件。這個文件是許多Windows應用程序&#xff08;尤其是使用 C 開發的程序&#xff09;所必需的&#xff0c;因為它包含了標準 C 庫的函數實現&#xff0c;用于處理數學運算、數據轉…

【React Hooks原理 - useRef】

概述 在Function Component項目中當我們需要操作dom的時候&#xff0c;第一時間想到的就是使用useRef這個Hook來綁定dom。但是這個僅僅是使用這個Hook而已&#xff0c;為了更好的學習React Hooks內部實現原理&#xff0c;知其所以然。所以本文根據源碼從useRef的基礎使用場景一…

使用shell腳本打印99乘法表

一、簡介 前一段時間在舊電腦上安裝 antiX 23.1 操作系統&#xff0c;遇到一些問題需要使用shell腳本解決問題&#xff0c;所以專門學習了幾天&#xff0c;打印99乘法表是其中的一個練習作業。 二、學習Linux可行的幾種方式 虛擬機安裝Linux進行學習直接雙系統安裝在實體電腦…

Ubuntu新系統的使用

1.安裝顯卡驅動 直接到軟件與更新里面&#xff0c;就是一個A字圖標的那個軟件打開&#xff0c;到附加驅動里選擇。要選擇“server driver”的&#xff0c;選擇后確認即可。 然后輸入&#xff1a;nvidia-sim查看 別的方法太復雜&#xff0c;這個方法我親測了兩臺電腦&#xff…

kubebuilder入門

1. 安裝kubebuilder brew install kubebuilder 2. 需求描述 開發一個zk operator。 cr定義為ZooKeeperCluster 3. 開發過程 3.1 創建一個空的文件夾zk-operator mkdir zk-operator 3.2 進入該文件夾 cd zk-operator 3.3 執行初始化 kubebuilder init --domain my.doma…

MWA(Modern Web App)初學那些事-2-Basic HTML CSS

初學MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS 目錄 初學MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS前言一、本節學習目標二、HTML基礎內容2.1關鍵元素2.4 Scripts 三、CSS 基礎內容3.1 級聯樣式表-用于設置網頁樣式和布局3.2 CSS規則語…

springcloud使用微服務的搭建

微服務的搭建 1.配置對應信息 Springboot 、springcloud、springcloud alibaba對應關系 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2.pom.xml的配置 2.1 總項目pom.xml引入依賴 <parent><groupId>org.sprin…

阿里通義音頻生成大模型 FunAudioLLM 開源

簡介 近年來&#xff0c;人工智能&#xff08;AI&#xff09;技術的進步極大地改變了人類與機器的互動方式&#xff0c;特別是在語音處理領域。阿里巴巴通義實驗室最近開源了一個名為FunAudioLLM的語音大模型項目&#xff0c;旨在促進人類與大型語言模型&#xff08;LLMs&…

vue3在 setup 中訪問路由和當前路由

報錯信息&#xff1a; Cannot read properties of undefined (reading $router) 原因&#xff1a; 因為我們在 setup 里面沒有訪問 this&#xff0c;所以我們不能直接訪問 this.$router 或 this.$route。 解決方案&#xff1a; 作為替代&#xff0c;我們使用 useRouter 和…