91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

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

?

  • /co2_density
  • /dust_density

?

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

?

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

?

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

?

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

?

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

?

poYBAGKh1OGAaZSuAAP1gp2UL5o672.jpg

?

pYYBAGKh1OiAIxn6AAMzZmGuCbM127.jpg

?

pYYBAGKh1QyAdiuvAFz3rpSTWO0942.gif

?

pYYBAGKh1TSAc4J5AHAbIQJnUW8567.gif

?

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

?

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

?

poYBAGKh1TiABFtVAAjgqCR1_L8803.jpg

?

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

?

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

?

pYYBAGKh1VSAPKsEAAarDbdl6oY222.jpg

?

第 2 步:使用 BotFather 構建 Telegram 機器人

?

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

?

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

?

pYYBAGKh1VeAUr8uAAfpijl7niw998.jpg

?

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

?

物聯網二氧化碳和粉塵監(jiān)測儀

?

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

?

co2_dust_bot

?

? 在這些步驟之后,BotFather 會為您的新機器人生成一個授權令牌。授權令牌是一個類似于 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 的字符串,它是授權機器人并向 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 傳感器產生的 CO2 密度
  • /dust_density - 監(jiān)控 GP2Y10 灰塵傳感器產生的灰塵密度
  • /幫助 - 幫助

?

pYYBAGKh1WOAEtCIAAeO45EykVo501.jpg

?

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

?

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

?

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

?

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

?

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

?

  • 令牌?給定電報機器人的授權令牌
  • 網絡路徑?Telegram Bot API 請求服務器
  • 康?MySQL數據庫連接設置
  • 桌子 ?MySQL數據庫表名

?

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

?

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

?

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

?

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

?

? 在 send_video 函數中,應用程序使用機器人的授權令牌通過 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;
	文件獲取內容($new_photo);
	}

	   {
	$new_video =  -> web_path。 .$id.  .$視頻。 .$caption;
	文件獲取內容($new_video);
	}

?

? 在 update_database 函數中,將給定信息保存到給定 MySQL 數據庫表中的給定列。

?

	   {
		$sql =  ;
		mysqli_query(  ->conn, $sql);
	}

?

? 在 get_data_from_database 函數中,從給定 MySQL 數據庫表的給定列中獲取并返回請求的信息。

?

	   {
		$sql =  ;
		$result = mysqli_query(  ->conn, $sql);
		 ($row = mysqli_fetch_assoc($result)){
			  $row[$_column];
		}
	}

?

? 定義所需的 MySQL 數據庫連接設置和 co2_dust_monitor 對象及其所需參數。

?

$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(  ),  );

?

? 如果應用程序從 Telegram Bot API 接收數據,則獲取聊天 ID 和消息。

?

? 根據傳入消息的類型 - 照片、視頻、文檔或文本 - 使用引發(fā)的聊天 ID 回復聊天。

?

? Web 應用程序與來自給定 Telegram 機器人的這些命令兼容:

?

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

?

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

?

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

?

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

?

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

?

? 默認情況下,如果沒有收到支持的命令而是文本,Web 應用程序會發(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 將灰塵和二氧化碳密度評估傳輸到 Web 應用程序,請將它們保存到給定的 MySQL 數據庫表中。然后,使用 date 函數設置時區(qū)以精確得出最新的更新時間,并將其保存到數據庫表中。

?

 (  ($_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 數據庫表并保存更新

?

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

?

telegramco2dustmonitor > 條目 > 屬性:

?

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

?

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

  ” 、 “dust” 、 “ 、、

?

pYYBAGKh1WuACiSwAADhLg7bvls552.png

?

poYBAGKh1W2AGC5XAADbV2HzDNY231.png

?

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

?

theamplituhedron.com

?

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

?

poYBAGKh1W-Ae4ReAAAd3Zwybds527.png

?

???當 Web 應用程序獲取信息并將該信息成功保存到數據庫表中時,應用程序會打?。?/font>

?

數據注冊成功!

?

pYYBAGKh1XGAK2QYAAAl2c81dC4479.png

?

步驟 3.2:設置 Web 應用程序以與機器人通信

?

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

?

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

?

poYBAGKh1XOAM54qAABQr52fGPY357.png

?

? 指定應用程序 URL 后,Telegram Bot API 會拋出此消息:Webhook 已設置。

?

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

?

poYBAGKh1XaAUsxqAAGB2q4EzI8327.jpg

?

pYYBAGKh1XqAXDAqAANFDnFoMAQ919.jpg

?

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

?

poYBAGKh1X6AX-QFAAUe1GuIiVk584.jpg

?

第 4 步:為 Nano RP2040 Connect 安裝 Mbed OS 內核

?

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

?

? 在 Arduino IDE 上,導航到 Tools > Board > Boards Manager。

?

pYYBAGKh1YCAb7RkAADjHaMvDXA397.png

?

? 然后,搜索?Arduino Mbed OS Nano Boards?內核并安裝它。

?

pYYBAGKh1YKAAy9qAACaS8mC4ow968.png

?

? 成功安裝所需內核后,轉到?Tools > Board > Arduino Mbed OS Nano Boards?并選擇?Arduino Nano RP2040 Connect。

?

poYBAGKh1YSAPbWlAAC-pM80kP8999.png

?

第 5 步:將證書添加到 Nano RP2040 Connect

?

在 Arduino IDE 上安裝 Arduino Nano RP2040 Connect 所需的內核后,我設置了開發(fā)板以通過 SSL 連接連接到我網站的服務器。不幸的是,對于 Nano RP2040 Connect,通過 SSL 連接連接到服務器并不像其他 Arduino IoT 板那么簡單。它需要預安裝 SSL 證書,該證書不包含在開發(fā)板中。

因此,我需要將我網站服務器的 SSL 證書上傳到 Nano RP2040 Connect。

?

? 首先,為了能夠在 Nano RP2040 Connect 上使用 Wi-Fi 模塊,請從?此處下載 WiFiNINA 庫。

?

? 連接 Nano RP2040 通過 USB 數據線連接到 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 部分中,單擊添加域并進入網站以獲取其 SSL 證書。

?

theamplituhedron.com

?

pYYBAGKh1Y2AQJfAAADrbAU2r5g843.png

?

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

?

pYYBAGKh1Y-AB2RpAADsj37odZM251.png

?

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

?

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

?

? 包括所需的庫。

?





?

? 定義所需的 Wi-Fi 網絡連接設置和 Web 應用程序路徑。

?

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


 server[] =  ;


字符串應用程序= ;


WiFiSSLClient客戶端;

?

? 定義 SSD1306 OLED (128x32) 屏幕設置。

?





;

?

? 啟動計時器并啟動 SSD1306 屏幕。

?

heat_timer = 毫秒();

 
display.begin(SSD1306_SWITCHCAPVCC,  );
display.clearDisplay();
顯示.setTextSize(  );
display.setCursor(  ,  );
display.setTextColor(SSD1306_WHITE);
display.println(  );
展示。);
顯示.顯示();
延遲();

?

? 檢查Wi-Fi模塊與Wi-Fi網絡的連接狀態(tài)。如果連接成功,則將 RGB LED 變?yōu)樗{色。

?

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

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

?

? 等待 5 分鐘,直到 MH-Z14A NDIR CO2 傳感器正常加熱以生成準確的數據。

?

? 收集數據時將 RGB LED 變?yōu)樽仙?/font>

?

? 獲取 MH-Z14A NDIR CO2 傳感器每 20 秒產生的二氧化碳濃度評估。

?

? 引出 GP2Y1010AU0F 灰塵傳感器生成的灰塵密度評估。

?

 (millis() - heat_timer <  ){  (millis() - timer >  ){ timer = millis(); } }
 調整
(
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 函數中,評估灰塵密度 (mg/m3) 并在必要時校準傳感器。

我需要將灰塵傳感器的評估校準 0.05 以獲得準確的結果。您可能需要根據傳感器的評估更改校準值。

?

calcVoltage = voMeasured*(3.3/1024);

灰塵密度 = 0.17*calcVoltage-0.1;

?

  {

數字寫入(ledPower,低);
延遲微秒();
voMeasured = 模擬讀?。y量引腳);
延遲微秒();
數字寫入(ledPower,HIGH);
延遲微秒();

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

延遲();
}

?

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

?

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

?

  {

t0 = 毫秒();
(數字讀取(MH_Z14A_PWM)==高){};
t1 = 毫秒();
(數字讀取(MH_Z14A_PWM)==低){};
t2 = 毫秒();
tH = t1-t0;
tL = t2-t1;
ppm = * (tH - ) / (tH + tL - );
(數字讀取(MH_Z14A_PWM)==高){};
co2_level = (  )ppm;
延遲();
}

?

? 在 make_a_get_request 函數中:

?

? 連接到名為 telegram_co2_and_dust_monitor 的 Web 應用程序。

?

? 如果與給定服務器的連接成功,則將 RGB LED 變?yōu)辄S色并創(chuàng)建查詢字符串,包括灰塵和二氧化碳密度評估。否則,將 RGB LED 變?yōu)榧t色。

?

? 然后,使用查詢字符串發(fā)出 GET 請求,將給定的參數發(fā)送到 Web 應用程序。

?

? 如果有可用的傳入字節(jié),則從 Web 應用程序獲取響應。

?

? 如果 Web 應用程序成功將傳輸的數據存儲到 MySQL 數據庫表中,則將 RGB LED 變?yōu)榫G色并打印 Data Registered Successful!在 SSD1306 屏幕上。

?

  {

 
adjustColor( , , );
 
String query = application + +co2_level+ +dustDensity;
 
client.println( + query + );
client.println(  );
client.println(  );
客戶端.println();
}{調整);
}
延遲();
字符串響應 =  ;
 (client.available()) {  c = client.read(); 響應 += 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

?

連接和調整

?

















?

完成焊接并上傳代碼后,我通過接頭將所有剩余組件連接到 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 上啟用并使用了內置的 5V 引腳 (VUSB)。

?

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

?

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

?

pYYBAGKh1OiAIxn6AAMzZmGuCbM127.jpg

?

模式和功能

?

???啟動時,設備會在 SSD1306 OLED 屏幕上打印 Heating & Connecting 并嘗試連接到給定的 Wi-Fi 網絡。

?

pYYBAGKh1aSALAH5AAPp4lj_usw907.jpg

?

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

?

poYBAGKh1aeAH9CGAAQX6bFA3B4832.jpg

?

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

?

pYYBAGKh1aqAEzwaAAQFRvdALAM984.jpg

?

pYYBAGKh1beAFbdAAALXbEHbV_A889.jpg

?

poYBAGKh1bmAGDYlAAKAuyW05Hg270.jpg

?

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

?

pYYBAGKh1byARsFwAAQrhbmJzyI314.jpg

?

poYBAGKh1b6AEKVdAAJfJtTgYuQ772.jpg

?

???如果 Web 應用程序將傳輸的數據成功保存到 MySQL 數據庫表中,則設備將 RGB LED 變?yōu)榫G色并打印?數據注冊成功!?SSD1306 OLED屏幕上。

?

pYYBAGKh1cuAQxgNAARN0nceg7c292.jpg

?

pYYBAGKh1c2AYpm5AAJzhSKFWO8193.jpg

?

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

?

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

?

poYBAGKh1dGAIieiAAYijnej2w0821.jpg

?

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

?

poYBAGKh1dWAbLnfAAcpp3mkN6I650.jpg

?

pYYBAGKh1diAC34FAAcOpPVH6tY991.jpg

?

視頻和結論

?

?

?

?

代碼

監(jiān)測器
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

評論

查看更多

下載排行

本周

  1. 1耗盡型MOS FET產品目錄選型表
  2. 0.14 MB   |  2次下載  |  免費
  3. 2TI系列-米爾TI AM62L核心板開發(fā)板-高能效低功耗嵌入式平臺
  4. 1.51 MB  |  次下載  |  免費
  5. 3WILLSEMI韋爾20年半年度報告由代理分銷經銷一級代理分銷經銷
  6. 3.30 MB  |  次下載  |  免費
  7. 4LRC 樂山無線電InTWSApplications家電由原廠代理分銷經銷一級代理分銷經銷供應
  8. 85.84 KB  |  次下載  |  免費
  9. 5LAT1596 一文說明白 STM32G4 雙 Bank 啟動與升級
  10. 0.64 MB   |  次下載  |  5 積分
  11. 6LAT1594_基于事件喚醒低功耗之介紹
  12. 0.37 MB   |  次下載  |  5 積分
  13. 7PT8P2309 觸控 A/D 型 8-Bit MCU規(guī)格書
  14. 4.05 MB   |  次下載  |  免費
  15. 8PT8P2308 觸控 A/D 型 8-Bit MCU規(guī)格書
  16. 4.13 MB   |  次下載  |  免費

本月

  1. 1美的電磁爐電路原理圖資料
  2. 4.39 MB   |  19次下載  |  10 積分
  3. 2反激式開關電源設計解析
  4. 0.89 MB   |  11次下載  |  5 積分
  5. 3耗盡型MOS FET產品目錄選型表
  6. 0.14 MB   |  2次下載  |  免費
  7. 4簡易光伏控制器原理圖資料
  8. 0.07 MB   |  1次下載  |  5 積分
  9. 52EDL05x06xx系列 600V半橋門驅動器帶集成自舉二極管(BSD)手冊
  10. 0.69 MB   |  1次下載  |  免費
  11. 6國產千兆網口芯片PT153S中文資料
  12. 1.35 MB   |  次下載  |  免費
  13. 7斯丹電子 | 用于芯片測試系統的射頻干簧繼電器
  14. 5.11 MB  |  次下載  |  免費
  15. 8SFI立昌ESD/TVS管原廠代理分銷經銷一級代理分銷經銷
  16. 294.76 KB  |  次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233095次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191448次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183360次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81605次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73829次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分