色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項(xiàng)目 > 多功能環(huán)境狀態(tài)檢測記錄儀

多功能環(huán)境狀態(tài)檢測記錄儀

環(huán)境是我們重要的生存條件,因而對它的了解也就是一件十分必要的事情。該作品以AB32VG1為處理核心,通過數(shù)字式傳感器的配合來獲取環(huán)境的溫度、光照強(qiáng)度、大氣壓等,除外通過A/D轉(zhuǎn)換器與模擬量傳感器的配合可檢測土壤濕度等狀態(tài),只是所用的傳感器存在差異而已,在結(jié)構(gòu)上不存在其他方面的變化。

jinglixixi jinglixixi

分享
0 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

jinglixixi jinglixixi

團(tuán)隊(duì)成員

李靜 實(shí)驗(yàn)師

分享
項(xiàng)目簡介
環(huán)境是我們重要的生存條件,因而對它的了解也就是一件十分必要的事情。該作品以AB32VG1為處理核心,通過數(shù)字式傳感器的配合來獲取環(huán)境的溫度、光照強(qiáng)度、大氣壓等,除外通過A/D轉(zhuǎn)換器與模擬量傳感器的配合可檢測土壤濕度等狀態(tài),只是所用的傳感器存在差異而已,在結(jié)構(gòu)上不存在其他方面的變化。
硬件說明

該作品在硬件方面以AB32VG1為處理核心,并配以相應(yīng)的功能模塊來實(shí)現(xiàn)設(shè)計(jì)要求,所涉及到的內(nèi)容包括數(shù)據(jù)的采集、檢測、顯示、設(shè)置、傳輸及記錄等。

為了便于標(biāo)記檢測的時(shí)間點(diǎn),所用的是片內(nèi)的RTC計(jì)時(shí)器。為了體現(xiàn)檢測儀器的便攜式特點(diǎn),所用的顯示器件為0.96寸的彩色OLED屏,并實(shí)現(xiàn)圖標(biāo)化的界面顯示。作為一個(gè)數(shù)據(jù)記錄儀,其采集的數(shù)據(jù)是以文件的形式存放到TF卡中,以便于數(shù)據(jù)的提取和交換。為了便于對RTC計(jì)時(shí)器進(jìn)行時(shí)間的設(shè)置和校正,是以板載的紅外接收器與外部的紅外遙控器相配合來完成數(shù)值的輸入。

此外,為了更廣泛地突出數(shù)據(jù)共享的性能,該作品可利用串口為數(shù)據(jù)傳送的中介,以支持3種形式的應(yīng)用,即:借助無線透傳模塊以進(jìn)行數(shù)據(jù)的無線傳輸;與串口觸摸屏相連接以實(shí)現(xiàn)數(shù)據(jù)及波形的實(shí)時(shí)刷新;通過對數(shù)據(jù)進(jìn)行協(xié)議的封裝,可上傳到電腦以實(shí)現(xiàn)界面的控件驅(qū)動顯示,如指針式表盤、刻度計(jì)及進(jìn)度球等顯示形式。另外,還可控制MP3語音模塊來播報(bào)當(dāng)前的功能處理等。


image.png

圖1 功能框圖


1.器件引腳分配


1)OLED顯示屏

該作品所選用的顯示屏是一款0.96寸的彩色OLED屏,它以SPI接口的方式來工作。驅(qū)動該顯示屏有2種方式,一種是采用硬件的方式,另一種則是以軟件的方式,這里上用的是軟件的方式。該顯示屏的顯示分辨率為80*160像素,在顯示數(shù)據(jù)的同時(shí)也能夠相應(yīng)的圖標(biāo)來美化界面。

image.png

圖2 OLED顯示屏

該顯示屏與開發(fā)板的連接關(guān)系為:

SCL--- PE3

SDA--- PE2

RES--- PA0

DC --- PA2

CS --- PA1

BLK--- PE4

所使用的引腳由Arduino擴(kuò)展接口引出,見圖3所示。

image.png

圖3 所用 Arduino接口

2)TF卡

所用的TF卡接口是開發(fā)板自身所配備的,其接口如圖4所示。

image.png

圖4 TF卡接口

該接口所占用的引腳資源為:

SD_CMD--- PB0

SD_CLK--- PB1

SD_DAT--- PB2

SD_DET--- PE5

在作品中主要是通過在讀取圖片數(shù)據(jù)來繪制圖案,從而可以有效地減少對程序存儲空間的消耗;在存儲方面,則是通過TF卡將檢測數(shù)據(jù)寫入文件中進(jìn)行保存,其形式如圖5所示。

image.png

圖5文件格式

3)IR接收

為減少引腳的占用,設(shè)置數(shù)據(jù)是以紅外遙控器的方式,板載的IR接收器接口如圖6所示,其占用的引腳為PE6,需短接來使用。

image.png


圖6 紅外接收接口

該接收器同遙控器相配合,可完成RTC校時(shí)處理及功能切換。


4)數(shù)字式傳感器

為進(jìn)行環(huán)境檢測,所有的數(shù)字式傳感器為光強(qiáng)傳感器BH1750和溫度氣壓傳感器BMP085,這2個(gè)器件均以I2C接口的方式工作。

這2個(gè)傳感器所占用的引腳為:

BH1750

SCK--- PA6

SIN--- PE7

BMP085

SCL--- PF0

SDA--- PE0

5)串口顯示屏

TOPWAY智能TFT顯示模塊是一款可通過串口和RJ45網(wǎng)口控制的電容觸摸屏,其顯示分辨率為1024x600,通過串口可使其顯示檢測值并繪制出波形曲線。

6)MP3語音播放模塊

MP3音頻模塊是一種可以串口進(jìn)行控制的器件,用該模塊可提高語音播放的并行性。

image.png

圖7 MP3引腳功能

7)串行通訊

板上可供數(shù)據(jù)傳送的串口為UART1,其引腳功能為:

TX1--- PA4

RX1--- PA3

8)A/D轉(zhuǎn)換及傳感器

板上可直接使用A/D轉(zhuǎn)換的引腳為ADC0所對應(yīng)的PA5,用它連接外部的模擬量傳感器以檢測外部環(huán)境的狀態(tài),如土壤濕度、所含的氣體和氣味等。

image.png

圖8土壤濕度傳感器

image.png

圖9土壤濕度傳感器、MP3語音模塊及紅外遙控器的使用

image.png

圖10 智能顯示模塊的使用

軟件說明

軟件的程序處理流程為:


image.png                                               

圖11處理流程

image.png

圖12功能狀態(tài)切換流程

image.png

圖13 RTC設(shè)置與校時(shí)流程圖


圍繞著硬件的設(shè)計(jì),在軟件方面也配以相應(yīng)的函數(shù)來實(shí)現(xiàn)對應(yīng)的功能。

1)OLED 屏顯示

void LCD_ShowChar(u16 x,u16 y,u8 num,u8 mode,u16 color)
{
   u8 temp;
   u8 pos,t;
   u16 x0=x;
   if(x>LCD_W-16||y>LCD_H-16) return;
   num=num-' ';
   LCD_Address_Set(x,y,x+8-1,y+16-1);
   if(!mode)
   {
        for(pos=0;pos<16;pos++)
        {
           temp=asc2_1608[(u16)num*16+pos];
           for(t=0;t<8;t++)
           {
              if(temp&0x01)LCD_WR_DATA(color);
              else LCD_WR_DATA(BACK_COLOR);
              temp>>=1;
               x++;
           }
           x=x0;
           y++;
       }
   }
   else
   {
        for(pos=0;pos<16;pos++)
        {
            temp=asc2_1608[(u16)num*16+pos];
            for(t=0;t<8;t++)
            {
                if(temp&0x01)LCD_DrawPoint(x+t,y+pos,color);
                temp>>=1;
            }
        }
    }
}
 
void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
{
    while(*p!='\0')
   {
        if(x>LCD_W-16){x=0;y+=16;}
        if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
        LCD_ShowChar(x,y,*p,0,color);
        x+=8;
        p++;
    }
}

為顯示漢字,需提取相應(yīng)的字模,作品所用的字模由工具軟件PCtoLCD2002提取。

為顯示圖片,所用的圖片制備工具為Image2Lcd。

2)RTC計(jì)時(shí)

使用片內(nèi)RTC顯示計(jì)時(shí)值得格式為:

Sun Sep 12 21:24:36 2021

為便于觀察,實(shí)現(xiàn)RTC電子時(shí)鐘顯示效果的程序?yàn)椋?/span>

void LCD_ShowStringk(u16 x,u16 y,const u8 *p,u16 color)
{
        int j=0;
        x=84;
        y=56;
        while(j<24)
        {
            if(j==4)
            {
                y=20;
                x=84;
            }
            if(j==11)
            {
                y=40;
                x=84;
            }
            if(j==20)
            {
                y=4;
                x=84;
            }
            LCD_ShowChar(x,y,*p,0,color);
            x+=8;
            p++;
            j++;
        }
}


3)紅外遙控

在使用電視遙控器的情況下,以遙控器設(shè)置RTC的程序?yàn)椋?/span>

  LCD_ShowString(4,4,"2000-00-00",WHITE);
  i=0;
  f=0;
  while(f<3)
  {
      test_irda();
      if(cs<11)
      {
        if(cs==0x0a)
        {
           LCD_ShowString(20,60,"OK",YELLOW);
           if(f==0) yy=2000+i;
           if(f==1) mm=i;
           if(f==2) dd=i;
           i=0;
           f++;
        }
        else
        {
           i=(i%10)*10+cs;
           LCD_ShowNum(20+f*24,4,i,2,WHITE);
           LCD_ShowString(20,60,"  ",YELLOW);
        }
        cs=12;
        rt_thread_mdelay(100);
    }  
  }

  ret = set_date(yy, mm, dd);


4)數(shù)字式傳感器檢測

讀取光照強(qiáng)度檢測值的函數(shù)為:

void Get_Sunlight_Value()
{
    int dis_data=0;
    float temp;
    char i=0;
    unsigned int sd;
    Single_Write_BH1750(0x01);
    Single_Write_BH1750(0x10);
    rt_thread_mdelay(180);
    Multiple_Read_BH1750();
    for(i=0;i<3;i++)   dis_data=BUF[0];
    dis_data=(dis_data <<8)+BUF[1];
    temp=(float)dis_data/1.2;
    sd=temp;
    OLED_ShowString(0,2,"Sunlight=     lx",16);
    OLED_ShowNum(72,2,sd,5,16);
}


讀取溫度與氣壓的函數(shù)為:

long bmp085ReadTemp(void)
{
      BMP085_Start();
      BMP085_Send_Byte(BMP085_SlaveAddress);
      while(BMP085_Wait_Ack()){}
      BMP085_Send_Byte(0xF4);
      while(BMP085_Wait_Ack()){}
      BMP085_Send_Byte(0x2E);
      while(BMP085_Wait_Ack()){}
      BMP085_Stop();
      rt_thread_mdelay(10);
      return (long) Multiple_read(0xF6);
}
 
long bmp085ReadPressure(void)
{
    long pressure = 0;
    BMP085_Start();
    BMP085_Send_Byte(BMP085_SlaveAddress);
    while(BMP085_Wait_Ack()){}
    BMP085_Send_Byte(0xF4);
    while(BMP085_Wait_Ack()){}
    BMP085_Send_Byte(0x34);
    while(BMP085_Wait_Ack()){}
    BMP085_Stop();
    rt_thread_mdelay(10);
    pressure = Multiple_read(0xF6);
    pressure&= 0x0000FFFF;
    return pressure;
}


5)模擬量采集

實(shí)現(xiàn)模擬量采集的程序?yàn)椋?/span>

    adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
    if (adc_dev == RT_NULL)
    {
        while(1);
    }
    else{
    ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
    }

    while(k==2)
    {
            value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
            LCD_ShowString(80,12, "value=",RED);
            LCD_ShowNum(128,12,value,5,RED);
            vol = value * REFER_VOLTAGE /CONVERT_BITS;
            LCD_ShowString(80,32, "U = . V",RED);
            LCD_ShowNum(104,32,vol/10,1,RED);
            LCD_ShowNum(120,32,vol%10,1,RED);
            rt_thread_mdelay(800);
            if(rt_pin_read(S2)==PIN_LOW) k=3;
            while(rt_pin_read(S2)==PIN_LOW);
            test_irda();
            if(cs==0x0b) k=3;

    }


6)TF卡讀寫

當(dāng)前TF卡的圖片文件,實(shí)現(xiàn)圖片再現(xiàn)的顯示函數(shù)為:

 void LCD_Picturea(void)
 {
      int i;
      LCD_Address_Set(0,0,79,79);
      for(i=0;i<6400;i++)
      {
            LCD_WR_DATA8(gImage_cgq[i*2]);
            LCD_WR_DATA8(gImage_cgq[i*2+1]);
      }
}

7)串口通訊

在串口通信方面所用的是UART1,其接口如圖14所示。

image.png

圖14 串口引腳

通過對數(shù)據(jù)的協(xié)議封裝,可驅(qū)動MicroLab界面內(nèi)的控件。

image.png

圖15 驅(qū)動控件

實(shí)現(xiàn)控件驅(qū)動的程序?yàn)椋?/span>

    while(1)
    {
           xy(1,0,75); //濕度
           rt_thread_mdelay(50);
           x=vol*100/33;
           xy(2,0,80); //電壓
           rt_thread_mdelay(50);
           x=temperature/10;
           xy(0,0,x); //溫度
           rt_thread_mdelay(50);
           x=82;
           xy(0,1,x); //濕度
           rt_thread_mdelay(50);
           x=sd;
           xy(3,0,x); //光強(qiáng)
           rt_thread_mdelay(1000);
           x=pressure/100;
           xy(3,1,x); //氣壓
           rt_thread_mdelay(1000);
           Get_Sunlight_Value(0);
           value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
           vol = value * REFER_VOLTAGE /CONVERT_BITS;
           bmp085Convert();
    }


另外,使用串口可控制MP3語音模塊對當(dāng)前所執(zhí)行的功能進(jìn)行語音提示。

此外,還可利用串口來控制智能顯示模塊來顯示檢測值及漢字?jǐn)?shù)據(jù)波形。

image.png

圖16 智能顯示模塊界面

image.png

圖17 智能顯示模塊控制

演示效果

image.png

圖18主界面

image.png

圖19 RTC校時(shí)

image.png

圖20 電子時(shí)鐘

image.png

圖21 環(huán)境檢測

image.png

圖22 模擬量檢測

image.png

圖23 數(shù)據(jù)記錄

image.png

圖24 串口屏數(shù)據(jù)傳輸

image.png

圖25 語音提示

image.png

圖26 無線數(shù)據(jù)透傳


視頻:


附件

(10.36 MB)下載

評論區(qū)(0 )
主站蜘蛛池模板: 天美麻豆成人AV精品| www黄色com| 久久综合色视频| yellow日本动漫观看免费| 伊人久久精品AV无码一区| 嫩小幼处在线| 久久日本精品国产精品| 国产人妻人伦精品熟女麻豆| 波多野结衣 无码片| 2021乱码精品公司| 偷拍 拍自 欧美色区| 青青久| 国产综合18久久久久久软件| 国产99精品视频| japonensis护士| 亚洲免费视频网站| 欧美最猛性xxxxx亚洲精品| 国产色精品VR一区二区| 99精品国产电影| 最近中文字幕MV免费高清在线 | 男生互捏jiji的故事| 国产h视频在线观看免费| 白丝萝莉喷水| 一本之道高清在线观看一区 | 失禁h啪肉尿出来高h| 欧美亚洲另类丝袜自拍动漫| 免费观看美女的网站| 蜜桃视频一区二区| 国产中文字幕在线| 国产一级特黄aa毛片| 国产一区二区三区在线看片| 爱暖暖1000部免费| RUNAWAY韩国动漫免费官网版| 99精品国产AV一区二区麻豆| 综合伊人久久| 最新国产在线视频在线| 97超碰97资源在线观看| 97视频免费观看2区| a视频免费在线观看| 菠萝菠萝蜜在线观看视频| 中文在线中文资源|