2016年2月26日 星期五

新手的多軸飛行小物 - (未完成)433中繼站LCD顯示Mavlink訊息

之前有寫一篇如何做433中繼站,中繼站就像一個黑盒子負責記錄與轉發多軸傳回的Mavlink訊息,在之前這篇文章,我們使用MavLink_FrSkySPort這個專案把Mavlink訊息轉發到X9D+的遙控器顯示面板上,我當時在思考,既然訊息都已經轉發到433的中繼站了,那是否中繼站可以外掛一個螢幕顯示這些訊息呢?直到近日入手一個有趣螢幕,一般我們常用I2C的螢幕,但這螢幕很特別,它使用UART去發指令讓螢幕畫圖、顯示文字,所以我們不需要去了解螢幕顯示的協定,只要透過UART去下指令就可以輕易操控螢幕,有興趣可以去他們官網看看,裡面有購買連結。
PastedGraphic-2016-02-26-23-59.png
螢幕目前規劃顯示一些基本的訊息,包含電池訊息、GPS、RSSI訊號強度、加速度值和一些高度、距離訊息。
我把改的程式放到github,目前尚未修改好,只能顯示部分訊息,而且目前的程式設定只能用在3.5吋的螢幕,如果你有興趣研究,歡迎把原始碼抓回去研究,基本上就是很基本的語法。

實際運作畫面

因為都是用自己下班的時間慢慢搞,所以程式進度緩慢,然後又再思考433中繼站常常都是丟在一旁,眼睛根本不會去看,我掛一個螢幕在那邊要幹嘛XD 所以發懶中...目前整個程式沒有完成,有興趣的朋友可以去github把code抓下來研究修改:D

之前我有寫一篇透過修改程式方法讓X9D+播放Mavlink語音,因為新版的Mavlink_FrSkySPort有大改版支援OpenTx 2.1.x,所以已經不相容當時我修改的OpenTx 2.0.x,未來時間我想讓語音播放可以在新版實現,畢竟透過語音播放比掛一螢幕在遠方都不看來的實用吧:D 修改後我也會把code放到github公布。


在MP裡面設定的參數和Mavlink訊息對照表


RAW_SENS:

- RAW_IMU

- SCALED_IMU2

- SCALED_PRESSURE

- SENSOR_OFFSETS

EXT_STAT:

- SYS_STATUS

- MEMINFO

- MISSION_CURRENT

- GPS_RAW_INT

- NAV_CONTROLLER_OUTPUT

- LIMITS_STATUS

RC_CHAN:

- SERVO_OUTPUT_RAW

- RC_CHANNELS_RAW

RAW_CTRL:

- RC_CHANNELS_SCALED (HIL)

POSITION:

- GLOBAL_POSITION_INT

EXTRA1:

- ATTITUDE

- SIMSTATE (SITL)

EXTRA2:

- VFR_HUD

EXTRA3:

- AHRS

- HWSTATUS

- SYSTEM_TIME

PARAMS:

- PARAM_VALUE

7 則留言:

  1. 大大又有新作了~
    請問是螢幕的uart 直接接到433的rx tx嗎

    回覆刪除
    回覆
    1. 不是,這是接到Teensy 3.1的UART。433出來的訊息格式是完整的Mavlink資料,無法立即顯示到螢幕,必須透過Teensy3.1 去幫忙解析出我們要的資料。原本Teensy 3.1已經解析轉發到X9D+,我只是利用這些已存在的資料在顯示出來而已,沒有太大的複雜程式。

      刪除
  2. 感謝回覆!
    那也可以用arduino用同樣方法轉發到螢幕上囉?

    回覆刪除
    回覆
    1. 可以,你用Arduino去收433丟出來的Mavlink訊息,解析後可以轉發到螢幕。但是Arduino有一些先天限制,例如空間、硬體UART太少,導致無法應付Mavlink龐大的訊息。

      刪除
    2. 謝謝你~
      我研究看看!如果用Teensy 3.1也可傳輸更多資料,看自己需求,但⋯對它真的很不熟呢

      刪除
    3. Teensy 3.1跟arduino相容,所以一樣方式寫程式

      刪除
  3. 謝謝您,還好之前X9D的Teensy 3.1有留著,感謝您的教學文~

    回覆刪除