資料介紹
描述
背景
這是一種使用 Android 設備上的藍牙通信以及支持藍牙的 Arduino 來控制和監(jiān)控紫外線殺菌燈的方法。該藍牙控制模塊是為嶺南大學嶺南創(chuàng)業(yè)計劃的“紫外光”計劃設計的,用于控制紫外線殺菌燈。該項目所使用的燈能夠對香港的低收入住房進行消毒。在 COVID-19 大流行期間,來自當?shù)胤钦M織的志愿者使用這些燈對香港 1000 多個低收入住宅進行了消毒。這些藍牙控制的燈設計為安全、耐用且易于使用。該項目由嶺南大學、香港大學社會工作及社會行政學系合作,由香港賽馬會慈善信托基金資助的明愛青年及社區(qū)服務和健康行動
該項目可用于控制任何紫外線(或傳統(tǒng)燈),但專門設計并使用 Project Ultra-Violite 燈進行了測試。
該項目存在使用交流電源以及 C 波段紫外線的風險。
使用主電源并與之交互是危險的。此項目中的接線只能由受過培訓且能夠熟練使用主電源的人員完成。如果您不熟悉交流電源的安全要求,請向受過適當培訓的技術人員尋求幫助。
C波段的紫外線對眼睛和皮膚有害。接觸會導致失明和灼傷。切勿以您或其他生物可能以任何方式暴露在光線下的方式操作燈。您必須確保沒有人與燈光在同一個房間內,或在燈光運行時可能暴露在燈光下的任何位置。
概述
該項目由四個主要組件組成:將 Arduino Nano BLE 連接到傳感器和紫外線燈的電路,用于與傳感器和燈交互的 Arduino 代碼,使用 MIT App Inventor 創(chuàng)建的用于交互和監(jiān)控燈的 Android 應用程序,以及用于將控制器連接到三腳架的 3D 打印支架。
材料
這些燈使用常見的市售硬件,并帶有一些可選的 3D 打印部件以幫助組裝。讓我們回顧一下制作燈所需的零件的詳細信息:
- Arduino Nano BLE Sense。該微控制器用于在 Android 應用程序、燈和傳感器之間進行接口。選擇它主要是因為它的藍牙功能。任何支持低功耗藍牙的 Arduino 都適用于該項目。
- 被動紅外運動傳感器。這些傳感器用于確定操作期間是否有人或其他生物靠近燈。如果傳感器跳閘,燈會自動關閉。每個傳感器都有大約 100 度的視野,因此使用三個安裝在圓形圖案中的傳感器可以提供近 360 度的覆蓋范圍。
- GUVA-S12SD紫外線傳感器。用于監(jiān)控燈的狀態(tài),無論它們是否亮起。這使用戶可以確保燈已按預期打開,從而對目標空間進行了消毒。它還通過顯示燈是否打開或關閉,向用戶指示房間是否可以安全進入。
- 10A250V繼電器。用于觸發(fā)燈光。
- 8通道雙向電平轉換器。用于調整工作在 3.3V 的 Arduino Nano 和工作在 5V 的繼電器之間的信號電壓。該項目選擇了 8 通道電平轉換器,以考慮使用更多 5V 傳感器或繼電器的可能性。但是,對于當前配置中的項目,只需要一個通道。
- Hilink HLK-PM01 5V AC/DC穩(wěn)壓器。從燈的主電源為 Arduino 和傳感器提供 5V 電源。如果您接受過適當?shù)呐嘤柌⑶伊晳T于使用交流電源,則可以在電路中包含此穩(wěn)壓器來為這些其他組件供電。如果沒有,則使用其他電源,例如小電池或手機充電器。
- 安卓設備。使用隨附的 Android 應用程序通過藍牙與燈連接。
- 原型板。構建電路的平臺。
電路

電路的核心是 Arduino Nano BLE Sense。這提供了使用 Android 設備通過藍牙與電路進行通信的能力。Arduino 從四個傳感器接收信息——三個 PIR 傳感器和一個 UV-C 傳感器。PIR 傳感器連接到 Arduino 的三個數(shù)字引腳,每個引腳都連接到 5V 電源和接地。UV-C 傳感器連接到 Arduino 的模擬引腳之一,以及 5V 電源和接地。
Arduino 有兩個主要輸出,10A 繼電器和一個狀態(tài) LED。繼電器充當開關來打開和關閉燈的電源。它通過電平轉換器連接到 Arduino,因為 Arduino Nano 工作在 3.3V,繼電器只能由 5V 信號觸發(fā)。電平轉換器連接到來自 Arduino Nano 的 3.3V 電源(用于 3.3V 邏輯參考)、來自穩(wěn)壓器的 5V 電源(用于 5V 邏輯參考)和公共接地。電平轉換器還有一個使能引腳,當驅動為高電平時,該引腳使能電平轉換器的輸出。因此,它通過一個 1K 歐姆電阻連接到 Arduino Nano 上的數(shù)字引腳。繼電器還連接到 5V 電源和接地。燈的帶電電源線穿過繼電器,可以打開和關閉。
狀態(tài) LED 通過 1K 歐姆電阻連接到 Arduino 的數(shù)字引腳。它充當控制單元的電源和連接狀態(tài)的視覺指示器。
通過使用 HiLink HLK-PM01 5V AC/DC 穩(wěn)壓器提供電源。它通過 13 安培保險絲連接到主電源。如果您接受過適當?shù)呐嘤柌⑶伊晳T于使用交流電源,則可以在電路中包含此穩(wěn)壓器來為這些其他組件供電。如果沒有,則使用其他電源,例如小電池或手機充電器。如果您選擇使用手機充電器,可以通過 USB 端口連接到 Arduino。原理圖的重置保持不變。如果您選擇使用 HiLink HLK-PM01,您可以考慮使用來自 OpenHardware 的分線板:該分線板使用兩種類型的保險絲和壓敏電阻增加了安全性。
您可以根據(jù)下面的示意圖將電路組裝在面包板、原型板、條板或其他類似平臺上。雖然我們尚未為該電路創(chuàng)建印刷電路板,但如果其他人希望這樣做,我們已經(jīng)包含了初步的 Eagle 文件。

外殼
由于該項目包括交流電源,因此適當?shù)耐鈿τ诜乐挂馔饨佑|高壓非常重要。我們使用了尺寸為 150 毫米 x 70 毫米 x 27 毫米的通用塑料電氣外殼。我們用熱膠安裝了原型板、繼電器和 3D 打印部件。

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

Arduino代碼
Arduino 代碼是使用 ArduinoBLE 庫編寫的。低功耗藍牙設備可以是外圍設備,充當服務器來保存正在通信的信息,也可以是中央設備,它向外圍設備查詢數(shù)據(jù),并可以修改外圍設備中包含的數(shù)據(jù)。在我們的實現(xiàn)中,Arduino 是外圍設備,連接的 Android 設備是中央設備。
低功耗藍牙通信以服務為中心,允許組織設備之間通信的數(shù)據(jù)。每個服務都包含多個特征,這些特征包含特定的數(shù)據(jù)。在此示例中,有一個服務(“l(fā)ightService”服務)和四個特性。有一個 Characteristic 保存關于繼電器是否應該打開或關閉的數(shù)據(jù),一個保存關于運動傳感器是否已被觸發(fā)的數(shù)據(jù),一個保存來自 UV-C 傳感器的數(shù)據(jù),一個保存關于是否有任何數(shù)據(jù)的數(shù)據(jù)Android 設備連接到 Arduino。這些服務和特征在草圖的開頭定義,如下面的代碼塊所示。
在草圖的開頭還定義了本地名稱。這很重要,因為 Android 應用程序會在自動連接到燈時搜索此名稱的一部分。例如,我們的 Android 應用程序版本在可用藍牙設備的名稱中搜索短語“LU_Light”。如果它找到這個短語,它會自動連接。因此,我們使用的燈光被命名為“LU_Light_1”、“LU_Light_2”、“LU_Light_3”等。因此,您應該選擇設置 LocalName 以包含您編寫 Android 應用程序要搜索的任何短語。更多內容在下面的“Android 應用程序”部分中進行了解釋。

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

在設置部分,看門狗定時器首次出現(xiàn)。看門狗定時器用于處理 Arduino 的任何意外斷開連接或凍結。此計時器倒計時所需的時間(在本例中為 2 秒)。通過在代碼中調用resetWDT()
戰(zhàn)略位置,我們可以確保計時器不會達到零。如果該resetWDT()
命令從未被調用并且計時器達到零,這意味著 Arduino 在下一個resetWDT()
命令之前已凍結或斷開連接。因此,看門狗定時器重新啟動 Arduino,允許我們重新連接到它。這一點尤其重要,因為用戶始終能夠監(jiān)控燈的狀態(tài)并在必要時關閉燈是至關重要的。
此草圖中的看門狗定時器特別有用,因為使用 ArduinoBLE 庫的 Arduino Nano BLE 存在一個已知錯誤。Arduino Nano BLE 無法正確識別斷開事件。因此,如果 Android 設備意外斷開連接,Arduino 可能會繼續(xù)像已連接一樣,然后無法重新連接和監(jiān)視或控制燈。為了克服這個問題,Arduino 監(jiān)聽來自 Android 設備的輪詢消息。如果它收到此消息,我們知道它們仍然正確連接,并且可以重置看門狗定時器并且 Arduino 繼續(xù)正常運行。如果沒有及時收到輪詢消息,則看門狗定時器不會重置,達到“零”,并重新啟動 Arduino。
特別感謝 Arduino 用戶dniklewicz提出使用看門狗定時器的建議。
在下面的代碼片段中,enableWDT()
和resetWDT()
是在草圖末尾定義的函數(shù)。在這個片段中,我們也可以看到 resetWDT() 函數(shù)的第一次使用。我們嘗試啟動藍牙庫。如果它無法開始,我們會保持 LED 閃爍以指示出現(xiàn)問題。該resetWDT()
函數(shù)用于 while 循環(huán)中,以防止看門狗定時器達到零和 Arduino 重新啟動。

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

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

下一部分處理運動傳感器。正如稍后將在草圖中看到的那樣,在最初打開燈后的三秒鐘內,運動傳感器被禁用。這是因為我們發(fā)現(xiàn)當燈打開時發(fā)生的突然的光線變化錯誤地觸發(fā)了運動傳感器。因此,我們在打開燈后短時間內禁用運動傳感器。如果自燈打開以來已經(jīng)足夠長(大約 3 秒),我們重新啟用運動傳感器。
如果運動傳感器已被觸發(fā)(由草圖末尾的中斷服務程序motionFlag
設置為),那么我們更改 motionCharacteristic 的值,該值將自動報告給連接的設備并向用戶顯示一條消息。我們還通過切換繼電器自動關閉燈。最后,設置為以便以后可以在需要時再次觸發(fā)。true
motionDetected()
motionFlag
false

下一節(jié)處理來自其他特征的數(shù)據(jù)。首先是connectionCharacteristic
,它跟蹤 Android 設備是否仍處于連接狀態(tài)。它通過偵聽0x01
Android 設備發(fā)送的值來實現(xiàn)。這表明它們仍處于連接狀態(tài),因此看門狗定時器被復位。如果 Android 設備發(fā)送 0x00,這表明用戶希望斷開與燈的連接。
這switchCharacteristic
是燈的“開/關”開關。如果 Android 設備發(fā)送0x01
,則用戶已按下“開啟”按鈕。因此繼電器打開(由低信號觸發(fā))。如上所述,運動傳感器也被暫時禁用以避免由于燈的快速閃爍而導致錯誤觸發(fā),并且記錄時間以便可以在大約三秒內重新啟用運動傳感器。如果0x00
發(fā)送了字節(jié),則用戶希望關閉燈并關閉繼電器(設置為高電平)。

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

最后一部分是草圖中前面使用的函數(shù)。第一個是用于啟用看門狗定時器的功能。值得注意的是CRV,它是用來設置超時時間的。它的計算公式為超時 = (CRV-1)/32768。因此,如果您希望有 6 秒的超時,則必須將 CRV 設置為 196609,因為 (196609 - 1) / 32768 = 6。此計算來自用于在處理器中保持時間的晶體的自然頻率 32768赫茲。
第一部分是用于復位看門狗定時器的代碼。最后一個是在運動傳感器被觸發(fā)時使用的中斷服務程序。如果您不熟悉 Arduino 中斷,可以在此處了解更多信息:http: //gammon.com.au/interrupts。如果觸發(fā)發(fā)生在燈打開后的三秒內,我們故意禁用燈,則什么也不做。如果不是,則將motionFlag
變量設置為 true。在循環(huán)的下一次迭代中,繼電器將關閉,并向 Android 設備發(fā)送一條消息,指示已檢測到運動。

安卓應用
Android 應用程序是使用帶有 BluetoothLE 擴展的 MIT App Inventor 2 構建的。該應用程序旨在與一組三個燈一起使用。但是,它也可以僅與一套或兩套一起使用。燈的主要功能是通過藍牙將 Android 設備連接到燈、打開和關閉燈、監(jiān)控燈的狀態(tài)以及處理燈運動傳感器檢測到的運動通知。
當用戶打開應用程序時,他們會看到四個按鈕,允許他們連接到設備、斷開與設備的連接、打開連接的燈或關閉連接的燈。屏幕的下半部分顯示每個燈的狀態(tài)。燈的名稱顯示在左側。連接狀態(tài)使用中心的“無線”符號指示。穿過符號的紅色“X”表示燈未斷開。沒有“X”表示設備已連接。右側會顯示一個燈泡圖標,指示燈是否亮起。否則,沒有燈泡出現(xiàn)表示燈已關閉。

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

連接燈后,將顯示設備名稱并且無線圖標變?yōu)樗{色。

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

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

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

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

安裝 Application.apk 文件
我們已經(jīng)包含了應用程序的 .apk 文件以及使用 .aia 格式的 MIT App Inventor 項目文件。要從 .apk 安裝,只需在您的 Android 設備上從下方下載文件。點擊下載的文件將開始安裝過程。您可能需要在設備設置中允許安裝非市場應用程序。有關安裝 from.apk 的更多信息,
使用包含的 Arduino 代碼和 .apk 文件是最簡單的入門方法。如果您想修改應用程序,請按照以下步驟操作。
使用 MIT App Inventor 修改應用程序
要修改應用程序,您需要先在 MIT App Inventor 上創(chuàng)建一個帳戶(如果您沒有帳戶)。然后,從下面下載.aia 文件。在 MIT App Inventor 中,單擊文件 -> 導入并選擇 .aia 文件。打開文件將帶您進入 App Inventor 工作區(qū),您可以在其中從 Designer 選項卡修改界面或從 Blocks 選項卡修改代碼。包含的代碼已完整記錄。要在 MIT App Inventor 中查看評論,請單擊每個 Block 左上角的問號。

?
- 使用ML8511紫外線傳感器Arduino的紫外線指數(shù)計
- 便攜式紫外線消毒器 1次下載
- DIY紫外線殺菌設備
- 沙灘紫外線計開源分享
- 紫外線燈消毒機器人開源分享
- Arduino紫外線指數(shù)計
- 智能紫外線計(紫外線輻射監(jiān)測)開源分享
- FANSEA泛海微MCU單片機IC方案LED智能紫外(UVC+UVA)消毒燈
- 紫外線殺菌消毒燈管專用照度計UVC254說明書 2次下載
- 紫外線傳感器模塊 16次下載
- 紫外線傳感器、GUVA-C32SM數(shù)字式紫外線傳感器 10次下載
- 紫外線燈的原理及其在海岸原油清理中的應用 6次下載
- LEAC-280L紫外線燈的波長范圍與操作要領及其主要用途的介紹 11次下載
- 紫外線光源在更多的應用 24次下載
- 紫外線擦除器的制作方法
- 紅外線紫外線的特點及應用有哪些 1706次閱讀
- 基于Arduino的紫外線傳感器設計 紫外線傳感器的工作原理和分類 1489次閱讀
- 一文詳解紫外線技術應用技術 996次閱讀
- 用于紫外線殺菌燈的電子鎮(zhèn)流電路分享 1.3w次閱讀
- 詳談智能手表/手環(huán)里的紫外線傳感器的作用 5870次閱讀
- 紫外線對三大類材料的降解原理及如何預防或減輕紫外線的降解 1.3w次閱讀
- dfrobotGUVA-S10GD UV紫外線傳感器簡介 2117次閱讀
- led日光燈有紫外線嗎_與普通日光燈有什么區(qū)別 2.8w次閱讀
- 紫外線傳感器在殺菌領域的應用 1615次閱讀
- 紫外線和紅外線感測暴露監(jiān)測功能方法 3744次閱讀
- 紫外線傳感器殺菌消毒原理解析 4057次閱讀
- 紫外線殺菌燈殺菌原理和特點 5.2w次閱讀
- 針對紫外線的四個波段,應用對應波段的紫外線傳感器分析 5715次閱讀
- 紫外線治療儀與紫外線波段之間的關系解析 5157次閱讀
- 紫外線傳感器電路 7884次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論