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

最簡單DIY的51藍(lán)牙遙控小車設(shè)計方案

基于STC89C52的智能小車——藍(lán)牙遙控篇

STM32F103RCT6 實驗代碼之舵機(jī)+超聲波避障小車(三)藍(lán)牙遙控

評論