国产精品久久久久久亚洲影视,插我舔内射18免费视频,国产+精品+在线观看,国产精品18久久久久久麻辣,丰满少妇69激情啪啪无

0 賣盤信息
BOM詢價(jià)
您現(xiàn)在的位置: 首頁 > 技術(shù)方案 >工業(yè)控制 > 基于 Arduino UNO 的CO2測量儀(接線圖+代碼)

基于 Arduino UNO 的CO2測量儀(接線圖+代碼)

來源: 電路城
2021-11-16
類別:工業(yè)控制
eye 16
文章創(chuàng)建人 拍明

原標(biāo)題:基于 Arduino UNO 的CO2測量儀(接線圖+代碼)

cirmall

基于Arduino UNO的CO2測量儀:從原理到實(shí)踐的詳細(xì)指南

二氧化碳(CO2)是地球大氣中重要的組成部分,它在維持地球溫度、支持植物光合作用等方面發(fā)揮著關(guān)鍵作用。然而,過高濃度的CO2,尤其是在室內(nèi)環(huán)境中,會(huì)對(duì)人體健康產(chǎn)生負(fù)面影響,例如導(dǎo)致頭痛、疲勞、注意力不集中,甚至在極端情況下引發(fā)更嚴(yán)重的生理反應(yīng)。因此,實(shí)時(shí)監(jiān)測室內(nèi)CO2濃度對(duì)于保障居住和工作環(huán)境的健康與舒適至關(guān)重要。隨著物聯(lián)網(wǎng)技術(shù)和開源硬件的普及,個(gè)人和小型企業(yè)也能以較低的成本構(gòu)建自己的環(huán)境監(jiān)測系統(tǒng)。本文將詳細(xì)介紹如何利用Arduino UNO微控制器,結(jié)合高性能的MH-Z19B CO2傳感器和清晰的OLED顯示屏,搭建一個(gè)功能完善、易于操作的CO2測量儀。我們將深入探討每個(gè)核心元器件的工作原理、選擇理由、技術(shù)參數(shù),并提供詳盡的接線圖與注釋豐富的Arduino代碼,旨在為您提供一份從理論到實(shí)踐的全面指導(dǎo),使您能夠輕松復(fù)刻并理解這個(gè)項(xiàng)目。

在我們的CO2測量儀項(xiàng)目中,Arduino UNO R3將作為整個(gè)系統(tǒng)的“大腦”,負(fù)責(zé)協(xié)調(diào)各項(xiàng)任務(wù),包括從CO2傳感器讀取數(shù)據(jù)、處理這些數(shù)據(jù)、并通過OLED顯示屏實(shí)時(shí)展示結(jié)果。選擇Arduino UNO的原因在于其卓越的易用性、豐富的學(xué)習(xí)資源、龐大的開源社區(qū)支持以及極高的性價(jià)比。對(duì)于初學(xué)者而言,Arduino IDE(集成開發(fā)環(huán)境)簡潔直觀,編程語言基于C/C++,但經(jīng)過簡化,使得即使沒有深厚編程背景的用戶也能快速上手。其標(biāo)準(zhǔn)化的引腳布局和兼容性,使得連接各種傳感器和執(zhí)行器變得輕而易舉。MH-Z19B CO2傳感器則是我們獲取CO2濃度數(shù)據(jù)的核心,它采用了先進(jìn)的非分散紅外(NDIR)技術(shù),能夠提供相對(duì)準(zhǔn)確且穩(wěn)定的測量結(jié)果,同時(shí)其成本效益使其成為DIY項(xiàng)目的理想選擇。為了直觀地呈現(xiàn)測量數(shù)據(jù),我們選用了0.96英寸的OLED顯示屏,這種顯示屏以其高對(duì)比度、寬視角和低功耗的特點(diǎn),非常適合作為小型便攜式設(shè)備的用戶界面。此外,考慮到MH-Z19B傳感器的工作電壓為3.3V,而Arduino UNO通常提供5V電源,我們還需要一個(gè)DC-DC降壓模塊來確保傳感器的穩(wěn)定供電。通過本文的指導(dǎo),您將不僅學(xué)會(huì)如何組裝一個(gè)CO2測量儀,更將深入理解其背后的科學(xué)原理和技術(shù)細(xì)節(jié),為未來的更多創(chuàng)新項(xiàng)目打下堅(jiān)實(shí)基礎(chǔ)。

核心元器件詳解

構(gòu)建一個(gè)可靠的CO2測量儀,選擇合適的元器件是成功的關(guān)鍵。以下我們將詳細(xì)介紹本項(xiàng)目中使用的核心元器件,包括它們的功能、技術(shù)參數(shù)以及我們選擇它們的原因。

1. Arduino UNO R3微控制器

Arduino UNO R3是Arduino系列中最受歡迎的開發(fā)板之一,也是許多電子愛好者和工程師入門微控制器編程的首選。它以其開源的硬件設(shè)計(jì)、用戶友好的軟件環(huán)境和活躍的社區(qū)支持而聞名。

  • 功能: Arduino UNO R3的核心是一顆Atmel的ATmega328P微控制器。這顆芯片集成了CPU、閃存(用于存儲(chǔ)程序代碼)、SRAM(用于運(yùn)行時(shí)數(shù)據(jù))和EEPROM(用于存儲(chǔ)少量持久性數(shù)據(jù))。它擁有14個(gè)數(shù)字輸入/輸出引腳(其中6個(gè)可作為PWM輸出)、6個(gè)模擬輸入引腳、一個(gè)USB接口用于與計(jì)算機(jī)通信和供電、一個(gè)電源插座用于外部供電、一個(gè)ICSP頭用于程序燒錄以及一個(gè)復(fù)位按鈕。數(shù)字引腳可以配置為輸入或輸出,用于控制LED、繼電器或讀取按鈕狀態(tài)等。模擬引腳則可以將來自傳感器(如溫度傳感器、光敏電阻)的連續(xù)電壓信號(hào)轉(zhuǎn)換為數(shù)字值,供微控制器處理。PWM(脈沖寬度調(diào)制)功能允許模擬輸出效果,例如控制LED亮度或電機(jī)速度。串行通信(UART)、I2C(兩線接口)和SPI(串行外設(shè)接口)等通信接口使得Arduino能夠與其他數(shù)字設(shè)備進(jìn)行數(shù)據(jù)交換,例如我們的CO2傳感器和OLED顯示屏。

  • 為什么選擇: Arduino UNO R3之所以成為本項(xiàng)目以及眾多DIY項(xiàng)目的優(yōu)選,主要基于以下幾點(diǎn):

    • 易用性與入門友好: Arduino IDE提供了簡潔的編程界面和易于理解的C/C++語言結(jié)構(gòu),大大降低了微控制器編程的門檻。大量的示例代碼和教程使得學(xué)習(xí)曲線非常平緩。

    • 強(qiáng)大的社區(qū)支持: Arduino擁有全球性的龐大社區(qū),這意味著當(dāng)您遇到問題時(shí),很容易在論壇、博客或教程中找到解決方案。豐富的第三方庫也極大地簡化了與各種硬件模塊的交互。

    • 穩(wěn)定性與可靠性: 作為一款經(jīng)過時(shí)間考驗(yàn)的經(jīng)典開發(fā)板,Arduino UNO R3在設(shè)計(jì)和制造上都非常成熟,具有良好的穩(wěn)定性和可靠性,適合長期運(yùn)行的項(xiàng)目。

    • 豐富的擴(kuò)展性: 盡管UNO本身功能強(qiáng)大,但其開放的硬件設(shè)計(jì)和標(biāo)準(zhǔn)化的引腳布局,使得通過各種“擴(kuò)展板”(Shields)或直接連接模塊,可以輕松擴(kuò)展其功能,例如添加Wi-Fi、藍(lán)牙、SD卡存儲(chǔ)等。

    • 成本效益: 相較于其他一些專業(yè)的嵌入式開發(fā)板,Arduino UNO R3的價(jià)格非常親民,使得個(gè)人愛好者也能輕松負(fù)擔(dān)。

  • 技術(shù)參數(shù):

    • 微控制器:ATmega328P

    • 工作電壓:5V

    • 輸入電壓(推薦):7-12V

    • 輸入電壓(限制):6-20V

    • 數(shù)字I/O引腳:14個(gè)(其中6個(gè)提供PWM輸出)

    • 模擬輸入引腳:6個(gè)

    • I/O引腳直流電流:20 mA

    • 3.3V引腳直流電流:50 mA

    • 閃存(Flash Memory):32 KB(ATmega328P),其中0.5 KB用于引導(dǎo)加載程序(bootloader)

    • SRAM:2 KB

    • EEPROM:1 KB

    • 時(shí)鐘頻率:16 MHz

  • 與CO2測量儀項(xiàng)目的關(guān)聯(lián): 在CO2測量儀項(xiàng)目中,Arduino UNO R3是核心的控制單元。它通過其數(shù)字引腳與MH-Z19B CO2傳感器進(jìn)行串行通信(UART),接收并解析CO2濃度數(shù)據(jù)。同時(shí),它通過I2C接口與OLED顯示屏通信,將解析出的CO2濃度值以及其他相關(guān)信息(如狀態(tài))實(shí)時(shí)顯示出來。Arduino還負(fù)責(zé)處理傳感器數(shù)據(jù)的定時(shí)讀取、可能的校準(zhǔn)指令發(fā)送,以及整個(gè)系統(tǒng)的電源管理和穩(wěn)定性維護(hù)。其處理能力和豐富的I/O接口完全滿足本項(xiàng)目需求。

2. MH-Z19B CO2傳感器

MH-Z19B是一款常用的非分散紅外(NDIR)原理的CO2氣體傳感器,廣泛應(yīng)用于HVAC系統(tǒng)、空氣質(zhì)量監(jiān)測、農(nóng)業(yè)溫室等領(lǐng)域。

  • 功能: MH-Z19B傳感器利用NDIR技術(shù)來測量CO2濃度。其基本原理是:CO2氣體對(duì)特定波長的紅外光具有吸收特性。傳感器內(nèi)部包含一個(gè)紅外光源和一個(gè)紅外探測器。紅外光從光源發(fā)出,穿過一個(gè)包含待測氣體的腔室,然后被探測器接收。當(dāng)腔室中存在CO2時(shí),一部分特定波長的紅外光會(huì)被CO2分子吸收,導(dǎo)致到達(dá)探測器的光強(qiáng)度減弱。光強(qiáng)度減弱的程度與CO2的濃度成正比。通過測量光強(qiáng)度的變化,傳感器就能計(jì)算出CO2的濃度。MH-Z19B通常提供多種輸出方式,包括UART(串行通信)、PWM(脈沖寬度調(diào)制)和模擬電壓輸出。UART是最常用且推薦的方式,因?yàn)樗芴峁└_的數(shù)字讀數(shù)和更豐富的功能(如校準(zhǔn)指令)。

  • 為什么選擇:

    • NDIR技術(shù): NDIR是目前測量CO2最成熟、最穩(wěn)定且相對(duì)準(zhǔn)確的技術(shù)之一,相較于一些基于化學(xué)反應(yīng)的CO2傳感器,NDIR傳感器具有更好的長期穩(wěn)定性和抗干擾能力。

    • 成本效益: 在NDIR傳感器中,MH-Z19B系列以其相對(duì)較低的價(jià)格和可靠的性能,成為DIY項(xiàng)目和消費(fèi)級(jí)產(chǎn)品的熱門選擇。

    • 易于接口: MH-Z19B提供UART接口,這與Arduino的串行通信能力完美匹配,使得數(shù)據(jù)讀取和控制變得簡單。它還支持PWM輸出,為沒有足夠硬件串口的微控制器提供了另一種選擇。

    • 預(yù)熱時(shí)間與穩(wěn)定性: 傳感器通常需要一定的預(yù)熱時(shí)間(約3分鐘)才能達(dá)到最佳測量狀態(tài),一旦預(yù)熱完成,其讀數(shù)相對(duì)穩(wěn)定。

    • 測量范圍: MH-Z19B通常提供0-5000ppm的測量范圍,這足以滿足大多數(shù)室內(nèi)空氣質(zhì)量監(jiān)測的需求。

  • 技術(shù)參數(shù):

    • UART:波特率9600,數(shù)據(jù)位8位,停止位1位,無奇偶校驗(yàn)。

    • PWM:周期1004ms,高電平脈寬與CO2濃度成比例。

    • 測量氣體:CO2

    • 測量范圍:0-5000ppm(可選0-2000ppm, 0-10000ppm等型號(hào))

    • 工作電壓:DC 4.5V ~ 5.5V(但實(shí)際推薦使用3.3V供電以獲得更穩(wěn)定性能,或通過模塊內(nèi)置穩(wěn)壓)

    • 平均電流:< 60mA

    • 峰值電流:150mA

    • 接口類型:UART(TTL電平)、PWM輸出、模擬電壓輸出

    • 輸出信號(hào):

    • 預(yù)熱時(shí)間:3分鐘

    • 響應(yīng)時(shí)間:T90 < 120秒

    • 工作溫度:0℃ ~ 50℃

    • 工作濕度:0 ~ 95%RH(無凝露)

    • 尺寸:33mm × 20mm × 9mm

  • 與CO2測量儀項(xiàng)目的關(guān)聯(lián): MH-Z19B是本項(xiàng)目的核心傳感器,它負(fù)責(zé)采集CO2濃度數(shù)據(jù)。我們將通過Arduino的軟件串口(SoftwareSerial)與其進(jìn)行UART通信,發(fā)送查詢命令并接收返回的數(shù)據(jù)幀,然后解析出CO2濃度值。由于MH-Z19B對(duì)供電電壓有一定要求,且其數(shù)據(jù)手冊(cè)常建議在3.3V下工作以獲得最佳性能,因此需要一個(gè)獨(dú)立的3.3V穩(wěn)壓模塊為其供電,而不是直接使用Arduino的5V。

3. 0.96英寸OLED顯示屏 (SSD1306驅(qū)動(dòng))

OLED(有機(jī)發(fā)光二極管)顯示屏因其出色的顯示特性,在小型電子設(shè)備中越來越受歡迎。

  • 功能: 0.96英寸OLED顯示屏通常采用SSD1306驅(qū)動(dòng)芯片,分辨率為128x64像素。它能夠以點(diǎn)陣形式顯示文字、數(shù)字、圖形和簡單的圖像。與傳統(tǒng)的LCD(液晶顯示屏)不同,OLED的每個(gè)像素都能自發(fā)光,因此無需背光,這使得它具有極高的對(duì)比度、純黑背景、寬視角和更低的功耗。它通常通過I2C(Inter-Integrated Circuit)或SPI(Serial Peripheral Interface)接口與微控制器通信。I2C接口只需要兩根數(shù)據(jù)線(SDA和SCL),大大節(jié)省了微控制器的引腳資源,非常適合引腳數(shù)量有限的Arduino UNO。

  • 為什么選擇:

    • 高對(duì)比度與清晰度: OLED屏幕自發(fā)光的特性使其顯示內(nèi)容非常清晰,即使在光線較暗的環(huán)境下也能輕松讀取。

    • 低功耗: 無需背光意味著在顯示黑色像素時(shí)幾乎不消耗電量,這對(duì)于電池供電的項(xiàng)目尤其有利。

    • 小巧輕便: 0.96英寸的尺寸非常適合集成到緊湊的CO2測量儀外殼中。

    • 寬視角: 幾乎從任何角度都能清晰地看到顯示內(nèi)容。

    • I2C通信: 僅需兩根數(shù)據(jù)線(SDA和SCL)即可與Arduino連接,簡化了接線并節(jié)省了寶貴的GPIO引腳。

    • 成本效益: 0.96英寸的SSD1306 OLED模塊價(jià)格非常實(shí)惠。

  • 技術(shù)參數(shù):

    • 尺寸:0.96英寸

    • 分辨率:128x64像素

    • 顏色:單色(通常為藍(lán)色或白色,本項(xiàng)目中假設(shè)為藍(lán)色)

    • 驅(qū)動(dòng)芯片:SSD1306

    • 接口類型:I2C(默認(rèn))或SPI

    • 工作電壓:DC 3.3V ~ 5V(大多數(shù)模塊內(nèi)置穩(wěn)壓,可以直接使用5V供電)

    • 引腳定義:VCC, GND, SCL, SDA(I2C模式)

  • 與CO2測量儀項(xiàng)目的關(guān)聯(lián): OLED顯示屏是CO2測量儀的用戶界面。它將實(shí)時(shí)顯示由MH-Z19B傳感器測量到的CO2濃度值,以及其他可能的狀態(tài)信息,例如“傳感器預(yù)熱中”、“校準(zhǔn)成功”等。通過Arduino的Adafruit GFX和Adafruit SSD1306庫,我們可以非常方便地控制OLED屏幕,繪制文本和圖形。

4. DC-DC降壓模塊 (AMS1117-3.3V)

MH-Z19B CO2傳感器的工作電壓為DC 4.5V至5.5V,但其數(shù)據(jù)手冊(cè)通常建議使用3.3V供電以獲得更穩(wěn)定的性能和更低的功耗。Arduino UNO的數(shù)字引腳和大部分傳感器通常工作在5V邏輯電平,但其板載的3.3V穩(wěn)壓器提供的電流有限(通常只有50mA),不足以穩(wěn)定驅(qū)動(dòng)MH-Z19B傳感器(峰值電流可達(dá)150mA)。因此,我們需要一個(gè)獨(dú)立的降壓模塊來為MH-Z19B提供穩(wěn)定、充足的3.3V電源。

  • 功能: AMS1117-3.3V是一款低壓差(LDO)線性穩(wěn)壓器,能夠?qū)⑤^高的輸入電壓(例如Arduino的5V輸出或外部電源的7-12V)穩(wěn)定地降壓至3.3V輸出。它通常有三個(gè)引腳:VIN(輸入電壓)、VOUT(輸出電壓)和GND(接地)。線性穩(wěn)壓器通過內(nèi)部調(diào)整管的壓降來穩(wěn)定輸出電壓,其優(yōu)點(diǎn)是輸出紋波小、噪聲低、電路簡單。

  • 為什么選擇:

    • 電壓匹配: 專門用于將5V或更高電壓降至3.3V,完美匹配MH-Z19B的供電需求。

    • 電流能力: AMS1117通常能提供高達(dá)800mA或1A的輸出電流(取決于具體型號(hào)和散熱條件),遠(yuǎn)超MH-Z19B的峰值電流需求,確保傳感器穩(wěn)定工作。

    • 穩(wěn)定性: 線性穩(wěn)壓器輸出電壓穩(wěn)定,紋波小,有助于傳感器獲得更準(zhǔn)確的讀數(shù)。

    • 成本低廉: AMS1117系列穩(wěn)壓器非常常見且價(jià)格低廉。

    • 易于使用: 只需要簡單的輸入、輸出和接地連接即可工作,無需復(fù)雜的外部元件。

  • 技術(shù)參數(shù):

    • 輸入電壓范圍:通常為4.75V ~ 12V(具體取決于型號(hào)和壓差要求)

    • 輸出電壓:3.3V

    • 最大輸出電流:通常為800mA或1A

    • 壓差:1.2V(典型值),即輸入電壓至少要比輸出電壓高1.2V才能正常工作。

    • 封裝:SOT-223(貼片)或TO-220(直插,通常集成在小模塊上)

  • 與CO2測量儀項(xiàng)目的關(guān)聯(lián): AMS1117-3.3V模塊是MH-Z19B傳感器的專用電源。我們將把Arduino的5V輸出連接到AMS1117的VIN引腳,然后將AMS1117的VOUT引腳連接到MH-Z19B的VCC引腳,確保MH-Z19B在正確的電壓下穩(wěn)定運(yùn)行。這是保證CO2測量準(zhǔn)確性和傳感器壽命的關(guān)鍵一步。

5. 面包板與跳線

面包板和跳線是電子原型搭建過程中不可或缺的工具。

  • 功能: 面包板(Breadboard)是一種用于快速搭建臨時(shí)電路的工具,其表面有許多小孔,內(nèi)部通過金屬條連接,形成導(dǎo)通的行或列。通常,面包板的中間區(qū)域是信號(hào)線區(qū)域,上下兩邊是電源線區(qū)域。跳線(Jumper Wires),也稱為杜邦線,是帶有連接器(通常是公頭或母頭)的單股或多股導(dǎo)線,用于在面包板上連接不同的元器件引腳。

  • 為什么選擇:

    • 無需焊接: 這是面包板最大的優(yōu)勢(shì)。您可以在不焊接的情況下快速連接和斷開元器件,極大地縮短了原型開發(fā)和測試的時(shí)間。

    • 方便修改: 如果電路設(shè)計(jì)有誤或需要調(diào)整,可以輕松地拔下并重新插入元器件和跳線,而無需進(jìn)行復(fù)雜的拆焊工作。

    • 可重復(fù)使用: 面包板和跳線都可以重復(fù)使用,降低了實(shí)驗(yàn)成本。

    • 可視化: 電路連接在面包板上清晰可見,便于理解和排查問題。

  • 與CO2測量儀項(xiàng)目的關(guān)聯(lián): 在構(gòu)建CO2測量儀的初期,我們將使用面包板來連接Arduino UNO、MH-Z19B傳感器、OLED顯示屏和AMS1117-3.3V模塊。跳線則用于連接這些模塊的各個(gè)引腳。這使得我們可以在正式制作PCB(印刷電路板)之前,快速驗(yàn)證電路的正確性和功能。

輔助元器件及作用

除了上述核心元器件,還有一些輔助元器件在電路中扮演著重要角色,它們雖然不起眼,但對(duì)于電路的穩(wěn)定運(yùn)行和保護(hù)至關(guān)重要。

1. 電阻

電阻是電路中最基本的元件之一,其主要作用是限制電流、分壓、提供上拉或下拉電阻等。

  • 限流: 在許多電路中,為了保護(hù)發(fā)光二極管(LED)或其他對(duì)電流敏感的元件不被過大的電流燒毀,需要串聯(lián)一個(gè)合適的電阻來限制通過的電流。例如,如果直接將一個(gè)普通LED連接到5V電源,LED會(huì)因電流過大而燒毀,串聯(lián)一個(gè)220歐姆的電阻可以將其工作電流限制在安全范圍內(nèi)。

  • 分壓: 兩個(gè)或多個(gè)電阻串聯(lián)可以形成分壓電路,將一個(gè)較高的電壓按照電阻比例分配到不同的點(diǎn)上,從而獲得所需的較低電壓。這在一些傳感器需要特定電壓輸入或需要將模擬信號(hào)范圍調(diào)整到ADC(模數(shù)轉(zhuǎn)換器)可接受范圍時(shí)非常有用。

  • 上拉/下拉電阻: 在數(shù)字電路中,特別是在微控制器的輸入引腳上,當(dāng)引腳沒有明確的外部連接時(shí),其狀態(tài)可能會(huì)處于不確定的“浮空”狀態(tài),容易受到電磁干擾而產(chǎn)生誤觸發(fā)。為了避免這種情況,通常會(huì)在輸入引腳上連接一個(gè)上拉電阻(連接到電源VCC)或下拉電阻(連接到地GND)。上拉電阻在按鈕未按下時(shí)將引腳拉高,按下時(shí)拉低;下拉電阻則在按鈕未按下時(shí)將引腳拉低,按下時(shí)拉高。這確保了引腳在任何時(shí)候都有一個(gè)確定的邏輯狀態(tài)。在I2C通信中,SDA和SCL線通常也需要外部上拉電阻,以確??偩€在空閑時(shí)保持高電平,這是I2C協(xié)議的規(guī)定。雖然許多OLED模塊已經(jīng)內(nèi)置了上拉電阻,但在某些情況下,如果通信不穩(wěn)定,可能需要額外添加。

  • 在CO2測量儀項(xiàng)目中的應(yīng)用: 本項(xiàng)目中,電阻可能不會(huì)作為獨(dú)立元件大量出現(xiàn),因?yàn)镸H-Z19B和OLED模塊通常已集成所需電阻。但理解其作用對(duì)于電路分析和故障排除至關(guān)重要。例如,如果您選擇使用一個(gè)不帶內(nèi)置電阻的LED來指示電源狀態(tài),就需要串聯(lián)一個(gè)限流電阻。

2. 電容

電容是用于存儲(chǔ)電荷的元件,在電路中主要用于濾波、儲(chǔ)能、耦合和旁路。

  • 濾波: 電容可以平滑電源電壓的波動(dòng),濾除電源中的高頻噪聲,使電源輸出更穩(wěn)定。例如,在AMS1117-3.3V降壓模塊的輸入和輸出端通常會(huì)并聯(lián)電容,以提高穩(wěn)壓器的穩(wěn)定性并降低輸出紋波。對(duì)于對(duì)電源質(zhì)量敏感的傳感器(如MH-Z19B),良好的電源濾波可以提高測量精度。

  • 儲(chǔ)能: 電容可以快速充放電,在短時(shí)間內(nèi)提供或吸收電流。這在需要瞬時(shí)大電流的場合(例如數(shù)字電路切換時(shí))可以提供局部的電流補(bǔ)充,防止電壓跌落。

  • 耦合: 在交流電路中,電容可以允許交流信號(hào)通過,同時(shí)阻隔直流信號(hào),實(shí)現(xiàn)信號(hào)的耦合或去耦。

  • 旁路電容(去耦電容): 這是數(shù)字電路中非常重要的應(yīng)用。在微控制器或其他數(shù)字芯片的電源引腳附近,通常會(huì)并聯(lián)一個(gè)小的陶瓷電容(例如0.1uF)。當(dāng)芯片內(nèi)部的晶體管快速開關(guān)時(shí),會(huì)產(chǎn)生瞬時(shí)電流需求,如果電源線過長或阻抗較高,會(huì)導(dǎo)致電源電壓瞬時(shí)跌落。旁路電容可以提供一個(gè)局部的、低阻抗的電荷源,快速響應(yīng)這種瞬時(shí)電流需求,從而穩(wěn)定芯片的供電電壓,防止數(shù)字信號(hào)錯(cuò)誤。

  • 在CO2測量儀項(xiàng)目中的應(yīng)用: 雖然您可能不會(huì)直接連接獨(dú)立的電容,但MH-Z19B模塊和AMS1117-3.3V模塊內(nèi)部都包含了必要的濾波和旁路電容。理解其作用有助于理解為什么這些模塊能夠穩(wěn)定工作。

3. 杜邦線(跳線)

杜邦線是帶連接器的電線,用于連接電路中的不同點(diǎn)。

  • 功能: 杜邦線有公對(duì)公、母對(duì)母、公對(duì)母等多種類型,它們使得在面包板上連接Arduino、傳感器、顯示屏等模塊變得非常方便,無需焊接。它們提供了一種靈活、可重復(fù)使用的連接方式,是原型開發(fā)和測試的理想選擇。

  • 為什么選擇: 易用性、靈活性、可重復(fù)使用性、無需焊接。

  • 在CO2測量儀項(xiàng)目中的應(yīng)用: 杜邦線將是連接所有模塊(Arduino UNO、MH-Z19B、OLED、AMS1117-3.3V)的橋梁,確保電氣連接的正確性。

4. USB數(shù)據(jù)線

USB數(shù)據(jù)線是Arduino與計(jì)算機(jī)連接的必備工具。

  • 功能:

    • 供電: USB數(shù)據(jù)線可以將計(jì)算機(jī)的USB端口提供的5V電源傳輸給Arduino UNO,為開發(fā)板及其連接的低功耗模塊供電。

    • 程序上傳: 通過USB數(shù)據(jù)線,Arduino IDE可以將您編寫的程序代碼上傳到Arduino UNO的ATmega328P微控制器中。

    • 串口通信: USB數(shù)據(jù)線還充當(dāng)Arduino與計(jì)算機(jī)之間的串行通信橋梁。這使得您可以通過Arduino IDE的串口監(jiān)視器查看Arduino發(fā)送的調(diào)試信息(例如CO2讀數(shù)),或者向Arduino發(fā)送命令。

  • 為什么選擇: Arduino UNO的標(biāo)準(zhǔn)連接方式,方便快捷。

  • 在CO2測量儀項(xiàng)目中的應(yīng)用: 在開發(fā)和調(diào)試階段,USB數(shù)據(jù)線將用于為Arduino供電、上傳程序代碼以及通過串口監(jiān)視器查看CO2讀數(shù)和調(diào)試信息。

5. 外部電源適配器 (可選)

雖然Arduino可以通過USB數(shù)據(jù)線供電,但在某些情況下,特別是當(dāng)項(xiàng)目需要獨(dú)立運(yùn)行或連接的模塊功耗較高時(shí),外部電源適配器是更好的選擇。

  • 功能: 外部電源適配器通常提供7V至12V的直流電壓(例如9V或12V),通過Arduino UNO板上的DC電源插座為整個(gè)系統(tǒng)供電。Arduino板載的穩(wěn)壓器會(huì)將這個(gè)外部電壓降壓到5V,以供微控制器和大部分引腳使用。

  • 為什么選擇:

    • 獨(dú)立運(yùn)行: 一旦程序上傳完成,測量儀可以脫離計(jì)算機(jī)獨(dú)立工作。

    • 更穩(wěn)定的供電: 外部電源通常能提供比USB端口更大的電流,確保所有模塊(特別是MH-Z19B傳感器)在峰值電流需求時(shí)也能獲得穩(wěn)定供電,避免因供電不足導(dǎo)致的讀數(shù)不穩(wěn)或模塊重啟。

    • 避免計(jì)算機(jī)USB端口過載: 如果連接的模塊總功耗較高,可能會(huì)對(duì)計(jì)算機(jī)的USB端口造成負(fù)擔(dān),使用外部電源可以避免這個(gè)問題。

  • 在CO2測量儀項(xiàng)目中的應(yīng)用: 在項(xiàng)目調(diào)試完成后,如果您希望CO2測量儀作為一個(gè)獨(dú)立的設(shè)備長期運(yùn)行,一個(gè)9V或12V的外部電源適配器將是理想的供電方案。

接線圖與詳細(xì)連接步驟

正確的接線是項(xiàng)目成功的基石。我們將提供詳細(xì)的文字描述和概念性的接線圖指導(dǎo),確保您能夠準(zhǔn)確無誤地連接所有元器件。

重要提示: 在進(jìn)行任何接線操作之前,請(qǐng)確保所有設(shè)備都已斷電,以避免短路或損壞元器件。

連接概述:

  1. MH-Z19B CO2傳感器供電: MH-Z19B需要穩(wěn)定的3.3V供電。我們將使用AMS1117-3.3V降壓模塊將Arduino的5V轉(zhuǎn)換為3.3V。

  2. MH-Z19B CO2傳感器數(shù)據(jù)通信: MH-Z19B通過UART(串行通信)與Arduino通信。我們將使用Arduino的軟件串口(SoftwareSerial)功能,因?yàn)橛布冢―0/RX, D1/TX)通常用于與計(jì)算機(jī)通信。

  3. 0.96英寸OLED顯示屏供電: OLED顯示屏通常可以直接使用Arduino的5V供電。

  4. 0.96英寸OLED顯示屏數(shù)據(jù)通信: OLED顯示屏通過I2C(兩線接口)與Arduino通信。

詳細(xì)連接步驟:

步驟1:連接AMS1117-3.3V降壓模塊

AMS1117-3.3V模塊通常有三個(gè)引腳:VIN(輸入)、GND(接地)、VOUT(輸出)。

  • 將AMS1117-3.3V的VIN引腳連接到Arduino UNO的5V引腳。

    • 這為降壓模塊提供了5V的輸入電壓。

  • 將AMS1117-3.3V的GND引腳連接到Arduino UNO的GND(任意一個(gè)接地引腳)。

    • 這為降壓模塊提供了公共接地。

步驟2:連接MH-Z19B CO2傳感器

MH-Z19B傳感器通常有以下引腳:VCC、GND、RXD、TXD。

  • 將MH-Z19B的VCC引腳連接到AMS1117-3.3V的VOUT引腳。

    • 這為MH-Z19B傳感器提供了穩(wěn)定的3.3V電源。

  • 將MH-Z19B的GND引腳連接到Arduino UNO的GND(與AMS1117-3.3V共用一個(gè)GND)。

    • 確保所有模塊共地,這是數(shù)字電路正常工作的基本要求。

  • 將MH-Z19B的RXD引腳連接到Arduino UNO的數(shù)字引腳D2。

    • 在我們的代碼中,D2將被配置為軟件串口的RX(接收)引腳,用于接收MH-Z19B發(fā)送的數(shù)據(jù)。

  • 將MH-Z19B的TXD引腳連接到Arduino UNO的數(shù)字引腳D3。

    • 在我們的代碼中,D3將被配置為軟件串口的TX(發(fā)送)引腳,用于向MH-Z19B發(fā)送查詢命令。

為什么使用SoftwareSerial?

Arduino UNO只有一個(gè)硬件串口(引腳D0/RX和D1/TX),這個(gè)硬件串口默認(rèn)用于與計(jì)算機(jī)通過USB進(jìn)行通信(上傳程序和串口監(jiān)視器)。如果我們將MH-Z19B連接到D0/D1,就會(huì)與USB通信沖突,導(dǎo)致程序上傳失敗或串口監(jiān)視器無法正常工作。SoftwareSerial庫允許我們使用Arduino的任意兩個(gè)數(shù)字引腳模擬一個(gè)額外的串口,從而解決了硬件串口沖突的問題。

步驟3:連接0.96英寸OLED顯示屏

0.96英寸OLED顯示屏(SSD1306驅(qū)動(dòng),I2C版本)通常有以下四個(gè)引腳:VCC、GND、SDA、SCL。

  • 將OLED的VCC引腳連接到Arduino UNO的5V引腳。

    • 大多數(shù)0.96英寸OLED模塊內(nèi)置了穩(wěn)壓器,可以直接接受5V電源。如果您的OLED模塊明確說明只支持3.3V,請(qǐng)連接到AMS1117-3.3V的VOUT。

  • 將OLED的GND引腳連接到Arduino UNO的GND(與MH-Z19B和AMS1117-3.3V共用一個(gè)GND)。

    • 確保所有模塊共地。

  • 將OLED的SDA引腳連接到Arduino UNO的模擬引腳A4。

    • 在Arduino UNO上,A4引腳是硬件I2C的SDA(數(shù)據(jù)線)引腳。

  • 將OLED的SCL引腳連接到Arduino UNO的模擬引腳A5。

    • 在Arduino UNO上,A5引腳是硬件I2C的SCL(時(shí)鐘線)引腳。

(此處應(yīng)插入一張清晰的接線圖,展示Arduino UNO、MH-Z19B、AMS1117-3.3V和OLED顯示屏之間的連接。由于我無法直接生成圖像,請(qǐng)您自行想象或根據(jù)上述文字描述繪制。圖中應(yīng)清晰標(biāo)明每個(gè)模塊的引腳名稱以及它們連接到Arduino UNO的哪個(gè)引腳。例如:MH-Z19B RXD -> D2, TXD -> D3, VCC -> AMS1117 VOUT; AMS1117 VIN -> 5V, GND -> GND; OLED SDA -> A4, SCL -> A5, VCC -> 5V, GND -> GND。)

接線邏輯與注意事項(xiàng):

  • 共地原則: 所有的電子模塊都必須共用一個(gè)GND(地)引腳。這是保證電路中電壓參考點(diǎn)一致,確保信號(hào)能夠正確傳輸?shù)幕A(chǔ)。

  • 電源匹配: 嚴(yán)格按照模塊所需的工作電壓供電。MH-Z19B對(duì)3.3V的穩(wěn)定供電有較高要求,因此AMS1117-3.3V模塊至關(guān)重要。

  • 通信接口匹配: 確保模塊之間的通信接口類型(UART、I2C)和引腳連接正確。UART需要TX對(duì)RX,RX對(duì)TX。I2C需要SDA對(duì)SDA,SCL對(duì)SCL。

  • 引腳功能: 了解Arduino引腳的功能(數(shù)字I/O、模擬輸入、PWM、硬件串口、I2C)對(duì)于正確接線至關(guān)重要。

完成以上接線步驟后,您的硬件連接部分就基本完成了。接下來,我們將進(jìn)入軟件編程部分,為您的CO2測量儀注入“生命”。

Arduino代碼詳解

軟件是硬件的靈魂。我們將為CO2測量儀編寫Arduino代碼,實(shí)現(xiàn)傳感器數(shù)據(jù)讀取、數(shù)據(jù)處理、OLED顯示以及必要的校準(zhǔn)功能。

在編寫代碼之前,您需要安裝一些必要的庫:

  1. SoftwareSerial庫: Arduino IDE自帶,無需額外安裝。用于模擬串口與MH-Z19B通信。

  2. Adafruit GFX庫: 一個(gè)通用的圖形庫,為各種顯示屏提供圖形繪制功能。

  3. Adafruit SSD1306庫: 專門用于SSD1306驅(qū)動(dòng)的OLED顯示屏。

您可以通過Arduino IDE的“工具” -> “管理庫...” (Ctrl+Shift+I) 搜索并安裝“Adafruit GFX Library”和“Adafruit SSD1306”。

```cpp
// 引入必要的庫文件
#include <SoftwareSerial.h> // 用于模擬串口與MH-Z19B傳感器通信
#include <Adafruit_GFX.h>   // Adafruit圖形庫,提供基本的圖形繪制功能
#include <Adafruit_SSD1306.h> // Adafruit SSD1306 OLED顯示屏庫

// 定義MH-Z19B傳感器的RX和TX引腳
// Arduino的D2連接到MH-Z19B的TXD (MH-Z19B發(fā)送數(shù)據(jù)到Arduino的RX)
// Arduino的D3連接到MH-Z19B的RXD (Arduino發(fā)送命令到MH-Z19B的RX)
#define MHZ19B_RX_PIN 2 // Arduino數(shù)字引腳2,作為MH-Z19B的RX
#define MHZ19B_TX_PIN 3 // Arduino數(shù)字引腳3,作為MH-Z19B的TX

// 創(chuàng)建SoftwareSerial對(duì)象,用于MH-Z19B通信
SoftwareSerial mhzSerial(MHZ19B_RX_PIN, MHZ19B_TX_PIN); // RX, TX

// 定義OLED顯示屏的寬度和高度
#define SCREEN_WIDTH 128 // OLED顯示屏寬度,單位像素
#define SCREEN_HEIGHT 64 // OLED顯示屏高度,單位像素

// 定義OLED顯示屏的I2C地址
// 大多數(shù)0.96英寸OLED模塊的I2C地址是0x3C或0x3D
#define OLED_RESET -1 // 復(fù)位引腳,對(duì)于大多數(shù)I2C OLED模塊,可以設(shè)置為-1 (不使用)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // 創(chuàng)建OLED顯示屏對(duì)象

// 定義CO2濃度變量,初始值為0
int co2Ppm = 0;
// 定義傳感器預(yù)熱狀態(tài),初始為true
bool isWarmingUp = true;
// 記錄預(yù)熱開始時(shí)間
unsigned long warmUpStartTime = 0;
// 定義預(yù)熱時(shí)間,3分鐘 = 180000毫秒
const unsigned long WARM_UP_DURATION = 180000UL;

// 定義用于MH-Z19B通信的命令字節(jié)數(shù)組
// 查詢CO2濃度命令 (Get CO2 concentration)
byte getCO2Command[] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
// 零點(diǎn)校準(zhǔn)命令 (Zero point calibration, 400ppm in fresh air)
// 注意:此操作應(yīng)在新鮮空氣中進(jìn)行,且傳感器穩(wěn)定后執(zhí)行,否則可能導(dǎo)致讀數(shù)不準(zhǔn)確。
// 建議在部署前執(zhí)行一次,日常使用中除非讀數(shù)明顯偏差,否則不頻繁執(zhí)行。
byte calibrateZeroCommand[] = {0xFF, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78};
// 禁用自動(dòng)校準(zhǔn)命令 (Disable auto calibration)
// 某些MH-Z19B模塊默認(rèn)開啟自動(dòng)校準(zhǔn),如果需要手動(dòng)控制校準(zhǔn),可以禁用。
byte disableAutoCalibrateCommand[] = {0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86};
// 啟用自動(dòng)校準(zhǔn)命令 (Enable auto calibration)
// 如果需要MH-Z19B自動(dòng)在低點(diǎn)進(jìn)行校準(zhǔn),可以啟用此功能。
byte enableAutoCalibrateCommand[] = {0xFF, 0x01, 0x79, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xE6};


// setup() 函數(shù)在Arduino板上電或復(fù)位后只運(yùn)行一次
void setup() {
 // 初始化硬件串口,用于與計(jì)算機(jī)通信和調(diào)試
 Serial.begin(9600);
 Serial.println(F("CO2 測量儀啟動(dòng)中..."));

 // 初始化軟件串口,用于與MH-Z19B傳感器通信
 mhzSerial.begin(9600);
 Serial.println(F("MH-Z19B 軟件串口初始化完成。"));

 // 初始化OLED顯示屏
 // 如果OLED初始化失敗,通過串口輸出錯(cuò)誤信息并進(jìn)入無限循環(huán)
 if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 檢查I2C地址,如果您的OLED是0x3D,
 請(qǐng)修改此處
   Serial.println(F("SSD1306 OLED 初始化失?。≌?qǐng)檢查接線和I2C地址。"));
   for (;;); // 進(jìn)入無限循環(huán),停止程序運(yùn)行
 }

 // 清除OLED顯示屏緩沖區(qū)
 display.clearDisplay();
 // 設(shè)置文本顏色為白色
 display.setTextColor(SSD1306_WHITE);
 // 設(shè)置文本大小為1
 display.setTextSize(1);
 // 設(shè)置光標(biāo)位置
 display.setCursor(0, 0);
 // 顯示啟動(dòng)信息
 display.println(F("CO2 測量儀"));
 display.println(F("啟動(dòng)中..."));
 display.println(F("傳感器預(yù)熱中..."));
 display.display(); // 刷新顯示屏

 // 記錄預(yù)熱開始時(shí)間
 warmUpStartTime = millis();

 // 禁用自動(dòng)校準(zhǔn)(可選,根據(jù)需求決定是否執(zhí)行)
 // sendMHZ19BCommand(disableAutoCalibrateCommand);
 // delay(100); // 短暫延遲,等待命令執(zhí)行
}

// loop() 函數(shù)在setup()函數(shù)執(zhí)行完畢后會(huì)無限循環(huán)運(yùn)行
void loop() {
 // 檢查傳感器是否仍在預(yù)熱
 if (isWarmingUp) {
   if (millis() - warmUpStartTime < WARM_UP_DURATION) {
     // 仍在預(yù)熱期間,顯示預(yù)熱信息
     display.clearDisplay();
     display.setTextSize(1);
     display.setCursor(0, 0);
     display.println(F("CO2 測量儀"));
     display.println(F("傳感器預(yù)熱中..."));
     display.print(F("剩余: "));
     // 計(jì)算剩余預(yù)熱時(shí)間(秒)
     unsigned long remainingSeconds = (WARM_UP_DURATION - (millis() - warmUpStartTime))
     / 1000;
     display.print(remainingSeconds);
     display.println(F(" 秒"));
     display.display();
     delay(1000); // 每秒更新一次預(yù)熱倒計(jì)時(shí)
     return; // 預(yù)熱期間不執(zhí)行CO2讀取
   } else {
     // 預(yù)熱完成
     isWarmingUp = false;
     Serial.println(F("MH-Z19B 傳感器預(yù)熱完成!"));
     display.clearDisplay();
     display.setCursor(0, 0);
     display.println(F("預(yù)熱完成!"));
     display.display();
     delay(1000); // 顯示“預(yù)熱完成”1秒
   }
 }

 // 讀取CO2濃度
 co2Ppm = readCO2();

 // 在OLED上顯示CO2濃度
 displayCO2(co2Ppm);

 // 每隔5秒讀取一次傳感器數(shù)據(jù)并更新顯示
 delay(5000);
}

/**
* @brief 計(jì)算MH-Z19B命令或響應(yīng)的校驗(yàn)和
* @param packet 包含數(shù)據(jù)包的字節(jié)數(shù)組
* @return 計(jì)算出的校驗(yàn)和
*/
byte calculateChecksum(byte* packet) {
 byte checksum = 0;
 // 從第二個(gè)字節(jié)開始計(jì)算到倒數(shù)第二個(gè)字節(jié)(不包括校驗(yàn)和本身)
 for (int i = 1; i < 8; i++) {
   checksum += packet[i];
 }
 // 校驗(yàn)和是256減去所有字節(jié)的和(取低8位)
 return 0xFF - checksum + 0x01;
}

/**
* @brief 向MH-Z19B傳感器發(fā)送命令
* @param command 要發(fā)送的命令字節(jié)數(shù)組
*/
void sendMHZ19BCommand(byte* command) {
 // 清空軟件串口的接收緩沖區(qū),防止讀取到舊數(shù)據(jù)
 while (mhzSerial.available()) {
   mhzSerial.read();
 }
 // 寫入命令到軟件串口
 mhzSerial.write(command, 9);
}

/**
* @brief 從MH-Z19B傳感器讀取CO2濃度
* @return CO2濃度值(ppm),如果讀取失敗返回-1
*/
int readCO2() {
 byte response[9]; // 存儲(chǔ)傳感器返回的9個(gè)字節(jié)數(shù)據(jù)
 int timeout = 0; // 超時(shí)計(jì)數(shù)器

 // 發(fā)送查詢CO2濃度的命令
 sendMHZ19BCommand(getCO2Command);

 // 等待傳感器響應(yīng),最多等待1秒
 while (mhzSerial.available() < 9) {
   delay(10);
   timeout++;
   if (timeout > 100) { // 10ms * 100 = 1秒
     Serial.println(F("MH-Z19B 讀取超時(shí)!"));
     return -1; // 返回-1表示讀取失敗
   }
 }

 // 讀取傳感器返回的所有字節(jié)
 for (int i = 0; i < 9; i++) {
   response[i] = mhzSerial.read();
 }

 // 校驗(yàn)數(shù)據(jù)包的完整性和正確性
 // 檢查起始字節(jié) (0xFF)
 if (response[0] != 0xFF) {
   Serial.println(F("MH-Z19B 響應(yīng)起始字節(jié)錯(cuò)誤!"));
   return -1;
 }
 // 檢查命令字節(jié) (0x86)
 if (response[1] != 0x86) {
   Serial.println(F("MH-Z19B 響應(yīng)命令字節(jié)錯(cuò)誤!"));
   return -1;
 }
 // 檢查校驗(yàn)和
 byte calculatedChecksum = calculateChecksum(response);
 if (response[8] != calculatedChecksum) {
   Serial.print(F("MH-Z19B 校驗(yàn)和錯(cuò)誤!計(jì)算值: "));
   Serial.print(calculatedChecksum, HEX);
   Serial.print(F(", 接收值: "));
   Serial.println(response[8], HEX);
   return -1;
 }

 // 從響應(yīng)數(shù)據(jù)中提取CO2濃度值
 // CO2濃度值由第3個(gè)字節(jié)(response[2])和第4個(gè)字節(jié)(response[3])組成
 // 高字節(jié)在前,低字節(jié)在后
 int co2 = (int)response[2] * 256 + (int)response[3];
 Serial.print(F("讀取到CO2濃度: "));
 Serial.print(co2);
 Serial.println(F(" ppm"));

 return co2;
}

/**
* @brief 在OLED顯示屏上顯示CO2濃度
* @param ppm CO2濃度值
*/
void displayCO2(int ppm) {
 display.clearDisplay(); // 清除顯示屏內(nèi)容

 // 設(shè)置文本大小為1,顯示“CO2濃度”標(biāo)簽
 display.setTextSize(1);
 display.setCursor(0, 0);
 display.println(F("CO2 濃度:"));

 // 設(shè)置文本大小為3,顯示CO2濃度值
 display.setTextSize(3);
 display.setCursor(0, 15); // 調(diào)整位置以適應(yīng)大字體
 if (ppm == -1) {
   display.println(F("讀取失敗")); // 如果讀取失敗,顯示錯(cuò)誤信息
 } else {
   display.print(ppm);
   display.println(F(" ppm"));
 }

 // 根據(jù)CO2濃度顯示不同的空氣質(zhì)量狀態(tài)
 display.setTextSize(1);
 display.setCursor(0, 50); // 調(diào)整位置
 if (ppm < 600 && ppm != -1) {
   display.println(F("空氣質(zhì)量: 優(yōu)"));
 } else if (ppm >= 600 && ppm < 1000 && ppm != -1) {
   display.println(F("空氣質(zhì)量: 良"));
 } else if (ppm >= 1000 && ppm < 1500 && ppm != -1) {
   display.println(F("空氣質(zhì)量: 一般"));
 } else if (ppm >= 1500 && ppm != -1) {
   display.println(F("空氣質(zhì)量: 差! 建議通風(fēng)"));
 } else {
   display.println(F("空氣質(zhì)量: 未知")); // 處理讀取失敗的情況
 }

 display.display(); // 刷新顯示屏,將緩沖區(qū)內(nèi)容顯示出來
}

/**
* @brief 執(zhí)行MH-Z19B的零點(diǎn)校準(zhǔn)(400ppm校準(zhǔn))
* @note 此函數(shù)應(yīng)在新鮮空氣(CO2濃度約400ppm)中調(diào)用,且傳感器穩(wěn)定后執(zhí)行。
* 調(diào)用后,傳感器會(huì)將其當(dāng)前環(huán)境的CO2濃度校準(zhǔn)為400ppm。
* 此操作會(huì)修改傳感器的內(nèi)部參數(shù),請(qǐng)謹(jǐn)慎使用。
* 您可以在setup()中添加一個(gè)按鈕觸發(fā)此功能,而不是直接在loop()中調(diào)用。
*/
void calibrateMHZ19BZeroPoint() {
 Serial.println(F("正在執(zhí)行MH-Z19B零點(diǎn)校準(zhǔn)..."));
 display.clearDisplay();
 display.setTextSize(1);
 display.setCursor(0, 0);
 display.println(F("正在零點(diǎn)校準(zhǔn)..."));
 display.println(F("請(qǐng)確保在新鮮空氣中!"));
 display.display();

 sendMHZ19BCommand(calibrateZeroCommand);
 delay(5000); // 等待校準(zhǔn)完成,MH-Z19B需要一些時(shí)間來處理校準(zhǔn)命令

 Serial.println(F("MH-Z19B 零點(diǎn)校準(zhǔn)完成。"));
 display.clearDisplay();
 display.setTextSize(1);
 display.setCursor(0, 0);
 display.println(F("零點(diǎn)校準(zhǔn)完成!"));
 display.display();
 delay(2000); // 顯示校準(zhǔn)完成信息2秒
}

// 示例:如何手動(dòng)觸發(fā)校準(zhǔn)(您可以在loop()中添加一個(gè)條件判斷或按鈕觸發(fā))
/*
void checkAndCalibrate() {
 // 假設(shè)您有一個(gè)連接到D4的按鈕,按下后執(zhí)行校準(zhǔn)
 // pinMode(4, INPUT_PULLUP); // 在setup中設(shè)置
 // if (digitalRead(4) == LOW) { // 按鈕按下
 //   delay(50); // 簡單去抖
 //   if (digitalRead(4) == LOW) {
 //     calibrateMHZ19BZeroPoint();
 //     while(digitalRead(4) == LOW); // 等待按鈕釋放
 //   }
 // }
}
*/

責(zé)任編輯:David

【免責(zé)聲明】

1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對(duì)本文的引用持有異議,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時(shí)處理。

2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。

3、本文內(nèi)容僅代表作者觀點(diǎn),拍明芯城不對(duì)內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨(dú)立判斷做出的,請(qǐng)讀者明確相關(guān)結(jié)果。

4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。

拍明芯城擁有對(duì)此聲明的最終解釋權(quán)。

標(biāo)簽: CO2測量儀

相關(guān)資訊

拍明芯城微信圖標(biāo)

各大手機(jī)應(yīng)用商城搜索“拍明芯城”

下載客戶端,隨時(shí)隨地買賣元器件!

拍明芯城公眾號(hào)
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號(hào)
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告