arduino 紅外線運用很多....但若用於測距,距離過短是個問題,不過紅外線遙控器的使用距離又很長

長距離基本上雖無法測距但實用價值或許更高

 

信號發射源:可裝在目標上

將 IR LED 裝上 arduino, 要發射經過編碼的信號僅能接在數位腳 3

f1-發射.JPG

 

很簡單的程式, 由 IR 範例稍改, 送出的信號是 SONY(0xa90), 哪個信號不重要, 只是要一個編碼能持續發射的信號

f2.JPG

 

接收端:

最下面是 IR 接收器, 為了定向....做了信號限制器(前方封閉僅剩一條縫)

f3.JPG

 

紅外線接收雷達.....整個接收端裝上伺服機, 伺服機固定在小塑膠盒上

f4.JPG

 

整個接收部分要用到兩塊 arduino, 手邊僅有 uno 暫時這樣用, 以後要縮小再用其他板子

f6.JPG

 

第一塊 arduino 負責 IR 信號解碼, 這裡用小型積木做成簡單支撐架

f7.JPG

 

程式如下, 修改 IR 接收範例. 程式上方沒看到的部份....IR 接收在數位腳11, LED 發射在數位腳2

當接收正確編碼, 則 LED 閃一下

f8.JPG

 

接收情況. 2704是接收正確的編碼, 接收器稍微偏向就出現下面的錯誤編碼

f9.JPG

 

為何要用第二塊? 因為要用到 mblock 的繪圖功能, 但此時的 arduino 無法解碼

所以我們用第一塊的判斷是否收到信號然後將確認信號傳到第二塊 ( 上面程式的LED 閃一下就是確認信號 )

這時用光耦 (PC 817) 來橋接

圖中左邊黃線接到 plate 1 的數位腳 2,右邊黃線接到 plate 2 的數位腳 2, 其它腳看顏色紅色就接 5V 黑色就接 GND

f11.JPG

 

承上圖, 因沒找到附件, 就把中間那個零件當成光耦 PC817 (正面), 這是橋接兩塊 arduino uno 的線路

線路圖-1.jpg

 

兩塊疊起來就這樣, 伺服機接在 plate 2 數位腳 9

P1010396.JPG

 

兩塊 arduino uno 分別接上 USB 線, 下面 plate 1 只接電源, 上面 plate 2 接到電腦

P1010399.JPG

 

這是要使用的 mblock 掃描程式, 距離乘數 500 是定個值讓定向線超過螢幕即可

原點定在 (-150,-150)

mblock程式.JPG

 

開始測試 :

IR LED 發射源置於遠處 (約 3 公尺)

紅外線接收雷達開始轉動偵測目標, 結果如下:

===================================

理想狀態: 一條線

這意思是受測物體在這條線上, 至於受測物體距離多少是以後要解決的問題

 

1line.jpg

 

二條線(或線緊鄰): 還能接受

2line.jpg

 

多條線廣範圍散布: 不能接受

manyline.jpg

 

上圖就是鬼影了, 10次掃描約出現2次

當只用紅外線接收器時....稍微偏轉角度, 其實就收不到正確信號, 前面那張serial port 解碼圖其實就表示出這情況

但當裝在伺服機上轉動時就會出現莫名鬼影, 這點自己在做超音波雷達也出現過這種情況

 

想過幾種可能, 已有改良腹案不過要再加確認

 

 

arrow
arrow
    全站熱搜

    ired2 發表在 痞客邦 留言(2) 人氣()