資料介紹
成分
PCBWay定制PCB
?
|
× 1 |
Arduino Nano RP2040 連接
?
|
× 1 |
?
|
× 1 |
GP2Y1010AU0F 灰塵傳感器
?
|
× 1 |
0.91" OLED液晶顯示模組
?
|
× 1 |
5mm共陽極RGB LED
?
|
× 1 |
220μF 電容
?
|
× 1 |
150Ω電阻
?
|
× 1 |
2.2K電阻
?
|
× 1 |
3.3K電阻
?
|
× 1 |
電源插座
?
|
× 1 |
外接電池
?
|
× 1 |
描述
Jigglypuff IoT 二氧化碳和粉塵監(jiān)測器(跟蹤器)帶電報(bào)
?
The dust density and the carbon dioxide (CO2) density affect my sleep quality and health detrimentally due to the fact that I have allergic bronchitis. Allergic bronchitis is a chronic pulmonary disease, and exposure to allergy triggers like tobacco smoke, pollution, or dust can instigate it. When the dust density and the carbon dioxide density are higher, it becomes struggling for me to breathe, especially while sleeping. Therefore, I decided to create this project to track the dust density and the carbon dioxide density in my room remotely so as to get a prescient warning to extenuate my symptoms before going to bed.
?
由于 Telegram 是一個(gè)兼容 iOS 和 Android 的跨平臺基于云的消息服務(wù),我決定創(chuàng)建一個(gè) Telegram 機(jī)器人來輕松監(jiān)控多個(gè)設(shè)備上的灰塵和二氧化碳密度評估。在 Telegram 中,與任何其他消息傳遞應(yīng)用程序不同,使用命令列表創(chuàng)建機(jī)器人很容易,這些消息應(yīng)用程序是不需要額外電話號碼來設(shè)置的特殊帳戶。IoT Carbon Dioxide and Dust Monitor 是我為這個(gè)項(xiàng)目創(chuàng)建的 Telegram 機(jī)器人,它允許用戶使用以下命令顯示實(shí)時(shí)灰塵和二氧化碳密度評估:
?
- /co2_density
- /dust_density
?
我開發(fā)了一個(gè) PHP Web 應(yīng)用程序(傳出)來與我的 Telegram 機(jī)器人通信。該應(yīng)用程序從 Telegram Bot API 更新,將傳感器生成的灰塵和二氧化碳密度評估(如下所述)保存到給定的 MySQL 數(shù)據(jù)庫表中,并在請求時(shí)將密度評估發(fā)送到我的 Telegram bot。
?
為了準(zhǔn)確獲取灰塵密度和二氧化碳濃度,我使用了 MH-Z14A NDIR CO2 傳感器和 GP2Y1010AU0F 灰塵傳感器。我選擇使用 Arduino Nano RP2040 Connect 來讀取評估并將其傳輸?shù)?Web 應(yīng)用程序,因?yàn)樗蔷哂袃?nèi)置 u-blox NINA-W102 無線電模塊的高性能開發(fā)板。顧名思義,該板基于 Raspberry Pi Foundation 的 RP2040 微控制器。
?
為了在將評估發(fā)送到 Web 應(yīng)用程序之前在設(shè)備上顯示評估,我使用了 SSD1306 OLED (128x32) 屏幕。最后,我添加了一個(gè) 5mm 共陽極 RGB LED 來顯示設(shè)備(通過 Nano RP2040 Connect)和 Web 應(yīng)用程序之間的連接狀態(tài)。
?
在完成面包板上的接線并測試代碼后,Jigglypuff 啟發(fā)我為這個(gè)項(xiàng)目設(shè)計(jì)了一個(gè) PCB。由于 Jigglypuff 有一個(gè)臭名昭著的睡眠發(fā)作,我認(rèn)為為一個(gè)項(xiàng)目設(shè)計(jì)一個(gè) Jigglypuff PCB 會很可愛,這有助于我在睡覺前緩解我的過敏癥狀 :)
?
由于粉紅色 PCB 并不普遍,您之前可能沒有見過粉紅色阻焊層選項(xiàng)。如果您想像我的 PCB 一樣設(shè)計(jì)帶有粉色阻焊層選項(xiàng)的 PCB,我強(qiáng)烈推薦 PCBWay。他們?yōu)楠?dú)特的 PCB 顏色和要求提供快速、可靠且經(jīng)濟(jì)實(shí)惠的服務(wù)。您可以從這里檢查 PCBWay 阻焊層和絲印選項(xiàng)?。
?
?
?
?
?
第 1 步:設(shè)計(jì)和焊接 Jigglypuff IoT 二氧化碳和灰塵監(jiān)測器 PCB
?
在對我的 PCB 設(shè)計(jì)進(jìn)行原型設(shè)計(jì)之前,我使用 Arduino Nano RP2040 Connect 測試了所有連接和接線。
?
?
然后,我利用 KiCad 設(shè)計(jì)了物聯(lián)網(wǎng)二氧化碳和灰塵監(jiān)測器 PCB - 靈感來自可愛迷人的 Jigglypuff :) 我在下面附上了 PCB 的 Gerber 文件。因此,如果您愿意,您可以從 PCBWay 訂購此 PCB,以創(chuàng)建一個(gè)可愛的設(shè)備來跟蹤任何地方的灰塵密度和二氧化碳密度。
?
?
?
首先,通過使用烙鐵,我連接了接頭(母)、電阻器(150Ω、2.2K、3.3K)、MH-Z14A NDIR CO2 傳感器、GP2Y1010AU0F 灰塵傳感器、5mm 共陽極 RGB LED、電容器(220μF)和電源插孔。
?
PCB上的元件清單:
?
A1(用于 Arduino Nano RP2040 連接的接頭)
SSD1306(SSD1306 OLED (128x32) 屏幕的接頭)
MHZ14(MH-Z14A NDIR CO2 傳感器)
GP2Y10(GP2Y1010AU0F灰塵傳感器)
D1 (5mm 共陽極 RGB LED)
C1 (220μF電容)
R1(2.2K電阻)
R2(3.3K電阻)
R3(150Ω電阻)
J1(電源插孔)
?
?
?
?
為了讓我的 PCB 設(shè)計(jì)更加精致,我在 PCB 背面安裝了 GP2Y1010AU0F 灰塵傳感器,并用熱膠槍將其固定。我還添加了兩個(gè)焊接跳線墊(JP1、JP2),將 Nano RP2040 Connect 連接到 MH-Z14A CO2 傳感器的 UART 接口。
?
?
第 2 步:使用 BotFather 構(gòu)建 Telegram 機(jī)器人
?
BotFather 是一個(gè) Telegram 機(jī)器人,可讓我們在 Telegram 上創(chuàng)建和管理機(jī)器人,而無需任何編碼。
?
? 首先,在 Telegram 上打開 BotFather 并輸入 /start 以查看可用的命令列表和手冊。
?
?
? 使用 /newbot 命令創(chuàng)建一個(gè)新機(jī)器人。當(dāng) BotFather 要求您輸入名稱時(shí),輸入您的機(jī)器人的名稱。它顯示在聯(lián)系方式和其他地方。
?
物聯(lián)網(wǎng)二氧化碳和粉塵監(jiān)測儀
?
? 然后,輸入您的機(jī)器人的用戶名。用戶名長度為 5-32 個(gè)字符,不區(qū)分大小寫,但只能包含拉丁字符、數(shù)字和下劃線。它們必須以“bot”結(jié)尾,例如“tetris_bot”或“TetrisBot”。
?
co2_dust_bot
?
? 在這些步驟之后,BotFather 會為您的新機(jī)器人生成一個(gè)授權(quán)令牌。授權(quán)令牌是一個(gè)類似于 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 的字符串,它是授權(quán)機(jī)器人并向 Telegram Bot API 發(fā)送請求所必需的。確保您的令牌安全并安全存儲。
?
?
? 此外,您可以使用/setuserpic?命令更改機(jī)器人的個(gè)人資料圖片?。
?
?
? 最后,輸入 /setcommands 命令來定義最近創(chuàng)建的機(jī)器人支持的命令列表。用戶在與機(jī)器人的聊天中鍵入 / 時(shí),會將這些命令視為建議。
?
?? 我為 Telegram 機(jī)器人(IoT 二氧化碳和粉塵監(jiān)測器)創(chuàng)建的命令列表:
?
- /co2_density - 顯示 MH-Z14A NDIR CO2 傳感器產(chǎn)生的 CO2 密度
- /dust_density - 監(jiān)控 GP2Y10 灰塵傳感器產(chǎn)生的灰塵密度
- /幫助 - 幫助
?
?
第 3 步:用 PHP 開發(fā)一個(gè) Web 應(yīng)用程序以通過 Telegram Bot API 與機(jī)器人通信
?
成功創(chuàng)建 Telegram 機(jī)器人后,我需要從 Telegram Bot API 獲取更新以與我的機(jī)器人通信。因此,我用 PHP 開發(fā)了一個(gè) web 應(yīng)用程序,名為 telegram_co2_and_dust_monitor,以便:
?
- 通過Telegram Bot API從我的 Telegram 機(jī)器人(IoT 二氧化碳和粉塵監(jiān)測器)獲取更新,
- 獲取 Nano RP2040 Connect 傳輸?shù)幕覊m和二氧化碳密度評估,并將它們保存到給定的 MySQL 數(shù)據(jù)庫表中,
- 根據(jù)要求向我的 Telegram 機(jī)器人發(fā)送消息(灰塵和二氧化碳密度評估)。
?
該應(yīng)用程序包含一個(gè)文件 - index.php。我在 index.php 文件中創(chuàng)建了一個(gè)名為 telegram_co2_dust_monitor 的類,以保存 Nano RP2040 Connect 傳輸?shù)?a target='_blank' class='arckwlink_none'>信息到給定的 MySQL 數(shù)據(jù)庫表,并在請求時(shí)將該信息發(fā)送到給定的 Telegram 機(jī)器人。
?
? 在 __init__ 函數(shù)中,該類需要四個(gè)參數(shù)來執(zhí)行函數(shù):
?
- 令牌?給定電報(bào)機(jī)器人的授權(quán)令牌
- 網(wǎng)絡(luò)路徑?Telegram Bot API 請求服務(wù)器
- 康?MySQL數(shù)據(jù)庫連接設(shè)置
- 桌子 ?MySQL數(shù)據(jù)庫表名
?
? 在 send_message 函數(shù)中,應(yīng)用程序使用機(jī)器人的授權(quán)令牌通過 Telegram Bot API 將給定的文本發(fā)送給給定的機(jī)器人。
?
語法:https://api.telegram.org/bot
?
? 在 send_photo 函數(shù)中,應(yīng)用程序使用機(jī)器人的授權(quán)令牌通過 Telegram Bot API 將給定的圖片發(fā)送給給定的機(jī)器人。
?
語法:https://api.telegram.org/bot
?
? 在 send_video 函數(shù)中,應(yīng)用程序使用機(jī)器人的授權(quán)令牌通過 Telegram Bot API 將給定的視頻發(fā)送到給定的機(jī)器人。
?
語法:https://api.telegram.org/bot
?
{
->token = $token;
->web_path = $server.$token;
->conn = $conn;
->table = $table;
}
{
$new_message = -> web_path。 .$id. .urlencode($string);
file_get_contents($new_message);
}
{
$new_photo = -> web_path。 .$id. .$照片。 .$caption;
文件獲取內(nèi)容($new_photo);
}
{
$new_video = -> web_path。 .$id. .$視頻。 .$caption;
文件獲取內(nèi)容($new_video);
}
?
? 在 update_database 函數(shù)中,將給定信息保存到給定 MySQL 數(shù)據(jù)庫表中的給定列。
?
{
$sql = ;
mysqli_query( ->conn, $sql);
}
?
? 在 get_data_from_database 函數(shù)中,從給定 MySQL 數(shù)據(jù)庫表的給定列中獲取并返回請求的信息。
?
{
$sql = ;
$result = mysqli_query( ->conn, $sql);
($row = mysqli_fetch_assoc($result)){
$row[$_column];
}
}
?
? 定義所需的 MySQL 數(shù)據(jù)庫連接設(shè)置和 co2_dust_monitor 對象及其所需參數(shù)。
?
$server = ( => , => , => , => , => ); $conn = mysqli_connect($server[ ], $server[ ], $server[ ], $server[ ]); $co2_dust_monitor = telegram_co2_dust_monitor(); $bot_token = ; $co2_dust_monitor->__init__($bot_token, , $conn, $server[ ]);
?
? 從 Telegram Bot API 獲取更新。
?
$updates = json_decode(file_get_contents( ), );
?
? 如果應(yīng)用程序從 Telegram Bot API 接收數(shù)據(jù),則獲取聊天 ID 和消息。
?
? 根據(jù)傳入消息的類型 - 照片、視頻、文檔或文本 - 使用引發(fā)的聊天 ID 回復(fù)聊天。
?
? Web 應(yīng)用程序與來自給定 Telegram 機(jī)器人的這些命令兼容:
?
- /開始
- /co2_density
- /dust_density
- /幫助
?
? 如果收到 /start 命令,應(yīng)用程序會將聊天 ID 注冊到給定的 MySQL 數(shù)據(jù)庫表,以便發(fā)送消息而無需從 Telegram Bot API 進(jìn)行更新。
?
? 如果收到 /co2_density 命令,Web 應(yīng)用程序會將存儲在數(shù)據(jù)庫表中的最新二氧化碳密度評估和更新時(shí)間發(fā)送給給定的 Telegram 機(jī)器人。
?
? 如果收到 /dust_density 命令,Web 應(yīng)用程序會將存儲在數(shù)據(jù)庫表中的最新灰塵密度評估和更新時(shí)間發(fā)送給給定的 Telegram 機(jī)器人。
?
? 如果接收到 /help 命令,Web 應(yīng)用程序會將帶有描述的支持命令列表發(fā)送到給定的 Telegram 機(jī)器人。
?
? 默認(rèn)情況下,如果沒有收到支持的命令而是文本,Web 應(yīng)用程序會發(fā)送:
?
等待你的命令:)
?
($updates[ ]){ $chat_id = $updates[ ][ ][ ]; $message = $updates[ ][ ]; ($updates[ ][ ]){ $co2_dust_monitor->send_message($chat_id, ); } ($updates[ ][ ]){ $co2_dust_monitor->send_message($chat_id, ); } ($updates[ ][ ]){ $co2_dust_monitor->send_message($chat_id, ); } { ($message){ : $co2_dust_monitor->update_database( , $chat_id); $co2_dust_monitor->send_message($chat_id, ); ; : $co2 = $co2_dust_monitor->get_data_from_database( ); $date = $co2_dust_monitor->get_data_from_database( ); $co2_dust_monitor->send_message($chat_id, ); ; : $dust = $co2_dust_monitor->get_data_from_database( ); $date = $co2_dust_monitor->get_data_from_database( ); $co2_dust_monitor->send_message($chat_id, ); ; : $co2_dust_monitor->send_message($chat_id, ); ; : $co2_dust_monitor->send_message($chat_id, ); ; } } }
?
? 如果 Nano RP2040 Connect 將灰塵和二氧化碳密度評估傳輸?shù)?Web 應(yīng)用程序,請將它們保存到給定的 MySQL 數(shù)據(jù)庫表中。然后,使用 date 函數(shù)設(shè)置時(shí)區(qū)以精確得出最新的更新時(shí)間,并將其保存到數(shù)據(jù)庫表中。
?
( ($_GET[ ]) && ($_GET[ ])){ $co2_dust_monitor->update_database( , htmlentities($_GET[ ])); $co2_dust_monitor->update_database( , htmlentities($_GET[ ])); date_default_timezone_set( ); $co2_dust_monitor->update_database( , date( )); ( ); }
?
?
?
?
步驟 3.1:創(chuàng)建 MySQL 數(shù)據(jù)庫表并保存更新
?
在用 PHP 開發(fā) Web 應(yīng)用程序后,我在我的服務(wù)器上創(chuàng)建了一個(gè)新的 MySQL 數(shù)據(jù)庫 (telegramco2dustmonitor)。然后,我在 telegramco2dustmonitor 數(shù)據(jù)庫中創(chuàng)建了一個(gè)數(shù)據(jù)庫表(條目),以收集 Nano RP2040 Connect 傳輸?shù)幕覊m和二氧化碳密度評估。最后,我在條目數(shù)據(jù)庫表中為每個(gè)屬性(列)插入了默認(rèn)值:
?
telegramco2dustmonitor > 條目 > 屬性:
?
- 聊天ID
- 二氧化碳
- 灰塵
- 日期
?
( chat_id ()主 , co2 ( ) , 灰塵 ( ) , ( ) ); ( 、 ” 、 “dust” 、 “ )(、、、)
?
?
?
通過向 https://api.telegram.org/ 發(fā)出請求從 Telegram Bot API 獲取更新需要 SSL 連接,因此我使用我網(wǎng)站的服務(wù)器來托管 Web 應(yīng)用程序。
?
theamplituhedron.com
?
但是,? Telegram Bot API?是開源的,可在?telegram-bot-api獲得。您可以在本地運(yùn)行它并將請求發(fā)送到您的服務(wù)器而不是 https://api.telegram.org。
?
?
???當(dāng) Web 應(yīng)用程序獲取信息并將該信息成功保存到數(shù)據(jù)庫表中時(shí),應(yīng)用程序會打印:
?
數(shù)據(jù)注冊成功!
?
?
步驟 3.2:設(shè)置 Web 應(yīng)用程序以與機(jī)器人通信
?
在開發(fā) Web 應(yīng)用程序(傳出 webhook)并創(chuàng)建 MySQL 數(shù)據(jù)庫表之后,我需要使用setWebhook方法為我的 Telegram 機(jī)器人(IoT 二氧化碳和灰塵監(jiān)視器)指定應(yīng)用程序 URL,??以接收來自 Telegram Bot API 的傳入更新。
?
https://api.telegram.org/bot
?
?
? 指定應(yīng)用程序 URL 后,Telegram Bot API 會拋出此消息:Webhook 已設(shè)置。
?
? 要檢查給定的 Telegram 機(jī)器人功能并將聊天 ID 注冊到數(shù)據(jù)庫表中,請打開機(jī)器人并輸入 /start。
?
?
?
? 輸入?/help?以查看支持的命令列表和說明。
?
?
第 4 步:為 Nano RP2040 Connect 安裝 Mbed OS 內(nèi)核
?
由于我決定在這個(gè)項(xiàng)目中使用 Arduino Nano RP2040 Connect,我需要將 Mbed OS 內(nèi)核安裝到 Arduino IDE 中。
?
? 在 Arduino IDE 上,導(dǎo)航到 Tools > Board > Boards Manager。
?
?
? 然后,搜索?Arduino Mbed OS Nano Boards?內(nèi)核并安裝它。
?
?
? 成功安裝所需內(nèi)核后,轉(zhuǎn)到?Tools > Board > Arduino Mbed OS Nano Boards?并選擇?Arduino Nano RP2040 Connect。
?
?
第 5 步:將證書添加到 Nano RP2040 Connect
?
在 Arduino IDE 上安裝 Arduino Nano RP2040 Connect 所需的內(nèi)核后,我設(shè)置了開發(fā)板以通過 SSL 連接連接到我網(wǎng)站的服務(wù)器。不幸的是,對于 Nano RP2040 Connect,通過 SSL 連接連接到服務(wù)器并不像其他 Arduino IoT 板那么簡單。它需要預(yù)安裝 SSL 證書,該證書不包含在開發(fā)板中。
因此,我需要將我網(wǎng)站服務(wù)器的 SSL 證書上傳到 Nano RP2040 Connect。
?
? 首先,為了能夠在 Nano RP2040 Connect 上使用 Wi-Fi 模塊,請從?此處下載 WiFiNINA 庫。
?
? 連接 Nano RP2040 通過 USB 數(shù)據(jù)線連接到 PC,然后在 Tools > Port and Tools > Board 中選擇正確的端口和板。
?
? 在 Example > WiFi101 / WiFiNINA > Tools > Firmware Updater 中搜索固件更新程序草圖并將其上傳到開發(fā)板。
?
?
? 成功上傳草圖后,打開?Tools > WiFi101 / WiFiNINA Firmware Updater。
?
?
? 啟動?固件更新程序?后,選擇 Wi-Fi 模塊(板)的端口。在第 2 部分中,選擇?NINA 固件 (1.3.0) (Arduino MKR WiFi 1010, Arduino Nano 33 IoT)。
?
?
? 然后,在第 3 部分中,單擊添加域并進(jìn)入網(wǎng)站以獲取其 SSL 證書。
?
theamplituhedron.com
?
?
? 最后,在列表中選擇最近添加的網(wǎng)站,然后點(diǎn)擊?Upload Certificates to WiFi module。
?
?
第 6 步:對 Nano RP2040 Connect 進(jìn)行編程
?
成功完成上述所有步驟后,我對 Arduino Nano RP2040 Connect 進(jìn)行了編程。
?
? 包括所需的庫。
?
?
? 定義所需的 Wi-Fi 網(wǎng)絡(luò)連接設(shè)置和 Web 應(yīng)用程序路徑。
?
ssid[] = ; pass[] = ; keyIndex = ; status = WL_IDLE_STATUS; server[] = ; 字符串應(yīng)用程序= ; WiFiSSLClient客戶端;
?
? 定義 SSD1306 OLED (128x32) 屏幕設(shè)置。
?
;
?
? 啟動計(jì)時(shí)器并啟動 SSD1306 屏幕。
?
heat_timer = 毫秒(); display.begin(SSD1306_SWITCHCAPVCC, ); display.clearDisplay(); 顯示.setTextSize( ); display.setCursor( , ); display.setTextColor(SSD1306_WHITE); display.println( ); 展示。(); 顯示.顯示(); 延遲();
?
? 檢查Wi-Fi模塊與Wi-Fi網(wǎng)絡(luò)的連接狀態(tài)。如果連接成功,則將 RGB LED 變?yōu)樗{(lán)色。
?
(WiFi.status() == WL_NO_MODULE) { adjustColor( , , ); ();} 狀態(tài) = WiFi.開始(ssid,通過); delay( ); } adjustColor( , , );
?
? 等待 5 分鐘,直到 MH-Z14A NDIR CO2 傳感器正常加熱以生成準(zhǔn)確的數(shù)據(jù)。
?
? 收集數(shù)據(jù)時(shí)將 RGB LED 變?yōu)樽仙?/font>
?
? 獲取 MH-Z14A NDIR CO2 傳感器每 20 秒產(chǎn)生的二氧化碳濃度評估。
?
? 引出 GP2Y1010AU0F 灰塵傳感器生成的灰塵密度評估。
?
(millis() - heat_timer < ){ (millis() - timer > ){ timer = millis(); } } 調(diào)整 ( 255,0,255 ) (millis() - timer > ){ MH_Z14A_readings(); 計(jì)時(shí)器 = 毫秒();make_a_get_request(); } GP2Y10_dust_sensor_readings();
?
? 在 SSD1306 屏幕上打印灰塵和二氧化碳密度評估。
?
display.clearDisplay(); 顯示.setTextSize( ); display.setCursor( , ); display.setTextColor(SSD1306_WHITE); 展示。(); 展示。(灰塵密度); 展示。(); 展示。(); 展示。(co2_level); 展示。(); 顯示.顯示();
?
? 在 GP2Y10_dust_sensor_readings 函數(shù)中,評估灰塵密度 (mg/m3) 并在必要時(shí)校準(zhǔn)傳感器。
我需要將灰塵傳感器的評估校準(zhǔn) 0.05 以獲得準(zhǔn)確的結(jié)果。您可能需要根據(jù)傳感器的評估更改校準(zhǔn)值。
?
calcVoltage = voMeasured*(3.3/1024);
灰塵密度 = 0.17*calcVoltage-0.1;
?
{
數(shù)字寫入(ledPower,低);
延遲微秒();
voMeasured = 模擬讀?。y量引腳);
延遲微秒();
數(shù)字寫入(ledPower,HIGH);
延遲微秒();
calcVoltage = voMeasured*( / );
灰塵密度 = *calcVoltage ;
延遲();
}
?
? 在 MH_Z14A_readings 函數(shù)中,利用定時(shí)器和 MH-Z14A CO2 傳感器的 PWM 接口計(jì)算二氧化碳濃度 (ppm)。
?
長 ppm = 5000L * (tH - 2) / (tH + tL - 4);
?
{
t0 = 毫秒();
(數(shù)字讀?。∕H_Z14A_PWM)==高){};
t1 = 毫秒();
(數(shù)字讀取(MH_Z14A_PWM)==低){};
t2 = 毫秒();
tH = t1-t0;
tL = t2-t1;
ppm = * (tH - ) / (tH + tL - );
(數(shù)字讀?。∕H_Z14A_PWM)==高){};
co2_level = ( )ppm;
延遲();
}
?
? 在 make_a_get_request 函數(shù)中:
?
? 連接到名為 telegram_co2_and_dust_monitor 的 Web 應(yīng)用程序。
?
? 如果與給定服務(wù)器的連接成功,則將 RGB LED 變?yōu)辄S色并創(chuàng)建查詢字符串,包括灰塵和二氧化碳密度評估。否則,將 RGB LED 變?yōu)榧t色。
?
? 然后,使用查詢字符串發(fā)出 GET 請求,將給定的參數(shù)發(fā)送到 Web 應(yīng)用程序。
?
? 如果有可用的傳入字節(jié),則從 Web 應(yīng)用程序獲取響應(yīng)。
?
? 如果 Web 應(yīng)用程序成功將傳輸?shù)臄?shù)據(jù)存儲到 MySQL 數(shù)據(jù)庫表中,則將 RGB LED 變?yōu)榫G色并打印 Data Registered Successful!在 SSD1306 屏幕上。
?
{
adjustColor( , , );
String query = application + +co2_level+ +dustDensity;
client.println( + query + );
client.println( );
client.println( );
客戶端.println();
}{調(diào)整
();
}
延遲();
字符串響應(yīng) = ;
(client.available()) { c = client.read(); 響應(yīng) += c; }
(response != && response.indexOf( ) > ){(
0,255,0 );
display.clearDisplay();
顯示.setTextSize( );
display.setCursor( , );
display.setTextColor(SSD1306_WHITE);
display.println( );
display.println( );
顯示.顯示();
}
}
?
?
?
?
?
?
連接和調(diào)整
?
?
完成焊接并上傳代碼后,我通過接頭將所有剩余組件連接到 PCB - Arduino Nano RP2040 Connect 和 SSD1306 OLED (128x32) 屏幕。
?
?
由于 Nano RP2040 Connect 的工作電壓為 3.3V,而 MH-Z14A NDIR CO2 傳感器需要 4.5V - 5.5V 的工作電壓,因此我在 Nano RP2040 Connect 上啟用并使用了內(nèi)置的 5V 引腳 (VUSB)。
?
我利用 MH-Z14A CO2 傳感器的 PWM 接口引出傳感器生成的二氧化碳密度評估。但是,我添加了兩個(gè)焊接跳線墊(JP1、JP2),將 Nano RP2040 Connect 連接到 MH-Z14A CO2 傳感器的 UART 接口。因此,如果需要,可以使用傳感器的 UART 接口。
?
如下圖,我用熱膠槍將GP2Y1010AU0F灰塵傳感器固定在PCB背面。
?
?
模式和功能
?
???啟動時(shí),設(shè)備會在 SSD1306 OLED 屏幕上打印 Heating & Connecting 并嘗試連接到給定的 Wi-Fi 網(wǎng)絡(luò)。
?
?
???如果 Wi-Fi 模塊與 Wi-Fi 網(wǎng)絡(luò)連接成功,設(shè)備會將 RGB LED 變?yōu)樗{(lán)色并等待 5 分鐘,直到 MH-Z14A NDIR CO2 Sensor 正常加熱以生成準(zhǔn)確的二氧化碳濃度評估。
?
?
???在從傳感器(GP2Y1010AU0F 和 MH-Z14A)收集灰塵和二氧化碳密度評估時(shí),該設(shè)備將 RGB LED 變?yōu)樽仙⒔Y(jié)果打印在 SSD1306 OLED 屏幕上。
?
?
?
?
???如果 Wi-Fi 模塊成功連接到 Web 應(yīng)用程序的服務(wù)器,設(shè)備會將 RGB LED 變?yōu)辄S色。否則,設(shè)備會將 RGB LED 變?yōu)榧t色。
?
?
?
???如果 Web 應(yīng)用程序?qū)鬏數(shù)臄?shù)據(jù)成功保存到 MySQL 數(shù)據(jù)庫表中,則設(shè)備將 RGB LED 變?yōu)榫G色并打印?數(shù)據(jù)注冊成功!?SSD1306 OLED屏幕上。
?
?
?
?? 在 Telegram 機(jī)器人(IoT 二氧化碳和粉塵監(jiān)測器)上:
?
???如果輸入 /co2_density 命令,機(jī)器人會顯示存儲在 MySQL 數(shù)據(jù)庫表中的最新二氧化碳密度評估和更新時(shí)間。
?
?
???如果輸入?/dust_density?命令,機(jī)器人將顯示存儲在 MySQL 數(shù)據(jù)庫表中的最新灰塵密度評估和更新時(shí)間。
?
?
?
視頻和結(jié)論
?
?
?
?
代碼
- 二氧化碳裝置開源分享
- 室內(nèi)二氧化碳監(jiān)測儀開源分享
- 基于Arduino Nano RP2040的二氧化碳和灰塵監(jiān)測儀 3次下載
- Raspberry Pi溫度和二氧化碳監(jiān)測器開源
- 二氧化碳監(jiān)測器開源分享
- 帶二氧化碳監(jiān)測器的自動通風(fēng)系統(tǒng)
- 專業(yè)水培二氧化碳監(jiān)測開源分享
- 使用二氧化碳傳感器需要注意什么問題
- 二氧化碳傳感器的應(yīng)用方案詳細(xì)說明
- MH-Z19紅外二氧化碳傳感器 65次下載
- CM系列二氧化碳激光器說明 0次下載
- SR二氧化碳監(jiān)測器_CNPW_DM_中文說明書(12-7cm) 0次下載
- 二氧化碳氣體報(bào)警器 0次下載
- CGS-3100二氧化碳傳感模塊 40次下載
- 基于單片機(jī)控制的二氧化碳濃度測試計(jì)
- 二氧化碳注氣開采石油無線通訊系統(tǒng)解決方案 391次閱讀
- 人造樹葉用二氧化碳釀造液體燃料 534次閱讀
- 二氧化碳傳感器怎么用 3701次閱讀
- 二氧化碳氣體傳感器檢測電路解析 5506次閱讀
- 二氧化碳傳感器的應(yīng)用場景 802次閱讀
- 二氧化碳傳感器的主要應(yīng)用領(lǐng)域分析 4964次閱讀
- dfrobot紅外CO2二氧化碳傳感器介紹 2283次閱讀
- 二氧化碳激光器的原理_二氧化碳激光器的工作波長 1.8w次閱讀
- 二氧化碳傳感器安裝位置_二氧化碳傳感器參數(shù) 2w次閱讀
- 如何使用CO2傳感器來監(jiān)測空氣中二氧化碳的含量 7265次閱讀
- 二氧化碳傳感器的應(yīng)用實(shí)例 3015次閱讀
- 二氧化碳傳感器在水產(chǎn)養(yǎng)殖中的應(yīng)用 1915次閱讀
- 二氧化碳傳感器在房間內(nèi)空氣質(zhì)量中的應(yīng)用 1379次閱讀
- 二氧化碳傳感器在控制新風(fēng)系統(tǒng)中的作用是什么 2848次閱讀
- TGS4160系列二氧化碳傳感器工作原理及應(yīng)用解析 8248次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多