資料介紹
描述
背景
![pYYBAGOSmYGAUmIjAAX5bEZzEJs824.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmYGAUmIjAAX5bEZzEJs824.jpg)
有時,了解您周圍的氣候和天氣狀況可能會很好。也許您急于趕往某個地方并想知道外面的溫度。或者,您可能擔心濕度會導致空氣質量變差,并想知道您是否還應該參加那次跑步。不管出于什么目的,人們都想知道這些數據。個人空氣監測儀旨在將其帶給他們。
個人空氣監測儀
個人空氣監測器是一種將實時本地傳感器數據直接發送到手機或筆記本電腦的便捷方式。Personal Air Monitor 方便地位于便攜式、封閉的傳感器站內,提供了一種基于直接傳感器測量即時了解您周圍的天氣和空氣狀況的方法。使用 Cayenne 的簡單連接提供了一個易于閱讀的儀表板界面,用于查看不同的條件,并且可以每小時配置一次事件以報告條件。
SparkFun Thing Dev ESP8266 微控制器
驅動傳感器站的電路板是 SparkFun Thing ESP8266 開發板,它可以方便地將 ESP8266 的引腳分成幾行,引向電路板。ESP8266 是一款具有板載無線連接功能的微控制器,Cayenne 將其用于數據傳輸。
![pYYBAGOSmZGAG3cjAATzuBUkhyE560.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmZGAG3cjAATzuBUkhyE560.jpg)
Cayenne、傳感器和數據傳輸
傳感器站有幾個機載傳感器來測量周圍的世界。這些包括:
- 溫度
- 濕度
- 氣壓/高度
傳感器站的外殼在頂部和底部進行了防水處理,但外殼內襯有通風孔,因此內部的傳感器可以獲得準確的讀數。然而,外殼頂部比底部大,因此雨水不會進入通風的側面。
每隔五秒鐘,來自設備傳感器的數據就會通過 WiFi 傳輸到 Cayenne,并在 Cayenne 儀表板上顯示。您可以通過手機或計算機訪問它。
如何建造
您將需要以下組件來構建傳感器站:
- SparkFun ESP8266 事物開發板
- 400 帶電源導軌的面包板
- DHT22溫濕度傳感器
- BMP180 大氣壓力傳感器*
- 10k 歐姆電阻(DHT22 的上拉電阻)
- 23根不同尺寸的跳線(或多或少);參見 Fritzing 圖
- 公 USB Micro B 到公 USB A 電纜
- 電工膠帶和剪刀
- 塑料通風外殼
*:BMP180 是退役產品。您可能會在某些地方找到一些,但如果您想找到替代品,請尋找 BMP280。但是,這些庫略有不同,因此您需要將代碼中的所有 BMP180 函數替換為 BMP280 函數。
要構建傳感器站,首先根據以下 Fritzing 圖組裝電路。
![pYYBAGOSmZeATJI7AAJ0h_SwTJM302.png](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmZeATJI7AAJ0h_SwTJM302.png)
要連接 SparkFun Thing Dev,請取一根小的實芯跳線,將其拉直,將其滑過您要使用的引腳,然后將頂部向下彎曲到電路板的一側。您也可以為 BMP180 執行此操作。如果您愿意,可以將這些引腳焊接下來。
![pYYBAGOSmZ6ACkN8AANXGI8ukYY999.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmZ6ACkN8AANXGI8ukYY999.jpg)
構建電路后,請執行以下步驟:
1. 將 USB Micro 電纜插入 SparkFun Thing Dev。它應該是一個相當靈活的電纜。
2. 使用電工膠帶將 SparkFun Thing Dev 和 BMP180 固定到面包板上。這將使他們稍微更穩定并防止不穩定的跳投運動。
3. 將裝置插入工藝盒并用電工膠帶固定。在側面切一個小孔,這樣您就可以接觸到電源開關。將 USB 數據線的一端穿過可用的通風孔,或切開通風孔的頂部之一并將電纜滑入。
4. 用透明膠帶密封工藝盒的頂部。
5. 將它插入您的筆記本電腦,您就可以開始編程了!
![pYYBAGOSmbqAA9TGAAWb_mwgnE0522.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmbqAA9TGAAWb_mwgnE0522.jpg)
編碼
為了對傳感器站進行編程,我們使用 Arduino IDE,您可以在 arduino.cc找到它
為了使用傳感器站程序對 SparkFun Thing Dev 進行編程,您需要執行以下額外操作:
1. 打開 File-Preferences 并轉到顯示 Additional Boards Manager URLs 的框。
![pYYBAGOSmb2AFiZrAAE2n-NH1mc693.png](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmb2AFiZrAAE2n-NH1mc693.png)
2. 在框中輸入以下內容,然后點擊首選項頁面底部的確定:
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
這將允許您在 Boards Manager 中上傳 SparkFun ESP8266 包。
3.關閉首選項并打開工具-Boards-Boards Manager。向下滾動,直到找到 SparkFun ESP8266 Boards。單擊它,然后單擊“安裝”。等待安裝完成,關閉boards manager。
4. 打開 Tools-Board 并向下滾動,直到您看到 SparkFun ESP8266 Thing Dev。單擊它,然后返回到工具。當您插入開發板時,您應該能夠打開端口并找到顯示 COM # 的內容,其中 # 是設備連接到的端口。
5. 現在您需要獲取額外的庫。轉到 Sketch-Include Library-Manage Libraries 并搜索以下內容:
- Adafruit 統一傳感器
- Adafruit BMP085 統一
- 卡宴-MQTT-ESP8266
單擊每個的安裝按鈕以獲取庫。
您需要在線查找 DHT 庫。從此鏈接下載:
https://github.com/adafruit/DHT-sensor-library
然后解壓縮文件(某些操作系統會自動執行此操作)并將其復制到 Arduino IDE 的庫路徑中。這應該在您計算機中包含所有代碼的文件夾中(路徑將在文檔-Arduino 中)。如果它不存在,請在 Arduino 文件夾中創建一個名為 libraries 的文件夾,然后打開它并將 DHT 庫粘貼到其中。完成后,您就可以開始了!
讓我們看看我們將要上傳的內容。首先,我們包括傳感器庫:
#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 有四個引腳,電源、數據、N/C 和接地。只有一根線用于通信,這條線發送溫度和濕度數據。Adafruit 庫提供了一種方便的方式來讀取這些數據。
我們創建一個名為 dht 的對象并將其設置為引腳 12,定義為 DHT22 單元。
和 是 BMP180 的庫。 是用于內部 IC 通信或 I2C 的庫,它是一種雙線控制接口,允許多個設備連接到一個主機。在這種情況下,我們使用 BMP180。 與舊版 BMP085 和 BMP180 兼容。它處理用戶和 Wire 庫之間的命令,Wire 庫又將命令發送到 BMP180。
我們創建一個名為 BMP180 的對象并為其指定一個任意 ID 號。如果您愿意,可以更改此設置。
接下來,讓我們看看 Cayenne 的設置。
#include <CayenneMQTTESP8266.h>
char ssid[] = "SSID";
char wifiPassword[] = "password";
char username[] = "username";
char password[] = "password";
char clientID[] = "clientID";
是處理 SparkFun Thing Dev 和 Cayenne 之間通信的庫。它使用 MQTT(消息隊列遙測傳輸)發送和接收數據。由于它使用 MQTT,因此需要一些標識信息:
- ssid[] 是您的網絡 ssid,或您的網絡名稱。輸入這個而不是“SSID”。
- wifiPassword[] 您的網絡密碼。用它替換“密碼”。
- username[]、password[] 和 clientID[] 都是 Cayenne 信息,稍后您將在本項目中學習如何查找這些信息。獲得此信息后,將“用戶名”、“密碼”和“clientID”替換為實際信息。
記得在信息周圍留下引號!
定義這些東西后,我們可以繼續設置傳感器站。該函數將運行一次。
void setup() {
BMP180.begin();
dht.begin();
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
}
這將使用 begin() 函數啟動 BMP180、DHT22 和 Cayenne。Cayenne 開始使用您之前聲明的 ID。
一旦設置運行一次,我們就會進入無限循環。在開始循環之前,我們聲明了一些變量。
boolean humidityStatus;
boolean temperatureStatus;
float humidityValue;
float temperatureValue;
float bmpTempValue;
float pressureValue;
float altitudeValue;
boolean bmpStatus;
float temperature;
這些變量用于在循環中進行計算和保存數據。
- humidityStatus、temperatureStatus 和 bmpStatus 是布爾變量。布爾變量返回 true 或 false。在這種情況下,它們將用于讓代碼知道傳感器是否已返回數據,或者是否可用于檢查。
- humidityValue、temperatureValue、bmpTempValue、pressureValue、altitudeValue 和 temperature 都是浮點變量。這些是浮點整數,在 Arduino 中返回兩位小數。它們將用于保存實際傳感器值,并對溫度變量進行計算。
現在我們進入循環!我們通過調用 Cayenne.loop() 來處理 Cayenne 操作來啟動循環。
void loop() {
Cayenne.loop();
然后我們為 BMP180 創建一個傳感器事件,以便我們可以檢查數據是否可用。
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 語句來確認數據可用。如果是,則狀態設置為真并存儲值。在這種情況下,這些值是壓力、溫度和高度。請注意,為了計算高度,BMP180 必須進行一些涉及當前壓力和海平面壓力的數學運算。seaLevelPressure 值是您可以輸入的地方。平均海平面壓力為 101.3 kPa(代碼為 1013 hPa),但如果您有當地海平面壓力(在線查找!),請繼續輸入以獲得更高的準確性。
如果沒有數據,或者傳感器可能不可用,則狀態變量為假。
得到BMP180數據后,我們得到DHT22數據。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() 是一個數學函數,用于檢查返回的數據是否為數字。如果它是一個數字,狀態將被設置為真并記錄數據。否則,status 將被設置為 false。
現在我們有了數據,可以將它發送給 Cayenne。首先,我們將發送濕度。
if (humidityStatus == true)
{
Cayenne.virtualWrite(0, humidityValue);
}
這只會在濕度狀態變量設置為真時運行。函數 Cayenne.virtualWrite() 是一個可用于將數據上傳到 Cayenne 的函數。第一個變量 0 是要使用的通道號。它將顯示在 Cayenne 儀表板中,我們將在稍后介紹。第二個變量是您要上傳的數據。在這種情況下,它的濕度值被發送到 Cayenne。
其次,讓我們發送溫度。由于我們有兩個板載傳感器,我們可以在這里做一些數學運算。
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 溫度數據是否可用。如果事實證明來自兩個傳感器的數據都可用,我們通過將它們的值相加并除以一半來取兩者的平均值。但是,如果 BMP180 數據不可用,我們就使用 DHT22 數據。但是,如果 DHT22 數據不可用而 BMP180 數據可用,我們將使用它發送給 Cayenne。通道 1 用于溫度。
之后,我們發送最后兩個數據值,即壓力和高度。
if (bmpStatus == true)
{
Cayenne.virtualWrite(2, pressureValue);
Cayenne.virtualWrite(3, altitudeValue);
}
壓力采用通道 2,高度采用通道 3。
最后,我們以 5 秒的延遲結束循環。這樣做是為了在數據上傳到 Cayenne 之間留出一些時間,因為快速更新會導致刷新問題并跳過數據值。DHT22 在傳感器檢查之間也需要至少 2 秒才能接收到所有數據。
delay(5000);
}
卡宴儀表板
現在您已準備好為傳感器站配置 Cayenne。我們使用計算機進行設置,以簡化配置過程。首先,前往網站https://mydevices.com/并登錄您的帳戶(如果有的話)。如果您不這樣做,請單擊注冊并使用您的姓名、電子郵件和帳戶密碼創建一個帳戶。如果您有帳戶,請單擊登錄并登錄到您的帳戶。之后,您應該能夠獲得選擇設備頁面。要找到 SparkFun Thing Dev,請在“所有設備”下搜索。然后您應該能夠找到用戶名、密碼和客戶端 ID。這些是您完成代碼所需的最后幾條信息。復制這些并將它們粘貼到代碼中的用戶名、密碼和 clientID 的位置。現在您可以將代碼上傳到 SparkFun Thing Dev。這應該只需要一點時間。
在上傳過程中,SparkFun Thing Dev 上的兩個橙色 LED 應該快速閃爍。一旦它們停止,打開您完成配置的 Cayenne 儀表板。然后您應該看到屏幕上出現一個儀表板,上面有四個數字。這是個人空氣監測儀!
![poYBAGOSmcaAAYmoAADxeW4r0jU221.png](https://file.elecfans.com/web2/M00/81/9B/poYBAGOSmcaAAYmoAADxeW4r0jU221.png)
現在您已經設置了 Personal Air Monitor,您可以為其創建一些觸發器。單擊“添加新觸發器”,您將被定向到一個頁面,您可以在其中為您的看板設置觸發器。給它起個名字,然后將 SparkFun Thing Dev 拖到 if 框中。然后選擇您的 if 語句。這可能是傳感器的簡單閾值,甚至是正在打開或關閉的設備。之后,點擊設置通知,如果需要電子郵件,請選中發送電子郵件框,如果需要短信,請發送短信。點擊“添加自定義收件人”將您的消息定向到另一個電子郵件帳戶或電話號碼。完成后,點擊保存以創建觸發器。
![pYYBAGOSmcmACff-AAE3DkZkFDA083.png](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmcmACff-AAE3DkZkFDA083.png)
如果您想與周圍的其他人分享您的實時數據,您可以給他們一個指向您儀表板的鏈接。首先,單擊創建項目并為其命名。然后,將 SparkFun Thing Dev 拖到概覽中并將其選中。數據隨后應出現在您的項目概覽中。出現后,轉到“共享”并選中“概述”。復制給定的鏈接并將其發送給您的朋友,他們可以單擊它來訪問您的數據。
![pYYBAGOSmc6AMkhdAAEAhJhVZ60683.png](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmc6AMkhdAAEAhJhVZ60683.png)
如果您想查看我的數據(如果它恰好在線),
您還可以在旅途中通過移動設備訪問 Cayenne。為此,請在您的移動設備應用程序商店中查找 Cayenne 應用程序。下載應用程序(免費!)并打開它。單擊添加新設備并查找 SparkFun Thing Dev。然后您應該能夠訪問您的儀表板!
![pYYBAGOSmdSAQOlQAAAqBwNRRlM328.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmdSAQOlQAAAqBwNRRlM328.jpg)
結論和實際應用
將 Cayenne 用于個人空氣監測器的便利之處在于傳感器數據在全球范圍內在線。這意味著它可以在世界任何地方訪問和共享!所以,如果你正在外地度假,想提前知道回家時的空氣狀況,就可以打開Cayenne一探究竟!反之亦然,因為您實際上可以在任何地方將多個傳感器站連接到您的 Cayenne 帳戶,或多個 Cayenne 帳戶!這將允許您創建一個全球監視器網絡,每組監視器負責一個特定區域。該網絡將能夠簡化互聯世界,并提供一種快速、簡單和方便的方式,讓您觸手可及地獲取直接的天氣和空氣數據。
![pYYBAGOSmfyAP0sFAAhgQkeiwR8392.jpg](https://file.elecfans.com/web2/M00/82/24/pYYBAGOSmfyAP0sFAAhgQkeiwR8392.jpg)
?
?
- 光子空氣顆粒物監測儀
- 開源硬件-警燈
- MM7D空氣質量測量儀開源硬件
- Ubidots信號記錄儀開源硬件
- Aerisilla空氣質量監測儀
- 油位監測開源硬件
- 氦水質監測儀開源分享
- 便攜式生命參數監測儀開源分享
- 木箱空氣質量監測儀開源分享
- 帶有24小時圖表的空氣監測儀
- 基于魚類行為的水質生物毒性監測儀 14次下載
- HYAQI-8100A微型空氣監測儀的數據手冊免費下載 3次下載
- 主流的開源硬件有哪些詳細資料說明
- 導彈發控監測儀設計與實現 0次下載
- 電源信號監測儀的設計 36次下載
- 噪聲監測儀有什么作用 569次閱讀
- GNSS監測儀有哪些作用 687次閱讀
- 用小安派開源硬件制作一個桌面天氣站 1007次閱讀
- 尋找開源硬件成功的觸發器 755次閱讀
- DIY一個開源的空氣質量監測儀 4187次閱讀
- 基于16位單片機SPCE061的監測儀設計 1938次閱讀
- 基于SPCE061A單片機和溫度傳感器實現多功能生理參數監測儀的設計 2276次閱讀
- 采用TI電量計實現動態血糖監測儀超長運作 3892次閱讀
- dfrobot空氣質量傳感器簡介 1290次閱讀
- 更小、更精確的血糖監測儀 1347次閱讀
- 生態景區BRL-FY負氧離子監測系統設計介紹 682次閱讀
- 健身房運動場館及智慧酒店賓館空氣監測系統介紹 1214次閱讀
- BYQL-LCD200智能空氣環境監測儀及室內環境在線監測系統介紹 4081次閱讀
- 三大主流開源硬件對比:Arduino vs BeagleBone vs Raspberry Pi 6657次閱讀
- 開源硬件究竟有多“Open”?看完這個你就清楚了 7124次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論