Guest Author
1C1OOCC
I do engineering design for machines and electronics but do love science, art and history.
這個專題項目將向您示範如何使用一些在市場上容易入手的傳感器,製作一個簡單的室內環境監測器。我實際做了一件出來給我的學生,讓他找出日光如何影響室溫和濕度。在這項目中,重要的物理性質有 (1) 光度,(2) 濕度,(3) 溫度,和 (4) 氣壓。有了這些信息,就可以製造其他系統或設備來控制空調,加濕或加熱器,以營造舒適的房間環境。
步驟 1: 準備傳感器
您可以使用以下傳感器構建電路,也可以直接購買這些傳感器的模塊板或模塊板。
- 環境光傳感器 TEMT6000 (Datasheet PDF)
- 壓力及溫度傳感器 BMP085 or BMP180 (請參閱 Adafruit 上的學習文件)
注: 它們是些舊款元件,您可能需要尋找其他替代。 - 溫濕度傳感器 DHT11 (請參閱 Adafruit 上的學習文件)
- 紫外光傳感器 GUVA-S12SD (Datasheet PDF)
我附加了一些關於傳感器使用的連接,您可以在網上找到一些有用的教程和參考資料。
步驟 2: 準備主處理器
我選擇了 Arduino Uno 開發板來測試系統和編碼,但是我發現 (如果添加了更多傳感器),Atmega328P 沒有足夠的內存來存儲和運行代碼。因此,在您需要四個以上傳感器時,我建議使用 Atmega2560 Arduino 開發板。
微控制器 (MCU):
- Atmega328P Arduino 開發板
- Atmega2560 Arduino 開發板
步驟 3: 準備測量系統
室內傳感器
這兩個傳感器將測量房間的溫度和濕度
室外傳感器
這些傳感器將測量室外環境
我期望能夠測量得到室外和室內的一些物理性質。最後,我連接了以下傳感器到 Atmega2560 板上。
室內環境用:
- 壓力及溫度傳感器 BMP180 × 1 件
- 溫濕度傳感器 DHT11 × 1 件
室外環境用:
- 環境光傳感器 TEMT6000 × 1 件
- 壓力及溫度傳感器 BMP085 × 1 件
- 溫濕度傳感器 DHT11 × 1 件
- 紫外線傳感器 GUVA-S12SD × 1 件
您可能會發現我使用了不同的傳感器來測量壓力,是因為我在構建電路時沒有 BMP180 模塊板存貨。如果需要進行精確的測量和合理的比較,我建議您使用相同的傳感器。
步驟 4: 準備數據記錄配件
另外,我希望設備能在不連接電腦的情況下存儲數據,因此添加了帶有實時時鐘的數據記錄模塊。以下是用於數據記錄和電路接駁的配件:
- SD 卡
- CR1220 鈕扣電池
- Arduino 的數據記錄模塊 (請參閱 Adafruit 上之學習文檔)
步驟 5: 準備製作工具
以下是構建電路時,所需的一些工具或設備:
- 30AWG 繞線筆
- 焊鐵
- 焊錫絲 (無鉛)
- 麵包板
- 2.54 mm 接頭
- 連接線
- 鍍銀線 (30AWG)
- 熱膠槍
- 3D 打印 (例如: 保護殼)
- Arduino IDE (我們需要用它來對開發板進行編程)
步驟 6: 重置數據記錄模塊上的 DS1307 實時時鐘 (RTC)
想將這些數據用於科學實驗,這樣正確的時間測量對於數據分析來說就很重要。若在編程中使用 delay()
函數,會在時移中引起測量誤差。然而,我不知道如何只用 Arduino 板進行精確的實時測量。為了避免採樣時間誤差或最小化測量誤差,我期望能夠對每個測量樣本進行時間記錄。幸運的是,數據記錄模塊具有實時時鐘 (RTC),我們可以使用它來輸出數據的採樣時間。
要使用 RTC,請依照說明重設 RTC。我建議首先使用 Arduino Uno 開發板進行此操作,因為使用 Atmega2560 板時 (I2C 連接不同) 您必須修改電路。設置 RTC 之後,請勿卸下 CR1220 電池。同時,在記錄數據之前,請檢查電池的狀況。
步驟 7: 接駁電路
因為要分別測量室內和室外環境,所以需要製作兩個接頭,連接兩組不同的傳感器,我利用了數據記錄模塊上的空位來安裝接頭。我同時使用焊接和繞線,以完成電路接駁。繞線乾淨方便,而焊接穩固安全,選擇一種令您感覺舒適的方法來構建電路。如果使用 Atmega2560 板,請確保已將 SDA 和 SCL 引腳的跳線連接,並必須重新連接數據記錄屏蔽模塊上的 RTC 連線。
我在傳感器模塊上焊接了插頭,然後繞線將所有傳感器連接到插頭,以接駁傳感器。在使用傳感器模塊時,建議您仔細檢查工作電壓。某些傳感器模塊接受 5V 和 3.3V 輸入,但某些傳感器模塊只能使用 5V 或 3.3V 的其中之一。
步驟 8: Programming the MCU
幸運的是,我可以找到所有傳感器的應用示例。如果您第一次使用它們,需要在網上下載,也可以使用 Arduino IDE 中的程式庫管理器進行安裝。
我將每個樣本都編程為系統輸出一個字符串,該字符串會被輸出並存儲在已安裝的 SD 卡中。如果需要查看數據,請關閉設備,然後卸載 SD 卡。然後,您可以將 SD 卡安裝到讀卡器上,搜索存儲為 CSV 檔案的文件。將數據文件下載至電腦之後,可以利用文本程序或工作表程序進行查看。
步驟 9: 測試並使用它!
您一定要了解數據的含義,這一點很重要。而採樣頻率是重要的參數之一,當前的測量時間間隔是 1 分鐘,您可能需要更改它。
此外,您會發現 DHT11 的溫度測量值不准確。 如果需要更精確的值,則可以使用 BMP 壓力傳感器的溫度讀數。
感謝您閱讀本文!
英文版原文初次發佈於 www.instructables.com (2017 年 7 月 25 日)
如果您喜歡這篇文章,請分享到您的 Facebook 和 Twitter。您也可以通過 Ko-fi 捐款支持本站。