汽车行驶姿态 -- 初识
生活随笔
收集整理的這篇文章主要介紹了
汽车行驶姿态 -- 初识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前對 MPU6050 有過一些了解,原始數據可以獲取,但是卡爾曼濾波沒有搞定,最后也沒搞出個所以然來。
現在定制了一個汽車行駛姿態傳感器,簡單來看一下吧。
一、功能
根據行駛中汽車加速度的變化,判斷出汽車行駛過程中的幾種狀態類型:意外加速,類似被追尾,類型符號為“A”。
急加速,司機猛踩油門導致,類型符號為“B”。
正常行駛,乘車人沒有不舒服的感覺,類型符號為“C”。
急減速,司機猛踩剎車導致,類型符號為“D”
特別急減速,類似導致碰撞事故前的剎車直至碰撞,類型符號為“E”。
二、電氣參數及通訊協議
1、供電電壓:DC 3.3v,消耗電流不大于200mA。2、串口通訊協議約定:
異步,波特率:115200,起始位:1;數據位:8;停止位:1;硬件校驗:無;流控:無。
3、模塊自動上傳(除正常行駛模式“C”外):依序為0xf,數據字節1,數據字節2。上位機收到數據并驗證正確后,回復0xaa,0x55給模塊。否則模塊按3秒時間間隔連續最多發3次。收到正確回復即終止發送。
4、模塊按需上傳:上位機向模塊發送:0xff,0xa5,0x5a,模塊收到數據并驗證正確后,按照自動上傳數據格式上傳數據。上位機在3秒內不能收到數據,會再發請求,最多連發3次,收到數據終止發送。
三、測試
使用 USB 轉TTL、串口調試工具,來進行一下測試。
注意,波特率要和傳感器的一致,設為 115200,采用十六進制顯示。
然后根據上面的協議,來分析收到的數據:
模塊自動上傳模式下,碰撞一下收到數據?0F 41 BE / 0F 45 BA?
然后查看ASCII碼,參看:C語言再學習 -- ASCII碼表(轉)
可得,字符 'A' ~'E'的十六進制ASCII碼分別為 41~45而十六進制 BE 應該是 41 的 反碼,參看:C語言再學習 -- 負數 因此,協議里的數據字節1是字符 'A' ~'E'對應的十六進制ASCII碼,而?數據字節2 是 數據字節1 的反碼。
然后接著看協議:上位機收到數據并驗證正確后,回復0xaa,0x55給模塊。否則模塊按3秒時間間隔連續最多發3次。收到正確回復即終止發送。 我碰撞了一次,當未回復0xaa,0x55給模塊時,確實是按3 秒時間間隔連續發了3次數據。
然后這次在發送完一次數據后,我點擊手動發送十六進制 aa55。 結果是不能終止發送,它還是會發送3次數據。難道是我手動發送數據太慢了?? 再有有時碰撞一次它會發送比如 0F 41 BE 0F 45 BA 兩組數據,又是意外加速,又是特別急減速。這是什么鬼? 這個傳感器到底是不是OK的,要打一個問號了。
最后還有問題就是這個傳感器是2軸的,碰撞還要考慮角度。只能模擬汽車前后撞,理論上左右撞,上下撞也是不行的。
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的汽车行驶姿态 -- 初识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最优化学习笔记(十三)——基本共轭方向算
- 下一篇: Elasticsearch 自定义分析器