電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Jigglypuff IoT二氧化碳和粉塵監(jiān)測器(跟蹤器)帶電報

Jigglypuff IoT二氧化碳和粉塵監(jiān)測器(跟蹤器)帶電報

2022-06-16 | zip | 0.18 MB | 次下載 | 2積分

資料介紹

pYYBAGKh1M-AYn9gAAXhtLo06jA192.png
poYBAGKh1NGALn6PAACTiT6SNPc844.jpg
poYBAGKh1NOAPrE1AAB_FY3_WZE529.jpg

成分

PCBWay定制PCB
?
× 1
Arduino Nano RP2040 連接
?
× 1
5000ppm二氧化碳傳感器紅外模塊
?
× 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)測器(跟蹤器)帶電報

?

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 是一個兼容 iOSAndroid 的跨平臺基于云的消息服務(wù),我決定創(chuàng)建一個 Telegram 機器人來輕松監(jiān)控多個設(shè)備上的灰塵和二氧化碳密度評估。在 Telegram 中,與任何其他消息傳遞應(yīng)用程序不同,使用命令列表創(chuàng)建機器人很容易,這些消息應(yīng)用程序是不需要額外電話號碼來設(shè)置的特殊帳戶。IoT Carbon Dioxide and Dust Monitor 是我為這個項目創(chuàng)建的 Telegram 機器人,它允許用戶使用以下命令顯示實時灰塵和二氧化碳密度評估:

?

  • /co2_density
  • /dust_density

?

我開發(fā)了一個 PHP Web 應(yīng)用程序(傳出)來與我的 Telegram 機器人通信該應(yīng)用程序從 Telegram Bot API 更新,將傳感器生成的灰塵和二氧化碳密度評估(如下所述)保存到給定的 MySQL 數(shù)據(jù)庫表中,并在請求時將密度評估發(fā)送到我的 Telegram bot。

?

為了準(zhǔn)確獲取灰塵密度和二氧化碳濃度,我使用了 MH-Z14A NDIR CO2 傳感器和 GP2Y1010AU0F 灰塵傳感器。我選擇使用 Arduino Nano RP2040 Connect 來讀取評估并將其傳輸?shù)?Web 應(yīng)用程序,因為它是具有內(nèi)置 u-blox NINA-W102 無線電模塊的高性能開發(fā)板。顧名思義,該板基于 Raspberry Pi Foundation 的 RP2040 微控制器

?

為了在將評估發(fā)送到 Web 應(yīng)用程序之前在設(shè)備上顯示評估,我使用了 SSD1306 OLED (128x32) 屏幕。最后,我添加了一個 5mm 共陽極 RGB LED 來顯示設(shè)備(通過 Nano RP2040 Connect)和 Web 應(yīng)用程序之間的連接狀態(tài)。

?

在完成面包板上的接線并測試代碼后,Jigglypuff 啟發(fā)我為這個項目設(shè)計了一個 PCB。由于 Jigglypuff 有一個臭名昭著的睡眠發(fā)作,我認為為一個項目設(shè)計一個 Jigglypuff PCB 會很可愛,這有助于我在睡覺前緩解我的過敏癥狀 :)

?

由于粉紅色 PCB 并不普遍,您之前可能沒有見過粉紅色阻焊層選項。如果您想像我的 PCB 一樣設(shè)計帶有粉色阻焊層選項的 PCB,我強烈推薦 PCBWay。他們?yōu)楠毺氐?PCB 顏色和要求提供快速、可靠且經(jīng)濟實惠的服務(wù)。您可以從這里檢查 PCBWay 阻焊層和絲印選項?。

?

poYBAGKh1OGAaZSuAAP1gp2UL5o672.jpg

?

pYYBAGKh1OiAIxn6AAMzZmGuCbM127.jpg

?

pYYBAGKh1QyAdiuvAFz3rpSTWO0942.gif

?

pYYBAGKh1TSAc4J5AHAbIQJnUW8567.gif

?

第 1 步:設(shè)計和焊接 Jigglypuff IoT 二氧化碳和灰塵監(jiān)測器 PCB

?

在對我的 PCB 設(shè)計進行原型設(shè)計之前,我使用 Arduino Nano RP2040 Connect 測試了所有連接和接線。

?

poYBAGKh1TiABFtVAAjgqCR1_L8803.jpg

?

然后,我利用 KiCad 設(shè)計了物聯(lián)網(wǎng)二氧化碳和灰塵監(jiān)測器 PCB - 靈感來自可愛迷人的 Jigglypuff :) 我在下面附上了 PCB 的 Gerber 文件。因此,如果您愿意,您可以從 PCBWay 訂購此 PCB,以創(chuàng)建一個可愛的設(shè)備來跟蹤任何地方的灰塵密度和二氧化碳密度。

?

pYYBAGKh1TuAMSGyAAYVh55F-OM428.jpg

?

poYBAGKh1UGAfps0AAX30bRFsHo291.jpg

?

首先,通過使用烙鐵,我連接了接頭(母)、電阻器(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(電源插孔)

?

pYYBAGKh1UWAUe93AAZcT9m0_g0369.jpg

?

pYYBAGKh1UmAJUPNAAY1A3mvX2A746.jpg

?

pYYBAGKh1VCAY3tMAAcGJ0WceUE129.jpg

?

為了讓我的 PCB 設(shè)計更加精致,我在 PCB 背面安裝了 GP2Y1010AU0F 灰塵傳感器,并用熱膠槍將其固定。我還添加了兩個焊接跳線墊(JP1、JP2),將 Nano RP2040 Connect 連接到 MH-Z14A CO2 傳感器的 UART 接口。

?

pYYBAGKh1VSAPKsEAAarDbdl6oY222.jpg

?

第 2 步:使用 BotFather 構(gòu)建 Telegram 機器人

?

BotFather 是一個 Telegram 機器人,可讓我們在 Telegram 上創(chuàng)建和管理機器人,而無需任何編碼。

?

? 首先,在 Telegram 上打開 BotFather 并輸入 /start 以查看可用的命令列表和手冊。

?

pYYBAGKh1VeAUr8uAAfpijl7niw998.jpg

?

? 使用 /newbot 命令創(chuàng)建一個新機器人。當(dāng) BotFather 要求您輸入名稱時,輸入您的機器人的名稱。它顯示在聯(lián)系方式和其他地方。

?

物聯(lián)網(wǎng)二氧化碳和粉塵監(jiān)測儀

?

? 然后,輸入您的機器人的用戶名。用戶名長度為 5-32 個字符,不區(qū)分大小寫,但只能包含拉丁字符、數(shù)字和下劃線。它們必須以“bot”結(jié)尾,例如“tetris_bot”或“TetrisBot”。

?

co2_dust_bot

?

? 在這些步驟之后,BotFather 會為您的新機器人生成一個授權(quán)令牌。授權(quán)令牌是一個類似于 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 的字符串,它是授權(quán)機器人并向 Telegram Bot API 發(fā)送請求所必需的。確保您的令牌安全并安全存儲。

?

poYBAGKh1VyARllnAAXTgXxg0AE696.jpg

?

? 此外,您可以使用/setuserpic?命令更改機器人的個人資料圖片?。

?

poYBAGKh1V-ADWmWAAWXTv7qgZY199.jpg

?

? 最后,輸入 /setcommands 命令來定義最近創(chuàng)建的機器人支持的命令列表。用戶在與機器人的聊天中鍵入 / 時,會將這些命令視為建議。

?

?? 我為 Telegram 機器人(IoT 二氧化碳和粉塵監(jiān)測器)創(chuàng)建的命令列表:

?

  • /co2_density - 顯示 MH-Z14A NDIR CO2 傳感器產(chǎn)生的 CO2 密度
  • /dust_density - 監(jiān)控 GP2Y10 灰塵傳感器產(chǎn)生的灰塵密度
  • /幫助 - 幫助

?

pYYBAGKh1WOAEtCIAAeO45EykVo501.jpg

?

第 3 步:用 PHP 開發(fā)一個 Web 應(yīng)用程序以通過 Telegram Bot API 與機器人通信

?

成功創(chuàng)建 Telegram 機器人后,我需要從 Telegram Bot API 獲取更新以與我的機器人通信。因此,我用 PHP 開發(fā)了一個 web 應(yīng)用程序,名為 telegram_co2_and_dust_monitor,以便:

?

  • 通過Telegram Bot API從我的 Telegram 機器人(IoT 二氧化碳和粉塵監(jiān)測器)獲取更新,
  • 獲取 Nano RP2040 Connect 傳輸?shù)幕覊m和二氧化碳密度評估,并將它們保存到給定的 MySQL 數(shù)據(jù)庫表中,
  • 根據(jù)要求向我的 Telegram 機器人發(fā)送消息(灰塵和二氧化碳密度評估)。

?

該應(yīng)用程序包含一個文件 - index.php。我在 index.php 文件中創(chuàng)建了一個名為 telegram_co2_dust_monitor 的類,以保存 Nano RP2040 Connect 傳輸?shù)?a target='_blank' class='arckwlink_none'>信息到給定的 MySQL 數(shù)據(jù)庫表,并在請求時將該信息發(fā)送到給定的 Telegram 機器人。

?

? 在 __init__ 函數(shù)中,該類需要四個參數(shù)來執(zhí)行函數(shù):

?

  • 令牌?給定電報機器人的授權(quán)令牌
  • 網(wǎng)絡(luò)路徑?Telegram Bot API 請求服務(wù)器
  • 康?MySQL數(shù)據(jù)庫連接設(shè)置
  • 桌子 ?MySQL數(shù)據(jù)庫表名

?

? 在 send_message 函數(shù)中,應(yīng)用程序使用機器人的授權(quán)令牌通過 Telegram Bot API 將給定的文本發(fā)送給給定的機器人。

?

語法:https://api.telegram.org/bot/sendMessage?chat_id=&text=

?

? 在 send_photo 函數(shù)中,應(yīng)用程序使用機器人的授權(quán)令牌通過 Telegram Bot API 將給定的圖片發(fā)送給給定的機器人。

?

語法:https://api.telegram.org/bot/sendPhoto?chat_id=&photo=&caption=

?

? 在 send_video 函數(shù)中,應(yīng)用程序使用機器人的授權(quán)令牌通過 Telegram Bot API 將給定的視頻發(fā)送到給定的機器人。

?

語法:https://api.telegram.org/bot/sendVideo?chat_id=&video=&caption=

?

	   {
		  ->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 機器人的這些命令兼容:

?

  • /開始
  • /co2_density
  • /dust_density
  • /幫助

?

? 如果收到 /start 命令,應(yīng)用程序會將聊天 ID 注冊到給定的 MySQL 數(shù)據(jù)庫表,以便發(fā)送消息而無需從 Telegram Bot API 進行更新。

?

? 如果收到 /co2_density 命令,Web 應(yīng)用程序會將存儲在數(shù)據(jù)庫表中的最新二氧化碳密度評估和更新時間發(fā)送給給定的 Telegram 機器人。

?

? 如果收到 /dust_density 命令,Web 應(yīng)用程序會將存儲在數(shù)據(jù)庫表中的最新灰塵密度評估和更新時間發(fā)送給給定的 Telegram 機器人。

?

? 如果接收到 /help 命令,Web 應(yīng)用程序會將帶有描述的支持命令列表發(fā)送到給定的 Telegram 機器人。

?

? 默認情況下,如果沒有收到支持的命令而是文本,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è)置時區(qū)以精確得出最新的更新時間,并將其保存到數(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(  ));
	 (  );
}

?

poYBAGKh1WWAafjPAAC3q-9jNeo853.png

?

poYBAGKh1WeARR5nAAC7HpM0-cU183.png

?

poYBAGKh1WmAVlJTAAD0twCSSQk834.png

?

步驟 3.1:創(chuàng)建 MySQL 數(shù)據(jù)庫表并保存更新

?

在用 PHP 開發(fā) Web 應(yīng)用程序后,我在我的服務(wù)器上創(chuàng)建了一個新的 MySQL 數(shù)據(jù)庫 (telegramco2dustmonitor)。然后,我在 telegramco2dustmonitor 數(shù)據(jù)庫中創(chuàng)建了一個數(shù)據(jù)庫表(條目),以收集 Nano RP2040 Connect 傳輸?shù)幕覊m和二氧化碳密度評估。最后,我在條目數(shù)據(jù)庫表中為每個屬性(列)插入了默認值:

?

telegramco2dustmonitor > 條目 > 屬性:

?

  • 聊天ID
  • 二氧化碳
  • 灰塵
  • 日期

?

  (
 chat_id )主  ,
 co2  (  ) ,
 灰塵 (  )   ,
  (  )  
);

  、 ” 、 “dust” 、 “ 、、

?

pYYBAGKh1WuACiSwAADhLg7bvls552.png

?

poYBAGKh1W2AGC5XAADbV2HzDNY231.png

?

通過向 https://api.telegram.org/ 發(fā)出請求從 Telegram Bot API 獲取更新需要 SSL 連接,因此我使用我網(wǎng)站的服務(wù)器來托管 Web 應(yīng)用程序。

?

theamplituhedron.com

?

但是,? Telegram Bot API?是開源的,可在?telegram-bot-api獲得。您可以在本地運行它并將請求發(fā)送到您的服務(wù)器而不是 https://api.telegram.org。

?

poYBAGKh1W-Ae4ReAAAd3Zwybds527.png

?

???當(dāng) Web 應(yīng)用程序獲取信息并將該信息成功保存到數(shù)據(jù)庫表中時,應(yīng)用程序會打印:

?

數(shù)據(jù)注冊成功!

?

pYYBAGKh1XGAK2QYAAAl2c81dC4479.png

?

步驟 3.2:設(shè)置 Web 應(yīng)用程序以與機器人通信

?

在開發(fā) Web 應(yīng)用程序(傳出 webhook)并創(chuàng)建 MySQL 數(shù)據(jù)庫表之后,我需要使用setWebhook方法為我的 Telegram 機器人(IoT 二氧化碳和灰塵監(jiān)視器)指定應(yīng)用程序 URL,??以接收來自 Telegram Bot API 的傳入更新。

?

https://api.telegram.org/bot/setWebhook?url=https://www.theamplituhedron.com/telegram_co2_and_dust_monitor/

?

poYBAGKh1XOAM54qAABQr52fGPY357.png

?

? 指定應(yīng)用程序 URL 后,Telegram Bot API 會拋出此消息:Webhook 已設(shè)置。

?

? 要檢查給定的 Telegram 機器人功能并將聊天 ID 注冊到數(shù)據(jù)庫表中,請打開機器人并輸入 /start。

?

poYBAGKh1XaAUsxqAAGB2q4EzI8327.jpg

?

pYYBAGKh1XqAXDAqAANFDnFoMAQ919.jpg

?

? 輸入?/help?以查看支持的命令列表和說明。

?

poYBAGKh1X6AX-QFAAUe1GuIiVk584.jpg

?

第 4 步:為 Nano RP2040 Connect 安裝 Mbed OS 內(nèi)核

?

由于我決定在這個項目中使用 Arduino Nano RP2040 Connect,我需要將 Mbed OS 內(nèi)核安裝到 Arduino IDE 中。

?

? 在 Arduino IDE 上,導(dǎo)航到 Tools > Board > Boards Manager。

?

pYYBAGKh1YCAb7RkAADjHaMvDXA397.png

?

? 然后,搜索?Arduino Mbed OS Nano Boards?內(nèi)核并安裝它。

?

pYYBAGKh1YKAAy9qAACaS8mC4ow968.png

?

? 成功安裝所需內(nèi)核后,轉(zhuǎn)到?Tools > Board > Arduino Mbed OS Nano Boards?并選擇?Arduino Nano RP2040 Connect。

?

poYBAGKh1YSAPbWlAAC-pM80kP8999.png

?

第 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ā)板。

?

poYBAGKh1YaAFjXQAAFREpZoHk0678.png

?

? 成功上傳草圖后,打開?Tools > WiFi101 / WiFiNINA Firmware Updater。

?

pYYBAGKh1YiAAR-2AAC7Y0ztvnA708.png

?

? 啟動?固件更新程序?后,選擇 Wi-Fi 模塊(板)的端口。在第 2 部分中,選擇?NINA 固件 (1.3.0) (Arduino MKR WiFi 1010, Arduino Nano 33 IoT)

?

pYYBAGKh1YuALotpAADfrDNGg5c409.png

?

? 然后,在第 3 部分中,單擊添加域并進入網(wǎng)站以獲取其 SSL 證書。

?

theamplituhedron.com

?

pYYBAGKh1Y2AQJfAAADrbAU2r5g843.png

?

? 最后,在列表中選擇最近添加的網(wǎng)站,然后點擊?Upload Certificates to WiFi module。

?

pYYBAGKh1Y-AB2RpAADsj37odZM251.png

?

第 6 步:對 Nano RP2040 Connect 進行編程

?

成功完成上述所有步驟后,我對 Arduino Nano RP2040 Connect 進行了編程。

?

? 包括所需的庫。

?





?

? 定義所需的 Wi-Fi 網(wǎng)絡(luò)連接設(shè)置和 Web 應(yīng)用程序路徑。

?

ssid[] =  ;
 pass[] =  ;
 keyIndex =  ;
 status = WL_IDLE_STATUS;


 server[] =  ;


字符串應(yīng)用程序= ;


WiFiSSLClient客戶端;

?

? 定義 SSD1306 OLED (128x32) 屏幕設(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)樗{色。

?

 (WiFi.status() == WL_NO_MODULE) { adjustColor(  ,  ,  ); );}
 

狀態(tài) = WiFi.開始(ssid,通過);
 
delay(  );
}
 
adjustColor(  ,  ,  );

?

? 等待 5 分鐘,直到 MH-Z14A NDIR CO2 傳感器正常加熱以生成準(zhǔn)確的數(shù)據(jù)。

?

? 收集數(shù)據(jù)時將 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(); 計時器 = 毫秒();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) 并在必要時校準(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 = 模擬讀取(測量引腳);
延遲微秒();
數(shù)字寫入(ledPower,HIGH);
延遲微秒();

calcVoltage = voMeasured*(  /  );
灰塵密度 =  *calcVoltage  ;

延遲();
}

?

? 在 MH_Z14A_readings 函數(shù)中,利用定時器和 MH-Z14A CO2 傳感器的 PWM 接口計算二氧化碳濃度 (ppm)。

?

長 ppm = 5000L * (tH - 2) / (tH + tL - 4);

?

  {

t0 = 毫秒();
(數(shù)字讀?。∕H_Z14A_PWM)==高){};
t1 = 毫秒();
(數(shù)字讀?。∕H_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(  );
顯示.顯示();
}
}

?

poYBAGKh1ZGAfEdeAACV4m2M3x8862.png

?

pYYBAGKh1ZOAYXGhAAB2Rjj__Xc843.png

?

pYYBAGKh1ZeAPQVGAACAIKB8C_g548.png

?

poYBAGKh1ZmAV2HwAACGV3GGg0I970.png

?

pYYBAGKh1ZuAcrnsAACZ8o0pBc0213.png

?

連接和調(diào)整

?

















?

完成焊接并上傳代碼后,我通過接頭將所有剩余組件連接到 PCB - Arduino Nano RP2040 Connect 和 SSD1306 OLED (128x32) 屏幕。

?

poYBAGKh1Z-ANkQDAAaN5E6K8C0845.jpg

?

由于 Nano RP2040 Connect 的工作電壓為 3.3V,而 MH-Z14A NDIR CO2 傳感器需要 4.5V - 5.5V 的工作電壓,因此我在 Nano RP2040 Connect 上啟用并使用了內(nèi)置的 5V 引腳 (VUSB)。

?

我利用 MH-Z14A CO2 傳感器的 PWM 接口引出傳感器生成的二氧化碳密度評估。但是,我添加了兩個焊接跳線墊(JP1、JP2),將 Nano RP2040 Connect 連接到 MH-Z14A CO2 傳感器的 UART 接口。因此,如果需要,可以使用傳感器的 UART 接口。

?

如下圖,我用熱膠槍將GP2Y1010AU0F灰塵傳感器固定在PCB背面。

?

pYYBAGKh1OiAIxn6AAMzZmGuCbM127.jpg

?

模式和功能

?

???啟動時,設(shè)備會在 SSD1306 OLED 屏幕上打印 Heating & Connecting 并嘗試連接到給定的 Wi-Fi 網(wǎng)絡(luò)。

?

pYYBAGKh1aSALAH5AAPp4lj_usw907.jpg

?

???如果 Wi-Fi 模塊與 Wi-Fi 網(wǎng)絡(luò)連接成功,設(shè)備會將 RGB LED 變?yōu)樗{色并等待 5 分鐘,直到 MH-Z14A NDIR CO2 Sensor 正常加熱以生成準(zhǔn)確的二氧化碳濃度評估。

?

poYBAGKh1aeAH9CGAAQX6bFA3B4832.jpg

?

???在從傳感器(GP2Y1010AU0F 和 MH-Z14A)收集灰塵和二氧化碳密度評估時,該設(shè)備將 RGB LED 變?yōu)樽仙⒔Y(jié)果打印在 SSD1306 OLED 屏幕上。

?

pYYBAGKh1aqAEzwaAAQFRvdALAM984.jpg

?

pYYBAGKh1beAFbdAAALXbEHbV_A889.jpg

?

poYBAGKh1bmAGDYlAAKAuyW05Hg270.jpg

?

???如果 Wi-Fi 模塊成功連接到 Web 應(yīng)用程序的服務(wù)器,設(shè)備會將 RGB LED 變?yōu)辄S色。否則,設(shè)備會將 RGB LED 變?yōu)榧t色。

?

pYYBAGKh1byARsFwAAQrhbmJzyI314.jpg

?

poYBAGKh1b6AEKVdAAJfJtTgYuQ772.jpg

?

???如果 Web 應(yīng)用程序?qū)鬏數(shù)臄?shù)據(jù)成功保存到 MySQL 數(shù)據(jù)庫表中,則設(shè)備將 RGB LED 變?yōu)榫G色并打印?數(shù)據(jù)注冊成功!?SSD1306 OLED屏幕上。

?

pYYBAGKh1cuAQxgNAARN0nceg7c292.jpg

?

pYYBAGKh1c2AYpm5AAJzhSKFWO8193.jpg

?

?? 在 Telegram 機器人(IoT 二氧化碳和粉塵監(jiān)測器)上:

?

???如果輸入 /co2_density 命令,機器人會顯示存儲在 MySQL 數(shù)據(jù)庫表中的最新二氧化碳密度評估和更新時間。

?

poYBAGKh1dGAIieiAAYijnej2w0821.jpg

?

???如果輸入?/dust_density?命令,機器人將顯示存儲在 MySQL 數(shù)據(jù)庫表中的最新灰塵密度評估和更新時間。

?

poYBAGKh1dWAbLnfAAcpp3mkN6I650.jpg

?

pYYBAGKh1diAC34FAAcOpPVH6tY991.jpg

?

視頻和結(jié)論

?

?

?

?

代碼

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

評論

查看更多

下載排行

本周

  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次下載  |  免費