• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于物聯(lián)網(wǎng)的嵌入式酒駕自動檢測系統(tǒng)設計

      2014-09-24 16:27蘆芝萍
      物聯(lián)網(wǎng)技術 2014年7期
      關鍵詞:發(fā)送給酒精編碼

      摘 要:針對目前因酒駕造成的交通事故頻發(fā)問題,提出了一種基于物聯(lián)網(wǎng)的車載酒駕自動檢測系統(tǒng)。系統(tǒng)利用物聯(lián)網(wǎng)技術,以STC12C5A16AD單片機為核心,通過4路MQ-3傳感器來檢測是否酒駕。當系統(tǒng)檢測到酒精濃度超標時,系統(tǒng)發(fā)出聲光報警并禁止汽車發(fā)動,同時通過GPRS模塊進行車輛定位,并將信息發(fā)送給家人和當?shù)亟煌ú块T。實驗結果表明,系統(tǒng)能有效預防酒后駕車,具有很好的實用價值。

      關鍵詞:物聯(lián)網(wǎng);酒駕;MQ-3;GPRS;MC55i

      中圖分類號:TP216 文獻標識碼:A 文章編號:2095-1302(2014)07-0008-04

      0引言

      近年來,隨著我國經(jīng)濟的快速發(fā)展,人民生活水平的不斷提高,全國機動車輛數(shù)量和駕駛員人數(shù)迅猛增長。汽車在給人們帶來生活便利、經(jīng)濟利益和生活品質(zhì)的同時,也帶來了交通事故。近年來道路交通事故頻發(fā),造成了嚴重的經(jīng)濟損失和人員傷亡。酒駕、超速和疲勞是交通事故高發(fā)的三個主要原因,這其中酒后駕車所引發(fā)的交通事故已占到總數(shù)相當大的比例。無視交通管理法規(guī)酒后及醉酒駕車造成嚴重后果的違法犯罪事件越來越多[1]。目前我國酒駕檢測主要是由交通警察在路口設置警點,使用呼氣式檢測儀器對過往可疑車輛進行攔車檢查[2]。但要進行路檢只能針對部分車輛抽樣檢測,以確定駕駛員是否酒駕,且無法實時監(jiān)控駕駛員酒后駕車情況[3]。而且進行路檢需要大量的人力和物力,另外一些酒后駕車者拒不配合檢測,也給我們交警的執(zhí)法帶來困難。

      為了更好地遏制酒駕,減少交通事故的發(fā)生。本文提出了一種基于物聯(lián)網(wǎng)的車載酒駕自動識別系統(tǒng)。系統(tǒng)利用目前流行的物聯(lián)網(wǎng)技術,以STC12C5A16AD單片機為核心,通過MQ-3傳感器來檢測是否酒駕。把傳感器嵌入駕駛室內(nèi),通過對駕駛座位的前方、上方和左右4個檢測點的酒精濃度檢測,判斷是否酒駕[4,5]。當檢測到酒駕后,系統(tǒng)發(fā)出聲光報警并禁止汽車發(fā)動,同時通過GPRS模塊將酒駕車輛信息實時地發(fā)送給家人和當?shù)亟煌ú块T[6]。這樣可以有效的預防酒駕,便于交通部門集中監(jiān)控,不再需要交警進行大規(guī)模的進行蹲點攔車檢測,節(jié)省的人力和物力[7]。

      系統(tǒng)借助物聯(lián)網(wǎng)技術,把每輛汽車作為一個節(jié)點,從眾多的節(jié)點傳感器采集數(shù)據(jù),然后通過無線傳輸技術把信息發(fā)送給家人和當?shù)亟煌ú块T總節(jié)點。系統(tǒng)整體結構如圖1所示,每輛汽車的通信對象有兩個:一個是家人,另一個是交通部門服務器。每輛汽車安裝一個車載酒駕自動檢測系統(tǒng),每個檢測系統(tǒng)主要由以下模塊組成:STC12C5A16AD單片機控制系統(tǒng)、呼氣式酒精傳感器MQ-3、LCD顯示模塊、聲光報警模塊、繼電器控制模塊和GPRS模塊。酒駕自動檢測系統(tǒng)的整體架構如圖2所示。

      1系統(tǒng)整體架構與工作原理

      1.1系統(tǒng)整體架構設計

      圖1系統(tǒng)整體架構圖

      圖2酒駕自動檢測系統(tǒng)結構圖

      1.2工作原理

      當駕駛員駕駛員扭動車輛鑰匙,檢測系統(tǒng)上電啟動,進行硬件初始化。酒駕自動檢測系統(tǒng)開始工作。4 路MQ-3傳感器把檢測到的模擬信號通過A/D轉(zhuǎn)換為數(shù)字信號,通過對此數(shù)字信號與預先設置的數(shù)值進行比較來判斷是否酒駕,并通過LCD液晶顯示屏顯示閥值與檢測值。STC 單片機對氣體中的酒精濃度信息進行分析,若濃度未超標,車輛正常行駛。一旦某一路傳感器檢測到的酒精濃度超出安全范圍,系統(tǒng)的LED 警示燈閃爍,同時把相關信息發(fā)送給預先設定好的家人的手機上,同時通過GPRS模塊發(fā)送信息給當?shù)亟煌ú块T,并通過蜂鳴器發(fā)出警報聲。

      2系統(tǒng)設計

      2.1單片機系統(tǒng)設計

      本系統(tǒng)的主控模塊采用的是宏晶科技生產(chǎn)的STC12C2052AD單片機,STC12C2052AD是一種高速、低功耗、超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)的8051,但速度快8~12倍。內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速8位A/D轉(zhuǎn)換。STC12C5A16AD單片機本身自帶8位高速ADC,所以大大簡化電路設計。單片機系統(tǒng)原理如圖3所示,圖3中的按鍵K2和K3可進行閾值設置,其中K2為“增加”、K3為“減小”按鍵。L2和L3為報警指示燈,分別可以進行酒后和醉酒兩級報警。醉酒閾值存儲在EEPROM芯片AT24C01中,并可以通過 “增加”、“減少”按鍵調(diào)節(jié)并保存。AT24C01是I2C接口的EEPROM芯片,可以用于掉電不易失數(shù)據(jù)的存儲。其電路如圖4所示。圖中A0、A1和A2為芯片的地址引腳,一般接地即可。SCL和SDA為AT24C04和單片機I2C通信的時鐘線和數(shù)據(jù)線。

      2.2繼電器控制電路

      繼電器控制電路主要功能是:當MQ-3傳感器檢測到酒精濃度超標時,利用控制繼電器控制車輛禁駕。繼電器控制接口與汽車點火與電噴電路相連接,通過單片機編程可控制汽車啟動。汽車電噴控制電路如圖5所示[7]。

      圖4外置存儲器電路圖

      圖5汽車電噴控制電路

      2.3顯示電路

      顯示部分采用SMC1602液晶屏進行顯示,該液晶顯示器以其低功耗、體積小、顯示內(nèi)容豐富、超薄、輕巧的優(yōu)點,在袖珍式儀表和低功耗應用系統(tǒng)中得到越來越廣泛的應用[8]。芯片工作電壓為4.5~5.5V,工作電流為2.0 mA,在本設計中采用5.0 V供電。液晶屏與單片機的接口電路如圖6所示,其中J2的3腳為背光引腳,R9和R10電阻用于調(diào)節(jié)背光亮度。J2的4、5和6腳分別接液晶的RS、E/W和E控制引腳,J2的7-14引腳為數(shù)據(jù)引腳。在1602液晶屏中顯示某位字符的程序如下:

      void L1602_char(uchar hang,uchar lie,char sign)

      {

      uchar a;

      if(hang == 1) a = 0x80;

      if(hang == 2) a = 0xc0;

      a = a + lie - 1;

      enable(a);

      write(sign);

      }

      2.4MQ-3傳感器電路

      人飲酒后,呼出的氣體含有酒精分子,通過檢測被測人呼氣酒精濃度,就可以判定其飲酒程度。另外氣體濃度檢測簡單易行,本設計中采用MQ-3酒精傳感器。檢測對象的血液酒精濃度由人體血液酒精含量與呼出氣體中的酒精濃度之間的比值關系計算得出。我國對酒駕的判定界限為100~300mg/L,當檢測到酒精濃度小于200 mg/L時,發(fā)動機可以正常啟動;而當檢測到濃度超過200 mg/L時,發(fā)動機電源切斷,發(fā)動機不能正常啟動。酒精傳感器的工作原理是根據(jù)人飲酒后血液里的酒精濃度值與呼出氣體的酒精濃度值有一個固定的比例關系,公式如下:

      血液酒精濃度(mg/L)=2 200*呼所酒精濃度(mg/L)

      圖6液晶電路設計

      由于MQ-3該傳感器的輸出信號為毫伏級電壓信號,因此需要對該信號進行放大后再經(jīng)模/數(shù)轉(zhuǎn)換傳遞給控制單元作進一步分析處理,其工作原理如圖7所示。進行A/D轉(zhuǎn)換的程序如下:

      圖7 MQ-3傳感器電路

      uchar GetADVal()

      {

      uint i;

      ADC_CONTR&=0xf7;

      for(i=250;i>0;i--);//待輸入電壓穩(wěn)定后開始轉(zhuǎn)換

      ADC_CONTR |= 0x08; //ADC_Start=1, 啟動轉(zhuǎn)換

      while((ADC_CONTR&0x10)==0); //等待轉(zhuǎn)換結束ADC_FLAG=1

      ADC_CONTR&=0xe7;

      return ADC_RES;

      }

      2.5GSM模塊電路

      無線通信模塊選用的是MC55i模塊,單片機通過串口發(fā)送AT命令給MC55i模塊,對其進行控制。當傳感器檢測到的酒精濃度超出安全范圍,MC55i無線模塊隨之啟動。通過移動基站的Cell-Id定位法,獲取車輛當前位置的信息,再利用GPRS模塊把相關信息通過短信發(fā)送給家人,并通過GPRS上傳到交管部門,便于采取相應的處理措施。AT+CREG指令控制MC55i模塊進行基站定位,獲取車輛的當前的位置信息。短消息編碼采用Unicode中文編碼。在發(fā)送短信時,對常用漢字進行裁剪,將常用漢字的字庫存入單片機FLASH中,漢字字符通過查表,將碼制置換為Unicode編碼,隨后設置短信協(xié)議為PDU模式,發(fā)送中文漢字。PDU模式不僅支持中文短信,也能發(fā)送英文短信。在PDU模式中,可以采用三種編碼方式來對發(fā)送的內(nèi)容進行編碼,它們是7-bit編碼、8-bit編碼和UCS2編碼(也就是16-bit編碼)。7-bit編碼用于發(fā)送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數(shù)據(jù),每8個字符可“壓縮”成7個;8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,比如圖片和鈴聲等;UCS2編碼用于發(fā)送Unicode字符。PDU串表面上是一串ASCII碼,由0~9、A~F這些數(shù)字和字母組成。它們是8位字節(jié)的十六進制數(shù),或者BCD碼十進制數(shù)。PDU串不僅包含可顯示的消息本身,還包含很多其他信息,如SMS服務中心號碼、目標號碼、回復號碼、編碼方式和服務時間等。

      將要發(fā)送的信息根據(jù)AT命令協(xié)議壓縮成一個PDU串,然后將該PDU串通過串口發(fā)送給GSM模塊,最后由GSM模塊發(fā)送給目標手機(這里指的是監(jiān)控中心的手機號碼),整個發(fā)送過程要結合上面所講的發(fā)送PDU結構來進行,具體函數(shù)包括:gsmEncode7bit()、gsmEncode8bit()、gsmEncodeUcs2()、gsmInvertNumbers()等。用函數(shù)gsmEncodePdu ()可將原始信息壓縮成PDU串的功能。以上函數(shù)都已包含在這個程序中,具有程序如下:

      int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst)

      {

      int nLength; // 內(nèi)部用的串長度

      int nDstLength; // 目標PDU串長度

      unsigned char buf[256]; // 內(nèi)部用的緩沖區(qū)

      nLength = strlen(pSrc->SCA);

      buf[0] = (char)((nLength & 1) == 0 ? nLength : nLength + 1) / 2 + 1;

      buf[1] = 0x91; // 固定: 用國際格式號碼

      nDstLength = gsmBytes2String(buf, pDst, 2); nDstLength += gsmInvertNumbers(pSrc->SCA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TPA);

      buf[0] = 0x11;

      buf[1] = 0; // TP-MR=0

      buf[2] = (char)nLength;

      buf[3] = 0x91; // 固定: 用國際格式號碼

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], 4);

      nDstLength += gsmInvertNumbers(pSrc->TPA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TP_UD);

      buf[0] = pSrc->TP_PID; // 協(xié)議標識(TP-PID)

      buf[1] = pSrc->TP_DCS;

      buf[2] = 0; // 有效期(TP-VP)為5分鐘

      if(pSrc->TP_DCS == GSM_7BIT)

      {

      buf[3] = nLength; // 編碼前長度

      nLength = gsmEncode7bit(pSrc->TP_UD, &buf[4], nLength+1) + 4;

      }

      else if(pSrc->TP_DCS == GSM_UCS2)

      {

      buf[3] = gsmEncodeUcs2(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      else

      {

      buf[3] = gsmEncode8bit(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], nLength);

      return nDstLength;

      }

      2.6供電電路

      本設計采用USB接口供電,電源電壓5 V。同時,USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機進行程序編寫,以及與GPRS模塊通信。其電路原理如圖8所示。

      圖8供電電路

      2.7軟件設計

      系統(tǒng)采用C語言進行編程,軟件設計的主流程如圖9所示。系統(tǒng)上電后,系統(tǒng)先進行初始化,然后傳感器會把檢測到的酒精濃度與設定到外置存儲器中的閾值進行比較,從而判斷酒精濃度是否超標。當檢測到濃度超過設定值200 mg/L時,系統(tǒng)通過繼電器切斷發(fā)動機電源,發(fā)動機不能正常啟動,同時把相關位置信息與酒駕信息發(fā)送給預先設定好的家人與當?shù)亟煌ú块T。

      圖9主程序流程圖

      3結語

      本文設計基于物聯(lián)網(wǎng)的酒駕自動檢測系統(tǒng)是采用STC12C5A16AD單片機作為主控系統(tǒng)。系統(tǒng)能夠自動對駕駛員酒精濃度檢測,根據(jù)檢測結果來控制發(fā)動機是否啟動,如果酒精含量超標則會發(fā)出聲光報警,并通過GPRS模塊向交通管理部門報警以及家人發(fā)送短消息。該系統(tǒng)體積小,功耗低,便于安裝等特點。測試結果表明,該系統(tǒng)可以實現(xiàn)很好的實時性和高精度,運行穩(wěn)定,具有可靠、適應力強的特點,達到了良好的控制效果,具有較好的使用價值。

      參 考 文 獻

      [1]段現(xiàn)星,王曉侃.基于單片機控制的車載酒精濃度檢測儀設計[J].測控技術,2013,32(8): 5-7,11.

      [2]李曉靜,劉書倫.基于物聯(lián)網(wǎng)的嵌入式酒駕智能辨識系統(tǒng)[J].制造業(yè)自動化,2012,34(21): 39-42.

      [3]徐京蓮,韓峻峰,潘盛輝,等.基于多傳感器融合的車載酒精檢測系統(tǒng)設計[J].儀表技術與傳感器,2010(7): 109-111.

      [4]郭東峰,李彥.基于物聯(lián)網(wǎng)的嵌入式酒駕自動檢測系統(tǒng)設計[J].計算機測量與控制,2013,21(3): 50-52.

      [5]卓鄭安,朱文立,黃敏.基于GPRS的智能酒精濃度檢測儀設計與應用[J].實驗技術與管理,2013,30(5): 53-56.

      [6]陳麗,朱瑞祥,云超.基于單片機的防酒后駕駛控制系統(tǒng)設計[J].傳感器與微系統(tǒng),2009,28(2): 100-102.

      [7]朱明,王亞坤,宋莉莉,等.基于MC55i的車載酒精檢測系統(tǒng)[J].儀表技術與傳感器,2012(6): 107-109.

      [8]周鴻武.基于單片機的酒精濃度檢測儀設計[J].制造業(yè)自動化,2012,34(2): 153-155.

      ————————————————

      收稿日期:2014-04-04

      作者簡介:蘆芝萍(1977—),女,常州第四中學(中學一級),江蘇寶應人、本科、學士。主要研究方向為計算機應用。

      while((ADC_CONTR&0x10)==0); //等待轉(zhuǎn)換結束ADC_FLAG=1

      ADC_CONTR&=0xe7;

      return ADC_RES;

      }

      2.5GSM模塊電路

      無線通信模塊選用的是MC55i模塊,單片機通過串口發(fā)送AT命令給MC55i模塊,對其進行控制。當傳感器檢測到的酒精濃度超出安全范圍,MC55i無線模塊隨之啟動。通過移動基站的Cell-Id定位法,獲取車輛當前位置的信息,再利用GPRS模塊把相關信息通過短信發(fā)送給家人,并通過GPRS上傳到交管部門,便于采取相應的處理措施。AT+CREG指令控制MC55i模塊進行基站定位,獲取車輛的當前的位置信息。短消息編碼采用Unicode中文編碼。在發(fā)送短信時,對常用漢字進行裁剪,將常用漢字的字庫存入單片機FLASH中,漢字字符通過查表,將碼制置換為Unicode編碼,隨后設置短信協(xié)議為PDU模式,發(fā)送中文漢字。PDU模式不僅支持中文短信,也能發(fā)送英文短信。在PDU模式中,可以采用三種編碼方式來對發(fā)送的內(nèi)容進行編碼,它們是7-bit編碼、8-bit編碼和UCS2編碼(也就是16-bit編碼)。7-bit編碼用于發(fā)送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數(shù)據(jù),每8個字符可“壓縮”成7個;8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,比如圖片和鈴聲等;UCS2編碼用于發(fā)送Unicode字符。PDU串表面上是一串ASCII碼,由0~9、A~F這些數(shù)字和字母組成。它們是8位字節(jié)的十六進制數(shù),或者BCD碼十進制數(shù)。PDU串不僅包含可顯示的消息本身,還包含很多其他信息,如SMS服務中心號碼、目標號碼、回復號碼、編碼方式和服務時間等。

      將要發(fā)送的信息根據(jù)AT命令協(xié)議壓縮成一個PDU串,然后將該PDU串通過串口發(fā)送給GSM模塊,最后由GSM模塊發(fā)送給目標手機(這里指的是監(jiān)控中心的手機號碼),整個發(fā)送過程要結合上面所講的發(fā)送PDU結構來進行,具體函數(shù)包括:gsmEncode7bit()、gsmEncode8bit()、gsmEncodeUcs2()、gsmInvertNumbers()等。用函數(shù)gsmEncodePdu ()可將原始信息壓縮成PDU串的功能。以上函數(shù)都已包含在這個程序中,具有程序如下:

      int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst)

      {

      int nLength; // 內(nèi)部用的串長度

      int nDstLength; // 目標PDU串長度

      unsigned char buf[256]; // 內(nèi)部用的緩沖區(qū)

      nLength = strlen(pSrc->SCA);

      buf[0] = (char)((nLength & 1) == 0 ? nLength : nLength + 1) / 2 + 1;

      buf[1] = 0x91; // 固定: 用國際格式號碼

      nDstLength = gsmBytes2String(buf, pDst, 2); nDstLength += gsmInvertNumbers(pSrc->SCA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TPA);

      buf[0] = 0x11;

      buf[1] = 0; // TP-MR=0

      buf[2] = (char)nLength;

      buf[3] = 0x91; // 固定: 用國際格式號碼

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], 4);

      nDstLength += gsmInvertNumbers(pSrc->TPA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TP_UD);

      buf[0] = pSrc->TP_PID; // 協(xié)議標識(TP-PID)

      buf[1] = pSrc->TP_DCS;

      buf[2] = 0; // 有效期(TP-VP)為5分鐘

      if(pSrc->TP_DCS == GSM_7BIT)

      {

      buf[3] = nLength; // 編碼前長度

      nLength = gsmEncode7bit(pSrc->TP_UD, &buf[4], nLength+1) + 4;

      }

      else if(pSrc->TP_DCS == GSM_UCS2)

      {

      buf[3] = gsmEncodeUcs2(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      else

      {

      buf[3] = gsmEncode8bit(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], nLength);

      return nDstLength;

      }

      2.6供電電路

      本設計采用USB接口供電,電源電壓5 V。同時,USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機進行程序編寫,以及與GPRS模塊通信。其電路原理如圖8所示。

      圖8供電電路

      2.7軟件設計

      系統(tǒng)采用C語言進行編程,軟件設計的主流程如圖9所示。系統(tǒng)上電后,系統(tǒng)先進行初始化,然后傳感器會把檢測到的酒精濃度與設定到外置存儲器中的閾值進行比較,從而判斷酒精濃度是否超標。當檢測到濃度超過設定值200 mg/L時,系統(tǒng)通過繼電器切斷發(fā)動機電源,發(fā)動機不能正常啟動,同時把相關位置信息與酒駕信息發(fā)送給預先設定好的家人與當?shù)亟煌ú块T。

      圖9主程序流程圖

      3結語

      本文設計基于物聯(lián)網(wǎng)的酒駕自動檢測系統(tǒng)是采用STC12C5A16AD單片機作為主控系統(tǒng)。系統(tǒng)能夠自動對駕駛員酒精濃度檢測,根據(jù)檢測結果來控制發(fā)動機是否啟動,如果酒精含量超標則會發(fā)出聲光報警,并通過GPRS模塊向交通管理部門報警以及家人發(fā)送短消息。該系統(tǒng)體積小,功耗低,便于安裝等特點。測試結果表明,該系統(tǒng)可以實現(xiàn)很好的實時性和高精度,運行穩(wěn)定,具有可靠、適應力強的特點,達到了良好的控制效果,具有較好的使用價值。

      參 考 文 獻

      [1]段現(xiàn)星,王曉侃.基于單片機控制的車載酒精濃度檢測儀設計[J].測控技術,2013,32(8): 5-7,11.

      [2]李曉靜,劉書倫.基于物聯(lián)網(wǎng)的嵌入式酒駕智能辨識系統(tǒng)[J].制造業(yè)自動化,2012,34(21): 39-42.

      [3]徐京蓮,韓峻峰,潘盛輝,等.基于多傳感器融合的車載酒精檢測系統(tǒng)設計[J].儀表技術與傳感器,2010(7): 109-111.

      [4]郭東峰,李彥.基于物聯(lián)網(wǎng)的嵌入式酒駕自動檢測系統(tǒng)設計[J].計算機測量與控制,2013,21(3): 50-52.

      [5]卓鄭安,朱文立,黃敏.基于GPRS的智能酒精濃度檢測儀設計與應用[J].實驗技術與管理,2013,30(5): 53-56.

      [6]陳麗,朱瑞祥,云超.基于單片機的防酒后駕駛控制系統(tǒng)設計[J].傳感器與微系統(tǒng),2009,28(2): 100-102.

      [7]朱明,王亞坤,宋莉莉,等.基于MC55i的車載酒精檢測系統(tǒng)[J].儀表技術與傳感器,2012(6): 107-109.

      [8]周鴻武.基于單片機的酒精濃度檢測儀設計[J].制造業(yè)自動化,2012,34(2): 153-155.

      ————————————————

      收稿日期:2014-04-04

      作者簡介:蘆芝萍(1977—),女,常州第四中學(中學一級),江蘇寶應人、本科、學士。主要研究方向為計算機應用。

      while((ADC_CONTR&0x10)==0); //等待轉(zhuǎn)換結束ADC_FLAG=1

      ADC_CONTR&=0xe7;

      return ADC_RES;

      }

      2.5GSM模塊電路

      無線通信模塊選用的是MC55i模塊,單片機通過串口發(fā)送AT命令給MC55i模塊,對其進行控制。當傳感器檢測到的酒精濃度超出安全范圍,MC55i無線模塊隨之啟動。通過移動基站的Cell-Id定位法,獲取車輛當前位置的信息,再利用GPRS模塊把相關信息通過短信發(fā)送給家人,并通過GPRS上傳到交管部門,便于采取相應的處理措施。AT+CREG指令控制MC55i模塊進行基站定位,獲取車輛的當前的位置信息。短消息編碼采用Unicode中文編碼。在發(fā)送短信時,對常用漢字進行裁剪,將常用漢字的字庫存入單片機FLASH中,漢字字符通過查表,將碼制置換為Unicode編碼,隨后設置短信協(xié)議為PDU模式,發(fā)送中文漢字。PDU模式不僅支持中文短信,也能發(fā)送英文短信。在PDU模式中,可以采用三種編碼方式來對發(fā)送的內(nèi)容進行編碼,它們是7-bit編碼、8-bit編碼和UCS2編碼(也就是16-bit編碼)。7-bit編碼用于發(fā)送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數(shù)據(jù),每8個字符可“壓縮”成7個;8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,比如圖片和鈴聲等;UCS2編碼用于發(fā)送Unicode字符。PDU串表面上是一串ASCII碼,由0~9、A~F這些數(shù)字和字母組成。它們是8位字節(jié)的十六進制數(shù),或者BCD碼十進制數(shù)。PDU串不僅包含可顯示的消息本身,還包含很多其他信息,如SMS服務中心號碼、目標號碼、回復號碼、編碼方式和服務時間等。

      將要發(fā)送的信息根據(jù)AT命令協(xié)議壓縮成一個PDU串,然后將該PDU串通過串口發(fā)送給GSM模塊,最后由GSM模塊發(fā)送給目標手機(這里指的是監(jiān)控中心的手機號碼),整個發(fā)送過程要結合上面所講的發(fā)送PDU結構來進行,具體函數(shù)包括:gsmEncode7bit()、gsmEncode8bit()、gsmEncodeUcs2()、gsmInvertNumbers()等。用函數(shù)gsmEncodePdu ()可將原始信息壓縮成PDU串的功能。以上函數(shù)都已包含在這個程序中,具有程序如下:

      int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst)

      {

      int nLength; // 內(nèi)部用的串長度

      int nDstLength; // 目標PDU串長度

      unsigned char buf[256]; // 內(nèi)部用的緩沖區(qū)

      nLength = strlen(pSrc->SCA);

      buf[0] = (char)((nLength & 1) == 0 ? nLength : nLength + 1) / 2 + 1;

      buf[1] = 0x91; // 固定: 用國際格式號碼

      nDstLength = gsmBytes2String(buf, pDst, 2); nDstLength += gsmInvertNumbers(pSrc->SCA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TPA);

      buf[0] = 0x11;

      buf[1] = 0; // TP-MR=0

      buf[2] = (char)nLength;

      buf[3] = 0x91; // 固定: 用國際格式號碼

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], 4);

      nDstLength += gsmInvertNumbers(pSrc->TPA, &pDst[nDstLength], nLength);

      nLength = strlen(pSrc->TP_UD);

      buf[0] = pSrc->TP_PID; // 協(xié)議標識(TP-PID)

      buf[1] = pSrc->TP_DCS;

      buf[2] = 0; // 有效期(TP-VP)為5分鐘

      if(pSrc->TP_DCS == GSM_7BIT)

      {

      buf[3] = nLength; // 編碼前長度

      nLength = gsmEncode7bit(pSrc->TP_UD, &buf[4], nLength+1) + 4;

      }

      else if(pSrc->TP_DCS == GSM_UCS2)

      {

      buf[3] = gsmEncodeUcs2(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      else

      {

      buf[3] = gsmEncode8bit(pSrc->TP_UD, &buf[4], nLength);

      nLength = buf[3] + 4;

      }

      nDstLength += gsmBytes2String(buf, &pDst[nDstLength], nLength);

      return nDstLength;

      }

      2.6供電電路

      本設計采用USB接口供電,電源電壓5 V。同時,USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機進行程序編寫,以及與GPRS模塊通信。其電路原理如圖8所示。

      圖8供電電路

      2.7軟件設計

      系統(tǒng)采用C語言進行編程,軟件設計的主流程如圖9所示。系統(tǒng)上電后,系統(tǒng)先進行初始化,然后傳感器會把檢測到的酒精濃度與設定到外置存儲器中的閾值進行比較,從而判斷酒精濃度是否超標。當檢測到濃度超過設定值200 mg/L時,系統(tǒng)通過繼電器切斷發(fā)動機電源,發(fā)動機不能正常啟動,同時把相關位置信息與酒駕信息發(fā)送給預先設定好的家人與當?shù)亟煌ú块T。

      圖9主程序流程圖

      3結語

      本文設計基于物聯(lián)網(wǎng)的酒駕自動檢測系統(tǒng)是采用STC12C5A16AD單片機作為主控系統(tǒng)。系統(tǒng)能夠自動對駕駛員酒精濃度檢測,根據(jù)檢測結果來控制發(fā)動機是否啟動,如果酒精含量超標則會發(fā)出聲光報警,并通過GPRS模塊向交通管理部門報警以及家人發(fā)送短消息。該系統(tǒng)體積小,功耗低,便于安裝等特點。測試結果表明,該系統(tǒng)可以實現(xiàn)很好的實時性和高精度,運行穩(wěn)定,具有可靠、適應力強的特點,達到了良好的控制效果,具有較好的使用價值。

      參 考 文 獻

      [1]段現(xiàn)星,王曉侃.基于單片機控制的車載酒精濃度檢測儀設計[J].測控技術,2013,32(8): 5-7,11.

      [2]李曉靜,劉書倫.基于物聯(lián)網(wǎng)的嵌入式酒駕智能辨識系統(tǒng)[J].制造業(yè)自動化,2012,34(21): 39-42.

      [3]徐京蓮,韓峻峰,潘盛輝,等.基于多傳感器融合的車載酒精檢測系統(tǒng)設計[J].儀表技術與傳感器,2010(7): 109-111.

      [4]郭東峰,李彥.基于物聯(lián)網(wǎng)的嵌入式酒駕自動檢測系統(tǒng)設計[J].計算機測量與控制,2013,21(3): 50-52.

      [5]卓鄭安,朱文立,黃敏.基于GPRS的智能酒精濃度檢測儀設計與應用[J].實驗技術與管理,2013,30(5): 53-56.

      [6]陳麗,朱瑞祥,云超.基于單片機的防酒后駕駛控制系統(tǒng)設計[J].傳感器與微系統(tǒng),2009,28(2): 100-102.

      [7]朱明,王亞坤,宋莉莉,等.基于MC55i的車載酒精檢測系統(tǒng)[J].儀表技術與傳感器,2012(6): 107-109.

      [8]周鴻武.基于單片機的酒精濃度檢測儀設計[J].制造業(yè)自動化,2012,34(2): 153-155.

      ————————————————

      收稿日期:2014-04-04

      作者簡介:蘆芝萍(1977—),女,常州第四中學(中學一級),江蘇寶應人、本科、學士。主要研究方向為計算機應用。

      猜你喜歡
      發(fā)送給酒精編碼
      上學路上好風景
      基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達圖像配準
      75%醫(yī)用酒精
      《全元詩》未編碼疑難字考辨十五則
      子帶編碼在圖像壓縮編碼中的應用
      Genome and healthcare
      跟蹤導練(一)(2)
      酒精除臭
      公告
      關注微信,分享資訊,免費獲取電子閱讀卡
      方山县| 昌江| 达拉特旗| 抚远县| 潜山县| 十堰市| 平远县| 渝中区| 安溪县| 社会| 高陵县| 繁峙县| 金溪县| 洪雅县| 大港区| 丹寨县| 克东县| 东平县| 林州市| 页游| 灌云县| 托克托县| 罗甸县| 临泉县| 永新县| 永丰县| 华安县| 民勤县| 祁东县| 大化| 芜湖市| 乌恰县| 尼木县| 保山市| 建平县| 聂荣县| 台北县| 梓潼县| 沛县| 昌宁县| 黑水县|