国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
    • 1、項(xiàng)目介紹
    • 2、硬件介紹
    • 3 項(xiàng)目框圖
    • 4、代碼講解
    • 5、效果展示
    • 6、結(jié)言
    • 7、代碼
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

周邊風(fēng)險(xiǎn)物檢測(cè)

05/28 16:59
216
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

code.zip

共1個(gè)文件

1、項(xiàng)目介紹

本次參加‘第二屆“2024 汽車應(yīng)用創(chuàng)意挑戰(zhàn)賽”’,由DigiKey得捷&ADI贊助。本次主要參與的方向是安全技術(shù)。

使用檢測(cè)器模塊時(shí)刻檢測(cè)周邊的物體距離和相對(duì)速度,并展示到上位機(jī)。

樹(shù)莓派作為數(shù)據(jù)中心,用于展示數(shù)據(jù),用于風(fēng)險(xiǎn)檢測(cè)報(bào)警。

2、硬件介紹

距離檢測(cè)模塊,使用激光來(lái)回時(shí)間差檢測(cè)距離,測(cè)試距離快且準(zhǔn)確。具有30°左右的視界,可以測(cè)試各個(gè)角度的物體距離。內(nèi)部具有一個(gè)arm m0核,用于快速檢測(cè)距離,并具有一個(gè)可信寄存器,用于決定是否取用距離值的可信度。

樹(shù)莓派5采用運(yùn)行頻率為2.4GHz的64位四核Arm Cortex-A76處理器,用了新的四核2.4 GHz Cortex-A76 Arm CPU(舊型號(hào)最初是Cortex-A72,主頻為1.5 GHz,但固件更新將其提升到1.8 GHz),新的南橋承載板承諾提高USB 3的吞吐量,并搭載了新的VideoCore VII GPU(樹(shù)莓派4上的VideoCore VI主頻為500 MHz,而VideoCore VII主頻為800 MHz)。整個(gè)板子上還有許多小的改進(jìn),包括帶有安裝孔的內(nèi)置風(fēng)扇連接器、雙攝像頭連接器,以及與更高速卡兼容的MicroSD卡讀卡器。

3 項(xiàng)目框圖

距離檢測(cè)模塊,已按照100ms的時(shí)間差,計(jì)算距離值,并于上次的距離值進(jìn)行計(jì)算,獲取即時(shí)速度。

樹(shù)莓派作為數(shù)據(jù)中心,等待網(wǎng)路的數(shù)據(jù),用于展示。

4、代碼講解

連接樹(shù)莓派服務(wù)器

static EventGroupHandle_t s_wifi_event_group;
#define HOST_IP_ADDR                 "192.168.2.137"
#define HOST_PORT                         6666

static int s_retry_num = 0;
static  char payload[256] = "Message from car race: 'hello'!!";
int car_sock  = 0;
void tcp_client_task()
{
    struct sockaddr_in dest_addr;
    inet_pton(AF_INET, HOST_IP_ADDR, &dest_addr.sin_addr);
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(HOST_PORT);
 
    car_sock =  socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if (car_sock < 0) {
        printf("[%s.%d] Unable to create socket: errno %dn",__func__,__LINE__, errno);
        return;
    }

    printf("[%s.%d]Socket created, connecting to %s:%dn",__func__,__LINE__, HOST_IP_ADDR, HOST_PORT);
        char rx_buffer[128];
    int err = connect(car_sock, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
    if (err != 0) {
        printf("[%s.%d] Socket unable to connect: errno %dn",__func__,__LINE__, errno);
        return;
    }
    printf("[%s.%d] Successfully connectedn",__func__,__LINE__);
        
    err = send(car_sock, payload, strlen(payload), 0);
    if (err < 0) {
        printf("[%s.%d] Error occurred during sending: errno %dn",__func__,__LINE__, errno);
        return;
    }

    memset(rx_buffer, 0, sizeof(rx_buffer));
    int len = recv(car_sock, rx_buffer, sizeof(rx_buffer) - 1, 0);
    if (len < 0) {
        printf("[%s.%d]recv failed: errno %dn",__func__,__LINE__, errno);
    } else {
        printf("[%s.%d]Received %d bytes from %s:n",__func__,__LINE__, len, HOST_IP_ADDR);
        printf("[%s.%d]data: %sn",__func__,__LINE__, rx_buffer);
    }
}

發(fā)送數(shù)據(jù)給數(shù)據(jù)中心

void sock_send_data(char *payload,int len)
{
        if(!car_sock) return;
    int err = send(car_sock, payload, len, 0);
    if (err < 0) {
        printf("[%s.%d] Error occurred during sending: errno %dn",__func__,__LINE__, errno);
    }

}

等待客戶端連接,并讀取數(shù)據(jù)

 while(1){
                addrlen=sizeof(struct sockaddr_in);
                connfd = accept(sockfd, (struct sockaddr *)&client_addr,&addrlen);
                if(connfd < 0){
                        perror("accept:");
                        goto err;
                }
                printf("連接的客戶端IP地址:%sn",inet_ntoa(client_addr.sin_addr));
                printf("連接的客戶端端口號(hào):%dn",ntohs(client_addr.sin_port));
                write(connfd,"hello you!",10);
                while(1){
                        memset(buf,0,sizeof(buf));
                        ret = read(connfd,buf,sizeof(buf));
                        if(ret < 0){
                                perror("read:");
                                break;
                        }else if(ret == 0){
                                printf("write close!n");
                                break;
                        }else{
                                printf("recv:%sn",buf);
                        }
                }
                close(connfd);        
        }

根據(jù)數(shù)據(jù)計(jì)算可用的距離值

uint16_t cal_distance(uint16_t *data)
{
        uint8_t cnts = 0;
        uint8_t max = 0;
        uint16_t valall = 0;
        uint16_t maxval = 0;
        uint16_t minval = 0xffff;
        while(max < 5){
                if(data[max]){
                        valall+=data[max];
                        if(maxval < data[max]){
                                maxval = data[max];
                        }
                        if(data[max] < minval){
                                minval = data[max];
                        }
                        cnts++;
                }
                max++;
        }
        if(3 <= cnts){
                valall = valall-maxval-minval;
                valall = valall/(cnts-2);
        }else{
                valall = 0;
        }
        return valall;
} 

計(jì)算速度

double preDis = 0;
double cuDis = 0;
double cuSudu = 0;
cuDis = cal_distance(spadz5);
cuSudu = (preDis - cuDis)*10;
preDis = cuDis;

5、效果展示

計(jì)算結(jié)果 有當(dāng)前物體與我距離,當(dāng)前物體的速度數(shù)據(jù)。

6、結(jié)言

非常開(kāi)心能夠參加本次活動(dòng),項(xiàng)目設(shè)計(jì)有點(diǎn)簡(jiǎn)單,初次使用樹(shù)莓派,很多細(xì)節(jié)不太了解,會(huì)持續(xù)使用樹(shù)莓派,學(xué)習(xí)更多知識(shí)。

本次活動(dòng)學(xué)習(xí)到了很多知識(shí),群里大佬們的知識(shí)很豐富,讓人心向往之。祝是非網(wǎng)論壇和得捷合作更多更好,提供更多更好的競(jìng)賽活動(dòng),再次感謝是非網(wǎng)論壇和得捷。

7、代碼

參考附件

  • code.zip
    下載
DigiKey得捷

DigiKey得捷

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

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

查看更多

相關(guān)推薦

碌曲县| 时尚| 屏山县| 石门县| 丹巴县| 屯留县| 涟水县| 南涧| 永昌县| 阿图什市| 城市| 门头沟区| 屏边| 拉孜县| 延庆县| 鲁甸县| 莲花县| 宾川县| 南宫市| 越西县| 北海市| 岑溪市| 隆子县| 葫芦岛市| 万宁市| 洞口县| 达孜县| 甘肃省| 门头沟区| 浦江县| 广饶县| 宁强县| 松江区| 岳普湖县| 临潭县| 石家庄市| 灵武市| 恩施市| 宜城市| 五大连池市| 格尔木市|