加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

第14章-藍(lán)牙遙控小車 手把手做藍(lán)牙APP遙控小車 藍(lán)牙串口通訊講解

06/21 10:06
2249
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
    • 第14章-手機(jī)遙控功能
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

本文講解手機(jī)藍(lán)牙如何遙控小車,如何編寫串口通信指令

第14章-手機(jī)遙控功能

我們要實(shí)現(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)后退

先看原理圖

通過(guò)原理圖可以看出這是使用的串口3 在使用的時(shí)候注意把跳線帽,跳線到藍(lán)牙通信位置
在這里插入圖片描述

打開初始化軟件

在這里插入圖片描述
在這里插入圖片描述

生成代碼

在main 定義全局變量

uint8_t g_ucUsart3ReceiveData;  //保存串口三接收的數(shù)據(jù)

開啟串口三中斷接收
在這里插入圖片描述

  HAL_UART_Receive_IT(&huart3,&g_ucUsart3ReceiveData,1);  //串口三接收數(shù)據(jù)

usart.c 重新實(shí)現(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)動(dòng)
		if(g_ucUsart3ReceiveData == 'B') motorPidSetSpeed(-1,-1);//后運(yùn)動(dòng)
		if(g_ucUsart3ReceiveData == 'C') motorPidSetSpeed(0,0);//停止
		if(g_ucUsart3ReceiveData == 'D') motorPidSetSpeed(1,2);//右邊運(yùn)動(dòng)	
		if(g_ucUsart3ReceiveData == 'E') motorPidSetSpeed(2,1);//左邊運(yùn)動(dòng)
		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紅外循跡代碼注釋掉,然后我們?cè)黾哟谌妮敵?,以便我們后面觀察數(shù)據(jù)。
串口不定長(zhǎng)輸出
我們把轉(zhuǎn)速等信息都可以顯示在OLED上,那么如何通過(guò)串口輸出那?

在這里插入圖片描述

	sprintf((char *)Usart3String,"V1:%.2fV2:%.2frn",Motor1Speed,Motor2Speed);//顯示兩個(gè)電機(jī)轉(zhuǎn)速 單位:轉(zhuǎn)/秒
	HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const  char  *)Usart3String),50);//阻塞式發(fā)送通過(guò)串口三輸出字符 strlen:計(jì)算字符串大小
	
	sprintf((char *)Usart3String,"Mileage%.2frn",Mileage);//計(jì)算小車?yán)锍?單位cm
	HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const  char  *)Usart3String),50);//阻塞式發(fā)送通過(guò)串口三輸出字符 strlen:計(jì)算字符串大小
	
	sprintf((char *)Usart3String,"U:%.2fVrn",adcGetBatteryVoltage());//顯示電池電壓
	HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const  char  *)Usart3String),50);//阻塞式發(fā)送通過(guò)串口三輸出字符 strlen:計(jì)算字符串大小	
	HAL_Delay(5);

把之前PID初始化時(shí)候速度PID目標(biāo)值改成0
在這里插入圖片描述
然后我們測(cè)試

硬件連接

我們現(xiàn)在使用USB-TTL連接串口三,單片機(jī)串口三與電腦通信(底板不需要插入藍(lán)牙)
在這里插入圖片描述
然后打開軟件

發(fā)送指令小車就會(huì)對(duì)應(yīng)運(yùn)動(dòng)

在電腦串口軟件查看輸出信息、發(fā)送 指令控制小車運(yùn)動(dòng)
在這里插入圖片描述

14.2-手機(jī)藍(lán)牙控制小車

功能:藍(lán)牙遙控小車前進(jìn)、后退、停止、左右轉(zhuǎn)、加速、減速、手機(jī)顯示數(shù)據(jù)

藍(lán)牙模塊和電腦通信

藍(lán)牙模塊-硬件介紹

使用:HC-05 主從機(jī)一體藍(lán)牙串口透?jìng)髂K

注意: 供電3.6V-6V(最好5V)

引腳順序 VCC GND TXD RXD
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
先調(diào)試藍(lán)牙模塊-設(shè)置波特率

如圖先把藍(lán)牙模塊通過(guò)USB-TTL模塊相連接,然后
在這里插入圖片描述
如果反復(fù)測(cè)試不能進(jìn)入AT模式,可能是新版藍(lán)牙模塊,
在這里插入圖片描述

  1. 先連接好藍(lán)牙模塊的幾根線,然后按住藍(lán)牙模塊的按鍵
  2. 然后連接電腦,然后幾秒后藍(lán)牙小燈慢閃,說(shuō)明進(jìn)入AT模式
  3. 然后串口助手通過(guò)38400發(fā)送設(shè)置指令:AT+UART=115200,0,0
  4. 然后收到OK數(shù)據(jù),說(shuō)明設(shè)置成功。

這個(gè)是設(shè)置波特率截圖
在這里插入圖片描述
5. 然后重新拔插藍(lán)牙模塊(不用按按鍵)

  1. 在手機(jī)系統(tǒng)藍(lán)牙配對(duì)HC-50 密碼1234
  2. 串口助手設(shè)置波特率115200,然后打開手機(jī)APP發(fā)送任意內(nèi)容測(cè)試

這個(gè)是后面通信測(cè)試截圖
在這里插入圖片描述
8. 設(shè)置按鍵-按照代碼設(shè)置按下發(fā)送的數(shù)據(jù)
9.在這里插入圖片描述
在這里插入圖片描述

藍(lán)牙模塊連接單片機(jī)

把藍(lán)牙插入到底板、跳線帽選擇藍(lán)牙通信
在這里插入圖片描述
按下不同按鈕小車會(huì)對(duì)應(yīng)控制

聯(lián)系:Q,1930299709

  • 聯(lián)系方式.txt

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
74HC595BQ,115 1 NXP Semiconductors 74HC(T)595 - 8-bit serial-in, serial or parallel-out shift register with output latches; 3-state QFN 16-Pin
$0.41 查看
CMWX1ZZABZ-078 1 Murata Manufacturing Co Ltd LORA MODULE

ECAD模型

下載ECAD模型
$16.04 查看
24LC256-I/ST 1 Microchip Technology Inc 32K X 8 I2C/2-WIRE SERIAL EEPROM, PDSO8, 4.40 MM, PLASTIC, TSSOP-8

ECAD模型

下載ECAD模型
$1.05 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜