平衡車(一)——mpu6050與匿名上位機的通信

弄了一天多的上位機,之前沒有接觸過匿名的上位機,但是聽說這個用來調mpu6050是極好的選擇,於是,找了找電腦,還真發現有v2.6版本的。它長這個樣子:在這裏插入圖片描述設置好波特率等後,發現怎麼弄也弄不了,實在無奈,問朋友要了個4.50版本的,它長這個樣子: 看起來好看了不少。
先到程序設置那裏設置好波特率。我的波特率是115200。最重要的就是這個頁面的那個通訊協議了點擊它,會出來圖2的文檔。在這裏插入圖片描述在這裏插入圖片描述到這裏,算是進入真正的主題了。
首先,我們要知道這個協議是什麼樣的,匿名的博客上就有詳細介紹,這個不多多囉嗦,這是鏈接:https://blog.csdn.net/wangjt1988
下面是原子的源代碼:

void usart1_niming_report(u8 fun,u8*data,u8 len)
{
	u8 send_buf[32];
	u8 i;
	if(len>28)return;	//最多28字節數據 
	send_buf[len+3]=0;	//校驗數置零
	send_buf[0]=0X88;	//幀頭
	send_buf[1]=fun;	//功能字
	send_buf[2]=len;	//數據長度
	for(i=0;i<len;i++)send_buf[3+i]=data[i];			//複製數據
	for(i=0;i<len+3;i++)send_buf[len+3]+=send_buf[i];	//計算校驗和	
	for(i=0;i<len+4;i++)usart1_send_char(send_buf[i]);	//發送數據到串口1 
}
//發送加速度傳感器數據和陀螺儀數據
//aacx,aacy,aacz:x,y,z三個方向上面的加速度值
//gyrox,gyroy,gyroz:x,y,z三個方向上面的陀螺儀值
void mpu6050_send_data(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz)
{
	u8 tbuf[12]; 
	tbuf[0]=(aacx>>8)&0XFF;
	tbuf[1]=aacx&0XFF;
	tbuf[2]=(aacy>>8)&0XFF;
	tbuf[3]=aacy&0XFF;
	tbuf[4]=(aacz>>8)&0XFF;
	tbuf[5]=aacz&0XFF; 
	tbuf[6]=(gyrox>>8)&0XFF;
	tbuf[7]=gyrox&0XFF;
	tbuf[8]=(gyroy>>8)&0XFF;
	tbuf[9]=gyroy&0XFF;
	tbuf[10]=(gyroz>>8)&0XFF;
	tbuf[11]=gyroz&0XFF;
	usart1_niming_report(0XA1,tbuf,12);//自定義幀,0XA1
}	
//通過串口1上報結算後的姿態數據給電腦
//aacx,aacy,aacz:x,y,z三個方向上面的加速度值
//gyrox,gyroy,gyroz:x,y,z三個方向上面的陀螺儀值
//roll:橫滾角.單位0.01度。 -18000 -> 18000 對應 -180.00  ->  180.00度
//pitch:俯仰角.單位 0.01度。-9000 - 9000 對應 -90.00 -> 90.00 度
//yaw:航向角.單位爲0.1度 0 -> 3600  對應 0 -> 360.0度
void usart1_report_imu(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz,short roll,short pitch,short yaw)
{
	u8 tbuf[28]; 
	u8 i;
	for(i=0;i<28;i++)tbuf[i]=0;//清0
	tbuf[0]=(aacx>>8)&0XFF;
	tbuf[1]=aacx&0XFF;
	tbuf[2]=(aacy>>8)&0XFF;
	tbuf[3]=aacy&0XFF;
	tbuf[4]=(aacz>>8)&0XFF;
	tbuf[5]=aacz&0XFF; 
	tbuf[6]=(gyrox>>8)&0XFF;
	tbuf[7]=gyrox&0XFF;
	tbuf[8]=(gyroy>>8)&0XFF;
	tbuf[9]=gyroy&0XFF;
	tbuf[10]=(gyroz>>8)&0XFF;
	tbuf[11]=gyroz&0XFF;	
	tbuf[18]=(roll>>8)&0XFF;
	tbuf[19]=roll&0XFF;
	tbuf[20]=(pitch>>8)&0XFF;
	tbuf[21]=pitch&0XFF;
	tbuf[22]=(yaw>>8)&0XFF;
	tbuf[23]=yaw&0XFF;
	usart1_niming_report(0XAF,tbuf,28);//飛控顯示幀,0XAF
}  

這是按照2.6版本寫的協議,肯定不符合4.50版本的,我們需要改動的便是按照下面的一些東西,就可以使用更加友好的4.5版本的上位機。
在這裏插入圖片描述在這裏插入圖片描述知道了是怎麼樣的東西,我們就來改動一下原子的源代碼
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述改完之後,我們便可以使用上位機來調試我們是mpu6050了,如圖:
移動6050可以得到這樣的:
在這裏插入圖片描述
最後使用的4.5版本的鏈接在這裏:https://download.csdn.net/download/weixin_43872149/12161901

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章