一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

Mouser 的 STEAMy Summer:第 3 部分

梁宏滿 ? 2023-01-05 09:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

poYBAGOzf4GAKRHZAAKucJVMdhU778.jpg

對于我們這些北半球的人來說,三伏天的夏天快結(jié)束了。但是,雖然這個有趣、無憂無慮的季節(jié)就在這里,但大部分時間陽光明媚,隨之而來的是可能有害的紫外線 (UV) 輻射。在本系列的最后一篇文章中,我們將構(gòu)建我們的電路并對 Arduino MKR1000 進行編程以執(zhí)行我們之前建立的功能。此外,請務必閱讀本系列的第二篇博客,以更好地了解陽光下安全樂趣背后的科學原理。

快速回顧一下,這些是您的紫外線監(jiān)測器和警報項目的頂級要求。您的設備應該:

持續(xù)檢測紫外線輻射暴露水平。

確定暴露是否超過了預先指定的限制。

如果超出暴露限值,則觸發(fā)一個有趣且異想天開的警報。

能夠重置曝光計數(shù)。

電池供電。

將曝光數(shù)據(jù)發(fā)送到云端以供將來分析(請注意,此步驟有助于教孩子們?nèi)绾伍喿x圖表和圖形。)

簡而言之,這個項目的目標是建立一個設備來監(jiān)測我們暴露在陽光下的情況,讓我們知道什么時候應該在室內(nèi)休息一下或者多涂一些防曬霜。這是預制購物車中的物料清單 (BOM) ,如果您在之前的博客中錯過了它。話雖如此,讓我們開始吧!

組裝硬件

您可能還記得本系列的第 2 部分,我們將使用Silicon Labs Si1145 傳感器來監(jiān)測我們的陽光照射。我們將通過 I2C 串行接口將傳感器數(shù)據(jù)傳送到Arduino MKR1000嵌入式開發(fā)平臺。MKR1000 將處理數(shù)據(jù)處理和與云數(shù)據(jù)庫的通信,以存儲所有數(shù)據(jù)供以后分析。MKR1000 還可以方便地使用鋰聚合物 (Li-Po) 電池供電,這讓我們可以在享受陽光的同時將設備帶到戶外。

以下是您和您年輕有抱負的工程師構(gòu)建此電路的步驟概要(圖 1 中的硬件原理圖和圖 2中的電路圖也提供了可視化圖示。):

將 MKR1000 放在面包板的邊緣,確保微型 USB 端口懸掛在末端。要指示 MKR1000 上的唯一引腳,請使用白色條紋,因為這是接地引腳。

將 Si1145 UV 傳感器(帶有插頭引腳)放置在面包板與 MKR1000 接地引腳相同的一側(cè)。

將 MKR1000 的接地引腳和 Si1145 紫外線傳感器的接地引腳連接到面包板的接地(藍色)導軌。

將 MKR1000 的 Vcc 引腳和 Si1145 紫外線傳感器的 Vin 引腳連接到面包板的電源(紅色)軌。

微控制器和傳感器的 I2C 端口連接在一起。將 D12 (SCL) 引腳連接到 Si1145 紫外線傳感器上的 SCL 引腳。這是共享時鐘信號。然后,將 D11 (SDA) 引腳連接到 Si1145 紫外線傳感器上的 SDA 引腳。這是兩個設備之間的共享數(shù)據(jù)總線。

測試到目前為止建立的連接,以確保您已正確連接所有內(nèi)容。為此,請轉(zhuǎn)至Mouser 的 GitHub站點并上傳 Arduino STEAMYSummer2018_MRK1000.ino 文件和 Wifi_Info.h 文件。成功加載代碼后,啟動 Arduino 集成開發(fā)環(huán)境 (IDE) 的串行監(jiān)視器并確保您獲得可見光、紅外線 (IR) 和紫外線傳感器讀數(shù)。如果您在 MKR1000 上沒有看到綠色發(fā)光二極管 (LED) 或在串行監(jiān)視器中收到錯誤消息“找不到 Si1145”,請務必再次檢查接線圖(圖 2)。

pYYBAGOzf4SAIgnlAABdyoq-hJg611.jpg

圖 1:此硬件原理圖說明了引腳設置。(來源:作者)

poYBAGOzf4iAFP_HAACPFC4JKlY194.jpg

圖 2:此電路圖說明了面包板布局。(來源:作者)

硬件設置的第一部分完成后,讓我們將注意力轉(zhuǎn)向用戶界面組件?;叵胍幌拢瑢τ诰瘓?,我們將使用壓電蜂鳴器,它肯定會引起附近任何人的注意。具體來說,選擇的蜂鳴器是 TDK Corporation 的PS1240P02BT,因為它的工作電壓為 3V。我們還將添加一個電阻器晶體管來幫助為蜂鳴器供電并確保它驅(qū)動足夠的電流以使蜂鳴聲明顯。來自通用輸入/輸出 (GPIO) 引腳的電流限制為 7mA。微控制器的 GPIO 引腳(“D6”引腳)應打開晶體管并允許您:

將 NPN 晶體管放在面包板上。

將蜂鳴器的紅線連接到電源(紅色)導軌。

將黑線連接到晶體管的集電極引腳。

在面包板上放置一個 1kΩ 電阻,將一根導線連接到 NPN 晶體管的基極,然后將另一根電阻導線連接到 MKR1000 的 D6 引腳。

將 NPN 晶體管的發(fā)射極引腳連接到面包板的接地(藍色)導軌。

回想一下,一旦觸發(fā)警報,我們需要一種重置設備的方法。為完成此要求,我們選擇了一個常開 (NO)瞬時按鈕。一個 10kΩ 的下拉電阻將用于將連接到微控制器 GPIO 引腳的按鈕接地,以防止任何浮動輸入?,F(xiàn)在讓我們連接它們(圖 3):

接下來連接按鈕,將按鈕的一側(cè)掛在電源(紅色)導軌上。

將 10kΩ 電阻的一個端子連接到按鈕的另一側(cè)。

將電阻器的剩余端子接地。

將 MKR1000 D7 引腳連接到電阻器和按鈕的連接點。

poYBAGOzf4uAUQypAADO2FzQ38k665.jpg

圖 3:此印刷電路板 (PCB) 圖像說明了布局。(來源:作者)

該電阻用作下拉電阻,確保 MKR1000 上的 GPIO 引腳在未按下按鈕時始終處于干凈的接地狀態(tài)。如果沒有電阻器,該引腳容易受到噪聲的影響,這可能會導致微控制器錯誤地檢測到按鈕按下。

使用軟件

圖書館

貿(mào)澤為此項目開放的庫包含以下工具、資源和功能:

#include

提供使用 I2C 串行通信協(xié)議所需的代碼。

#include “Adafruit_SI1145.h”

提供一組易于使用的函數(shù),用于與環(huán)境光傳感器進行交互。

#include

#include

允許安全的 Wi-Fi 通信。

#include "Wifi_Info.h"

存儲服務集標識符 (SSID)、Wi-Fi 保護訪問 II (WPA2) 密碼和 IFTTT(我們將在本文后面討論的工具)應用程序接口 (API) 密鑰。將這些安全項目放在單獨的文件中是一個好習慣,這樣如果您共享代碼,就不必在每次共享修訂版時都記住刪除這些敏感信息。

圖 4提供了在 Arduino IDE 中編寫的源代碼示例。

poYBAGOzf46AXY7ZAADHVQrXLXE709.jpg

圖 4:這是在 Arduino IDE 中編寫的源代碼。(來源:作者)

關(guān)鍵變量

靜態(tài)常數(shù) int DELAY_AMT = 60000;

此變量等于 60,000 毫秒或 60 秒。它允許我們將傳感器讀數(shù)的數(shù)量限制為每分鐘一個。

靜態(tài)常數(shù) int AVG_ARRAY_SIZE = 60;

由于我們關(guān)心的是前一小時的平均 UV 讀數(shù),并且我們每分鐘讀取一個讀數(shù),因此該變量將使我們能夠?qū)π枰?60 個讀數(shù)進行平均,以找到前一小時的當前平均 UV 指數(shù)。

static const int BUZZER_PIN = 6;

蜂鳴器將在 MKR1000 的 GPIO D6 引腳控制下運行。

靜態(tài)常量 int RESET_BUTTON_PIN = 7;

重置按鈕將連接到 MKR1000 的 GPIO D7 引腳。

靜態(tài)常量浮動 UV_THRESHOLD = 3.0;

如果前一小時的平均紫外線指數(shù)讀數(shù)為 3.0 或更高,則會觸發(fā)警報。

靜態(tài)常數(shù) int TONE_FREQ = 2500;

觸發(fā)警報將產(chǎn)生 2,500Hz 的蜂鳴音。

char ssid[] = "MY_SSID_HERE";

在 WiFI_Info.h 文件中,務必將此默認值替換為您的本地 Wi-Fi SSID。請務必保留引號。

字符密碼[] =“MY_WPA2_KEY_HERE”;

在 WiFI_Info.h 文件中,務必將此默認值替換為您的 Wi-Fi 密碼。請務必保留引號。

char IFTTT_APP_KEY[] = "YOUR_IFTTT_APP_KEY_HERE";

在 WiFI_Info.h 文件中,確保將此默認值替換為您在為此項目創(chuàng)建 Webhook 時將生成的個人 IFTTT API 密鑰。請務必保留引號。

職能

無效設置()

void setup() 函數(shù)是必需的,所有初始化都將在其中進行。此初始化包括建立調(diào)試串行通信通道、設置 Wi-Fi 模塊和 Si1145 環(huán)境光傳感器,以及確保輸入或輸出的 GPIO 引腳配置正確。

無效循環(huán)(){

浮動 currentUVindexReading = takeReading();

浮動 avgUVindexReading = runningAverage(currentUVindexReading);

sendDataToCloud(currentUVindexReading);

alertCheck(avgUVindexReading);

延遲(DELAY_AMT);

}

此處展示了整個主 loop() 函數(shù),以突出重要的編程范例。主循環(huán)應包含盡可能少的代碼。事實上,目標應該是分解代碼,讓每個函數(shù)只做一件事。依靠函數(shù)調(diào)用使代碼更易讀,更容易排除故障。從上面的 void loop() 范例中,很容易創(chuàng)建 MKR1000 完成 setup() 函數(shù)中規(guī)定的任務后將發(fā)生的事情的概要。

概要應按如下流程進行:首先,需要將傳感器讀數(shù)存儲在名為 currentUVindexReading 的變量中。該值傳遞給另一個函數(shù),該函數(shù)記錄新的 UV 讀數(shù)并返回運行平均值。然后,修改后的運行平均值將傳遞給將其發(fā)送到 IFTTT 以附加到 Google 表格電子表格的函數(shù)。接下來,將平均值與閾值進行比較,結(jié)果將在必要時觸發(fā)警報。最后,系統(tǒng)必須暫停一分鐘,然后這個功能會重復執(zhí)行。

以下是主循環(huán)中每個增量函數(shù)的代碼分解:

浮動 takeReading()

此函數(shù)與 Si1145 環(huán)境光傳感器交互。它接收讀數(shù)并在串行端口上顯示結(jié)果,然后將 UV 指數(shù)值作為浮點數(shù)返回。

浮動運行平均值(浮動新讀數(shù))

此函數(shù)保留一個靜態(tài)數(shù)組(意味著值在函數(shù)調(diào)用返回后保留)以跟蹤去年 UV 指數(shù)的運行平均值。它以浮點數(shù)形式返回當前平均 UV 指數(shù)。

void alertCheck(浮動 avgUVindexReading)

此功能將當前平均紫外線指數(shù)與預定義閾值進行比較,并在必要時發(fā)出警報。

void generateAlert()

此函數(shù)使用 Arduino IDE 內(nèi)置的 tone() 函數(shù)來生成蜂鳴器音調(diào)。它一直持續(xù)到按下重置按鈕,此時平均紫外線指數(shù)重置,設備返回監(jiān)測模式。

此功能利用 IFTTT.com webhook API 將當前的紫外線指數(shù)讀數(shù)傳遞到 Google 表格電子表格,使您能夠遠程研究數(shù)據(jù)。

把它們放在一起

我們將利用名為 IFTTT(“If This Then That”的縮寫)的網(wǎng)絡服務來允許 MKR1000 與 Google 表格通信(圖 5)。具體來說,IFTTT 服務被稱為“Maker Webhooks”。IFTTT 在其網(wǎng)站上提供了有關(guān)如何使用其服務的精彩教程。結(jié)果是一個數(shù)據(jù)日志和一個漂亮的圖表,以幫助可視化數(shù)據(jù)。我們建議您通讀 IFTTT 網(wǎng)站上 webhook 的文檔部分,因為您需要在 Wifi_info.h 文件中包含特定于您的 IFTTT 帳戶的密鑰。

pYYBAGOzf5KAOv45AADDDCQcjvo696.jpg

圖 5:MKR1000 通過 IFTTT 將其數(shù)據(jù)發(fā)送到 Google 表格。(作者)

如果您希望將項目從試驗板上移開并在戶外進行測試,我們會提供 EagleCAD 原理圖和印刷電路板 (PCB) 布局來幫助您。我們還提供了一個 3D 打印機就緒的 STL 文件作為容納硬件的外殼(圖 6和圖 7)。

poYBAGOzf5WAcFAiAABpyxLfO-U859.jpg

圖 6:這是電路板屏蔽罩的 3D 渲染圖。(來源:作者)

pYYBAGOzf5eAfCqnAACz2WMeNJ8188.jpg

圖 6:這個 3D 打印項目外殼包含硬件。(來源:作者)

最后,設計文件和源代碼可在 Mouser 的GitHub 存儲庫中獲取。

審核編輯黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2565

    文章

    53007

    瀏覽量

    767420
  • Mouser
    +關(guān)注

    關(guān)注

    3

    文章

    161

    瀏覽量

    53652
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    DL-T845.3-2019電阻測量裝置通用技術(shù)條件3部分:直流電阻測試儀

    DL-T845.3-2019電阻測量裝置通用技術(shù)條件3部分-直流電阻測試儀musen
    發(fā)表于 10-21 11:41 ?7次下載

    DL-T846.3-2017高電壓測試設備通用技術(shù)條件3部分:高壓開關(guān)綜合特性測試儀

    DL-T846.3-2017高電壓測試設備通用技術(shù)條件3部分-高壓開關(guān)綜合特性測試儀musen
    發(fā)表于 10-21 11:34 ?5次下載

    多相降壓設計大全(1部分)

    電子發(fā)燒友網(wǎng)站提供《多相降壓設計大全(1部分).pdf》資料免費下載
    發(fā)表于 09-21 09:59 ?5次下載
    多相降壓設計大全(<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>)

    如何進行電源供應設計 – 4 部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源供應設計 – 4 部分.pdf》資料免費下載
    發(fā)表于 09-09 10:34 ?0次下載
    如何進行電源供應設計 – <b class='flag-5'>第</b> 4 <b class='flag-5'>部分</b>

    如何進行電源設計-1部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源設計-1部分.pdf》資料免費下載
    發(fā)表于 09-07 11:10 ?0次下載
    如何進行電源設計-<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    如何進行電源設計–3部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源設計–3部分.pdf》資料免費下載
    發(fā)表于 09-07 11:08 ?0次下載
    如何進行電源設計–<b class='flag-5'>第</b><b class='flag-5'>3</b><b class='flag-5'>部分</b>

    如何進行電源設計–6部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源設計–6部分.pdf》資料免費下載
    發(fā)表于 09-06 15:05 ?0次下載
    如何進行電源設計–<b class='flag-5'>第</b>6<b class='flag-5'>部分</b>

    如何進行電源設計–4部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源設計–4部分.pdf》資料免費下載
    發(fā)表于 09-06 15:04 ?0次下載
    如何進行電源設計–<b class='flag-5'>第</b>4<b class='flag-5'>部分</b>

    電源設計方法-5部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-5部分.pdf》資料免費下載
    發(fā)表于 09-06 14:58 ?0次下載
    電源設計方法-<b class='flag-5'>第</b>5<b class='flag-5'>部分</b>

    電源設計方法-6部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-6部分.pdf》資料免費下載
    發(fā)表于 09-06 14:57 ?0次下載
    電源設計方法-<b class='flag-5'>第</b>6<b class='flag-5'>部分</b>

    電源設計方法-3部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-3部分.pdf》資料免費下載
    發(fā)表于 09-06 14:56 ?0次下載
    電源設計方法-<b class='flag-5'>第</b><b class='flag-5'>3</b><b class='flag-5'>部分</b>

    電源設計方法-2部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-2部分.pdf》資料免費下載
    發(fā)表于 09-06 11:42 ?2次下載
    電源設計方法-<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>

    電源設計方法-1部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-1部分.pdf》資料免費下載
    發(fā)表于 09-06 11:40 ?0次下載
    電源設計方法-<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    電源設計方法-4部分

    電子發(fā)燒友網(wǎng)站提供《電源設計方法-4部分.pdf》資料免費下載
    發(fā)表于 09-06 11:39 ?0次下載
    電源設計方法-<b class='flag-5'>第</b>4<b class='flag-5'>部分</b>

    如何進行電源供應設計-3部分

    電子發(fā)燒友網(wǎng)站提供《如何進行電源供應設計-3部分.pdf》資料免費下載
    發(fā)表于 08-30 09:16 ?0次下載
    如何進行電源供應設計-<b class='flag-5'>第</b><b class='flag-5'>3</b><b class='flag-5'>部分</b>