arduino 紅外線運用很多....但若用於測距,距離過短是個問題,不過紅外線遙控器的使用距離又很長
長距離基本上雖無法測距但實用價值或許更高
信號發射源:可裝在目標上
將 IR LED 裝上 arduino, 要發射經過編碼的信號僅能接在數位腳 3
很簡單的程式, 由 IR 範例稍改, 送出的信號是 SONY(0xa90), 哪個信號不重要, 只是要一個編碼能持續發射的信號
接收端:
最下面是 IR 接收器, 為了定向....做了信號限制器(前方封閉僅剩一條縫)
紅外線接收雷達.....整個接收端裝上伺服機, 伺服機固定在小塑膠盒上
整個接收部分要用到兩塊 arduino, 手邊僅有 uno 暫時這樣用, 以後要縮小再用其他板子
第一塊 arduino 負責 IR 信號解碼, 這裡用小型積木做成簡單支撐架
程式如下, 修改 IR 接收範例. 程式上方沒看到的部份....IR 接收在數位腳11, LED 發射在數位腳2
當接收正確編碼, 則 LED 閃一下
接收情況. 2704是接收正確的編碼, 接收器稍微偏向就出現下面的錯誤編碼
為何要用第二塊? 因為要用到 mblock 的繪圖功能, 但此時的 arduino 無法解碼
所以我們用第一塊的判斷是否收到信號然後將確認信號傳到第二塊 ( 上面程式的LED 閃一下就是確認信號 )
這時用光耦 (PC 817) 來橋接
圖中左邊黃線接到 plate 1 的數位腳 2,右邊黃線接到 plate 2 的數位腳 2, 其它腳看顏色紅色就接 5V 黑色就接 GND
承上圖, 因沒找到附件, 就把中間那個零件當成光耦 PC817 (正面), 這是橋接兩塊 arduino uno 的線路
兩塊疊起來就這樣, 伺服機接在 plate 2 數位腳 9
兩塊 arduino uno 分別接上 USB 線, 下面 plate 1 只接電源, 上面 plate 2 接到電腦
這是要使用的 mblock 掃描程式, 距離乘數 500 是定個值讓定向線超過螢幕即可
原點定在 (-150,-150)
開始測試 :
IR LED 發射源置於遠處 (約 3 公尺)
紅外線接收雷達開始轉動偵測目標, 結果如下:
===================================
理想狀態: 一條線
這意思是受測物體在這條線上, 至於受測物體距離多少是以後要解決的問題
二條線(或線緊鄰): 還能接受
多條線廣範圍散布: 不能接受
上圖就是鬼影了, 10次掃描約出現2次
當只用紅外線接收器時....稍微偏轉角度, 其實就收不到正確信號, 前面那張serial port 解碼圖其實就表示出這情況
但當裝在伺服機上轉動時就會出現莫名鬼影, 這點自己在做超音波雷達也出現過這種情況
想過幾種可能, 已有改良腹案不過要再加確認
留言列表