電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>個人空氣監(jiān)測儀開源硬件

個人空氣監(jiān)測儀開源硬件

2022-12-12 | zip | 0.09 MB | 次下載 | 2積分

資料介紹

描述

背景

?
pYYBAGOSmYGAUmIjAAX5bEZzEJs824.jpg
個人空氣監(jiān)測儀的傳感器!
?

有時,了解您周圍的氣候和天氣狀況可能會很好。也許您急于趕往某個地方并想知道外面的溫度。或者,您可能擔(dān)心濕度會導(dǎo)致空氣質(zhì)量變差,并想知道您是否還應(yīng)該參加那次跑步。不管出于什么目的,人們都想知道這些數(shù)據(jù)。個人空氣監(jiān)測儀旨在將其帶給他們。

個人空氣監(jiān)測儀

個人空氣監(jiān)測器是一種將實時本地傳感器數(shù)據(jù)直接發(fā)送到手機或筆記本電腦的便捷方式。Personal Air Monitor 方便地位于便攜式、封閉的傳感器站內(nèi),提供了一種基于直接傳感器測量即時了解您周圍的天氣和空氣狀況的方法。使用 Cayenne 的簡單連接提供了一個易于閱讀的儀表板界面,用于查看不同的條件,并且可以每小時配置一次事件以報告條件。

SparkFun Thing Dev ESP8266 微控制器

驅(qū)動傳感器站的電路板是 SparkFun Thing ESP8266 開發(fā)板,它可以方便地將 ESP8266 的引腳分成幾行,引向電路板。ESP8266 是一款具有板載無線連接功能的微控制器,Cayenne 將其用于數(shù)據(jù)傳輸。

?
pYYBAGOSmZGAG3cjAATzuBUkhyE560.jpg
SparkFun Thing 開發(fā)板!膠帶幫助它固定在面包板上。
?

Cayenne、傳感器和數(shù)據(jù)傳輸

傳感器站有幾個機載傳感器來測量周圍的世界。這些包括:

  • 溫度
  • 濕度
  • 氣壓/高度

傳感器站的外殼在頂部和底部進行了防水處理,但外殼內(nèi)襯有通風(fēng)孔,因此內(nèi)部的傳感器可以獲得準(zhǔn)確的讀數(shù)。然而,外殼頂部比底部大,因此雨水不會進入通風(fēng)的側(cè)面。

每隔五秒鐘,來自設(shè)備傳感器的數(shù)據(jù)就會通過 WiFi 傳輸?shù)?Cayenne,并在 Cayenne 儀表板上顯示。您可以通過手機或計算機訪問它。

如何建造

您將需要以下組件來構(gòu)建傳感器站:

  • SparkFun ESP8266 事物開發(fā)板
  • 400 帶電源導(dǎo)軌的面包板
  • DHT22溫濕度傳感器
  • BMP180 大氣壓力傳感器*
  • 10k 歐姆電阻(DHT22 的上拉電阻)
  • 23根不同尺寸的跳線(或多或少);參見 Fritzing 圖
  • USB Micro B 到公 USB A 電纜
  • 電工膠帶和剪刀
  • 塑料通風(fēng)外殼

*:BMP180 是退役產(chǎn)品。您可能會在某些地方找到一些,但如果您想找到替代品,請尋找 BMP280。但是,這些庫略有不同,因此您需要將代碼中的所有 BMP180 函數(shù)替換為 BMP280 函數(shù)。

要構(gòu)建傳感器站,首先根據(jù)以下 Fritzing 圖組裝電路。

?
pYYBAGOSmZeATJI7AAJ0h_SwTJM302.png
請注意,引線位于 Thing Dev 上的綠色圓圈和 BMP180 最左側(cè)的 4 個引腳下方。
?

要連接 SparkFun Thing Dev,請取一根小的實芯跳線,將其拉直,將其滑過您要使用的引腳,然后將頂部向下彎曲到電路板的一側(cè)。您也可以為 BMP180 執(zhí)行此操作。如果您愿意,可以將這些引腳焊接下來。

?
pYYBAGOSmZ6ACkN8AANXGI8ukYY999.jpg
引線被拉直并插入面包板,然后在 Thing Dev 周圍的頂部彎曲。
?

構(gòu)建電路后,請執(zhí)行以下步驟:

1. 將 USB Micro 電纜插入 SparkFun Thing Dev。它應(yīng)該是一個相當(dāng)靈活的電纜。

2. 使用電工膠帶將 SparkFun Thing Dev 和 BMP180 固定到面包板上。這將使他們稍微更穩(wěn)定并防止不穩(wěn)定的跳投運動。

3. 將裝置插入工藝盒并用電工膠帶固定。在側(cè)面切一個小孔,這樣您就可以接觸到電源開關(guān)。將 USB 數(shù)據(jù)線的一端穿過可用的通風(fēng)孔,或切開通風(fēng)孔的頂部之一并將電纜滑入。

4. 用透明膠帶密封工藝盒的頂部。

5. 將它插入您的筆記本電腦,您就可以開始編程了!

?
pYYBAGOSmbqAA9TGAAWb_mwgnE0522.jpg
參考步驟。我將電工膠帶放在面包板上并將其固定在兩側(cè)。
?

編碼

為了對傳感器站進行編程,我們使用 Arduino IDE,您可以在 arduino.cc找到它

下載適用于您的操作系統(tǒng)最新版本。

為了使用傳感器站程序?qū)?SparkFun Thing Dev 進行編程,您需要執(zhí)行以下額外操作:

1. 打開 File-Preferences 并轉(zhuǎn)到顯示 Additional Boards Manager URLs 的框。

?
pYYBAGOSmb2AFiZrAAE2n-NH1mc693.png
?

2. 在框中輸入以下內(nèi)容,然后點擊首選項頁面底部的確定:

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

這將允許您在 Boards Manager 中上傳 SparkFun ESP8266 包。

3.關(guān)閉首選項并打開工具-Boards-Boards Manager。向下滾動,直到找到 SparkFun ESP8266 Boards。單擊它,然后單擊“安裝”。等待安裝完成,關(guān)閉boards manager。

4. 打開 Tools-Board 并向下滾動,直到您看到 SparkFun ESP8266 Thing Dev。單擊它,然后返回到工具。當(dāng)您插入開發(fā)板時,您應(yīng)該能夠打開端口并找到顯示 COM # 的內(nèi)容,其中 # 是設(shè)備連接到的端口。

5. 現(xiàn)在您需要獲取額外的庫。轉(zhuǎn)到 Sketch-Include Library-Manage Libraries 并搜索以下內(nèi)容:

  • Adafruit 統(tǒng)一傳感器
  • Adafruit BMP085 統(tǒng)一
  • 卡宴-MQTT-ESP8266

單擊每個的安裝按鈕以獲取庫。

您需要在線查找 DHT 庫。從此鏈接下載:

https://github.com/adafruit/DHT-sensor-library

然后解壓縮文件(某些操作系統(tǒng)會自動執(zhí)行此操作)并將其復(fù)制到 Arduino IDE 的庫路徑中。這應(yīng)該在您計算機中包含所有代碼的文件夾中(路徑將在文檔-Arduino 中)。如果它不存在,請在 Arduino 文件夾中創(chuàng)建一個名為 libraries 的文件夾,然后打開它并將 DHT 庫粘貼到其中。完成后,您就可以開始了!

讓我們看看我們將要上傳的內(nèi)容。首先,我們包括傳感器庫:

#include <Adafruit_Sensor.h> 
#include <DHT.h> 
#include <DHT_U.h> 
DHT_Unified dht(12, DHT22); 
#include <Wire.h> 
#include <Adafruit_BMP085_U.h> 
Adafruit_BMP085_Unified BMP180 = Adafruit_BMP085_Unified(18001);

是 DHT22 和 BMP180 傳感器使用的庫。它提供了所有庫的一些通用功能。

和 是用于 DHT22 溫度和濕度傳感器的庫。DHT22 有四個引腳,電源、數(shù)據(jù)、N/C 和接地。只有一根線用于通信,這條線發(fā)送溫度和濕度數(shù)據(jù)。Adafruit 庫提供了一種方便的方式來讀取這些數(shù)據(jù)。

我們創(chuàng)建一個名為 dht 的對象并將其設(shè)置為引腳 12,定義為 DHT22 單元。

和 是 BMP180 的庫。 是用于內(nèi)部 IC 通信或 I2C 的庫,它是一種雙線控制接口,允許多個設(shè)備連接到一個主機。在這種情況下,我們使用 BMP180。 與舊版 BMP085 和 BMP180 兼容。它處理用戶和 Wire 庫之間的命令,Wire 庫又將命令發(fā)送到 BMP180。

我們創(chuàng)建一個名為 BMP180 的對象并為其指定一個任意 ID 號。如果您愿意,可以更改此設(shè)置。

接下來,讓我們看看 Cayenne 的設(shè)置。

#include <CayenneMQTTESP8266.h> 
char ssid[] = "SSID"; 
char wifiPassword[] = "password"; 
char username[] = "username"; 
char password[] = "password"; 
char clientID[] = "clientID";

是處理 SparkFun Thing Dev 和 Cayenne 之間通信的庫。它使用 MQTT(消息隊列遙測傳輸)發(fā)送和接收數(shù)據(jù)。由于它使用 MQTT,因此需要一些標(biāo)識信息

  • ssid[] 是您的網(wǎng)絡(luò) ssid,或您的網(wǎng)絡(luò)名稱。輸入這個而不是“SSID”。
  • wifiPassword[] 您的網(wǎng)絡(luò)密碼。用它替換“密碼”。
  • username[]、password[] 和 clientID[] 都是 Cayenne 信息,稍后您將在本項目中學(xué)習(xí)如何查找這些信息。獲得此信息后,將“用戶名”、“密碼”和“clientID”替換為實際信息。

記得在信息周圍留下引號!

定義這些東西后,我們可以繼續(xù)設(shè)置傳感器站。該函數(shù)將運行一次。

void setup() { 
 BMP180.begin(); 
 dht.begin(); 
 Cayenne.begin(username, password, clientID, ssid, wifiPassword); 
}

這將使用 begin() 函數(shù)啟動 BMP180、DHT22 和 Cayenne。Cayenne 開始使用您之前聲明的 ID。

一旦設(shè)置運行一次,我們就會進入無限循環(huán)。在開始循環(huán)之前,我們聲明了一些變量。

boolean humidityStatus; 
boolean temperatureStatus; 
float humidityValue; 
float temperatureValue; 
float bmpTempValue; 
float pressureValue; 
float altitudeValue; 
boolean bmpStatus; 
float temperature;

這些變量用于在循環(huán)中進行計算和保存數(shù)據(jù)。

  • humidityStatus、temperatureStatus 和 bmpStatus 是布爾變量。布爾變量返回 true 或 false。在這種情況下,它們將用于讓代碼知道傳感器是否已返回數(shù)據(jù),或者是否可用于檢查。
  • humidityValue、temperatureValue、bmpTempValue、pressureValue、altitudeValue 和 temperature 都是浮點變量。這些是浮點整數(shù),在 Arduino 中返回兩位小數(shù)。它們將用于保存實際傳感器值,并對溫度變量進行計算。

現(xiàn)在我們進入循環(huán)!我們通過調(diào)用 Cayenne.loop() 來處理 Cayenne 操作來啟動循環(huán)。

void loop() { 
Cayenne.loop();

然后我們?yōu)?BMP180 創(chuàng)建一個傳感器事件,以便我們可以檢查數(shù)據(jù)是否可用。

sensors_event_t event; 
BMP180.getEvent(&event); 
if (event.pressure) 
{  
  bmpStatus = true; 
  pressureValue = event.pressure; 
  BMP180.getTemperature(&temperature); 
  float seaLevelPressure = 1013; 
  altitudeValue = BMP180.pressureToAltitude(seaLevelPressure, event.pressure); 
} 
else  
{ 
  bmpStatus = false; 
}

然后,此代碼塊使用 if 語句來確認(rèn)數(shù)據(jù)可用。如果是,則狀態(tài)設(shè)置為真并存儲值。在這種情況下,這些值是壓力、溫度和高度。請注意,為了計算高度,BMP180 必須進行一些涉及當(dāng)前壓力和海平面壓力的數(shù)學(xué)運算。seaLevelPressure 值是您可以輸入的地方。平均海平面壓力為 101.3 kPa(代碼為 1013 hPa),但如果您有當(dāng)?shù)睾F矫鎵毫Γㄔ诰€查找?。埨^續(xù)輸入以獲得更高的準(zhǔn)確性。

如果沒有數(shù)據(jù),或者傳感器可能不可用,則狀態(tài)變量為假。

得到BMP180數(shù)據(jù)后,我們得到DHT22數(shù)據(jù)。DHT22 返回溫度(攝氏度)和濕度(百分比)。

sensors_event_t event1; 
dht.temperature().getEvent(&event1); 
if (isnan(event1.temperature)) { 
  temperatureStatus = false; 
} 
else { 
  temperatureStatus = true; 
  temperatureValue = event1.temperature; 
} 
dht.humidity().getEvent(&event1); 
if (isnan(event1.relative_humidity)) {  
  humidityStatus = false; 
} 
else { 
  humidityStatus = true; 
  humidityValue = event1.relative_humidity; 
}

這里我們有一個傳感器事件用于獲取溫度和濕度事件。isnan() 是一個數(shù)學(xué)函數(shù),用于檢查返回的數(shù)據(jù)是否為數(shù)字。如果它是一個數(shù)字,狀態(tài)將被設(shè)置為真并記錄數(shù)據(jù)。否則,status 將被設(shè)置為 false。

現(xiàn)在我們有了數(shù)據(jù),可以將它發(fā)送給 Cayenne。首先,我們將發(fā)送濕度。

if (humidityStatus == true)
 { 
   Cayenne.virtualWrite(0, humidityValue); 
 }

這只會在濕度狀態(tài)變量設(shè)置為真時運行。函數(shù) Cayenne.virtualWrite() 是一個可用于將數(shù)據(jù)上傳到 Cayenne 的函數(shù)。第一個變量 0 是要使用的通道號。它將顯示在 Cayenne 儀表板中,我們將在稍后介紹。第二個變量是您要上傳的數(shù)據(jù)。在這種情況下,它的濕度值被發(fā)送到 Cayenne。

其次,讓我們發(fā)送溫度。由于我們有兩個板載傳感器,我們可以在這里做一些數(shù)學(xué)運算。

if (temperatureStatus == true) 
{ 
  if (bmpStatus == true) 
  { 
    float averageTemp = (temperature + temperatureValue) / 2; 
    Cayenne.virtualWrite(1, averageTemp); 
  } 
  else 
  { 
    Cayenne.virtualWrite(1, temperatureValue); 
  } 
} 
else if (bmpStatus == true) 
{ 
  Cayenne.virtualWrite(1, temperature); 
}

首先,我們檢查 DHT22 的溫度是否可用。如果是,我們將進行第二次檢查以查看 BMP180 溫度數(shù)據(jù)是否可用。如果事實證明來自兩個傳感器的數(shù)據(jù)都可用,我們通過將它們的值相加并除以一半來取兩者的平均值。但是,如果 BMP180 數(shù)據(jù)不可用,我們就使用 DHT22 數(shù)據(jù)。但是,如果 DHT22 數(shù)據(jù)不可用而 BMP180 數(shù)據(jù)可用,我們將使用它發(fā)送給 Cayenne。通道 1 用于溫度。

之后,我們發(fā)送最后兩個數(shù)據(jù)值,即壓力和高度。

if (bmpStatus == true) 
{ 
  Cayenne.virtualWrite(2, pressureValue); 
  Cayenne.virtualWrite(3, altitudeValue); 
}

壓力采用通道 2,高度采用通道 3。

最后,我們以 5 秒的延遲結(jié)束循環(huán)。這樣做是為了在數(shù)據(jù)上傳到 Cayenne 之間留出一些時間,因為快速更新會導(dǎo)致刷新問題并跳過數(shù)據(jù)值。DHT22 在傳感器檢查之間也需要至少 2 秒才能接收到所有數(shù)據(jù)。

delay(5000); 
}

卡宴儀表板

現(xiàn)在您已準(zhǔn)備好為傳感器站配置 Cayenne。我們使用計算機進行設(shè)置,以簡化配置過程。首先,前往網(wǎng)站https://mydevices.com/并登錄您的帳戶(如果有的話)。如果您不這樣做,請單擊注冊并使用您的姓名、電子郵件和帳戶密碼創(chuàng)建一個帳戶。如果您有帳戶,請單擊登錄并登錄到您的帳戶。之后,您應(yīng)該能夠獲得選擇設(shè)備頁面。要找到 SparkFun Thing Dev,請在“所有設(shè)備”下搜索。然后您應(yīng)該能夠找到用戶名、密碼和客戶端 ID。這些是您完成代碼所需的最后幾條信息。復(fù)制這些并將它們粘貼到代碼中的用戶名、密碼和 clientID 的位置。現(xiàn)在您可以將代碼上傳到 SparkFun Thing Dev。這應(yīng)該只需要一點時間。

在上傳過程中,SparkFun Thing Dev 上的兩個橙色 LED 應(yīng)該快速閃爍。一旦它們停止,打開您完成配置的 Cayenne 儀表板。然后您應(yīng)該看到屏幕上出現(xiàn)一個儀表板,上面有四個數(shù)字。這是個人空氣監(jiān)測儀!

?
poYBAGOSmcaAAYmoAADxeW4r0jU221.png
Cayenne 儀表板,啟動并運行!
?

現(xiàn)在您已經(jīng)設(shè)置了 Personal Air Monitor,您可以為其創(chuàng)建一些觸發(fā)器。單擊“添加新觸發(fā)器”,您將被定向到一個頁面,您可以在其中為您的看板設(shè)置觸發(fā)器。給它起個名字,然后將 SparkFun Thing Dev 拖到 if 框中。然后選擇您的 if 語句。這可能是傳感器的簡單閾值,甚至是正在打開或關(guān)閉的設(shè)備。之后,點擊設(shè)置通知,如果需要電子郵件,請選中發(fā)送電子郵件框,如果需要短信,請發(fā)送短信。點擊“添加自定義收件人”將您的消息定向到另一個電子郵件帳戶或電話號碼。完成后,點擊保存以創(chuàng)建觸發(fā)器。

?
pYYBAGOSmcmACff-AAE3DkZkFDA083.png
當(dāng)溫度超過 30 攝氏度時創(chuàng)建電子郵件觸發(fā)器。
?

如果您想與周圍的其他人分享您的實時數(shù)據(jù),您可以給他們一個指向您儀表板的鏈接。首先,單擊創(chuàng)建項目并為其命名。然后,將 SparkFun Thing Dev 拖到概覽中并將其選中。數(shù)據(jù)隨后應(yīng)出現(xiàn)在您的項目概覽中。出現(xiàn)后,轉(zhuǎn)到“共享”并選中“概述”。復(fù)制給定的鏈接并將其發(fā)送給您的朋友,他們可以單擊它來訪問您的數(shù)據(jù)。

?
pYYBAGOSmc6AMkhdAAEAhJhVZ60683.png
共享框。您可以單擊“復(fù)制鏈接”以在剪貼板上獲取鏈接。
?

如果您想查看我的數(shù)據(jù)(如果它恰好在線),

您還可以在旅途中通過移動設(shè)備訪問 Cayenne。為此,請在您的移動設(shè)備應(yīng)用程序商店中查找 Cayenne 應(yīng)用程序。下載應(yīng)用程序(免費?。┎⒋蜷_它。單擊添加新設(shè)備并查找 SparkFun Thing Dev。然后您應(yīng)該能夠訪問您的儀表板!

?
pYYBAGOSmdSAQOlQAAAqBwNRRlM328.jpg
手機上的卡宴!只要您有互聯(lián)網(wǎng)連接,就可以隨時隨地訪問。
?

結(jié)論和實際應(yīng)用

將 Cayenne 用于個人空氣監(jiān)測器的便利之處在于傳感器數(shù)據(jù)在全球范圍內(nèi)在線。這意味著它可以在世界任何地方訪問和共享!所以,如果你正在外地度假,想提前知道回家時的空氣狀況,就可以打開Cayenne一探究竟!反之亦然,因為您實際上可以在任何地方將多個傳感器站連接到您的 Cayenne 帳戶,或多個 Cayenne 帳戶!這將允許您創(chuàng)建一個全球監(jiān)視器網(wǎng)絡(luò),每組監(jiān)視器負(fù)責(zé)一個特定區(qū)域。該網(wǎng)絡(luò)將能夠簡化互聯(lián)世界,并提供一種快速、簡單和方便的方式,讓您觸手可及地獲取直接的天氣和空氣數(shù)據(jù)。

?
pYYBAGOSmfyAP0sFAAhgQkeiwR8392.jpg
個人空氣監(jiān)測儀
?

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費