<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Serial Studio:串口設備的儀表盤軟件

Serial Studio:串口設備的儀表盤軟件

2023-06-13 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

您是否曾經需要在儀表板上顯示來自微控制器的數據,并花更多的時間開發(和修復)您的儀表板軟件,而不是實際處理您的 MCU 項目?

好吧,我做了很多次。讓我介紹一下背景,我通過我大學的代表隊KA'AN SAT參加了幾個 CanSat 競賽項目。CanSat 是“對真實衛星的模擬,集成在軟飲料罐的體積和形狀中”(歐洲航天局,更多信息)。這些比賽的主要任務之一是為地面站開發軟件。地面站軟件(GSS)通過串口設備(一般為XBee )實時接收CanSat的遙測數據,顯示并導出為CSV/Excel文件,用于任務后分析。

從一開始,我們就使用Qt開發 GSS以支持多種操作系統(以防我們的一臺計算機在比賽中遇到問題),并且因為 Qt/QML 非常便于開發引人注目的用戶界面。

2019年地面站軟件截圖如下

poYBAGSAhEeANucdAAJBvM7h6fM287.png
?

以及 CUCEI CanSat 競賽期間 GSS 運行和顯示遙測的照片

pYYBAGSAhEmAHPbCAAES-_6PulE274.jpg
?

如果您有興趣,可在此處獲取 2019 GSS 的源代碼。該軟件的所有意圖和目的都運行良好(畢竟我們獲得了第一名)。

半年后問題來了,當時我發現自己在處理多個項目,這些項目需要使用串行設備進行某種數據采集。例如,ROCH (我們大學的另一個代表團隊,參加了NASA 人類漫游者探索挑戰賽)的一些成員希望在隔離期間將我們的 GSS 與他們的漫游者整合為一個副項目。

結果是災難性的;我在深夜接到一個電話,我們最終通宵達旦想出一種方法,使 GSS 適應他們接收到的遙測數據。最后,該軟件可以運行,但 UI 集成很糟糕,數據導出功能也不是很好(請參閱下面的屏幕截圖了解一下):

pYYBAGSAhFCAeC5TAAGCMmg6iKU410.jpg
?

這兩個項目(CanSat 和流動站)都有相似的遙測格式(傳感器讀數和 OBC 狀態數據以逗號分隔)。然而,信息本身有不同的順序。

在那次經歷之后,我決定我已經受夠了為我參與的每個項目編寫單獨的儀表板軟件。我需要想出一種方法來使用相同的儀表板/GSS 軟件來處理所有項目,而無需在最后一刻修改 GSS 代碼。

我最初想到的解決方案是在 GSS 和微控制器之間創建一個基于 JSON 的通信協議,于是Serial Studio誕生了(它的初始名稱是SigLAB,但后來我改變了主意)。

基本上,微控制器通過串行端口發送以下信息:

  • 項目名稱。
  • 當前傳感器讀數和 OBC 狀態。
  • 每個讀數的含義、其測量單位以及 GSS 應如何處理該讀數(例如,創建測量大氣壓力的實時圖表)。

所有這些信息都可以很容易地在 JSON 文檔中表示,例如:

{
   "t":"KAANSATQRO",
   "g":[
      {
         "t":"Mission Status",
         "d":[
            {
               "t":"Runtime",
               "v":"%value%",
               "u":"ms"
            },
            {
               "t":"Packet count",
               "v":"%value%"
            },
            {
               "t":"Battery voltage",
               "v":"%value%",
               "g":true,
               "u":"V"
            }
         ]
      },
      {
         "t":"Sensor Readings",
         "d":[
            {
               "t":"Temperature",
               "v":"%value%",
               "g":true,
               "u":"°C"
            },
            {
               "t":"Altitude",
               "v":"%value%",
               "u":"m"
            },
            {
               "t":"Pressure",
               "v":"%value%",
               "u":"KPa",
               "g":true
            },
            {
               "t":"External Temperature",
               "v":"%value%",
               "g":true,
               "u":"°C"
            },
            {
               "t":"Humidity",
               "v":"%9",
               "g":true,
               "u":"%value%"
            }
         ]
      }
   ]
}

如您所見,我們有以下結構:

  • 項目名稱(字符串)
  • 數據組數組,對于每個組:
  • 組標題(字符串)
  • 數據集數組,對于每個數據集:
  • 標題(字符串)
  • 值(字符串)
  • 單位(字符串)
  • 圖形請求(布爾值)

一個組由彼此密切相關的值組成,例如:

  • OBC 狀態(我們示例中的第一組)
  • 傳感器讀數(我們示例中的第二組)
  • 加速度計讀數(X、Y、Z)
  • GPS讀數
  • ETC。

另一方面,數據集代表每個單獨值的含義,以及我們應該如何處理它。

Serial Studio上,此信息以下列方式顯示:

poYBAGSAhFOAbX_FAAD096xiNrA402.png
?

正如您可能推斷的那樣,每個“窗口”對應于我們 JSON 文檔中的一個組(我隱藏了屏幕截圖中的圖形以避免混淆)。

這種方法非常適用于小型項目。然而,對于更復雜的項目,通過串行(或通過無線電信號,然后通過串口)創建和發送大型 JSON 文檔就變得很成問題。解決方案?從您的計算機加載相同的 JSON 文檔,指示微控制器僅發送傳感器/數據讀數,讓Serial Studio通過使用逗號分隔的數據框中每個接收到的值的索引來計算其余部分。

這樣做可以讓您兩全其美:

  • 您不需要為每個項目編寫特定的儀表板/GSS 軟件(并且您可以獲得我們之前描述的所有不錯的功能)。
  • 而且你不需要從你的微控制器創建和傳輸一個大的 JSON 文檔(哎呀,微控制器軟件的工作人員根本不需要知道 JSON 是什么或者它是如何工作的)。

JSON“地圖”文檔如下所示:

{
   "t":"%1",
   "g":[
      {
         "t":"Mission Status",
         "d":[
            {
               "t":"Runtime",
               "v":"%2",
               "u":"ms"
            },
            {
               "t":"Packet count",
               "v":"%3"
            },
            {
               "t":"Battery voltage",
               "v":"%4",
               "g":true,
               "u":"V",
               "w":"bar",
               "min":3.6,
               "max":4.3
            }
         ]
      },
      {
         "t":"Sensor Readings",
         "d":[
            {
               "t":"Temperature",
               "v":"%5",
               "g":true,
               "u":"°C",
               "w":"bar",
               "min":0,
               "max":80
            },
            {
               "t":"Altitude",
               "v":"%6",
               "u":"m",
               "w":"bar",
               "min":0,
               "max":3000
            },
            {
               "t":"Pressure",
               "v":"%7",
               "u":"KPa",
               "g":true,
               "w":"bar",
               "min":54,
               "max":102
            },
            {
               "t":"External Temperature",
               "v":"%8",
               "g":true,
               "u":"°C",
               "w":"bar",
               "min":0,
               "max":80
            },
            {
               "t":"Humidity",
               "v":"%9",
               "g":true,
               "u":"%",
               "w":"bar",
               "min":0,
               "max":100
            }
         ]
      },
      {
         "t":"GPS",
         "w":"map",
         "d":[
            {
               "t":"GPS Time",
               "v":"%10"
            },
            {
               "t":"Longitude",
               "v":"%11",
               "u":"°E",
               "w":"lon"
            },
            {
               "t":"Latitude",
               "v":"%12",
               "u":"°N",
               "w":"lat"
            },
            {
               "t":"Altitude",
               "v":"%13",
               "u":"m"
            },
            {
               "t":"No. Sats",
               "v":"%14"
            }
         ]
      },
      {
         "t":"Accelerometer",
         "w":"accelerometer",
         "d":[
            {
               "t":"X",
               "v":"%15",
               "u":"m/s^2",
               "g":true,
               "w":"x"
            },
            {
               "t":"Y",
               "v":"%16",
               "u":"m/s^2",
               "g":true,
               "w":"y"
            },
            {
               "t":"Z",
               "v":"%17",
               "u":"m/s^2",
               "g":true,
               "w":"z"
            }
         ]
      },
      {
         "t":"Gyroscope",
         "w":"gyro",
         "d":[
            {
               "t":"X",
               "v":"%18",
               "u":"°",
               "g":true,
               "w":"yaw"
            },
            {
               "t":"Y",
               "v":"%19",
               "u":"°",
               "g":true,
               "w":"roll"
            },
            {
               "t":"Z",
               "v":"%20",
               "u":"°",
               "g":true,
               "w":"pitch"
            }
         ]
      }
   ]
}

您可以猜到,Serial Studio會將%1 、%2 、%3 、... 、%20值替換為逗號分隔數據框中相應索引處的值。微控制器為給定的 JSON 映射發送的相應sprintf () 格式為:

/*KAANSATQRO,%s,%s,%s,%s,%s,%s,%,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s*/

您可能已經注意到某些地方有一些“w”鍵,這些鍵用于構建小部件在此處進行了解釋)。最后,這是顯示Serial Studio用法的強制性GIF

?

很酷,對吧?如果您有興趣在您的項目中使用Serial Studio,請訪問以下相關鏈接:

適用于 Windows、macOS 和 GNU/Linux 的預構建二進制文件/安裝程序可通過 GitHub 發布獲得: https: //github.com/Serial-Studio/Serial-Studio/releases/

最小的例子

假設我們想用 Arduino 繪制 ADC 讀數并將數據導出到 CSV 表。這是 Arduino 代碼:

#define ADC_PIN A0

void setup() {
   // Initialize Serial port at 9600 bauds
   Serial.begin(9600);
   
   // Configure analog input
   pinMode(ADC_PIN, INPUT);
}

void loop() {
   // Read voltage @ ADC_PIN
   int adc_value = analogRead(ADC_PIN);
   float voltage = adc_value * (5.0 / 1023.0);

   // Send current ms & reading through serial
   Serial.print("/*");        // Frame start sequence  [/*]
   Serial.print(millis());    // Add MCU runtime       [ms]
   Serial.print(",");         // Separator character   [,]
   Serial.print(voltage);     // Add voltage           [V]
   Serial.print("*/");        // Frame finish sequence [*/]
   
   // Wait 50 ms
   delay(50);
}

將此代碼部署到您的 Arduino 并創建一個包含以下內容的 JSON 文件:

{
   "t":"Minimal Example",
   "g":[
      {
         "t":"MCU Status",
         "d":[
            {
               "t":"Runtime",
               "v":"%1",
               "u":"ms"
            },
            {
               "t":"ADC reading",
               "v":"%2",
               "g":true,
               "u":"V",
               "w":"bar",
               "min":0,
               "max":5
            }
         ]
      }
   ]
}

打開 Serial Studio 并通過選擇應用程序左上角的“手動”單選按鈕并單擊“更改地圖文件”按鈕將 JSON 文件導入 Serial Studio。最后,選擇合適的 COM 端口。如果一切順利,您應該會看到與此類似的屏幕:

pYYBAGSAhF6ATOn3AAENWC4Yz7s340.png
?

如果單擊“打開當前 CSV”按鈕,您將能夠在 Excel/Calc 表格中看到所有收到的信息:

poYBAGSAhGCAEkXMAACsxJ419Jc635.png
?

如果您有任何疑問、想法或錯誤報告,請隨時添加評論、聯系我或在 GitHub 上提出問題。希望互聯網上的一些隨機的人會發現這很有用:)


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>