牟曉東
在影視劇作品中,有時會出現(xiàn)因盜取某貴重物品而以各種花式動作去躲避激光“紅外線網(wǎng)陣”報警防盜系統(tǒng)的經(jīng)典橋段,主角兒一旦碰觸到橫豎交錯的紅色光線就會觸發(fā)警報系統(tǒng)工作,看上去非常有趣。如果利用Arduino控制紅色激光發(fā)射模塊向光線傳感器照射一束激光,同時不斷讀取光線傳感器上所檢測到的光線照明值并進行判斷,如果該數(shù)值不在激光照射時的正常范圍,則觸發(fā)蜂鳴器進行報警。這樣,我們就做出了一個簡易的Arduino激光防盜警報器,從而實現(xiàn)影視劇作品中類似的監(jiān)控防盜場景。
實驗器材包括:ArduinoUNO主板一塊,紅色激光頭發(fā)射模塊一個,光線傳感器一個,低電平觸發(fā)蜂鳴器一個,小型面包板一塊,杜邦線若干。
首先,使用紅色和黑色杜邦線分別將Arduino的5V和GND端連接至面包板的紅色“+” 、藍色“-”側(cè)邊槽線;接著,將蜂鳴器插入面包板,通過杜邦線將其VCC端和GND端連接至對應的“+”、“-”邊槽線,中間的I/O信號端通過一根黃色杜邦線連接至Arduino的8號端口;再將光線傳感器插入面包板中,同樣也是將其VCC端和GND端通過杜邦線連接至邊槽線,標注為AO的模擬數(shù)據(jù)輸出端通過一根綠色杜邦線連接至Arduino的A1模擬端口;然后,將激光發(fā)射模塊的電源正負極也連接至面包板的邊槽線,標注為S的信號輸出端通過一根藍色杜邦線連接至Arduino的12號端口;最后,通過數(shù)據(jù)線將Arduino與計算機的USB口進行連接(如圖1)。
首先,通過“int my_buzzer = 8;”和“int my_laser = 12;”語句分別定義my_buzzer和my_laser兩個變量,對應蜂鳴器和激光發(fā)射模塊連接Arduino的8號和12號端口號;接著,再定義一個整型變量my_light,作用是存儲Arduino從光線傳感器實時讀取的環(huán)境光線照明數(shù)據(jù)。
在setup()設置函數(shù)中,通過“pinMode(my_buzzer,OUTPUT);”和“pinMode(my_laser,OUTPUT);”語句聲明蜂鳴器和激光發(fā)射模塊均為輸出模式;由于光線傳感器是連接在Arduino的A1模擬端口,所以不必進行類似的“顯式”聲明;最后,再通過“Serial.begin(9600);”語句設置串口傳輸波特率為9600(如圖2)。
在loop()函數(shù)中,首先要關閉低電平觸發(fā)的蜂鳴器,否則一加電就會直接先響起“警報”,設置為HIGH高電平即可——“digitalWrite(my_buzzer, HIGH);”;接著,再控制激光發(fā)射模塊發(fā)射出紅色激光(設置為高電平):“digitalWrite(my_laser, HIGH);”;然后為變量my_light賦值,即從Arduino的A1模擬端口讀取數(shù)據(jù):“my_light = analogRead(A1);”,并且通過“Serial.println(my_light);”語句將該值輸出至Arduino的串口監(jiān)視器。
構造一個if條件判斷語句,對變量my_light的值進行“是否大于30”的判斷,如果條件成立,則分別執(zhí)行兩步操作:一是控制蜂鳴器發(fā)聲報警,將其設置為低電平——“digitalWrite(my_buzzer, LOW);”,二是向串口監(jiān)視器輸出文字報警信息——“Serial.println(“警報:有不明物體闖入!”);”;最后,通過“delay(100);”語句控制每次循環(huán)的間隔時間為100毫秒(如圖3)。
將程序保存為Laser_Alert.ino,準備進行測試。
調(diào)整好激光發(fā)射模塊的發(fā)射角度,使其對準光線傳感器的光敏電阻表面。接著,將程序代碼進行編譯并上傳至Arduino,并且在“工具”菜單中打開串口監(jiān)視器。此時,蜂鳴器是正常的無聲不報警狀態(tài),同時在串口監(jiān)視器中會每隔0.1秒鐘就顯示輸出一個不大于30的環(huán)境光線數(shù)據(jù):29、24、25……如果嘗試使用一根鉛筆伸入至激光發(fā)射模塊與光線傳感器之間,阻隔紅色激光照射至光敏電阻表面時,蜂鳴器迅速進行嘯叫報警,同時也會在串口顯示器上顯示“警報:有不明物體闖入!”文字警示,此時的環(huán)境光線數(shù)據(jù)就會發(fā)生較大幅度的變化:231、196、154……(如圖4)。
直到將鉛筆移開,警報器才會解除警報,而且串口監(jiān)視器上的環(huán)境光線數(shù)據(jù)又會恢復至小于30的正常范圍。