使用強(qiáng)度敏感的壓力傳感器來創(chuàng)建一個可見和可聽的警報
在這個項目中,我們將使用強(qiáng)度敏感的壓力傳感器來創(chuàng)建一個警報,在視覺和聲音上警告我們在展示中發(fā)布的圖形被操縱。這些人物被白光照亮。當(dāng)你被操縱時,燈光的顏色就會變成紅色,并發(fā)出警報。即使我們把圖形放回原處,燈光的顏色也不會改變,警報繼續(xù)響起,以找出哪個圖形被操縱了。讓我們先解釋一下什么是強(qiáng)度相關(guān)傳感器。
什么是抗強(qiáng)度相關(guān)的傳感器?
力敏電阻(FSR)傳感器是將施加在其上的物理壓力作為電壓值輸出的傳感器。這基本上是可變電阻。
通常,這些傳感器由導(dǎo)電襯底層和半導(dǎo)體子結(jié)構(gòu)層組成,據(jù)此,這些傳感器通常由導(dǎo)電襯底層和半導(dǎo)體子結(jié)構(gòu)層組成,由此,開放層的距離。在傳感器的有源區(qū)施加的壓力越大,該區(qū)域接觸半導(dǎo)體層的點越多,使電阻值下降。
FSR基本上是電阻,改變它們的電阻值(以歐姆Ω為單位),這取決于它們被壓的程度。這些傳感器很容易使用,但不是很精確。它們不提供精確的值。用這些傳感器可以確定重量。然而,你必須將電阻值轉(zhuǎn)換成成比例的重量。那么重量就不準(zhǔn)確了。然而,識別變化是可能的。這允許傳感器用于此項目。
我們將使用的模塊由FSR傳感器和與傳感器串聯(lián)的510 kΩ電阻組成。該電路由5 VDC供電,電路的輸出信號電壓從分壓器中移除,分壓器由我們將使用的模塊由FSR傳感器和與傳感器串聯(lián)的510 kΩ電阻組成。電路供電5vdc,電路的輸出信號電壓從分壓器上取下,由模塊形成的輸出信號電壓很低,輸出信號電壓很低。相反,當(dāng)傳感器上的壓力增加時,傳感器的電阻會下降,從而使模塊輸出信號上的電壓增加。在我們的項目中,我們將模塊的輸出信號連接到AZ微控制器的模擬輸入,并在串行監(jiān)視器上顯示測量值。下圖是AZ-Delivery-Data表中的模塊電路:
電路及所用模塊說明
我們對三個物體使用三個壓力傳感器。您將用白色或紅色的光照亮WS2812B LED環(huán)。我們還使用了迷你mp3播放器DFPlayer與迷你揚(yáng)聲器一起播放報警音。整個系統(tǒng)由AZ-Atmega328微控制器控制。我們還需要一個microSD卡來保存聲音文件。整套設(shè)備由外部5伏直流電源供電。
程序流程和草圖的描述
當(dāng)物體就位時,F(xiàn)SR傳感器模塊有一個高輸出信號顯示在串行監(jiān)視器上。LED環(huán)用白光照亮人物或物體。一旦其中一個對象被操作,F(xiàn)SR傳感器模塊的輸出信號下降,被操作對象的LED環(huán)亮紅燈并發(fā)出報警聲音。即使同一物體或其他物體再次定位在該位置,警報仍然存在。
使用迷你MP3播放器DFPlayer模塊需要前兩個庫。MP3模塊和微控制器之間的必要通信是串行的。庫Softwareerial.H包含微控制器激活串行通信的任何數(shù)字PIN的功能。使用庫Dfrobotdfplayermini.h,讓我們激活使用MP3播放器模塊所需的功能。
第三個庫是來自Adafruit的Neopixel,能夠使用LED環(huán)。
在我們?yōu)轫椖考闪吮匾膸熘?,我們開始創(chuàng)建對象和變量的定義。為了使用MP3播放器模塊,我們必須在軟件庫softwareial . h中實現(xiàn)mysoftwareial對象。數(shù)字引腳被賦予微控制器,我們將用于模塊的串行通信。我們使用數(shù)字PIN 5接收來自MP3模塊的數(shù)據(jù),使用數(shù)字PIN 6向MP3模塊發(fā)送數(shù)據(jù)。為了使用模塊的稅務(wù)方法和命令,例如設(shè)置音量或開始播放MP3文件,我們從庫Dfrobotdfplayermini.h中創(chuàng)建對象mydfplayer。
FSR傳感器的輸出連接到微控制器的模擬輸入。為此聲明了以下變量。我們還將信號保存在其他變量中。
草圖的下四行是用于將WS2812B LED環(huán)連接到微控制器的數(shù)字引腳的三個常量,以及用于定義每個環(huán)的LED數(shù)量的常量,在這種情況下為8個LED。
對于每個WS2812B LED環(huán)的操作,必須為使用的每個環(huán)創(chuàng)建Neopixel庫的對象。一個環(huán)的led的各自數(shù)量寫在這個對象的參數(shù)中(我們有這個number_led_ring的變量),每個環(huán)連接的微控制器的引腳(為此我們有變量,例如floers_ring_led),以及每個環(huán)的屬性。它們是三色led (Neo_grb),工作頻率為800 kHz (Neo_khz800)。
在草圖的下一行中,為每個環(huán)的兩種顏色的RGB值聲明和定義變量。
下一個代碼塊是setup(),我們在其中配置模塊的初始狀態(tài)。
在前兩行中,我們用Begin指令(“波特率”)初始化串行通信,這兩行都是為了用mysoftwareeries指令與MP3模塊通信。開始(9600),以及使用串行指令的串行監(jiān)視器。開始(115200)。
接下來,我們檢查MP3模塊是否被IF語句正確初始化。在這種情況下,我們檢查MP3模塊是否由于任何原因沒有初始化。我們用符號“!”進(jìn)行初始化。退化,即如果模塊沒有初始化,條件為真,執(zhí)行花括號內(nèi)的代碼。如果MP3播放器模塊初始化正確,則不滿足條件,并且不執(zhí)行我們解釋的代碼。setup()方法繼續(xù)通過serial行執(zhí)行到串行控制臺。println (f ("correct dfplayer initialization."))告知MP3播放器模塊被正確初始化。
MP3模塊初始化后,三個LED環(huán)必須使用每個環(huán)的對象(name_ring)的Begin()方法。Begin())被初始化。如果有一個亮了,我們就關(guān)掉所有的led燈。
首先,我們將環(huán)形光的亮度設(shè)置為200,總共為254。
在一個for循環(huán)中,一個環(huán)的所有l(wèi)ed都帶有flowers_ring。Setpixelcolor (I, floers_color_white)配置白色照明,然后使用floers_ring。Show()打開。計數(shù)變量I的最大值是我們在開始時定義的變量number_leds_ring的值。
兩個for環(huán)類似于其他兩個LED環(huán)。
只有FSR模塊的信號值的變量,它被定義為一個高值。我們記得,當(dāng)按下傳感器時,模塊的信號值很高。而不按下時,其值較低。
有了這些行,塊的編程就完成了?,F(xiàn)在讓我們從持續(xù)執(zhí)行的Loop()開始。它確定其中一個圖形是否被移動或從其位置移除。我們將描述花中的花的代碼。menina和hand的圖形代碼是相同的,只是每個圖形變量的值發(fā)生了變化。menina的sensor_menina_signal <1200, hand sensor_hand_signal <1000。
為了檢查FSR傳感器模塊的起始值的變化,我們使用if,在此我們檢查先前存儲的相應(yīng)數(shù)字的傳感器變量的值。三個數(shù)字的代碼是一樣的,只是每個數(shù)字的變量的測試值發(fā)生了變化。在這里,我們也將對代碼中的變量進(jìn)行檢查,對花兒的圖形sensor_flowers_signal進(jìn)行分析。
每當(dāng)變量sensor_flowers_signal中的先前存儲值小于1000時,就執(zhí)行塊的內(nèi)部。
一進(jìn)入指令塊,我們就用第一行Analogread (sensor_flowers_pin)讀取FSR傳感器模塊信號的當(dāng)前值,并將該值保存在相應(yīng)的變量sensor_flowers_signal中。然后我們在串行監(jiān)視器中花費該值。
下面的If - Else如果檢查變量sensor_flowers_signal當(dāng)前值是否小于200,如果該條件為真,則對象被移動,并執(zhí)行以下代碼觸發(fā)告警。
我們在串行監(jiān)視器中發(fā)出一個說明:
我們將環(huán)形光的亮度強(qiáng)度設(shè)置為200,總共為254。
為了打開受影響的紅色環(huán)的所有l(wèi)ed,我們再次使用一個for循環(huán)來遍歷環(huán)的所有l(wèi)ed。計數(shù)變量I對應(yīng)LED的個數(shù)。紅色的燈光是與flowers_ring。Setpixelcolor (I, flexers_color_red)配置。然后他們會和floers_ring在一起。Show()打開。我們記得變量I的最大值,因此變量Number_leds_Ring的值的拆除條件是。
現(xiàn)在我們要播放的報警音,我們在microSD卡下保存的名稱為1.mp3。首先,我們使用mydfplayer配置播放強(qiáng)度。音量(10)并在mydfplayer中循環(huán)播放聲音文件。循環(huán)(1).聲音文件的周期為7秒。一直播放到單片機(jī)復(fù)位為止,因為是報警,要檢查圖的狀態(tài)。我在草圖中使用了一個延遲(500),以便在下一個指令執(zhí)行之前播放警報音。
到目前為止,只要FSR傳感器變量的值小于200,就可以設(shè)計if指令的代碼。但是,如果FSR傳感器模塊更新后的測量值變量的存儲值小于1000,但大于或等于200,則Else IFInstruction的代碼。它只是通知串行監(jiān)視器,相應(yīng)的數(shù)字沒有被操縱。
所有三個數(shù)字的代碼幾乎相同,只有測試區(qū)域的變量隨FSR傳感器的每個數(shù)字的值而變化。
添加
可以向項目中添加幾個選項。第一種選擇是安裝一個外部按鈕,連接在GND連接和微控制器的復(fù)位連接之間。通過這種方式,我們將復(fù)位微控制器,它將具有與微控制器的復(fù)位按鈕相同的功能。以下組件應(yīng)添加到電路中:
第二種選擇是在揚(yáng)聲器的正極線(紅色電纜)上安裝一個開關(guān)。在另一種安排下,只有當(dāng)開關(guān)被翻轉(zhuǎn)時,警報才會停止,但數(shù)字的LED環(huán)會繼續(xù)亮紅燈,以顯示哪個數(shù)字被操縱了。對于第二種選擇,我們必須確保在檢查角色狀態(tài)后更改開關(guān)以重新激活聲音。
本文編譯自hackster.io