日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【开源STM32自平衡小车】 教你如何自己DIY一辆双轮自平衡小车

發布時間:2024/3/7 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【开源STM32自平衡小车】 教你如何自己DIY一辆双轮自平衡小车 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【請認準:OpenSir開源達人】

開源STM32自平衡小車

平衡小車開源資料網盤鏈接: 平衡小車百度網盤資料鏈接,點擊進入
【嗶站視頻一鍵三連后,評論區留言郵箱獲取提取碼(3天內發至郵箱)】

嗶站播放視頻鏈接如下:
鏈接: 【開源STM32自平衡小車】嗶站播放視頻效果,點擊進行播放

ps:如有不愿意進行自主diy的小伙伴們,我們也為其提供有推薦的套件
鏈接: STM32自平衡小車開源整車套件,點擊即可進行查看


文章目錄

  • 【請認準:OpenSir開源達人】
  • 一、硬件篇(附淘寶器件鏈接,也可自行選購)
    • 1.STM32F103C8T6最小系統板(核心板)
    • 2.MPU6050姿態傳感器(六軸)
    • 3.TB6612電機驅動(雙通道)
    • 4.0.96寸OLED顯示屏
    • 5.藍牙無線通信模塊
    • 6.電源降壓模塊(雙電壓輸出)
    • 7.超聲波測距模塊
    • 8.動力鋰電池(雙節18650)
    • 9.小車橡膠車輪(65mm)
    • 10.STLINK代碼仿真下載器
  • 二、軟件篇
    • 1.主函數代碼
    • 2.systick滴答定時器中斷任務
    • 3.滴答定時器5ms中斷配置
    • 4.調試串口發送數據至上位機
    • 5.ADC采用DMA方式進行數據采集
    • 6.陀螺儀數據校準
    • 7.超聲波測距控制
    • 8.歐拉角姿態解析
    • 9.PID控制器
    • 10.藍牙數據包接收并解析
  • 三、原理圖


提示:以下是本篇文章正文內容

一、硬件篇(附淘寶器件鏈接,也可自行選購)

1.STM32F103C8T6最小系統板(核心板)


推薦鏈接: STM32F103C8T6最小系統核心板,點擊進入!

2.MPU6050姿態傳感器(六軸)


推薦鏈接: MPU6050姿態傳感器模塊,點擊進入!
傳感器資料鏈接:

https://pan.baidu.com/s/1dNDqcp76L9QdM7iSZYfz_A 提取碼: 4eum

https://pan.baidu.com/s/13ZoMZ-lpAtDRhey4lKEcFQ 提取碼: p7fr

3.TB6612電機驅動(雙通道)




推薦鏈接: TB6612電機驅動(雙通道),點擊進入!

4.0.96寸OLED顯示屏


推薦鏈接: 0.96寸OLED顯示屏模塊(128x64),點擊進入!
模塊資料鏈接:

https://pan.baidu.com/s/108smkVOLg-23cAnr37ZeGQ 密碼:91t7

https://pan.baidu.com/s/1Lr8lw_6vt_VdM1UWe9CGsA 密碼:p0un

5.藍牙無線通信模塊


推薦鏈接: JDY-31藍牙無線通信模塊,點擊進入!
DY-31帶底板資料:

https://pan.baidu.com/s/16qyiOO05whOXqYtBVBGs2Q

6.電源降壓模塊(雙電壓輸出)


推薦鏈接: 5V和3.3V雙通道輸出降壓模塊,點擊進入!(咨詢客服)

7.超聲波測距模塊


推薦鏈接: HC-SR04超聲波測距模塊,點擊進入!
HC-SR04資料下載:

http://pan.baidu.com/s/1sjHKDI1

HC-SR04單芯片版本資料下載接:

https://pan.baidu.com/s/1sSah9PvLBrmbA7So-6YcSw 提取碼: qq35

8.動力鋰電池(雙節18650)



推薦鏈接: 3.7V 18650鋰電池,點擊進入!

9.小車橡膠車輪(65mm)

10.STLINK代碼仿真下載器


推薦鏈接: STLINK V2代碼燒錄器,點擊進入!

STLINK資料網盤鏈接:

https://pan.baidu.com/s/1gxzJeDe7CJaCCl4pGnwdNQ 提取碼: an2m

WIN10系統驅動解決方案

https://pan.baidu.com/s/1OQosxeUMnCe5CZkwKRKhOA 提取碼: h9ii

二、軟件篇

點擊文章頂部 B站視頻鏈接 或者 點擊此處 一鍵三連+關注,留言郵箱即可獲取本小車Keil源代碼文件

1.主函數代碼

代碼如下(main.c):

/********************************************************************** 版權所有:源動力科技 淘 寶:https://1024tech.taobao.com/ 文 件 名:mian.c 版 本:V21.01.30 摘 要: ***********************************************************************/ #include "stm32f10x.h" #include "systick.h" #include "led.h" #include "iic.h" #include "mpu6050.h" #include "timer.h" #include "nvic.h" #include "imu.h" #include "pwm.h" #include "flash.h" #include "pid.h" #include "usart1.h" #include "bluetooth.h" #include "key.h" #include "ps2.h" #include "oled.h" #include "adc.h" #include "ultrasonic.h" #include "imath.h" #include "Infrared.h"/* * 使能SWD, 失能JTAG * PB3,PB4,PA15作為普通IO使用 * MCU復位后,PA13/14/15 & PB3/4默認配置為JTAG功能 */ static void _SWJ_Config(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); }int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //優先級組別2_SWJ_Config(); //使能SWD,失能JTAG usart1_init(115200); //串口1配置初始化 printf("usart1 is ok\r\n");BluetoothUsart_init(9600); //藍牙串口初始化pwm_init(); //pwm初始driver_pin_init(); //電機驅動配置初始化Encoder_A_init(); //編碼器A初始化 Encoder_B_init(); //編碼器B初始化 tdelay_ms(100); IIC_Init(); //IIC端口配置mpu6050_init(); //mpu6050初始化 while(1) //mpu6050在位檢測 {uint8_t mpuId;mpuId = get_mpu_id(); //讀取mpu6050的idif(mpuId==0x68||mpuId==0x98) //判斷mpu6050的ID是否正確break; tdelay_ms(50); }get_iir_factor(&Mpu.att_acc_factor,0.005f,25); //姿態解算時加速度低通系數 OLED_Init(); //OLED顯示屏端口初始化adc_init(); //ADC配置初始化ReadCalData(); //讀取校準后的陀螺儀零偏數據tdelay_ms(100); timer_init(); //定0時器初始化 HCSR04_Init(); //超聲波端口初始化systick_init(); //滴答定時器初始化 NVIC_config(); //中斷配置初始化while(1){if(softTimes[0] == 0) //100ms{ softTimes[0] = 20; }if(softTimes[1] == 0) //20ms{softTimes[1] = 4; UltrasonicWave_StartMeasure(); //超聲波發出起始高電平 ParseBluetoothMessage(USARTxBlueTooth_RX_DATA, &BluetoothParseMsg); //藍牙數據包解析 }if(softTimes[2] == 0) //100ms{softTimes[2] = 20; voltage_detection(); //低電壓檢測OledShowDatas(); } } }

2.systick滴答定時器中斷任務

代碼如下(SysTick_Handler() ):

/*** @brief This function handles SysTick Handler.* @param None* @retval None*/ void SysTick_Handler(void) {softTimesCountdown(); //軟件定時倒計時UltrasonicCheck(); //超聲波在位檢測get_gyro_raw(); //陀螺儀數據get_deg_s(&gyro_raw_f,&Mpu.deg_s); //陀螺儀原始數據轉為度為單位的速率 get_rad_s(&gyro_raw_f,&Mpu.rad_s); //陀螺儀原始數據轉為弧度為單位的速率get_acc_raw(); //加速度數據acc_iir_lpf(&acc_raw_f,&acc_att_lpf,Mpu.att_acc_factor); //姿態解算時加速度低通濾波 get_acc_g(&acc_att_lpf,&Mpu.acc_g); //姿態解算mahony_update(Mpu.rad_s.x,Mpu.rad_s.y,Mpu.rad_s.z,Mpu.acc_g.x,Mpu.acc_g.y,Mpu.acc_g.z); Matrix_ready(); //姿態解算相關矩陣更新encoder_val_a = read_encoder(ENCODER_A); //A編碼器值讀取encoder_manage(&encoder_val_a); //編碼器值處理encoder_val_b = read_encoder(ENCODER_B); //B編碼器值讀取 encoder_manage(&encoder_val_b); //編碼器值處理ctr.pwm[0] = ctr_bal(att.rol,Mpu.deg_s.y); //角度直立平衡控制器ctr.pwm[1] = ctr_vel(encoder_val_a,-encoder_val_b); //速度控制器ctr.pwm[2] = ctr_turn(encoder_val_a,-encoder_val_b,Mpu.deg_s.z); //轉向控制器ctr.out[0] = ctr.pwm[0] + ctr.pwm[1] + ctr.pwm[2]; //電機1匹配輸出 ctr.out[1] = ctr.pwm[0] + ctr.pwm[1] - ctr.pwm[2]; //電機2匹配輸出i_limit(&(ctr.out[0]),AMPLITUDE); //輸出限幅i_limit(&(ctr.out[1]),AMPLITUDE); //輸出限幅dir_config(&(ctr.out[0]),&(ctr.out[1])); //根據正負設置方向_ctr_out(); //控制器輸出ANO_DMA_SEND_DATA(); //地面站波形顯示gyro_cal(&gyro_raw_cal); //陀螺儀零偏校準 }

3.滴答定時器5ms中斷配置

代碼如下( systick_init ):

/** 函數名:systick_init* 描述 :系統滴答定時器配置初始化* 輸入 : * 返回 : */ void systick_init(void) {SystemCoreClockUpdate();//時鐘頻率:72Mhz , 每秒可以計數72000000次,一次的時間則為:1/72000(ms),10ms需要的次數:10/(1/72000) = 720000 -> 5ms需要的次數則為:360000if (SysTick_Config(SystemCoreClock / 200)) //1000 -> 1ms{ /* Capture error */ while (1);}SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能 }

4.調試串口發送數據至上位機

代碼如下( ANO_DMA_SEND_DATA ):

vvoid ANO_DMA_SEND_DATA(void) {static uint8_t ANO_debug_cnt = 0;ANO_debug_cnt++;if(ANO_debug_cnt==1){ANO_DT_Send_Status();}else if(ANO_debug_cnt==2){ ANO_DT_Send_Senser((int16_t)acc_raw.x,(int16_t)acc_raw.y,(int16_t)acc_raw.z, (int16_t)gyro_raw.x,(int16_t)gyro_raw.y,(int16_t)gyro_raw.z,(int16_t)0,(int16_t)0,(int16_t)0);}else if(ANO_debug_cnt==3){ANO_DT_Send_RCData(1100,1200,1300,1400,1500,1600,1700,1800,1900,1100);}else if(ANO_debug_cnt==4){ANO_DT_Send_Power(13.52,57.63);}else if(ANO_debug_cnt==5){ANO_DT_Send_User(0,0,0,0,0,encoder_val_a, encoder_val_b,ctr.pwm[0],ctr.pwm[1],acc_raw_f.z,0,0,0,0,0);}else if(ANO_debug_cnt==6){if(f.send_pid1){f.send_pid1 = 0;//向上位機發送內環速度環PID參數值ANO_DT_Send_PID(1, vel.kp*0.1f,vel.ki,vel.kd,1.5f,2.5f,1.5f,2.5f,1.5f,2.5f); }if(f.send_pid2){f.send_pid2 = 0;//向上位機發送外環角度環PID參數值ANO_DT_Send_PID(2, bal.kp*0.1f,bal.ki,bal.kd,2.6f,1.5f,2.4f,1.1f,2.2f,1.1f); }if(CalGyro.success==1) //返回校準成功信息給上位機{CalGyro.success = 0;ANO_DT_Send_MSG(SENSOR_GYRO,CAL_SUCCESS);}else if(CalGyro.success==2) //反饋校準失敗信息給上位機{CalGyro.success = 0;ANO_DT_Send_MSG(SENSOR_GYRO,CAL_SUCCESS);}}else if(ANO_debug_cnt==7){ANO_debug_cnt = 0;} }

5.ADC采用DMA方式進行數據采集

代碼如下:

/********************************************************************** 版權所有:源動力科技 淘 寶:https://1024tech.taobao.com/ 文 件 名:adc.c 版 本:V21.01.30 摘 要: ***********************************************************************/ #include "adc.h"_ADC_VALUE bat = {0 ,0 };uint16_t adc_value[1];/* 端口配置初始化 */ void adc_gpio_init(void) {GPIO_InitTypeDef GPIO_initStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_initStructure.GPIO_Pin = GPIO_Pin_2; GPIO_initStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA,&GPIO_initStructure); }/* adc配置 */ void adc_config(void) {ADC_InitTypeDef ADC_initStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);ADC_initStructure.ADC_ContinuousConvMode = ENABLE; //連續轉換 ADC_initStructure.ADC_DataAlign = ADC_DataAlign_Right; //數據右對齊 ADC_initStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //軟件觸發 ADC_initStructure.ADC_Mode = ADC_Mode_Independent; //獨立工作模式ADC_initStructure.ADC_NbrOfChannel = 1; //順序進行規則轉換的ADC通道的數目 1-16 ADC_initStructure.ADC_ScanConvMode = DISABLE; //掃描模式:單次模式 ADC_Init(ADC1,&ADC_initStructure);ADC_Cmd(ADC1,ENABLE);ADC_DMACmd(ADC1,ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div8); //ADC時鐘分頻 //通道配置,采樣時間設置ADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_239Cycles5); ADC_ResetCalibration(ADC1); //復位校準 while(ADC_GetCalibrationStatus(ADC1)); //等待ADC_StartCalibration(ADC1); //啟動校準while(ADC_GetCalibrationStatus(ADC1)); //等待校準完成ADC_SoftwareStartConvCmd(ADC1,ENABLE); //開啟轉換 }void dma_config(void) {DMA_InitTypeDef DMA_initStructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_initStructure.DMA_BufferSize = 1; //緩存的數據大小 DMA_initStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //傳輸方向:外設->內存 DMA_initStructure.DMA_M2M = DMA_M2M_Disable; DMA_initStructure.DMA_MemoryBaseAddr = (u32)adc_value; //內存基地址DMA_initStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //DMA傳輸的內存數據大小:半字為單位 DMA_initStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //內存地址自增DMA_initStructure.DMA_Mode = DMA_Mode_Circular; //循環模式DMA_initStructure.DMA_PeripheralBaseAddr = ((u32)&ADC1->DR); //外設地址 DMA_initStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //DMA傳輸的外設數據大小:半字為單位DMA_initStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外設地址不變DMA_initStructure.DMA_Priority = DMA_Priority_Medium; //中等優先級DMA_Init(DMA1_Channel1,&DMA_initStructure);DMA_Cmd(DMA1_Channel1,ENABLE); }void adc_init(void) {adc_gpio_init();adc_config();dma_config(); } /** 函數名:voltage_detection* 描述 :電源電壓采集* 輸入 : * 返回 : */ void voltage_detection(void) {bat.adc = adc_value[0];bat.voltage = (float)(bat.adc)/4096.0f*3.3f*11.0f; //實際電路采用電阻10:1比例進行分壓if(bat.voltage<=7.0f){bat.danger_flag = 1;}else{bat.danger_flag = 0;} }

6.陀螺儀數據校準

代碼如下:

/** 函數名:gyro_cal* 描述 :陀螺儀零偏數據校準* 輸入 :gyro_in原始的靜止時陀螺儀數據首地址 * 返回 : */ void gyro_cal(SI_F_XYZ *gyro_in) {if(CalGyro.flag==1 && 1) {if(CalGyro.i < GyroCalSumValue) //原始靜止數據500次累加求取平均 { CalGyro.offset.x += gyro_in->x; CalGyro.offset.y += gyro_in->y;CalGyro.offset.z += gyro_in->z;CalGyro.i++;}else{CalGyro.i = 0;CalGyro.OffsetFlashWrite.x = CalGyro.offset.x / GyroCalSumValue; //得到三軸的零偏 CalGyro.OffsetFlashWrite.y = CalGyro.offset.y / GyroCalSumValue; //得到三軸的零偏CalGyro.OffsetFlashWrite.z = CalGyro.offset.z / GyroCalSumValue; //得到三軸的零偏/* 將陀螺儀零偏寫入flash */FlashWriteNineFloat(SENSOR_CAL_ADDRESS, 0,0,0,0,0,0,CalGyro.OffsetFlashWrite.x,CalGyro.OffsetFlashWrite.y,CalGyro.OffsetFlashWrite.z); /* 校準完數據之后立馬讀取出來進行使用 */flash_flag.sensor = FlashReadNineFloat(SENSOR_CAL_ADDRESS, &CalGyro.None.x,&CalGyro.None.y,&CalGyro.None.z, &CalGyro.None.x, &CalGyro.None.y,&CalGyro.None.z,&CalGyro.OffsetFlashRead.x,&CalGyro.OffsetFlashRead.y,&CalGyro.OffsetFlashRead.z);/* 判斷是否正確讀出 */if(flash_flag.sensor!=0x01ff && flash_flag.sensor!=0x01C0){_set_val(&gyro_offset,&CalGyro.OffsetFlashRead); //陀螺儀零偏設置CalGyro.success = 1; //校準成功_led.sta = 0;}else {CalGyro.success = 2; //校準失敗}CalGyro.offset.x = 0;CalGyro.offset.y = 0;CalGyro.offset.z = 0;CalGyro.flag = 0; //校準標志位清除}} }/** 函數名:ReadCalData* 描述 :陀螺儀零偏校準數據進行讀取* 輸入 : * 返回 :err */ int ReadCalData(void) {ErrorStatus err;flash_flag.sensor = FlashReadNineFloat(SENSOR_CAL_ADDRESS, &CalGyro.None.x,&CalGyro.None.y,&CalGyro.None.z, &CalGyro.None.x, &CalGyro.None.y,&CalGyro.None.z,&CalGyro.OffsetFlashRead.x,&CalGyro.OffsetFlashRead.y,&CalGyro.OffsetFlashRead.z);/* 判斷是否正確讀出 */if(flash_flag.sensor!=0x01ff && flash_flag.sensor!=0x01C0){_set_val(&gyro_offset, &CalGyro.OffsetFlashRead); //陀螺儀零偏設置err = SUCCESS ;}else{err = ERROR;}return err; }

7.超聲波測距控制

代碼如下:

float getDistance; uint16_t EchoFlag = 0; uint16_t disCounter; void EXTI15_10_IRQHandler(void) {disCounter = 0;tdelay_us(3); //延時10usif(EXTI_GetITStatus(EXTI_Line13) != RESET){EchoFlag = 1;TIM_SetCounter(TIM1,0);TIM_Cmd(TIM1, ENABLE); while(GPIO_ReadInputDataBit(HCSR04_ECHO_PORT,HCSR04_ECHO_PIN)) //等待低電平{disCounter = TIM_GetCounter(TIM1);if(disCounter>5000) //最遠測量控制在5000計數值,換為距離為85cmbreak;}TIM_Cmd(TIM1, DISABLE);getDistance = TIM_GetCounter(TIM1)/1000000.0f * 340.0f / 2.0f * 100.0f; //us->s 聲速340m/s 最終轉為厘米cm //計算公式為:距離=(高電平時間*340m/s)/2// printf("%.3fcm %d\r\n",getDistance,TIM_GetCounter(TIM1));EXTI_ClearITPendingBit(EXTI_Line13); //清除EXTI7線路掛起位} }

8.歐拉角姿態解析

代碼如下( mahony_update(float gx, float gy, float gz, float ax, float ay, float az) ):

/********************************************************************** 版權所有:源動力科技 淘 寶:https://1024tech.taobao.com/ 文 件 名:imu.c 版 本:V21.01.30 摘 要: ***********************************************************************/ #include "imu.h" #include "imath.h" #include "math.h" #include "mpu6050.h" #include "timer.h"_Matrix Mat = {0}; _Attitude att = {0}; #define mahonyPERIOD 5.0f //姿態解算周期(ms) #define kp 0.5f //proportional gain governs rate of convergence to accelerometer/magnetometer #define ki 0.0001f //integral gain governs rate of convergenceof gyroscope biasesfloat q0 = 1, q1 = 0, q2 = 0, q3 = 0; //quaternion elements representing theestimated orientation float exInt = 0, eyInt = 0, ezInt = 0; //scaled integral error /** 函數名:mahony_update* 描述 :姿態解算* 輸入 :陀螺儀三軸數據(單位:弧度/秒),加速度三軸數據(單位:g) * 返回 : */ //Gyroscope units are radians/second, accelerometer units are irrelevant as the vector is normalised. void mahony_update(float gx, float gy, float gz, float ax, float ay, float az) {float norm;float vx, vy, vz;float ex, ey, ez;if(ax*ay*az==0)return;//[ax,ay,az]是機體坐標系下加速度計測得的重力向量(豎直向下)norm = invSqrt(ax*ax + ay*ay + az*az);ax = ax * norm;ay = ay * norm;az = az * norm;//VectorA = MatrixC * VectorB//VectorA :參考重力向量轉到在機體下的值//MatrixC :地理坐標系轉機體坐標系的旋轉矩陣 //VectorB :參考重力向量(0,0,1) //[vx,vy,vz]是地理坐標系重力分向量[0,0,1]經過DCM旋轉矩陣(C(n->b))計算得到的機體坐標系中的重力向量(豎直向下) vx = Mat.DCM_T[0][2];vy = Mat.DCM_T[1][2];vz = Mat.DCM_T[2][2];//機體坐標系下向量叉乘得到誤差向量,誤差e就是測量得到的vˉ和預測得到的 v^之間的相對旋轉。這里的vˉ就是[ax,ay,az]’,v^就是[vx,vy,vz]’//利用這個誤差來修正DCM方向余弦矩陣(修正DCM矩陣中的四元素),這個矩陣的作用就是將b系和n正確的轉化直到重合。//實際上這種修正方法只把b系和n系的XOY平面重合起來,對于z軸旋轉的偏航,加速度計無可奈何,//但是,由于加速度計無法感知z軸上的旋轉運動,所以還需要用地磁計來進一步補償。//兩個向量的叉積得到的結果是兩個向量的模與他們之間夾角正弦的乘積a×v=|a||v|sinθ,//加速度計測量得到的重力向量和預測得到的機體重力向量已經經過單位化,因而他們的模是1,//也就是說它們向量的叉積結果僅與sinθ有關,當角度很小時,叉積結果可以近似于角度成正比。ex = ay*vz - az*vy;ey = az*vx - ax*vz;ez = ax*vy - ay*vx;//對誤差向量進行積分exInt = exInt + ex*ki;eyInt = eyInt + ey*ki;ezInt = ezInt + ez*ki;//姿態誤差補償到角速度上,修正角速度積分漂移,通過調節Kp、Ki兩個參數,可以控制加速度計修正陀螺儀積分姿態的速度。gx = gx + kp*ex + exInt;gy = gy + kp*ey + eyInt;gz = gz + kp*ez + ezInt;//一階龍格庫塔法更新四元數 q0 = q0 + (-q1*gx - q2*gy - q3*gz)* mahonyPERIOD * 0.0005f;q1 = q1 + ( q0*gx + q2*gz - q3*gy)* mahonyPERIOD * 0.0005f;q2 = q2 + ( q0*gy - q1*gz + q3*gx)* mahonyPERIOD * 0.0005f;q3 = q3 + ( q0*gz + q1*gy - q2*gx)* mahonyPERIOD * 0.0005f; //把上述運算后的四元數進行歸一化處理。得到了物體經過旋轉后的新的四元數。norm = invSqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);q0 = q0 * norm;q1 = q1 * norm;q2 = q2 * norm;q3 = q3 * norm;//四元素轉歐拉角att.pit = atan2(2.0f*(q0*q1 + q2*q3),q0*q0 - q1*q1 - q2*q2 + q3*q3) * rad_to_angle;att.rol = asin(2.0f*(q0*q2 - q1*q3)) * rad_to_angle; //z軸角速度積分的偏航角att.yaw += Mpu.deg_s.z * mahonyPERIOD * 0.001f; } /** 函數名:rotation_matrix* 描述 :旋轉矩陣:機體坐標系 -> 地理坐標系* 輸入 : * 返回 : */ void rotation_matrix(void) {Mat.DCM[0][0] = 1.0f - 2.0f * q2*q2 - 2.0f * q3*q3;Mat.DCM[0][1] = 2.0f * (q1*q2 -q0*q3);Mat.DCM[0][2] = 2.0f * (q1*q3 +q0*q2);Mat.DCM[1][0] = 2.0f * (q1*q2 +q0*q3);Mat.DCM[1][1] = 1.0f - 2.0f * q1*q1 - 2.0f * q3*q3;Mat.DCM[1][2] = 2.0f * (q2*q3 -q0*q1);Mat.DCM[2][0] = 2.0f * (q1*q3 -q0*q2);Mat.DCM[2][1] = 2.0f * (q2*q3 +q0*q1);Mat.DCM[2][2] = 1.0f - 2.0f * q1*q1 - 2.0f * q2*q2; } /** 函數名:rotation_matrix_T* 描述 :旋轉矩陣的轉置矩陣:地理坐標系 -> 機體坐標系* 輸入 : * 返回 : */ void rotation_matrix_T(void) {Mat.DCM_T[0][0] = 1.0f - 2.0f * q2*q2 - 2.0f * q3*q3;Mat.DCM_T[0][1] = 2.0f * (q1*q2 +q0*q3); Mat.DCM_T[0][2] = 2.0f * (q1*q3 -q0*q2); Mat.DCM_T[1][0] = 2.0f * (q1*q2 -q0*q3);Mat.DCM_T[1][1] = 1.0f - 2.0f * q1*q1 - 2.0f * q3*q3; Mat.DCM_T[1][2] = 2.0f * (q2*q3 +q0*q1); Mat.DCM_T[2][0] = 2.0f * (q1*q3 +q0*q2);Mat.DCM_T[2][1] = 2.0f * (q2*q3 -q0*q1);Mat.DCM_T[2][2] = 1.0f - 2.0f * q1*q1 - 2.0f * q2*q2; } /** 函數名:Matrix_ready* 描述 :矩陣更新準備,為姿態解算使用* 輸入 : * 返回 : */ void Matrix_ready(void) {rotation_matrix(); //旋轉矩陣更新rotation_matrix_T(); //旋轉矩陣的逆矩陣更新 }

9.PID控制器

代碼如下:

/* ctr.bais[0]:角度控制器偏差存儲 ctr.bais[1]:速度控制器偏差累計存儲 ctr.bais[2]:轉向控制器偏差存儲 ctr.exp[0]:角度控制器期望角度 ctr.exp[1]:速度控制器期望速度 ctr.exp[2]:轉向控制器期望角度 *//** 函數名:ctr_bal* 描述 :角度PD控制器* 輸入 :angle當前角度,gyro當前角速度* 返回 :PID控制器輸出*/ int ctr_bal(float angle,float gyro) { ctr.exp[0] = 0; //期望角度 ctr.bais[0] = (float)(angle - ctr.exp[0]); //角度偏差ctr.balance = bal.kp * ctr.bais[0] + gyro * bal.kd; //角度平衡控制return ctr.balance; } int CarStepForwardOrBackward; /** 函數名:ctr_vel* 描述 :速度PI控制器* 輸入 :encoder_left編碼器值A,encoder_right編碼器值B* 返回 :PID控制器輸出*/ int ctr_vel(int encoder_left,int encoder_right) { static float encoder_cur,encoder_last;CarStepForwardOrBackward = CarSpeedCtrlForwardOrBackward(1); //遙控器控制的前后方向速度 remote.ForwardOrBackward = remoteCarForwardOrBackward( (float)CarStepForwardOrBackward , MODE_BLUETEETH , UltraSuccess(BluetoothParseMsg.ModeRocker) ); //遙控器控制前后方向運動encoder_last = ((encoder_left) + (encoder_right)) - 0; //速度誤差encoder_cur = encoder_cur * 0.8 + encoder_last * 0.2; //對偏差進行低通濾波ctr.bais[1] += encoder_cur; //偏差累加和 ctr.bais[1] = ctr.bais[1] - remote.ForwardOrBackward; //遙控控制前后方向if(ctr.bais[1] > 10000) ctr.bais[1] = 10000; //限幅if(ctr.bais[1] <-10000) ctr.bais[1] =-10000; ctr.velocity = encoder_cur * vel.kp + ctr.bais[1] * vel.ki; //速度控制 return ctr.velocity; }

10.藍牙數據包接收并解析

代碼如下( ParseBluetoothMessage(char *pInput ,uint16_t rcLens , BluetoothParse *blueParseMsg ) ):

** 函數名:USART3_IRQHandler* 描述 :藍牙串口接收中斷處理函數* 輸入 :* 返回 :*/ void USART3_IRQHandler(void) { if(USART_GetITStatus(BLUETOOTH_USARTx, USART_IT_RXNE) != RESET) { if(BlueToothBufIndex > USARTxBlueTooth_RX_LEN)BlueToothBufIndex = 0;USARTxBlueTooth_RX_DATA[BlueToothBufIndex++] = USART_ReceiveData(BLUETOOTH_USARTx);BlueToothNumbers ++;USART_ClearITPendingBit(BLUETOOTH_USARTx, USART_IT_RXNE); //清除空閑中斷標志} } /** 函數名:ParseBluetoothMessage* 描述 :解析藍牙app發送過來的數據包* 輸入 :pInput收到的藍牙遙控數據首地址 , blueParseMsg解析后保存的藍牙數據有效信息* 返回 :err*/ /** 協議形式:字符串* 幀頭:# 幀尾:** 例如:#9,1,1,2,2,1* * 每位代表含義:9:數據長度(固定) 1:模式 1:關閉/開始狀態 2:藍牙搖桿X軸數據 2:藍牙搖桿Y軸數據 1:校驗值(累加和減去7) */ uint8_t ParseBluetoothMessage(char *pInput , BluetoothParse *blueParseMsg) {unsigned char plen,sum,check;ErrorStatus err;char *pdata = pInput;while(( pdata-pInput ) < BlueToothBufIndex ){if(*pdata == '#')// #9,1,1,2,2,1* //接收到數據的包頭#{plen = (unsigned char)atof(strtok(pdata+1, ",")); //解析長度lengthif(plen == 9){/* 將讀出的數據進行累加校驗 */ sum = (unsigned char)int_abs( ((int)atof(strtok(pdata+3, ",")) + (int)atof(strtok(NULL, ",")) +(int)atof(strtok(NULL, ",")) + (int)atof(strtok(NULL, ","))) - 7 );/* 讀出累加校驗數據 */check = (unsigned char)atof(strtok(NULL, ",")) ; //累加校驗數據if(sum == check) //校驗匹配成功才進行數據解析 {blueParseMsg->ModeRocker = (unsigned char)atof(strtok(pdata+3, ",")); //模式數據blueParseMsg->OpenCloseStatus = (unsigned char)atof(strtok(pdata+5, ",")); //關閉/開始狀態數據blueParseMsg->Xrocker = (unsigned char)atof(strtok(pdata+7, ",")); //搖桿X數據blueParseMsg->Yrocker = (unsigned char)atof(strtok(pdata+9, ",")); //搖桿Y數據err = SUCCESS;}else{err = ERROR; }}else {err = ERROR;}}else {err = ERROR;}pdata++;}BlueToothBufIndex = 0;return err ; }

三、原理圖

【 PS:點擊文章頂部 B站視頻鏈接 或者 點擊此處 一鍵三連+關注,留言郵箱即可獲取本小車原理圖紙文件。】

總結

以上是生活随笔為你收集整理的【开源STM32自平衡小车】 教你如何自己DIY一辆双轮自平衡小车的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品久久久毛片 | 色视频在线 | 久久系列| www.久久99 | av免费试看| 国产1级毛片 | 亚洲网站在线 | 超碰在线人 | 日本三级人妇 | 日韩精品一区二区在线观看视频 | av片在线观看 | 色偷偷av男人天堂 | 久久久福利视频 | 婷婷激情综合 | 深夜国产在线 | 国产一二区免费视频 | 久久黄色a级片 | 2023国产精品自产拍在线观看 | 日日夜夜人人精品 | 精品久久免费 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一区二区在线免费观看 | 一区二区三区在线视频观看58 | 国产亚洲成av人片在线观看桃 | 国产精品尤物视频 | 国产在线观看一 | 99c视频在线 | 国产午夜一区二区 | 国产午夜精品av一区二区 | 久久精品中文字幕 | 十八岁免进欧美 | 91成人精品一区在线播放69 | 精品人人人 | 天天干天天做 | 欧美另类z0zx | 国产99久久久久久免费看 | www久久久久| 视频国产 | 欧洲性视频 | 国产在线国产 | 天天干,天天射,天天操,天天摸 | 国产在线一区二区 | 91久久在线观看 | 99久久精品免费看国产 | 中文字幕第一页在线 | 久久久网站| 精品国产乱子伦一区二区 | 美女视频黄的免费的 | 国产三级香港三韩国三级 | 国产精品成人av在线 | 国产视频 亚洲视频 | 国产又粗又硬又爽的视频 | 亚洲精品成人在线 | 91视频大全 | 久久99久国产精品黄毛片入口 | 国产免费观看高清完整版 | 开心激情综合网 | www久草 | www.综合网.com | 91大片网站 | 欧美视屏一区二区 | 人人爽人人射 | 国产一级在线免费观看 | 久久久国际精品 | 国语自产偷拍精品视频偷 | 亚洲欧美经典 | 99热超碰在线 | 三级av在线免费观看 | 91 在线视频 | 欧美一级片在线免费观看 | 久久精品亚洲国产 | 日韩视频一二三区 | 久久久久中文字幕 | 成人av一区二区兰花在线播放 | 在线观看激情av | 九九九在线 | 国产视频精品在线 | 婷婷丁香六月 | 91久久国产综合精品女同国语 | 777视频在线观看 | 免费网站观看www在线观看 | 亚洲成人资源网 | 欧美一区二区在线刺激视频 | 国产在线观看免费 | 成人一级免费视频 | 国产精品毛片 | 91黄色在线看 | 精品国产一区二区三区噜噜噜 | 国产a国产 | 久久久久久久久久久国产精品 | 国产夫妻性生活自拍 | 午夜色大片在线观看 | 久久久久久久久久电影 | 亚洲视频久久久久 | 天天色综合天天 | 色综合久久88 | 日韩国产欧美视频 | 欧美日韩在线观看视频 | 国产午夜三级一区二区三 | 日b视频国产 | 国产精品久久在线 | 美女很黄免费网站 | 9999在线观看 | 成人禁用看黄a在线 | 成人免费视频视频在线观看 免费 | 国内精品一区二区 | 激情 一区二区 | 成人午夜电影在线播放 | 久久成电影 | 日韩国产精品毛片 | 国产专区精品 | 亚在线播放中文视频 | 中文字幕一区在线观看视频 | 波多野结衣在线视频一区 | 综合色狠狠 | 深爱激情综合 | 久久久久国产精品一区二区 | 高清av免费看 | 国产不卡视频在线播放 | 国产精品毛片一区二区三区 | 蜜臀av在线一区二区三区 | 久久久久久高潮国产精品视 | 婷婷激情久久 | 久久久一本精品99久久精品 | 国产成人精品女人久久久 | 亚洲乱码在线观看 | 少妇做爰k8经典 | 国产黄色一级片 | 久久99国产精品久久99 | 日本久久久亚洲精品 | 中文字幕永久免费 | 99精品国自产在线 | 久久综合网色—综合色88 | 国产v在线观看 | 天天爱天天舔 | 久久99这里只有精品 | 亚洲精品在线观看网站 | 久操中文字幕在线观看 | 开心激情婷婷 | 国产精品久久久久久吹潮天美传媒 | 亚洲电影第一页av | 视频在线亚洲 | 国产码电影 | 狠狠色2019综合网 | 国产青春久久久国产毛片 | 欧美日韩精品区 | 手机在线小视频 | 国产呻吟在线 | 国产小视频国产精品 | 国产精品com | 黄色成人av| 视频一区在线免费观看 | 国产精品女视频 | 免费试看一区 | 欧美成人按摩 | 91亚色免费视频 | 国产精久久久久久久 | 奇米777777| 精品一二三区 | www.色午夜.com | 欧美福利视频 | 综合在线观看 | 免费三级大片 | 国产精品久久久久久久久久三级 | 国产九九热视频 | 亚洲欧美偷拍另类 | 香蕉视频18| 久久视频免费在线 | 天天天干天天射天天天操 | 久久99爱视频| 午夜精品久久久久久久99热影院 | 久久好看免费视频 | 91av在线不卡 | 国产精品1区2区3区在线观看 | 99精品国产一区二区三区不卡 | 色婷婷成人网 | 免费韩国av | 婷婷色av | 国产精品成人国产乱 | 久久久久亚洲精品男人的天堂 | 亚洲欧美乱综合图片区小说区 | 91超碰免费在线 | 天天天天爽 | 日日夜夜添 | 黄色免费观看 | 国产在线久草 | 中文av网站| 九九免费视频 | 福利视频入口 | 月下香电影 | 国产免费视频一区二区裸体 | 欧美日韩1区 | 免费裸体视频网 | 婷婷综合伊人 | 国产精品久久久久久吹潮天美传媒 | 97视频在线观看播放 | 成人毛片100免费观看 | 国产精品黑丝在线观看 | 亚洲午夜久久久综合37日本 | 久草91视频 | 久久r精品 | 久久久综合香蕉尹人综合网 | 国产在线观看xxx | 91视频啊啊啊 | 国产69精品久久app免费版 | 日韩精品一区二区三区不卡 | 午夜在线免费视频 | 久久呀 | 不卡的av电影 | 色a网| 欧美另类成人 | 91久久久国产精品 | 中文字幕av免费 | 久久久www成人免费毛片 | 日韩av片无码一区二区不卡电影 | 亚洲一区欧美激情 | 深夜免费小视频 | 成人福利在线播放 | 免费视频色 | 国产欧美最新羞羞视频在线观看 | 91天天视频| 丝袜少妇在线 | 精品一区二区久久久久久久网站 | 黄色三级免费片 | 丁香花在线观看免费完整版视频 | 美女网站视频久久 | 久久婷婷综合激情 | www.夜夜夜 | 麻豆91在线播放 | www.久久久 | 国产精品久久久网站 | 欧美黄色免费 | 精品视频国产 | 欧美成年黄网站色视频 | 欧美日韩视频观看 | 狠狠色丁香婷婷综合橹88 | 日本精品一 | 天天插一插 | 日本公妇在线观看 | www免费视频com━ | 日韩专区在线播放 | 日韩中文字幕免费视频 | 国产福利免费看 | 日韩性片 | a亚洲视频| 日韩欧美国产精品 | 久久免费黄色 | 97色婷婷| 久草观看视频 | 丁香婷婷久久久综合精品国产 | 91污污| 午夜电影av | 香蕉91视频| 国产精品不卡在线 | 一级片视频在线 | 国产色就色 | av综合在线观看 | 亚洲自拍偷拍色图 | 日韩欧美视频在线 | 久久毛片高清国产 | 久久久久在线观看 | 国产精品热视频 | 在线观看视频亚洲 | 日本中文在线播放 | 久久精品国亚洲 | 色综久久| 国产手机免费视频 | 911av视频| 免费一级片观看 | 在线视频一二区 | 欧美精品一区二区在线观看 | 欧美精品久久久久久久久久久 | 中文字幕在线观看网 | www天天干| 日韩av高清 | 人人干网 | 国产国产人免费人成免费视频 | 免费大片av | 久香蕉 | 99精品偷拍视频一区二区三区 | 亚洲综合色婷婷 | 久久成人一区二区 | 狠狠狠色丁香婷婷综合激情 | 日韩电影在线看 | 国产精品成人在线 | 久久综合射 | 久久久久国产成人精品亚洲午夜 | 九色91在线视频 | 日韩视频专区 | 天天干天天操天天搞 | 国产精品嫩草影视久久久 | 日韩av一卡二卡三卡 | 久久99国产综合精品免费 | 国产高清永久免费 | 亚洲精品网站在线 | 亚洲国产高清在线 | 欧美三人交 | 国产精品18久久久久白浆 | 玖玖爱在线观看 | 成人免费xxxxxx视频 | 91精品久 | 亚洲欧美日韩精品久久久 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 在线综合色 | 一区 在线 影院 | 天堂在线免费视频 | av在线h | 久久久久一区二区三区 | 久久99国产精品二区护士 | 超碰成人网 | 成人小视频免费在线观看 | 中文字幕在线观看你懂的 | 亚洲aⅴ在线观看 | 国产精品99久久久精品 | 国产精品久久一区二区三区, | 国产婷婷精品av在线 | 欧美精品一区二区在线播放 | 欧美久久久一区二区三区 | 国产色道 | av成年人电影 | adn—256中文在线观看 | 国产精品夜夜夜一区二区三区尤 | 久99视频 | 91大神在线观看视频 | 激情影音 | 欧洲精品一区二区 | 日韩欧美v | 久久激情影院 | 国产老太婆免费交性大片 | 亚洲我射av| 国产一二三四在线视频 | 国产麻豆剧传媒免费观看 | 精品国内自产拍在线观看视频 | 国产精品激情在线观看 | 在线观看av国产 | 欧美亚洲成人xxx | 中文字幕乱码电影 | 久久国产露脸精品国产 | 国产精品久久久久久久久久久久午夜 | 又大又硬又黄又爽视频在线观看 | 天天天干夜夜夜操 | 欧美日在线观看 | 黄色app网站在线观看 | 欧美 日韩 国产 中文字幕 | 成人中文字幕在线 | 国产精品久久久久久一二三四五 | 久久午夜免费视频 | 免费亚洲成人 | 午夜精品久久 | www.五月婷婷.com| 国产成人精品午夜在线播放 | 91久久久国产精品 | 91成年人网站 | 天堂网av 在线 | www国产亚洲精品久久网站 | 欧美成人h版在线观看 | 免费看搞黄视频网站 | 综合中文字幕 | 在线观看国产日韩欧美 | 免费日韩视 | 天天拍天天操 | 国产一区免费在线观看 | 五月激情丁香婷婷 | 91香蕉久久 | 色香网 | 国产美女网站在线观看 | 国产清纯在线 | 在线观看国产永久免费视频 | 人人天天夜夜 | 国产精品高清在线观看 | 69国产精品视频 | 国产人成一区二区三区影院 | 欧美日韩在线精品一区二区 | 在线天堂日本 | 人人澡人人澡人人 | 欧美精品久久久久久久久久白贞 | 亚洲激情 在线 | 久久9精品 | 九九视频精品免费 | 99久久成人 | 久久不见久久见免费影院 | 国产免费一区二区三区最新 | 国产视频亚洲 | 96av在线视频 | 91视频专区 | 色吧久久 | 麻豆免费在线视频 | 午夜精品电影 | 国产成人三级一区二区在线观看一 | 国产不卡免费av | 日本黄色免费在线观看 | 亚州天堂 | 97在线精品| 亚洲人成网站精品片在线观看 | 精品国产电影 | 亚洲天堂网在线视频观看 | 欧美一区免费观看 | 涩五月婷婷 | 欧美夫妻生活视频 | 日p视频在线观看 | 久久久久成 | 97超碰人人爱 | 久久成人毛片 | 伊人天天操 | 国产成人不卡 | 日韩欧美69 | 久久av伊人 | 少妇性色午夜淫片aaaze | 91久久精品日日躁夜夜躁国产 | 亚洲jizzjizz日本少妇 | 91新人在线观看 | 久草视频在线资源 | 四虎4hu永久免费 | 夜又临在线观看 | 亚洲黄色三级 | 91最新中文字幕 | aaa免费毛片 | 国产精品高清在线观看 | www.色五月.com | 欧美成人h版在线观看 | 91一区在线观看 | 精品国产精品国产偷麻豆 | 日韩99热 | 国产日本在线观看 | 国产理论免费 | 日韩精品专区 | 欧美性生爱 | 激情丁香综合五月 | 天天躁日日躁狠狠躁 | 免费视频二区 | 狠狠狠狠狠狠天天爱 | 成人91在线 | 亚洲九九精品 | 一级黄色在线免费观看 | 在线日韩一区 | av色综合网| 天天色影院| 中文字幕精品三区 | 91麻豆看国产在线紧急地址 | 美女视频永久黄网站免费观看国产 | 在线看v片成人 | 国产亚洲婷婷免费 | 九九综合久久 | 亚洲理论视频 | 久久久精品一区二区三区 | 国产精品久久久久久久电影 | 在线直播av | 精品 激情 | 玖玖视频国产 | 亚洲一区二区高潮无套美女 | 在线激情网 | 一区二区三区在线观看中文字幕 | 在线观看成人小视频 | 国产无区一区二区三麻豆 | 欧美日韩69| 夜夜夜| av福利在线导航 | 亚洲国产日本 | 91精品国产福利 | 91精选在线| 综合激情伊人 | 天天曰夜夜操 | 又黄又爽的免费高潮视频 | av日韩国产 | 日韩一级电影在线 | 91九色精品 | 成人夜晚看av | 色午夜 | 亚洲人视频在线 | 亚洲天天在线 | 日韩视频免费观看高清完整版在线 | 日韩精品视频在线免费观看 | 伊色综合久久之综合久久 | 国产视频一区在线 | 成人在线视频在线观看 | 亚洲午夜精品一区 | 少妇性xxx | 可以免费观看的av片 | 成人在线观看网址 | 日本资源中文字幕在线 | 国产美女主播精品一区二区三区 | 黄色小网站在线 | 国产成人综| 一级a性色生活片久久毛片波多野 | 婷婷丁香在线视频 | 综合网成人 | 久久久久久久久久久久av | 国产精品不卡av | 亚洲色图22p | 美女免费黄视频网站 | 96久久久 | avv天堂| 亚洲春色奇米影视 | 丝袜美女在线 | 一区二区精品久久 | 欧美精品亚洲二区 | 91精品91 | 天天干天天干天天操 | 国产精品你懂的在线观看 | 久久久久久久综合色一本 | 日韩欧美一级二级 | 99久久久久免费精品国产 | 国产在线中文字幕 | 天天操天天草 | 精品欧美一区二区精品久久 | 欧美激情h | 在线 视频 亚洲 | 中文字幕 国产视频 | 久久久久国产一区二区三区四区 | 丁香午夜 | 玖玖爱在线观看 | av免费播放 | 久久精品高清视频 | 日韩av一卡二卡三卡 | 天天色天 | avsex| 婷婷丁香狠狠爱 | 国产精品com | 午夜精品久久久久久久99热影院 | 亚洲精品玖玖玖av在线看 | 久久久一本精品99久久精品66 | 在线影院 国内精品 | 国产午夜三级一二三区 | 天天色 天天 | 伊人久久电影网 | 最近日本字幕mv免费观看在线 | 在线91播放 | 亚洲色图美腿丝袜 | 国产乱码精品一区二区蜜臀 | 亚洲人在线7777777精品 | 国产精品久久久久久久久久新婚 | 西西444www大胆高清视频 | 一级黄色片在线免费观看 | 人人爽人人爽人人片av | 国产精品久久久久av | 欧美va日韩va | 亚洲精品中文在线资源 | 久久女同性恋中文字幕 | 亚洲永久精品在线观看 | 亚洲精品456在线播放 | 日韩大片免费在线观看 | 国产视频在线免费 | 激情av资源网 | 99视频久久 | 欧美日韩性视频在线 | 97成人精品视频在线播放 | 99九九热只有国产精品 | 在线а√天堂中文官网 | 国产日韩欧美精品在线观看 | 久久精品电影网 | 久久在线免费视频 | 国产福利小视频在线 | 99视频99 | 国产美女精品在线 | 日韩在线视频线视频免费网站 | 精品国产美女 | 天天干天天干天天射 | 少妇精品久久久一区二区免费 | 日韩在线免费观看视频 | 国产精华国产精品 | 久久综合九色综合久久久精品综合 | 中日韩免费视频 | 精品久久久久久久久久 | 国产精品一区二区在线 | 在线国产激情视频 | 成人黄色电影免费观看 | 人人草人人草 | 久久无码精品一区二区三区 | 亚洲一级电影在线观看 | 爱情影院aqdy鲁丝片二区 | 精品国产乱码久久 | 人成午夜视频 | 久久99久久精品国产 | 精品福利网站 | 国产美女在线免费观看 | 一级免费黄视频 | 久久成人国产精品入口 | 国产成人综合精品 | 一区二区三区免费网站 | 99热高清| 99热只有精品在线观看 | 91在线播| 婷婷天天色 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久精品久久精品久久39 | 日本在线视频一区二区三区 | 亚洲国产中文在线观看 | 香蕉影视在线观看 | 婷婷av网站| 性色av免费观看 | 国产午夜视频在线观看 | 国产在线观看99 | 亚洲无吗av| 97超碰人人澡 | 久久久蜜桃一区二区 | 久久久电影 | 久久国产精品99久久久久 | 91在线日本 | 日韩三级av | 日韩av在线资源 | 色网影音先锋 | 2023年中文无字幕文字 | 国产精品毛片一区视频播不卡 | 黄色三级视频片 | 精品一二三四视频 | 欧洲激情在线 | 91精品啪在线观看国产线免费 | 久久99九九99精品 | 亚洲午夜剧场 | 中文字幕成人 | 色多视频在线观看 | 久久99操| 免费av在线播放 | 久久免费精品国产 | 久久99九九99精品 | 黄色aaa级片 | 日韩免费在线视频观看 | 亚洲一区视频在线播放 | www.色就是色 | 色婷婷国产精品一区在线观看 | 超碰在线日韩 | 黄在线免费看 | 中文字幕日韩精品有码视频 | 婷婷五月情 | 久久国产欧美日韩精品 | 韩日精品在线观看 | 天天插天天狠 | 午夜视频一区二区 | 国产精品观看视频 | 美国三级黄色大片 | 天天干天天摸 | av在线免费网站 | 免费看一及片 | 国产精品中文字幕在线 | 亚洲精品国产电影 | 免费看片亚洲 | 911国产在线观看 | 91丨精品丨蝌蚪丨白丝jk | 日韩在观看线 | 精品国产伦一区二区三区 | 亚洲伦理一区二区 | 国产精品久久久久久久久费观看 | 国产婷婷色 | 久操久 | 国产精品私人影院 | 久久综合网色—综合色88 | 精品a在线 | 国产成人一区三区 | 三级免费黄色 | 五月天激情综合网 | 天天草天天| 黄色网免费 | 天堂va在线高清一区 | 天天天天天天操 | 欧美热久久| 91在线超碰| 日本xxxx裸体xxxx17 | 激情久久影院 | 欧美日韩免费观看一区=区三区 | 亚洲视频一区二区三区在线观看 | 亚洲 av网站 | 国产一区二区手机在线观看 | 182午夜在线观看 | 欧美韩日精品 | 91在线文字幕| 97超碰人人干 | 成年人免费电影在线观看 | 久久成人国产精品免费软件 | 国产午夜精品一区二区三区嫩草 | 欧美一区影院 | 国产午夜精品福利视频 | 日韩视频1 | 国产亚洲精品久久网站 | 韩日精品中文字幕 | 亚洲日本一区二区在线 | 在线 精品 国产 | 久久免费福利 | 国产在线观看一区 | 国产色区| 精品a级片 | 国产精品18久久久 | 人人揉人人揉人人揉人人揉97 | 日韩av影视在线 | 久久tv| 日韩黄色在线 | 久久久91精品国产一区二区三区 | 永久免费毛片 | 久久久久久蜜桃一区二区 | 免费看黄在线网站 | 91丨精品丨蝌蚪丨白丝jk | 久草在线免费播放 | 国产一二三精品 | 欧美日韩一区二区在线观看 | 五月天综合激情 | 免费av高清 | 伊人亚洲综合网 | 国产精品99爱 | 婷婷激情综合 | 91视频免费国产 | 黄色av网站在线观看 | 午夜在线免费观看 | 久久久在线| 精品国产一区二区三区av性色 | 日韩精品一区二区三区水蜜桃 | www.久久免费视频 | 国产精彩视频一区 | 天天曰天天曰 | 激情伊人 | 日韩高清二区 | 91精品专区 | 91视频链接 | 国产成人资源 | 青草视频在线看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产一级视频在线观看 | 欧美综合国产 | 亚洲欧美日韩精品久久奇米一区 | 婷婷丁香七月 | 91九色成人 | 久久99婷婷 | 免费看搞黄视频网站 | 久久久99精品免费观看乱色 | 亚洲狠狠操 | 国产破处在线播放 | 91人人澡人人爽人人精品 | 天天天干天天射天天天操 | 欧美在线久久 | 午夜精品999 | 国产黄在线免费观看 | 午夜av电影| 日韩一级成人av | 国产永久免费观看 | 日韩欧美视频在线播放 | 国产午夜一区二区 | 91视频久久久久久 | 欧美日韩久久一区 | 国产精品麻豆果冻传媒在线播放 | 国产福利资源 | 亚州精品天堂中文字幕 | 一级全黄毛片 | 欧美日韩中 | 日韩动态视频 | 亚洲成人av一区 | 成人黄色大片在线免费观看 | 高清av免费一区中文字幕 | 麻豆传媒一区二区 | 久久69精品久久久久久久电影好 | 四虎成人免费影院 | 中文字幕在线免费看 | 亚洲激情综合网 | 久久社区视频 | 人人干人人做 | www免费在线观看 | 久久久久成人精品 | 国产中文在线观看 | 亚洲国产精彩中文乱码av | 九九热精品在线 | 国产精品99精品 | 国产在线播放一区二区三区 | 中文字幕韩在线第一页 | 免费www视频| 91av在线不卡| 国产一区二区午夜 | 国产小视频免费在线网址 | 精品久久久久久久久久久久久久久久久久 | 国产亚洲精品女人久久久久久 | 97电影在线观看 | www·22com天天操 | 91av中文 | 国内精品久久久 | 国产一级片网站 | 黄网站免费看 | 2021久久| 欧美国产三区 | 精品国产一区二区三区久久久蜜臀 | 久久dvd| 欧美精品在线一区 | 国产一区二区在线免费观看 | 久久影院亚洲 | 国产精品免费视频久久久 | av不卡中文 | 最新中文字幕视频 | 久久99亚洲精品 | 韩国精品视频在线观看 | 亚洲综合色激情五月 | 丝袜美腿亚洲 | 亚洲另类视频在线 | 久久国内免费视频 | 国产精品一区二区吃奶在线观看 | 色香蕉在线视频 | 激情五月婷婷综合网 | 国产精品专区h在线观看 | 婷婷成人亚洲综合国产xv88 | 久久夜色电影 | 欧美日韩高清一区二区三区 | 亚洲成人高清在线 | 日韩在线小视频 | 欧美大片第1页 | 免费看亚洲毛片 | 99久久国产免费,99久久国产免费大片 | 日韩色视频在线观看 | 伊人婷婷久久 | 久草剧场| 天天操夜夜想 | 91黄色免费看 | 亚洲国产日韩一区 | 欧美日韩亚洲第一 | 成人va视频 | 日韩av影视在线观看 | 在线观看视频你懂得 | 成人免费一区二区三区在线观看 | 精品久久一 | 国产精品完整版 | 99成人精品 | 午夜美女福利直播 | 西西4444www大胆视频 | 国产手机在线精品 | 久热只有精品 | 狠狠插狠狠操 | 亚洲欧洲精品一区二区 | 国产在线观看地址 | 少妇搡bbbb搡bbb搡aa | www.香蕉视频 | 精品一区二区久久久久久久网站 | 国产二区精品 | www色网站| 成人v| 日韩久久久久久 | 天天色播 | 菠萝菠萝蜜在线播放 | 18做爰免费视频网站 | 精品国产一区二区三区久久影院 | 国产99久久久久 | 99精品国产兔费观看久久99 | 在线观看国产永久免费视频 | 中文字幕高清免费日韩视频在线 | 日韩高清在线不卡 | 午夜婷婷网 | 免费在线一区二区 | 国产精品s色 | 丁香六月激情婷婷 | 国产在线精品二区 | 亚洲天堂网站视频 | 九九综合久久 | 欧美日韩91 | 97超级碰碰碰视频在线观看 | 久久在线一区 | 九色精品免费永久在线 | 欧美 日韩 视频 | 久久99国产精品免费网站 | 狠狠色丁香婷婷综合久久片 | 欧美日韩二三区 | 天天干夜夜操视频 | 日本三级吹潮在线 | 麻豆91在线 | 五月视频| 日韩精品免费一区二区三区 | 成在线播放 | 天天干天天怕 | 黄色一级性片 | 人人添人人澡人人澡人人人爽 | 中文字幕一区二区三区四区久久 | 久草在线视频资源 | 91日韩免费 | 国产成人1区 | 日日夜操| 97免费视频在线播放 | 久久无码精品一区二区三区 | 91九色最新地址 | 黄网站免费看 | 夜夜躁狠狠燥 | 国产精品区免费视频 | 91av欧美 | 国产一区视频在线 | 久久综合9988久久爱 | 国产日韩欧美在线免费观看 | 亚洲影视九九影院在线观看 | 日韩三级中文字幕 | 麻豆av一区二区三区在线观看 | 免费观看特级毛片 | 日韩欧美国产成人 | 成人av免费播放 | 国产xxxxx在线观看 | 日韩91av | 亚洲精品视频在线观看免费视频 | 在线观看蜜桃视频 | 国产精品福利在线播放 | 欧美日韩一级久久久久久免费看 | 免费看日韩 | 久久久久久久福利 | 俺要去色综合狠狠 | 欧美日韩另类视频 | 日韩久久精品一区二区三区 | 草樱av| 日韩天天综合 | 激情久久综合 | 精品1区二区| 天天综合亚洲 | 99久久久久久 | 中文字幕在线一区二区三区 | www.神马久久 | 精品国产亚洲一区二区麻豆 | 亚洲热视频 | 人人草人人草 | 日韩精品中文字幕在线播放 | 国产精品门事件 | 日韩在线视频在线观看 | 国产xxxx做受性欧美88 | 丰满少妇在线观看 | 久久艹国产视频 | 国产91精品久久久久久 | 超碰在线观看av.com | 国产一区网址 | 亚洲精品国产欧美在线观看 | avsex| 国产精品1区2区3区在线观看 | 色伊人网| 3d黄动漫免费看 | 特级片免费看 | 日日夜夜天天综合 | 九九热在线观看 | 国产色婷婷| 久99精品| 色视频网站在线观看一=区 a视频免费在线观看 | 狠狠狠色丁香综合久久天下网 | 91福利国产在线观看 | 久久免费的视频 | 在线观看一级片 | 国产不卡精品 | 九九免费在线视频 | 97综合在线 | 超碰97.com| 三级av在线免费观看 | 欧美二区三区91 | 中文字幕日韩av | 国产精品毛片一区二区三区 | 91精品成人久久 | 91综合视频在线观看 | 婷婷四房综合激情五月 | 91av在线不卡 | 久久99精品久久久久蜜臀 | 中文乱幕日产无线码1区 | 99精品偷拍视频一区二区三区 | 伊人影院av | 日日操日日插 | 九九精品在线观看 | 国产精品九九九九九 | 婷婷av电影| 国产精品一区在线观看 | 国产精品99久久99久久久二8 | 亚洲人成免费网站 | 不卡日韩av | 久久99热这里只有精品国产 | 日韩成人精品 | www.天天射.com | 91精品视频网站 | 国产无套一区二区三区久久 | 国产 日韩 欧美 中文 在线播放 | 亚洲成人精品久久 | 亚洲 在线| 亚洲福利精品 | 精品福利视频在线观看 | 久久久久久片 | 99免费观看视频 | 天天躁日日躁狠狠躁 | 久久久久久久久久久久久久电影 | 久草五月 | 91人人澡人人爽人人精品 | 日日操操操 | 天堂va在线观看 | 97超碰在线播放 | 麻豆国产精品va在线观看不卡 | 97视频人人 | 久久99精品一区二区三区三区 | 欧洲精品久久久久毛片完整版 | 国产精品久久久久久久久大全 | 亚洲精品视频久久 | 亚洲精品国产精品国自产 | 91精品国产综合久久婷婷香蕉 | 特级毛片在线观看 | 日韩电影一区二区在线 | 久久久久久高清 | 深爱五月激情五月 | 91九色在线观看视频 | 国产成人精品av在线观 | 国内精品福利视频 | 国产精品久久久久影院 | 天堂av色婷婷一区二区三区 | 国产精品9区 | 97在线看| 亚洲 欧洲av| 国产中文视 | 国产人成免费视频 | 日韩一级片网址 | 久久久久观看 | 毛片二区 | 91日韩在线播放 | 亚洲区视频在线 |