功能介紹放開頭, 使用便捷無需愁
這是全網最詳細、性價比最高的STM32實戰項目入門教程,通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節代碼手把手教會你如何開發和調試。讓你更快掌握嵌入式系統開發。
**V3.3.0-STM32智能小車 **
**視頻: **[https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click]
**V3:HAL庫開發、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制、電磁循跡、RTOS等功能。 **
第14章-手機遙控功能
我們要實現藍牙遙控功能,藍牙遙控功能要使用:1.單片機的串口、2.藍牙通信模塊
所以我們先調試好:單片機的串口->藍牙模塊->接到一起聯調
14.1-電腦控制小車
完成功能:電腦連接單片機串口三 控制小車前進后退
先看原理圖
通過原理圖可以看出這是使用的串口3 在使用的時候注意把跳線帽,跳線到藍牙通信位置
打開初始化軟件
生成代碼
在main 定義全局變量
uint8_t g_ucUsart3ReceiveData; //保存串口三接收的數據
開啟串口三中斷接收
HAL_UART_Receive_IT(&huart3,&g_ucUsart3ReceiveData,1); //串口三接收數據
在****usart.c 重新實現串口中斷回調函數**
**
然后我們可以在中斷回調函數里面中編寫遙控命令控制邏輯了
//串口接收回調函數
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if( huart == &huart3)//判斷中斷源
{
if(g_ucUsart3ReceiveData == 'A') motorPidSetSpeed(1,1);//前運動
if(g_ucUsart3ReceiveData == 'B') motorPidSetSpeed(-1,-1);//后運動
if(g_ucUsart3ReceiveData == 'C') motorPidSetSpeed(0,0);//停止
if(g_ucUsart3ReceiveData == 'D') motorPidSetSpeed(1,2);//右邊運動
if(g_ucUsart3ReceiveData == 'E') motorPidSetSpeed(2,1);//左邊運動
if(g_ucUsart3ReceiveData == 'F') motorPidSpeedUp();//加速
if(g_ucUsart3ReceiveData == 'G') motorPidSpeedCut();//減速
HAL_UART_Receive_IT( &huart3, &g_ucUsart3ReceiveData, 1);//繼續進行中斷接收
}
}
?
在usart.c中聲明外部變量
extern uint8_t g_ucUsart3ReceiveData; //保存串口三接收的數據
然后我們更改一下 主函數內容,把PID紅外循跡代碼注釋掉,然后我們增加串口三的輸出,以便我們后面觀察數據。
串口不定長輸出
我們把轉速等信息都可以顯示在OLED上,那么如何通過串口輸出那?
sprintf((char *)Usart3String,"V1:%.2fV2:%.2frn",Motor1Speed,Motor2Speed);//顯示兩個電機轉速 單位:轉/秒
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式發送通過串口三輸出字符 strlen:計算字符串大小
sprintf((char *)Usart3String,"Mileage%.2frn",Mileage);//計算小車里程 單位cm
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式發送通過串口三輸出字符 strlen:計算字符串大小
sprintf((char *)Usart3String,"U:%.2fVrn",adcGetBatteryVoltage());//顯示電池電壓
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式發送通過串口三輸出字符 strlen:計算字符串大小
HAL_Delay(5);
把之前PID初始化時候速度PID目標值改成0
然后我們測試
硬件連接
我們現在使用USB-TTL連接串口三,單片機串口三與電腦通信(底板不需要插入藍牙 )**
**
然后打開軟件
發送指令小車就會對應運動
在電腦串口軟件查看輸出信息、發送 指令控制小車運動
14.2-手機藍牙控制小車
功能:藍牙遙控小車前進、后退、停止、左右轉、加速、減速、手機顯示數據
藍牙模塊和電腦通信
藍牙模塊-硬件介紹
**使用:HC-05 主從機一體藍牙串口透傳模塊 **
注意: 供電3.6V-6V(最好5V)
引腳順序 VCC GND TXD RXD
先調試藍牙模塊-設置波特率
如圖先把藍牙模塊通過USB-TTL模塊相連接,然后
如果反復測試不能進入AT模式,可能是新版藍牙模塊,
- 先連接好藍牙模塊的幾根線,然后按住藍牙模塊的按鍵
- 然后連接電腦,然后幾秒后藍牙小燈慢閃,說明進入AT模式
- 然后串口助手通過38400發送設置指令:AT+UART=115200,0,0
- 然后收到OK數據,說明設置成功。
這個是設置波特率截圖
- 然后重新拔插藍牙模塊(不用按按鍵)
- 在手機系統藍牙配對HC-50 密碼1234
- 串口助手設置波特率115200,然后打開手機APP發送任意內容測試
這個是后面通信測試截圖
- 設置按鍵-按照代碼設置按下發送的數據
9.
藍牙模塊連接單片機
把藍牙插入到底板、跳線帽選擇藍牙通信
按下不同按鈕小車會對應控制
審核編輯 黃宇
-
STM32
+關注
關注
2270文章
10895瀏覽量
355739 -
串口通訊
+關注
關注
1文章
258瀏覽量
24914 -
遙控小車
+關注
關注
2文章
30瀏覽量
18422 -
藍牙串口
+關注
關注
1文章
11瀏覽量
7315
發布評論請先 登錄
相關推薦
評論