如何應用 Arduino 自製室內環境監測器 2

如何應用 Arduino 自製室內環境監測器

Guest Author

Profile photo for 1C1OOCC
1C1OOCC

I do engineering design for machines and electronics but do love science, art and history.

Instrutables
Thingiverse

這個專題項目將向您示範如何使用一些在市場上容易入手的傳感器製作一個簡單的室內環境監測器。我實際做了一件出來給我的學生,讓他找出日光如何影響室溫和濕度。在這項目中,重要的物理性質有 (1) 光度,(2) 濕度,(3) 溫度,和 (4) 氣壓。有了這些信息,就可以製造其他系統或設備來控制空調,加濕或加熱器,以營造舒適的房間環境。


步驟 1: 準備傳感器

如何應用 Arduino 自製室內環境監測器 3
GUVA-S12SD
TEMT6000
BMP085
DHT11

您可以使用以下傳感器構建電路,也可以直接購買這些傳感器的模塊板或模塊板。

  1. 環境光傳感器 TEMT6000 (Datasheet PDF)
  2. 壓力及溫度傳感器 BMP085 or BMP180 (請參閱 Adafruit 上的學習文件)
    注: 它們是些舊款元件,您可能需要尋找其他替代
  3. 溫濕度傳感器 DHT11 (請參閱 Adafruit 上的學習文件)
  4. 紫外光傳感器 GUVA-S12SD (Datasheet PDF)

我附加了一些關於傳感器使用的連接,您可以在網上找到一些有用的教程和參考資料。


步驟 2: 準備主處理器

如何應用 Arduino 自製室內環境監測器 4

我選擇了 Arduino Uno 開發板來測試系統和編碼,但是我發現 (如果添加了更多傳感器),Atmega328P 沒有足夠的內存來存儲和運行代碼。因此,在您需要四個以上傳感器時,我建議使用 Atmega2560 Arduino 開發板。

微控制器 (MCU):

  • Atmega328P Arduino 開發板
  • Atmega2560 Arduino 開發板

步驟 3: 準備測量系統

如何應用 Arduino 自製室內環境監測器 5
DHT11
BMP180

室內傳感器
這兩個傳感器將測量房間的溫度和濕度

如何應用 Arduino 自製室內環境監測器 6
CUVA-S12SD
TEMT6000
BMP085
DHT11

室外傳感器
這些傳感器將測量室外環境

我期望能夠測量得到室外和室內的一些物理性質。最後,我連接了以下傳感器到 Atmega2560 板上。

室內環境用:

  1. 壓力及溫度傳感器 BMP180 × 1 件
  2. 溫濕度傳感器 DHT11 × 1 件

室外環境用:

  1. 環境光傳感器 TEMT6000 × 1 件
  2. 壓力及溫度傳感器 BMP085 × 1 件
  3. 溫濕度傳感器 DHT11 × 1 件
  4. 紫外線傳感器 GUVA-S12SD × 1 件

您可能會發現我使用了不同的傳感器來測量壓力,是因為我在構建電路時沒有 BMP180 模塊板存貨。如果需要進行精確的測量和合理的比較,我建議您使用相同的傳感器。


步驟 4: 準備數據記錄配件

另外,我希望設備能在不連接電腦的情況下存儲數據,因此添加了帶有實時時鐘的數據記錄模塊。以下是用於數據記錄和電路接駁的配件:


步驟 5: 準備製作工具

以下是構建電路時,所需的一些工具或設備:

  • 30AWG 繞線筆
  • 焊鐵
  • 焊錫絲 (無鉛)
  • 麵包板
  • 2.54 mm 接頭
  • 連接線
  • 鍍銀線 (30AWG)
  • 熱膠槍
  • 3D 打印 (例如: 保護殼)
  • Arduino IDE (我們需要用它來對開發板進行編程)

步驟 6: 重置數據記錄模塊上的 DS1307 實時時鐘 (RTC)

如何應用 Arduino 自製室內環境監測器 7
安裝 RTClib 後,您可以在 Arduino 菜單上找到一些範例
如何應用 Arduino 自製室內環境監測器 8
當 MCU 板連接到 PC 時,添加了這些腳本來更新 RTC

想將這些數據用於科學實驗,這樣正確的時間測量對於數據分析來說就很重要。若在編程中使用 delay() 函數,會在時移中引起測量誤差。然而,我不知道如何只用 Arduino 板進行精確的實時測量。為了避免採樣時間誤差或最小化測量誤差,我期望能夠對每個測量樣本進行時間記錄。幸運的是,數據記錄模塊具有實時時鐘 (RTC),我們可以使用它來輸出數據的採樣時間。

要使用 RTC,請依照說明重設 RTC。我建議首先使用 Arduino Uno 開發板進行此操作,因為使用 Atmega2560 板時 (I2C 連接不同) 您必須修改電路。設置 RTC 之後,請勿卸下 CR1220 電池。同時,在記錄數據之前,請檢查電池的狀況。


步驟 7: 接駁電路

The block diagram of the connection between major components
Indoor measurement
Outdoor measurement

因為要分別測量室內和室外環境,所以需要製作兩個接頭,連接兩組不同的傳感器,我利用了數據記錄模塊上的空位來安裝接頭。我同時使用焊接和繞線,以完成電路接駁。繞線乾淨方便,而焊接穩固安全,選擇一種令您感覺舒適的方法來構建電路。如果使用 Atmega2560 板,請確保已將 SDA SCL 引腳的跳線連接,並必須重新連接數據記錄屏蔽模塊上的 RTC 連線。

Header connections

我在傳感器模塊上焊接了插頭,然後繞線將所有傳感器連接到插頭,以接駁傳感器。在使用傳感器模塊時,建議您仔細檢查工作電壓。某些傳感器模塊接受 5V3.3V 輸入,但某些傳感器模塊只能使用 5V3.3V 的其中之一。


步驟 8: Programming the MCU

幸運的是,我可以找到所有傳感器的應用示例。如果您第一次使用它們,需要在網上下載,也可以使用 Arduino IDE 中的程式庫管理器進行安裝。

我將每個樣本都編程為系統輸出一個字符串,該字符串會被輸出並存儲在已安裝的 SD 卡中。如果需要查看數據,請關閉設備,然後卸載 SD 卡。然後,您可以將 SD 卡安裝到讀卡器上,搜索存儲為 CSV 檔案的文件。將數據文件下載至電腦之後,可以利用文本程序或工作表程序進行查看。

如何應用 Arduino 自製室內環境監測器 11

原始碼

customObservatoryAtmega2560.ino

步驟 9: 測試並使用它!

您一定要了解數據的含義,這一點很重要。而採樣頻率是重要的參數之一,當前的測量時間間隔是 1 分鐘,您可能需要更改它。

如何應用 Arduino 自製室內環境監測器 12
因為我已經進行了時間調整,所以延遲 (delay) 不是 60000。

此外,您會發現 DHT11 的溫度測量值不准確。 如果需要更精確的值,則可以使用 BMP 壓力傳感器的溫度讀數。

如何應用 Arduino 自製室內環境監測器 13
DHT11 的溫度讀數不准確。 如果需要更精確的讀數,可以使用 BMP085 / BMP180 的溫度讀數

感謝您閱讀本文!

英文版原文初次發佈於 www.instructables.com (2017 年 7 月 25 日)

如果您喜歡這篇文章,請分享到您的 Facebook 和 Twitter。您也可以通過 Ko-fi 捐款支持本站。

Scroll to Top