2014/04/20

實作, Arduino 聲納雷達 (HC-SR04, SG90)

Arduino 聲納雷達
聲納雷達畫面

大兵萊恩買了一個 HC-SR04 超音波感測模組, 想說用它來做一個聲納雷達. 這模組有兩根大砲管, 看起來很威的樣子. 其中一邊發送高頻音波, 另一邊負責接收再回傳時差. 藉由音速公式 (V=331+0.6T), 即可推導出物件的距離. 
HC-SR04
必殺, 空氣砲..

測量感應距離

根據規格資料, 這模組的感測距離可達 4m. 大兵萊恩在做實驗的時候, 總覺得這模組的回傳值不穩定, 明明物件在 2~3m 遠, 可它卻能傳回一些荒謬的數值. 既然如此,  那就先來驗證一下這模組的能耐好了. 大兵萊恩的實驗方法很簡單, 就是請新之助當模特兒, 由近而遠慢慢推長距離, 同時觀察 HC-SR04 的回傳值. 這邊發現, HC-SR04 能穩定的偵測 165cm 以內的物件, 超過這距離就看運氣了.
我投降..
最遠165cm, 超過就看運氣了..

來實作聲納雷達

(1) 將 HC-SR04 安裝冰棒棍上.
把 HC-SR04 固定在冰棒棍一端
(2) 再把冰棒棍和 SG90 伺服馬達 (Servo) 連結在一起. 同時也用熱融膠把 Servo 固定在底座上. 
再把冰棒棍和 SG90 連結在一起
(3) Arduino 控制程式. (程式在這邊
線路圖
   - 控制 Servo 每次 3 度, 在 45 ~ 135 度的範圍內, 從右至左, 再由左至右的來回轉動.
   - HC-SR04 跟隨 Servo 的轉動, 逐次的發射高頻音波, 接收回音傳回時差再換算成距離.
(4) 用 Processing 畫出雷達畫面. (程式在這邊)
   - 從右至左, 再由左至右, 把 HC-SR04 的回傳值轉成距離與相位畫在螢幕上.
   - 每次畫點時, 會先塗銷舊點, 再畫上新點. 

來看看聲納雷達的效果如何吧. 有請新之助和海綿當模特兒. 
站位:
站好不要動
一二三, 木頭人
雷達掃瞄畫面:
前方45cm 處有兩大塊物件

對照來看, 雷達掃瞄的結果還算準確. XD.


心得, 經驗與問題

厚.. 是又怎麼了啊?
  • 大兵萊恩用 Processing 畫圖時, 常常會遇到 disabling serialEvent() 的錯誤訊息. 多方嚐試後, 大致歸納出三個可能的原因. 


  1. Arduino 端有用 Upload 功能上傳軔體.  猜想這時 Arduino 已經佔用 COM port (或 USB port), Processing 當然搶不到囉. 要避免這狀況, 最容易的作法便是上傳軔體到 Arduino 後, 得再讓 Arduino 重新啟動之後才讓 Processing 連線.
  2. 在 Processing 和 Arduino 已經合作良好的情況下, 直接重新執行 Processing 程式, 這時 Processing 也會傳回 disabling serialEvent() 的錯誤訊息.  要避免這狀況, 就要讓 Arduino 與 Processing 兩邊一起重新執行即可.
  3. Processing 的 SerailEvent() 裡面程式碼有 runtime 錯誤. 就.. 想辦法 debug 吧.


參考資料

  * 三角函數 


[萊恩大兵的其它文章]

自製大四軸

自製大四軸, 實作分享@華山文創園區
自製大四軸, (1) 零組件篇, 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
自製大四軸, (2) 零組件篇, 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
自製大四軸, (3) 零組件篇, 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (4) 零組件篇, 馬達與電變調整 (Drone, Quadcopter, Maker, Electric Speed Control, Motor)
自製大四軸, (5) 組裝篇, 四軸飛行器成形 (Drone, Quadcopter, MultiWii, Arduino, Maker, Electric Speed Control, Motor)
自製大四軸, (6) 調整篇, 飛行前兩三事 (Drone, Quadcopter, Maker, Futaba, Arduino, MultiWii)
自製大四軸, (7) 充電篇, iMax B6 充電器操作記要 (Charger, Battery)
自製大四軸, (8) 問題篇, 機架損壞維修 (Drone, Quadcopter, Laser Cut)
自製大四軸, (9) 改良篇, 方便拆卸的木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (10) 外飛篇, 新手的青蛙跳與遛狗 (Drone, Quadcopter, Maker, MultiWii)

自動報球速的棒球


CC2540 Bluetooth Low Energy
筆記, CC2540 Bluetooth Low Energy, (1) 開發環境 架設 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)

藍色小鋪一起來做

藍色小鋪一起來做, (1) 用 beacon 控制開關的枱燈
藍色小鋪一起來做, (2) 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
藍色小鋪一起來做, (3) 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
藍色小鋪一起來做, (4) 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
藍色小鋪一起來做, (5) iBeacon scanner 專案示範與解說 (Bluetooth, CC2540, iBeacon)
藍色小鋪一起來做, (6) 完成, 用 iBeacon 控制開關的枱燈 (Bluetooth, CC2540, iBeacon)
藍色小鋪, 初嚐樹莓派 (Raspberry Pi)
藍色小鋪, iBeacon 應用, 自動記錄到訪時間 (iBeacon, Geohopper, Zapier)

小惡魔 無線溫度感測器

108 大眼仔
Plot Clock

體驗, 原住民互動故事書@宜蘭大同鄉泰雅生活館
體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)


實作, 電容感應音樂樹

3 則留言:

  1. 蘇恆誠24/4/14 20:33

    很棒的整合應用,參考資料也很齊全,感謝。

    回覆刪除
  2. 文宏 張24/4/14 22:24

    很不錯的應用哦!(而且還有看的lacy 積木呢!),順便問一下Arduino加processing用起來還順嗎?(最近在自修processing 網站上的tutorial)

    回覆刪除
  3. gogoprivateryan24/4/14 22:41

    @蘇恆誠 謝謝.
    @文宏 張 好眼力. 我自己摸 processing 也沒多久, 不太好回答你的問題. 個人的感覺是還沒掌握有效的 debug 方法, 所以程式寫起來容易踫壁. 還要再多研究研究.

    回覆刪除