国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

電子發燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

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

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

2023-06-13 | zip | 0.00 MB | 次下載 | 2積分

資料介紹

描述

您是否曾經需要在儀表板上顯示來自微控制器的數據,并花更多的時間開發(和修復)您的儀表板軟件,而不是實際處理您的 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 上提出問題。希望互聯網上的一些隨機的人會發現這很有用:)


傳感器 儀表板 Qt
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

評論

查看更多

下載排行

本周

  1. 1新一代網絡可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費
  3. 2冷柜-電氣控制系統講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數據手冊
  6. 2.33 MB  |  次下載  |  免費
  7. 4MDD品牌三極管S9012數據手冊
  8. 2.62 MB  |  次下載  |  免費
  9. 5LAT1218 如何選擇和設置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環繞擴音機 AVR-1507手冊
  14. 2.50 MB   |  次下載  |  免費
  15. 8MS1000TA 超聲波測量模擬前端芯片技術手冊
  16. 0.60 MB   |  次下載  |  免費

本月

  1. 1愛華AIWA HS-J202維修手冊
  2. 3.34 MB   |  37次下載  |  免費
  3. 2PC5502負載均流控制電路數據手冊
  4. 1.63 MB   |  23次下載  |  免費
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測距通信定位模塊規格書
  8. 838.47 KB  |  5次下載  |  免費
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協議電壓誘騙控制器IC技術手冊
  16. 1.81 MB   |  1次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分