亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Linux設(shè)計(jì)的倒車(chē)?yán)走_(dá)系統(tǒng)

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-25 09:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、項(xiàng)目背景介紹

隨著社會(huì)的不斷發(fā)展,人們對(duì)于汽車(chē)的安全性要求越來(lái)越高,而倒車(chē)?yán)走_(dá)系統(tǒng)就是為了增強(qiáng)汽車(chē)駕駛者的安全性而被廣泛使用。在這種情況下,我們開(kāi)發(fā)了一個(gè)基于Linux設(shè)計(jì)的倒車(chē)?yán)走_(dá)系統(tǒng),該系統(tǒng)可以采用迅為4412主控板,運(yùn)行Linux3.5內(nèi)核,使用USB攝像頭、TFT真彩顯示屏、超聲波測(cè)距模塊和蜂鳴器等硬件。

image-20230524162414354

二、創(chuàng)新點(diǎn)

本項(xiàng)目的創(chuàng)新點(diǎn)包括:

  1. 采用開(kāi)源Linux系統(tǒng):采用Linux系統(tǒng),具有很好的可擴(kuò)展性和靈活性,可以實(shí)現(xiàn)更為豐富和復(fù)雜的功能。
  2. 多個(gè)模塊的協(xié)同工作:本項(xiàng)目涉及到了攝像頭模塊、超聲波測(cè)距模塊、處理模塊、告警模塊和顯示模塊等多個(gè)模塊,這些模塊需要協(xié)同工作才能實(shí)現(xiàn)完整的功能。
  3. 實(shí)現(xiàn)了告警功能:本項(xiàng)目采用了蜂鳴器來(lái)實(shí)現(xiàn)告警功能,根據(jù)距離調(diào)整PWM輸出給出不同級(jí)別的告警聲音,能夠提醒駕駛者注意障礙物。

三、使用技術(shù)介紹

  1. 迅為4412主控板:本項(xiàng)目采用了迅為4412主控板,該主控板具有較高的性能和穩(wěn)定性,能夠滿(mǎn)足系統(tǒng)的運(yùn)行要求。
  2. Linux操作系統(tǒng):本項(xiàng)目采用了開(kāi)源的Linux操作系統(tǒng),具有很好的可擴(kuò)展性和靈活性,適合進(jìn)行自定義開(kāi)發(fā)。
  3. V4L2協(xié)議:V4L2協(xié)議是Linux下的一個(gè)視頻設(shè)備驅(qū)動(dòng)程序接口,可以方便地實(shí)現(xiàn)USB攝像頭的圖像采集。
  4. 超聲波測(cè)距模塊:通過(guò)GPIO口與主控板相連,使用定時(shí)器產(chǎn)生超聲波并計(jì)算與接收到回波之間的時(shí)間差,從而計(jì)算出與障礙物之間的距離。
  5. PWM輸出控制:根據(jù)距離調(diào)整PWM輸出給出不同級(jí)別的告警聲音。
  6. TFT真彩顯示屏:本項(xiàng)目采用了TFT真彩顯示屏,能夠?qū)崿F(xiàn)高清晰度的圖像顯示。
  7. 系統(tǒng)管理模塊:負(fù)責(zé)管理整個(gè)系統(tǒng)的啟動(dòng)、配置和錯(cuò)誤處理等操作。例如,可以將系統(tǒng)的啟動(dòng)腳本寫(xiě)在/etc/rc.local中,通過(guò)調(diào)用shell腳本來(lái)實(shí)現(xiàn)系統(tǒng)的初始化和啟動(dòng)。

四、系統(tǒng)架構(gòu)

整個(gè)系統(tǒng)由以下幾個(gè)模塊組成:

  1. 攝像頭模塊:負(fù)責(zé)采集車(chē)尾環(huán)境圖像,并傳輸給處理模塊。
  2. 超聲波測(cè)距模塊:負(fù)責(zé)與障礙物之間的距離測(cè)量,并將結(jié)果傳輸給處理模塊。
  3. 處理模塊:負(fù)責(zé)視頻顯示、距離信息的處理、告警功能的實(shí)現(xiàn)。
  4. 告警模塊:負(fù)責(zé)根據(jù)距離調(diào)整PWM輸出給出不同級(jí)別的告警聲音,并使用蜂鳴器輸出告警信息。
  5. 顯示模塊:負(fù)責(zé)將處理模塊生成的圖像顯示在TFT真彩顯示屏上。
  6. 系統(tǒng)管理模塊:負(fù)責(zé)管理整個(gè)系統(tǒng)的啟動(dòng)、配置和錯(cuò)誤處理等操作。

五、功能設(shè)計(jì)

  1. 攝像頭模塊 由于Linux系統(tǒng)具有很好的驅(qū)動(dòng)支持,因此可以直接使用V4L2協(xié)議來(lái)獲取USB攝像頭的圖像。獲取圖像后,需要通過(guò)DMA方式將數(shù)據(jù)傳輸給處理模塊進(jìn)行處理。
  2. 超聲波測(cè)距模塊 超聲波測(cè)距模塊可以通過(guò)GPIO口與主控板相連,使用定時(shí)器產(chǎn)生超聲波并計(jì)算與接收到回波之間的時(shí)間差,從而計(jì)算出與障礙物之間的距離。
  3. 處理模塊 處理模塊負(fù)責(zé)將攝像頭采集到的圖像和超聲波測(cè)距模塊測(cè)得的距離信息整合處理,并根據(jù)距離信息來(lái)控制告警模塊。
  4. 告警模塊 告警模塊根據(jù)處理模塊傳遞過(guò)來(lái)的距離信息來(lái)控制PWM輸出,并使用蜂鳴器輸出告警信息。
  5. 顯示模塊 顯示模塊負(fù)責(zé)將處理模塊生成的圖像顯示在TFT真彩顯示屏上,并實(shí)現(xiàn)顯示屏的刷新和管理操作。
  6. 系統(tǒng)管理模塊 系統(tǒng)管理模塊負(fù)責(zé)管理整個(gè)系統(tǒng)的啟動(dòng)、配置和錯(cuò)誤處理等操作。例如,可以將系統(tǒng)的啟動(dòng)腳本寫(xiě)在/etc/rc.local中,通過(guò)調(diào)用shell腳本來(lái)實(shí)現(xiàn)系統(tǒng)的初始化和啟動(dòng)。

六、攝像頭圖像顯示應(yīng)用代碼

#include 
 #include           /* See NOTES */
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include  
 #include 
 ?
 /* 圖片的象素?cái)?shù)據(jù) */
 typedef struct PixelDatas {
     int iWidth;      /* 寬度: 一行有多少個(gè)象素 */
     int iHeight;     /* 高度: 一列有多少個(gè)象素 */
     int iBpp;        /* 一個(gè)象素用多少位來(lái)表示 */
     int iLineBytes;  /* 一行數(shù)據(jù)有多少字節(jié) */
     int iTotalBytes; /* 所有字節(jié)數(shù) */ 
     unsigned char *VideoBuf; //存放一幀攝像頭的數(shù)據(jù)
     //指向了存放攝像頭數(shù)據(jù)的空間地址
 }T_PixelDatas;
 ?
 T_PixelDatas Pixedata; //存放實(shí)際的圖像數(shù)據(jù)
 ?
 /*
         USB攝像頭相關(guān)參數(shù)定義
 */
 struct v4l2_buffer tV4l2Buf;
 int iFd;
 int ListNum;
 unsigned char* pucVideBuf[4];  // 視頻BUFF空間地址
 void camera_pthread(void);
 ?
 //LCD屏相關(guān)的參數(shù)
 unsigned char *lcd_mem=NULL; /*LCD的內(nèi)存地址*/
 struct fb_fix_screeninfo finfo; /*固定形參*/
 struct fb_var_screeninfo vinfo; /*可變形參*/
 void LCD_Init(void);
 void show_pixel(int x,int y,int color);
 ?
 ?
 int main(int argc ,char *argv[])
 {
     if(argc!=2)
     {
         printf("./app /dev/videoX
");
         return -1;
     }
     
     LCD_Init(); //LCD屏初始化
     
     camera_init(argv[1]);  //攝像頭設(shè)備初始化
     
     //開(kāi)始采集攝像頭數(shù)據(jù),并實(shí)時(shí)顯示在LCD屏幕上
     camera_pthread();
     return 0;
 }
 ?
 ?
 ?
 //LCD屏初始化
 void LCD_Init(void)
 {
     /*1.打開(kāi)設(shè)備文件*/
     int fd=open("/dev/fb0",O_RDWR);
     if(fd<0)
     {
         printf("/dev/fb0設(shè)備文件打開(kāi)失敗!
");
         return;
     }
     
     /*2. 讀取LCD屏的參數(shù)*/
     ioctl(fd,FBIOGET_FSCREENINFO,&finfo);//固定參數(shù)
     printf("映射的長(zhǎng)度:%d
",finfo.smem_len);
     
     ioctl(fd,FBIOGET_VSCREENINFO,&vinfo);//可變參數(shù),32位
     printf("分辨率:%d*%d,%d
",vinfo.xres,vinfo.yres,vinfo.bits_per_pixel);
 ?
     /*3. 映射LCD的地址到進(jìn)程空間*/
     lcd_mem=mmap(NULL,finfo.smem_len,PROT_WRITE|PROT_READ,MAP_SHARED,fd,0);
     if(lcd_mem==NULL)
     {
         printf("lcd_mem映射失敗!
");
         return;
     }
     memset(lcd_mem,0xFFFFFFFF,finfo.smem_len);
 }
 ?
 /*畫(huà)點(diǎn)*/
 void show_pixel(int x,int y,int color)
 {
     unsigned long *show32 = NULL;
     /* 定位到 LCD 屏上的位置*/
     show32 =(unsigned long *)(lcd_mem + y*vinfo.xres*vinfo.bits_per_pixel/8 + x*vinfo.bits_per_pixel/8);
     *show32 =color; /*向指向的 LCD 地址賦數(shù)據(jù)*/
 }
 ?
 ?
 //顯示攝像頭的數(shù)據(jù)
 void Show_VideoData(int w,int h,unsigned char *rgb)
 {
     int i,j;
     int x0,x=0,y=0;
     int color; //顏色 值
     unsigned char r,g,b;
     x0=x;
     for(i=0;i

七、超聲波測(cè)距驅(qū)動(dòng)代碼

#include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 ?
 #include 
 #include 
 #include 
 ?
 #include 
 ?
 static int chaoshengbo_irq=0;
 ?
 #define GPB_CON  0x11400040
 #define GPB_DAT  0x11400044
 ?
 static u32 *gpb_con=NULL;
 static u32 *gpb_dat=NULL;
 ?
 /*
 硬件連接:
 輸出腳: GPX1_0 ---ECHO
 輸入腳: GPB_7 
 */
 static void tiny4412_work_func(struct work_struct *work)
 {   
     printk("GPB=%d
",*gpb_dat&1<<7);
 ?
     ktime_t my_time1,my_time2;
     unsigned int i,j;
     unsigned int time_cnt=0;
 ?
     my_time1=ktime_get();  //獲取當(dāng)前時(shí)間
     i=ktime_to_us(my_time1); //轉(zhuǎn) us
 ?
     while(gpio_get_value(EXYNOS4_GPX1(0))){} //高電平卡住
 ?
     
     my_time2=ktime_get(); //獲取當(dāng)前時(shí)間
     j=ktime_to_us(my_time2); //轉(zhuǎn) us
 ?
     printk("us:%d
",j-i);
 }
 ?
 static DECLARE_WORK(caoshengbotiny4412_work,tiny4412_work_func);
 ?
 /*
 中斷處理函數(shù)
 */
 irqreturn_t irq_handler_chaoshengbo(int irq, void *dev)
 {
     schedule_work(&caoshengbotiny4412_work); /*正常情況下:  是在中斷服務(wù)函數(shù)里面*/
     return IRQ_HANDLED; /*表示中斷已經(jīng)處理過(guò)了*/
 }
 ?
 static void timer_function(unsigned long data);
 static DEFINE_TIMER(timer_caoshengbo, timer_function,0,0);
 ?
 static void timer_function(unsigned long data)
 {
     static u8 state;
     state=!state;
     
     if(state)*gpb_dat|=1<<7;
     else *gpb_dat&=~(1<<7);
     
 ?
     mod_timer(&timer_caoshengbo,jiffies+msecs_to_jiffies(500)); 
 }
 ?
 static int __init tiny4412_chaoshengbo_init(void)
 {
     int i,err;
     /*獲取中斷號(hào)*/
     chaoshengbo_irq=gpio_to_irq(EXYNOS4_GPX1(0));
     printk("中斷號(hào):%d
",chaoshengbo_irq);
     
     /*外部中斷注冊(cè)*/
     err=request_irq(chaoshengbo_irq,irq_handler_chaoshengbo,IRQ_TYPE_EDGE_RISING,"tiny4412_chaoshengbo",NULL);
     if(err!=0)printk("中斷注冊(cè)失敗!
");
 ?
     /*映射內(nèi)存*/
     gpb_con=ioremap(GPB_CON,4);
     gpb_dat=ioremap(GPB_DAT,4);
 ?
     /*配置模式*/
     *gpb_con&=~(0xF<<4*7); //輸出模式   
     *gpb_con|=0x1<<4*7;
     
     mod_timer(&timer_caoshengbo,jiffies+msecs_to_jiffies(100));         
     return 0;
 }
 ?
 static void __exit tiny4412_chaoshengbo_exit(void)
 {
     free_irq(chaoshengbo_irq,NULL);
     iounmap(gpb_con);
     iounmap(gpb_dat);
     del_timer(&timer_caoshengbo);
 }
 ?
 module_init(tiny4412_chaoshengbo_init);  /*指定驅(qū)動(dòng)的入口函數(shù)*/
 module_exit(tiny4412_chaoshengbo_exit);  /*指定驅(qū)動(dòng)的出口函數(shù)*/
 MODULE_LICENSE("GPL");      /*指定驅(qū)動(dòng)許可證*/
 ?
 ?
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5178

    文章

    20067

    瀏覽量

    326769
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2938

    文章

    47113

    瀏覽量

    405109
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11592

    瀏覽量

    217401
  • 倒車(chē)?yán)走_(dá)

    關(guān)注

    4

    文章

    77

    瀏覽量

    24423
  • 雷達(dá)系統(tǒng)
    +關(guān)注

    關(guān)注

    7

    文章

    258

    瀏覽量

    29419
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    倒車(chē)雷達(dá)電路

    倒車(chē)雷達(dá)電路PCB打樣找華強(qiáng) http://www.hqpcb.com 樣板2天出貨
    發(fā)表于 11-30 20:58

    倒車(chē)雷達(dá)

    倒車(chē)雷達(dá)PCB打樣找華強(qiáng) http://www.hqpcb.com 樣板2天出貨
    發(fā)表于 12-01 09:00

    倒車(chē)雷達(dá)語(yǔ)音IC分享

    由深圳語(yǔ)音芯片廠家-深圳典科電子有限公司向大家推薦的一款會(huì)說(shuō)話(huà)的“倒車(chē)雷達(dá)語(yǔ)音芯片”-DKB035-8S系列語(yǔ)音芯片。當(dāng)我們倒車(chē)的時(shí)候倒車(chē)雷達(dá)
    發(fā)表于 03-25 21:51

    倒車(chē)雷達(dá)設(shè)計(jì)

    如題倒車(chē)雷達(dá)設(shè)計(jì),用單片機(jī)c51控制,有仿真圖
    發(fā)表于 05-08 21:29

    使用倒車(chē)雷達(dá)設(shè)計(jì)

    使用倒車(chē)雷達(dá)設(shè)計(jì)[audio][/audio]
    發(fā)表于 12-05 15:43

    倒車(chē)雷達(dá)應(yīng)用

    勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載94:倒車(chē)雷達(dá)實(shí)例特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUDfile:///C
    發(fā)表于 04-26 05:45

    怎么實(shí)現(xiàn)基于PSoC芯片的倒車(chē)雷達(dá)控制系統(tǒng)的設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于PSoC芯片的倒車(chē)雷達(dá)控制系統(tǒng)的設(shè)計(jì)?
    發(fā)表于 05-17 06:59

    請(qǐng)問(wèn)怎樣去設(shè)計(jì)一種倒車(chē)雷達(dá)系統(tǒng)?

    倒車(chē)雷達(dá)系統(tǒng)的硬件該怎樣去設(shè)計(jì)?倒車(chē)雷達(dá)系統(tǒng)的軟件該怎樣去設(shè)計(jì)?
    發(fā)表于 05-17 07:01

    實(shí)現(xiàn)汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)方法

    @[汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(初稿)]畢業(yè)設(shè)計(jì)(論文)題目:汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)電氣
    發(fā)表于 11-12 06:38

    何為倒車(chē)雷達(dá)

    為了便于開(kāi)發(fā),我做了一塊擴(kuò)展板子:擴(kuò)展板有一些常用器件,這樣開(kāi)發(fā)MSP430 F5529程序的時(shí)候,就不用杜邦線連接了。當(dāng)然也可以選擇杜邦線連接器件,效果都一樣。超聲波模塊的讀取:何為倒車(chē)雷達(dá)?車(chē)輛倒車(chē)時(shí)候的一個(gè)警報(bào)
    發(fā)表于 11-23 09:19

    四探頭倒車(chē)雷達(dá)

    是探頭倒車(chē)雷達(dá)
    發(fā)表于 04-05 21:11

    倒車(chē)雷達(dá)

    倒車(chē)雷達(dá)              倒車(chē)雷達(dá)是汽車(chē)泊車(chē)或者
    發(fā)表于 01-04 14:07 ?1694次閱讀

    汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)

    以STC12C5A60S2單片機(jī)和倒車(chē)主控芯片GM3101為核心部件,輔以溫度傳感器、液晶顯示器、語(yǔ)音芯片等外圍器件組成倒車(chē)雷達(dá)系統(tǒng),實(shí)現(xiàn)對(duì)有效測(cè)量范圍內(nèi)障礙物的精密距離測(cè)量、危險(xiǎn)等級(jí)
    發(fā)表于 09-23 15:19 ?554次下載
    汽車(chē)<b class='flag-5'>倒車(chē)</b><b class='flag-5'>雷達(dá)</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)

    基于Ameba的倒車(chē)雷達(dá)系統(tǒng)

    倒車(chē)雷達(dá)已經(jīng)非常普遍,這個(gè)專(zhuān)案做一個(gè)倒車(chē)雷達(dá)系統(tǒng)。將這個(gè)倒車(chē)
    的頭像 發(fā)表于 02-02 17:09 ?4019次閱讀

    汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(一)

    @[汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(初稿)]畢業(yè)設(shè)計(jì)(論文)題 目: 汽車(chē)倒車(chē)雷達(dá)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 11-07 09:21 ?12次下載
    汽車(chē)<b class='flag-5'>倒車(chē)</b><b class='flag-5'>雷達(dá)</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)與實(shí)現(xiàn)(一)