<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Arduino控制和監控紫外線殺菌燈的方法

Arduino控制和監控紫外線殺菌燈的方法

2022-11-10 | zip | 0.08 MB | 次下載 | 免費

資料介紹

描述

背景

這是一種使用 Android 設備上的藍牙通信以及支持藍牙的 Arduino 來控制和監控紫外線殺菌燈的方法。該藍牙控制模塊是為嶺南大學嶺南創業計劃的“紫外光”計劃設計的,用于控制紫外線殺菌燈。該項目所使用的燈能夠對香港的低收入住房進行消毒。在 COVID-19 大流行期間,來自當地非政府組織的志愿者使用這些燈對香港 1000 多個低收入住宅進行了消毒。這些藍牙控制的燈設計為安全、耐用且易于使用。該項目由嶺南大學、香港大學社會工作及社會行政學系合作,由香港賽馬會慈善信托基金資助的明愛青年及社區服務和健康行動

該項目可用于控制任何紫外線(或傳統燈),但專門設計并使用 Project Ultra-Violite 燈進行了測試。

該項目存在使用交流電源以及 C 波段紫外線的風險。

使用主電源并與之交互是危險的。此項目中的接線只能由受過培訓且能夠熟練使用主電源的人員完成。如果您不熟悉交流電源的安全要求,請向受過適當培訓的技術人員尋求幫助。

C波段的紫外線對眼睛和皮膚有害。接觸會導致失明和灼傷。切勿以您或其他生物可能以任何方式暴露在光線下的方式操作燈。您必須確保沒有人與燈光在同一個房間內,或在燈光運行時可能暴露在燈光下的任何位置。

概述

該項目由四個主要組件組成:將 Arduino Nano BLE 連接到傳感器和紫外線燈的電路,用于與傳感器和燈交互的 Arduino 代碼,使用 MIT App Inventor 創建的用于交互和監控燈的 Android 應用程序,以及用于將控制器連接到三腳架的 3D 打印支架。

材料

這些燈使用常見的市售硬件,并帶有一些可選的 3D 打印部件以幫助組裝。讓我們回顧一下制作燈所需的零件的詳細信息

  • Arduino Nano BLE Sense。微控制器用于在 Android 應用程序、燈和傳感器之間進行接口。選擇它主要是因為它的藍牙功能。任何支持低功耗藍牙的 Arduino 都適用于該項目。
  • 被動紅外運動傳感器。這些傳感器用于確定操作期間是否有人或其他生物靠近燈。如果傳感器跳閘,燈會自動關閉。每個傳感器都有大約 100 度的視野,因此使用三個安裝在圓形圖案中的傳感器可以提供近 360 度的覆蓋范圍。
  • GUVA-S12SD紫外線傳感器。用于監控燈的狀態,無論它們是否亮起。這使用戶可以確保燈已按預期打開,從而對目標空間進行了消毒。它還通過顯示燈是否打開或關閉,向用戶指示房間是否可以安全進入。
  • 10A250V繼電器。用于觸發燈光。
  • 8通道雙向電平轉換器。用于調整工作在 3.3V 的 Arduino Nano 和工作在 5V 的繼電器之間的信號電壓。該項目選擇了 8 通道電平轉換器,以考慮使用更多 5V 傳感器或繼電器的可能性。但是,對于當前配置中的項目,只需要一個通道。
  • Hilink HLK-PM01 5V AC/DC穩壓器。從燈的主電源為 Arduino 和傳感器提供 5V 電源。如果您接受過適當的培訓并且習慣于使用交流電源,則可以在電路中包含此穩壓器來為這些其他組件供電。如果沒有,則使用其他電源,例如小電池或手機充電器。
  • 安卓設備。使用隨附的 Android 應用程序通過藍牙與燈連接。
  • 原型板。構建電路的平臺。

電路

poYBAGNsT6aAOFC-AAL5p7EvBzc725.png
電路原理圖。附件部分提供完整示意圖
?

電路的核心是 Arduino Nano BLE Sense。這提供了使用 Android 設備通過藍牙與電路進行通信的能力。Arduino 從四個傳感器接收信息——三個 PIR 傳感器和一個 UV-C 傳感器。PIR 傳感器連接到 Arduino 的三個數字引腳,每個引腳都連接到 5V 電源和接地。UV-C 傳感器連接到 Arduino 的模擬引腳之一,以及 5V 電源和接地。

Arduino 有兩個主要輸出,10A 繼電器和一個狀態 LED。繼電器充當開關來打開和關閉燈的電源。它通過電平轉換器連接到 Arduino,因為 Arduino Nano 工作在 3.3V,繼電器只能由 5V 信號觸發。電平轉換器連接到來自 Arduino Nano 的 3.3V 電源(用于 3.3V 邏輯參考)、來自穩壓器的 5V 電源(用于 5V 邏輯參考)和公共接地。電平轉換器還有一個使能引腳,當驅動為高電平時,該引腳使能電平轉換器的輸出。因此,它通過一個 1K 歐姆電阻連接到 Arduino Nano 上的數字引腳。繼電器還連接到 5V 電源和接地。燈的帶電電源線穿過繼電器,可以打開和關閉。

狀態 LED 通過 1K 歐姆電阻連接到 Arduino 的數字引腳。它充當控制單元的電源和連接狀態的視覺指示器。

通過使用 HiLink HLK-PM01 5V AC/DC 穩壓器提供電源。它通過 13 安培保險絲連接到主電源。如果您接受過適當的培訓并且習慣于使用交流電源,則可以在電路中包含此穩壓器來為這些其他組件供電。如果沒有,則使用其他電源,例如小電池或手機充電器。如果您選擇使用手機充電器,可以通過 USB 端口連接到 Arduino。原理圖的重置保持不變。如果您選擇使用 HiLink HLK-PM01,您可以考慮使用來自 OpenHardware 的分線板:該分線板使用兩種類型的保險絲和壓敏電阻增加了安全性。

您可以根據下面的示意圖將電路組裝在面包板、原型板、條板或其他類似平臺上。雖然我們尚未為該電路創建印刷電路板,但如果其他人希望這樣做,我們已經包含了初步的 Eagle 文件。

pYYBAGNsT8SAUGjCAAoT1uuer4Y575.jpg
安裝在原型板上的組件
?

外殼

由于該項目包括交流電源,因此適當的外殼對于防止意外接觸高壓非常重要。我們使用了尺寸為 150 毫米 x 70 毫米 x 27 毫米的通用塑料電氣外殼。我們用熱膠安裝了原型板、繼電器和 3D 打印部件。

pYYBAGNsT-CAW5-tAAm1ZWFhnCo555.jpg
三個完成的外殼
?

我們還設計了一個支架,將盒子和 PIR 運動傳感器連接到用于固定燈的 Phottix P220 三腳架上(請參閱我們在此處構建燈的教程)。CAD 文件包含在本教程中,但可能需要針對不同尺寸的外殼或三腳架進行修改。

pYYBAGNsT_uAKC12AAkrpZkicM8228.jpg
將外殼連接到 UV-C 消毒燈的 3D 打印底座
?

Arduino代碼

Arduino 代碼是使用 ArduinoBLE 庫編寫的。低功耗藍牙設備可以是外圍設備,充當服務器來保存正在通信的信息,也可以是中央設備,它向外圍設備查詢數據,并可以修改外圍設備中包含的數據。在我們的實現中,Arduino 是外圍設備,連接的 Android 設備是中央設備。

低功耗藍牙通信以服務為中心,允許組織設備之間通信的數據。每個服務都包含多個特征,這些特征包含特定的數據。在此示例中,有一個服務(“lightService”服務)和四個特性。有一個 Characteristic 保存關于繼電器是否應該打開或關閉的數據,一個保存關于運動傳感器是否已被觸發的數據,一個保存來自 UV-C 傳感器的數據,一個保存關于是否有任何數據的數據Android 設備連接到 Arduino。這些服務和特征在草圖的開頭定義,如下面的代碼塊所示。

在草圖的開頭還定義了本地名稱。這很重要,因為 Android 應用程序會在自動連接到燈時搜索此名稱的一部分。例如,我們的 Android 應用程序版本在可用藍牙設備的名稱中搜索短語“LU_Light”。如果它找到這個短語,它會自動連接。因此,我們使用的燈光被命名為“LU_Light_1”、“LU_Light_2”、“LU_Light_3”等。因此,您應該選擇設置 LocalName 以包含您編寫 Android 應用程序要搜索的任何短語。更多內容在下面的“Android 應用程序”部分中進行了解釋。

pYYBAGNsUAOAPLalAAR7OeSvbzk337.png
定義服務和特征
?

代碼的下一部分是Arduino引腳的標準定義和變量的初始化:

pYYBAGNsUAeATYE_AALVOXrLadk785.png
定義引腳和變量
?

在設置部分,看門狗定時器首次出現。看門狗定時器用于處理 Arduino 的任何意外斷開連接或凍結。此計時器倒計時所需的時間(在本例中為 2 秒)。通過在代碼中調用resetWDT()戰略位置,我們可以確保計時器不會達到零。如果該resetWDT()命令從未被調用并且計時器達到零,這意味著 Arduino 在下一個resetWDT()命令之前已凍結或斷開連接。因此,看門狗定時器重新啟動 Arduino,允許我們重新連接到它。這一點尤其重要,因為用戶始終能夠監控燈的狀態并在必要時關閉燈是至關重要的。

此草圖中的看門狗定時器特別有用,因為使用 ArduinoBLE 庫的 Arduino Nano BLE 存在一個已知錯誤。Arduino Nano BLE 無法正確識別斷開事件。因此,如果 Android 設備意外斷開連接,Arduino 可能會繼續像已連接一樣,然后無法重新連接和監視或控制燈。為了克服這個問題,Arduino 監聽來自 Android 設備的輪詢消息。如果它收到此消息,我們知道它們仍然正確連接,并且可以重置看門狗定時器并且 Arduino 繼續正常運行。如果沒有及時收到輪詢消息,則看門狗定時器不會重置,達到“零”,并重新啟動 Arduino。

特別感謝 Arduino 用戶dniklewicz提出使用看門狗定時器的建議。

在下面的代碼片段中,enableWDT()resetWDT()是在草圖末尾定義的函數。在這個片段中,我們也可以看到 resetWDT() 函數的第一次使用。我們嘗試啟動藍牙庫。如果它無法開始,我們會保持 LED 閃爍以指示出現問題。resetWDT()函數用于 while 循環中,以防止看門狗定時器達到零和 Arduino 重新啟動。

poYBAGNsUA6AdGRMAAJ7c1LImvk215.png
設置部分,包括啟用看門狗定時器
?

在下一節中,配置藍牙服務。接下來,將特征添加到服務中,確保其數據對連接的設備可見。此外,還附加了運動傳感器的中斷。如果運動傳感器檢測到運動,它將觸發此中斷。

pYYBAGNsUBKAKSkAAALUvev7LDQ443.png
配置藍牙服務
?

下一部分開始循環,該循環將重復運行。在循環中,Arduino 監聽要連接的設備。如果沒有連接,LED 會閃爍。我們在這里看到另一個resetWDT()確??撮T狗定時器不會啟動 Arduino 的重啟。

pYYBAGNsUBSAMlxAAAFhSyq2QqU345.png
循環開始 - Arduino 監聽要連接的藍牙設備
?

下一部分處理運動傳感器。正如稍后將在草圖中看到的那樣,在最初打開燈后的三秒鐘內,運動傳感器被禁用。這是因為我們發現當燈打開時發生的突然的光線變化錯誤地觸發了運動傳感器。因此,我們在打開燈后短時間內禁用運動傳感器。如果自燈打開以來已經足夠長(大約 3 秒),我們重新啟用運動傳感器。

如果運動傳感器已被觸發(草圖末尾的中斷服務程序motionFlag 設置為),那么我們更改 motionCharacteristic 的值,該值將自動報告給連接的設備并向用戶顯示一條消息。我們還通過切換繼電器自動關閉燈。最后,設置為以便以后可以在需要時再次觸發。truemotionDetected()motionFlagfalse

poYBAGNsUBuAY3XzAAImXTHhh4c998.png
處理運動傳感器觸發器
?

下一節處理來自其他特征的數據。首先是connectionCharacteristic,它跟蹤 Android 設備是否仍處于連接狀態。它通過偵聽0x01Android 設備發送的值來實現。這表明它們仍處于連接狀態,因此看門狗定時器被復位。如果 Android 設備發送 0x00,這表明用戶希望斷開與燈的連接。

switchCharacteristic是燈的“開/關”開關。如果 Android 設備發送0x01,則用戶已按下“開啟”按鈕。因此繼電器打開(由低信號觸發)。如上所述,運動傳感器也被暫時禁用以避免由于燈的快速閃爍而導致錯誤觸發,并且記錄時間以便可以在大約三秒內重新啟用運動傳感器。如果0x00發送了字節,則用戶希望關閉燈并關閉繼電器(設置為高電平)。

pYYBAGNsUCCANSN0AALvoH7Kff4262.png
處理連接監控和開/關切換
?

由于出于安全原因,用戶在操作時不能與燈在同一個房間,因此我們配備了一個紫外線傳感器,以便他們可以驗證燈是真正打開還是關閉。紫外線傳感器按所需的時間間隔輪詢,默認情況下每秒輪詢一次。我們使用 10 讀數運行平均值來確定紫外線水平是否超過閾值。該變量uvReadings是一個包含 10 個 UV 讀數的列表,索引為 1 到 10。讀數分 10 個步驟收集。在每一步,從總讀數中減去該步驟的舊讀數,并添加新讀數。然后通過將總數除以所讀取的讀數數量來收集平均值。如果平均值低于閾值,則確定燈關閉,并且0x00byte 被發送到 Android 設備,以便為用戶創建指示。如果平均值高于閾值,則指示燈亮起0x01 并向 Android 設備發送一個字節。

poYBAGNsUCaAOJ8bAALKBQGPjJs207.png
保持紫外線傳感器讀數的運行平均值
?

最后一部分是草圖中前面使用的函數。第一個是用于啟用看門狗定時器的功能。值得注意的是CRV,它是用來設置超時時間的。它的計算公式為超時 = (CRV-1)/32768。因此,如果您希望有 6 秒的超時,則必須將 CRV 設置為 196609,因為 (196609 - 1) / 32768 = 6。此計算來自用于在處理器中保持時間的晶體的自然頻率 32768赫茲。

第一部分是用于復位看門狗定時器的代碼。最后一個是在運動傳感器被觸發時使用的中斷服務程序。如果您不熟悉 Arduino 中斷,可以在此處了解更多信息:http: //gammon.com.au/interrupts。如果觸發發生在燈打開后的三秒內,我們故意禁用燈,則什么也不做。如果不是,則將motionFlag變量設置為 true。在循環的下一次迭代中,繼電器將關閉,并向 Android 設備發送一條消息,指示已檢測到運動。

pYYBAGNsUCmAXq2hAAGnZSpaip4838.png
配套功能
?

安卓應用

Android 應用程序是使用帶有 BluetoothLE 擴展的 MIT App Inventor 2 構建的。該應用程序旨在與一組三個燈一起使用。但是,它也可以僅與一套或兩套一起使用。燈的主要功能是通過藍牙將 Android 設備連接到燈、打開和關閉燈、監控燈的狀態以及處理燈運動傳感器檢測到的運動通知。

當用戶打開應用程序時,他們會看到四個按鈕,允許他們連接到設備、斷開與設備的連接、打開連接的燈或關閉連接的燈。屏幕的下半部分顯示每個燈的狀態。燈的名稱顯示在左側。連接狀態使用中心的“無線”符號指示。穿過符號的紅色“X”表示燈未斷開。沒有“X”表示設備已連接。右側會顯示一個燈泡圖標,指示燈是否亮起。否則,沒有燈泡出現表示燈已關閉。

poYBAGNsUC6AfSQ1AADNKKvs4GA768.jpg
應用程序初始屏幕截圖
?

第一步是連接到可用的燈。當用戶按下連接按鈕時,應用程序開始掃描可用的藍牙設備,并將其聚合到一個列表中。在掃描過程中,無線圖標為黃色。對于它找到的每個藍牙設備,它都會查詢設備的名稱。如果設備的名稱與用于指定 UV 燈的前綴匹配,在我們的例子中,我們使用前綴LU_Light ,那么它將連接到該燈。

poYBAGNsUDCAN2WXAACr386FVmw440.jpg
搜索可用燈時無線圖標變為黃色
?

連接燈后,將顯示設備名稱并且無線圖標變為藍色。

pYYBAGNsUDKAamT6AAC7Vc-PX3o240.jpg
顯示所有三個燈已連接的屏幕截圖
?

當連接了所需數量的燈時,可以使用“ON”按鈕打開燈。按下“ON”按鈕會導致 Android 設備向上述0x01所有燈發送一個字節switchCharacterstic。當燈亮起時,燈中的紫外線傳感器會檢測到這一點,燈內的 Arduinos 會0x01statusCharacteristic. 然后使用屏幕右側的燈泡圖標在屏幕上指示。

pYYBAGNsUDaAA5yQAADbb2qZ9Mk584.jpg
按下“ON”按鈕后,所有燈都用燈泡圖標顯示它們已打開
?

按下“OFF”按鈕會導致一個0x00字節被發送到所有的燈switchCharacteristic。當燈中的紫外線傳感器檢測到它們沒有打開時,Arduinos 會發送一個 0x00 byteon statusCharacteristic,并且燈泡圖標會消失。

pYYBAGNsUDiAC4t1AADBKyHte78389.jpg
關燈 - 燈泡圖標消失
?

當其中一個燈檢測到運動時,Arduino 會在motionCharacteristic. 這會觸發 Arduino 設備向所有燈發送一個0x00字節switchCharacteristic,確保所有燈都關閉。應用程序屏幕上顯示一條消息。可以通過單擊“X”圖標清除此消息。

poYBAGNsUDqAUUUqAADTknvxoGI041.jpg
移動檢測消息顯示在屏幕底部,清除消息“x”按鈕可見
?

每當燈連接到 Android 應用程序時,Android 設備都會0x01connectionCharacteristic. 如上面的 Arduino 部分所述,這表明設備仍然正確連接。當按下“斷開連接”按鈕時,應用程序會在所有燈上發送一個0x00字節。connectionCharacteristic這會觸發他們斷開連接。盡管 MIT App Inventor 包含一個“斷開連接”功能,但發現它不能與 Arduino Nano BLE Sense 可靠地工作,因此我們沒有發送明確的“斷開連接”命令,而是發送0x00觸發 Arduino 自行斷開連接的字節。

poYBAGNsUC6AfSQ1AADNKKvs4GA768.jpg
按下斷開按鈕會導致所有燈斷開
?

安裝 Application.apk 文件

我們已經包含了應用程序的 .apk 文件以及使用 .aia 格式的 MIT App Inventor 項目文件。要從 .apk 安裝,只需在您的 Android 設備上從下方下載文件。點擊下載的文件將開始安裝過程。您可能需要在設備設置中允許安裝非市場應用程序。有關安裝 from.apk 的更多信息,

使用包含的 Arduino 代碼和 .apk 文件是最簡單的入門方法。如果您想修改應用程序,請按照以下步驟操作。

使用 MIT App Inventor 修改應用程序

要修改應用程序,您需要先在 MIT App Inventor 上創建一個帳戶(如果您沒有帳戶)。然后,從下面下載.aia 文件。在 MIT App Inventor 中,單擊文件 -> 導入并選擇 .aia 文件。打開文件將帶您進入 App Inventor 工作區,您可以在其中從 Designer 選項卡修改界面或從 Blocks 選項卡修改代碼。包含的代碼已完整記錄。要在 MIT App Inventor 中查看評論,請單擊每個 Block 左上角的問號。

poYBAGNsUEqAJUoDAAXnvEYgq4s449.png
通過單擊問號符號訪問 MIT App Inventor 中的代碼注釋
?

?


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  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元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  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十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>