成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 方案介紹
    • 一、項目名稱:
    • 二、項目背景:
    • 三、功能簡述:
    • 四、硬件介紹:
    • 五、方案設(shè)計:
    • 六、程序部分代碼:
    • 七、成品照片:
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

汽車智能輔助數(shù)據(jù)采集探測系統(tǒng)

05/29 08:55
200
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

《2024 DigiKey 汽車應(yīng)用創(chuàng)意挑戰(zhàn)賽》汽車智能輔助數(shù)據(jù)采集探測系統(tǒng).zip.zip

共1個文件

一、項目名稱:

汽車智能輔助數(shù)據(jù)采集探測系統(tǒng)

二、項目背景:

現(xiàn)在人們對生活質(zhì)量的需求越來越高,尤其是在衣食住行方面,汽車屬于人們出行中必不可少的一種交通工具之一,隨著汽車工業(yè)的快速發(fā)展,智能化和網(wǎng)聯(lián)化成為主要趨勢。自動駕駛、ADAS等技術(shù)的普及,使得車輛對環(huán)境和自身狀態(tài)的感知需求大幅增加。智能輔助數(shù)據(jù)采集探測系統(tǒng)通過傳感器和算法實時采集并處理數(shù)據(jù),為駕駛決策提供支持。

三、功能簡述:

本次設(shè)計的基于單片機(jī)的汽車智能輔助數(shù)據(jù)采集探測系統(tǒng)采用單片機(jī)——傳感器——執(zhí)行器——通訊模組組合的硬件架構(gòu),后續(xù)單片機(jī)可以升級為單板機(jī)(如樹莓派5,或者其他高性能處理器)這樣可以支持更多的車機(jī)智能娛樂方面的需求。
在傳感器方面,采用常用且穩(wěn)定的傳感器模組,比如24G雷達(dá)模組實現(xiàn)前方障礙檢測,六軸傳感器實現(xiàn)對車輛的穩(wěn)定性檢測,使用環(huán)境傳感器針對車部的內(nèi)外環(huán)境進(jìn)行檢測,保證用戶可以實時了解周圍的環(huán)境情況。通過執(zhí)行器實現(xiàn)空氣氣囊/車內(nèi)外燈光的控制;利用cat1通訊模組實現(xiàn)對采集到的數(shù)據(jù)進(jìn)行云端通信,后續(xù)會擴(kuò)展成將車輛的狀態(tài),比如是否穩(wěn)定停車,車門是否正常關(guān)閉,車輛最后停車的位置信息等進(jìn)行數(shù)據(jù)推送。

四、硬件介紹:

本次設(shè)計的主控器暫定采用為STM32F103,傳感器模組中,環(huán)境傳感器采用DS18B20溫度傳感器MQ2煙霧傳感器、環(huán)境光傳感器;針對碰撞監(jiān)測傳感器采用24GHz毫米波雷達(dá)模塊CEM5826-M11(CEM5826-M11利用電磁波多普勒效應(yīng)對運(yùn)動目標(biāo)進(jìn)行探測。通過發(fā)射天線發(fā)射出24GHz 電磁波信號,該電磁波信號遇到運(yùn)動物體時會反射回帶有頻偏的24GHz 電磁波信號,此頻偏即為多普勒頻偏,反射回的信號被接收天線接收,通過對多普勒頻偏及中頻IQ 相位的采集計算分析可以較為靈敏地探測出附近的運(yùn)動物體以及運(yùn)動物體是靠近還是遠(yuǎn)離。當(dāng)探測到有運(yùn)動物體靠近時VO 輸出高電平,無運(yùn)動物體靠近時VO 輸出低電平。)在速度傳感器模組方面,采用BMI160六軸加速度+2合1陀螺儀功能,其陀螺儀可以支持實時監(jiān)測車輛速度與是否有側(cè)翻的危險情況發(fā)生。在執(zhí)行器方面,采用繼電器來實現(xiàn)控制一些需要開關(guān)量的設(shè)備,比如空氣氣囊,控制燈光等等。在與外界通訊方面,采用cat1方案,該方案可以很穩(wěn)定的運(yùn)行且成本可觀。并且該cat1模塊支持GNSS定位功能,保證可以獲取車輛的最后位置信息并回傳至后臺。

五、方案設(shè)計:

1、硬件框圖:
2、程序框圖:

六、程序部分代碼:

1、        關(guān)于BMI160傳感器程序部分代碼:
Bsp_Spi_Init();
        Bsp_Bmi160_Init();
        App_Bmi160_Init();
int8_t fifo_gyro_header_time_data(struct bmi160_dev *dev)
{
        int8_t rslt = 0;
        //uint16_t index = 0;

        struct bmi160_sensor_data accel_data[12]; // 300 bytes / ~7bytes per frame ~ 42 data frames        
        uint8_t accel_frames_req = 12; 
        uint8_t accel_index;
        
        /* Declare instances of the sensor data structure to store the parsed FIFO data */
        struct bmi160_sensor_data gyro_data[12]; // 300 bytes / ~7bytes per frame ~ 42 data frames        
        uint8_t gyro_frames_req = 12; 
        uint8_t gyro_index;
        
        /* Read data from the sensor's FIFO and store it the FIFO buffer,"fifo_buff" */
        printf("n USER REQUESTED FIFO LENGTH : %dn",dev->fifo->length);
        rslt = bmi160_get_fifo_data(dev);

        if (rslt == BMI160_OK) {
                printf("n AVAILABLE FIFO LENGTH : %dn",dev->fifo->length);
                /* Print the raw FIFO data */
                /*for (index = 0; index < dev->fifo->length; index++) {
                        printf("n FIFO DATA INDEX[%d] = 0x%02x", index,
                                dev->fifo->data[index]);
                }
                */
                
                /* ##################################GYRO DATA######################################### */                        
                /* Parse the FIFO data to extract gyro data from the FIFO buffer */
                printf("n REQUESTED GYRO DATA FRAMES : %dn ",gyro_frames_req);
                rslt = bmi160_extract_gyro(gyro_data, &gyro_frames_req, dev);

                if (rslt == BMI160_OK) {
                        printf("n AVAILABLE GYRO DATA FRAMES : %dn ",gyro_frames_req);
                        
                        /* Print the parsed gyro data from the FIFO buffer */
                        for (gyro_index = 0; gyro_index < gyro_frames_req; gyro_index++) {
                                printf("nFIFO GYRO FRAME[%d]",gyro_index);
                                printf("nGYRO X: %.2f°/st Y: %.2f°/st Z: %.2f°/s"
                                        ,GYRO_SWITCH_UNIT(gyro_data[gyro_index].x),GYRO_SWITCH_UNIT(gyro_data[gyro_index].y)
                                        ,GYRO_SWITCH_UNIT(gyro_data[gyro_index].z));
                        }
                } else {
                        printf("n Gyro data extraction failed");
                }


                /* ##################################ACCEL DATA######################################### */                        
                printf("n REQUESTED ACCEL DATA FRAMES : %dn ",accel_frames_req);
                rslt = bmi160_extract_accel(accel_data, &accel_frames_req, dev);        
                if (rslt == BMI160_OK) {
                        printf("n AVAILABLE ACCEL DATA FRAMES : %dn ",accel_frames_req);
                        
                        /* Print the parsed accel data from the FIFO buffer */
                        for (accel_index = 0; accel_index < accel_frames_req; accel_index++) {
                                printf("nFIFO ACCEL FRAME[%d]",accel_index);
                                printf("nACCEL X: %.2fg/s t Y: %.2fg/s t Z: %.2fg/s"
                                        ,ACCEL_SWITCH_UNIT(accel_data[accel_index].x), ACCEL_SWITCH_UNIT(accel_data[accel_index].y)
                                        ,ACCEL_SWITCH_UNIT(accel_data[accel_index].z));
                        }
                } else {
                        printf("n Accel data extraction failed");
                }
        } else {
                printf("n Reading FIFO data failed");
        }

        return rslt;
}

2、雷達(dá)部分的程序代碼:
        if(Radar_Flag)
        {
            Radar_Flag = 0;
            memcpy(Radar_buf, USART2_RX_BUF, 50);
            memset(USART2_RX_BUF, 0, 50);

            for(i = 0; i < 50; i++)
            {
                if(memcmp(Radar_Distance, &Radar_buf[i], 4) == 0)
                {                
                                                                                for(j = 0; j < 5; j ++)
                                                                                {
                                                                                        if(0x0d == Radar_buf[i + 4 + j])
                                                                                        {
                                                                                                switch(j)
                                                                                                {
                                                                                                        case 1:
                                                                                                                Radar = (Radar_buf[i + 4] - 0x30);
                                                                                                                break;
                                                                                                        case 2:
                                                                                                                Radar = (Radar_buf[i + 4] - 0x30) * 10 + (Radar_buf[i + 5] - 0x30);
                                                                                                                break;                                                                                                        
                                                                                                        case 3:
                                                                                                                Radar = (Radar_buf[i + 4] - 0x30) * 100 + (Radar_buf[i + 5] - 0x30) * 10 + (Radar_buf[i + 6] - 0x30);
                                                                                                                break;
                                                                                                        case 4:
                                                                                                                Radar = (Radar_buf[i + 4] - 0x30) * 1000 + (Radar_buf[i + 5] - 0x30) * 100 + (Radar_buf[i + 6] - 0x30) * 10 + (Radar_buf[i + 7] - 0x30);
                                                                                                                break;
                                                                                                        case 5:
                                                                                                                Radar = (Radar_buf[i + 4] - 0x30) * 10000 + (Radar_buf[i + 5] - 0x30) * 1000 + (Radar_buf[i + 6] - 0x30) * 100 + (Radar_buf[i + 8] - 0x30) * 10 + (Radar_buf[i + 9] - 0x30);
                                                                                                                break;                                                                                                        
                                                                                                }                                                                                        
                                                                                        }
                                                                                }
                    

                    if (Radar > 1000)                //有人
                    {
                    }
                    else        
                    {
                    }
                }
            }
        }

七、成品照片:

分別為整體運(yùn)行狀態(tài),上位機(jī)接收數(shù)據(jù)效果與手動控制模式(手動控制繼電器的功能)
系統(tǒng)整體結(jié)構(gòu)
傳給上位機(jī)的數(shù)據(jù)
手動控制模式(按鍵控制繼電器)
手動模式下關(guān)閉繼電器
參考附件
  • 《2024 DigiKey 汽車應(yīng)用創(chuàng)意挑戰(zhàn)賽》汽車智能輔助數(shù)據(jù)采集探測系統(tǒng).zip.zip
    下載
DigiKey得捷

DigiKey得捷

DigiKey 總部位于美國明尼蘇達(dá)州錫夫里弗福爾斯市,是一家獲得原廠授權(quán)的全球性、全類目電子元器件和自動化產(chǎn)品分銷商。我們通過分銷來自 2,300 多家優(yōu)質(zhì)品牌制造商的 1,020 多萬種元器件獲得了強(qiáng)大的技術(shù)優(yōu)勢。DigiKey 還為工程師、設(shè)計師、開發(fā)者和采購專業(yè)人員提供豐富的數(shù)字解決方案、無障礙互動和工具支持,以幫助他們提升工作效率。在中國,客戶可以通過電子郵件、電話和客服獲得全方位技術(shù)支持。如需了解更多信息和獲取 DigiKey 廣泛的產(chǎn)品,請訪問 www.digikey.cn 并關(guān)注我們的微信、微博、騰訊視頻和 BiliBili 賬號。

DigiKey 總部位于美國明尼蘇達(dá)州錫夫里弗福爾斯市,是一家獲得原廠授權(quán)的全球性、全類目電子元器件和自動化產(chǎn)品分銷商。我們通過分銷來自 2,300 多家優(yōu)質(zhì)品牌制造商的 1,020 多萬種元器件獲得了強(qiáng)大的技術(shù)優(yōu)勢。DigiKey 還為工程師、設(shè)計師、開發(fā)者和采購專業(yè)人員提供豐富的數(shù)字解決方案、無障礙互動和工具支持,以幫助他們提升工作效率。在中國,客戶可以通過電子郵件、電話和客服獲得全方位技術(shù)支持。如需了解更多信息和獲取 DigiKey 廣泛的產(chǎn)品,請訪問 www.digikey.cn 并關(guān)注我們的微信、微博、騰訊視頻和 BiliBili 賬號。收起

查看更多

相關(guān)推薦

梧州市| 石门县| 浦东新区| 阿拉善盟| 勃利县| 库车县| 江都市| 新蔡县| 光山县| 邵阳县| 长治县| 元江| 深州市| 博兴县| 如皋市| 鄄城县| 黔西县| 大同县| 高安市| 荥阳市| 阜宁县| 长顺县| 峨眉山市| 北宁市| 石家庄市| 左贡县| 连城县| 建阳市| 南部县| 屏山县| 财经| 巴马| 监利县| 安泽县| 济阳县| 临夏市| 大埔区| 镇平县| 磐石市| 综艺| 西平县|