AN0007 Arduino 至 Platinum COMM
“
產品資訊
規格
- 產品名稱:ARDUINO 至 PLATINUM COMMS 說明文檔
- 製造商: Dynament Limited
- 網址:Hermitage Lane 工業區,Kings Mill Way,
英國諾丁漢郡曼斯菲爾德 NG18 5ER - 聯絡方式:電話:44 (0)1623 663636,信箱:sales@dynament.com,
Web網址:www.dynament.com - 發行版本:1.2,日期:09年04月2025日
產品使用說明
連接傳感器
本資料表使用 Arduino Mega 作為範例amp連接方式
如下:
- 5v -> 5v Arduino 腳
- 0v -> Arduino GND
- Tx->Arduino RX1
- Rx -> 連接至分壓器的輸出。輸入
前往 Arduino Tx
卷tage 兼容性
Arduino 使用 5v 邏輯高電平,而 Platinum 感測器使用
3.3v。使用音量tage 分壓器,其 R1 和 R2 的建議值為
4K7 以防止損壞感測器。
Arduino IDE設置
- 從以下網址下載最新版本的 Arduino IDE 軟體
Arduino web地點。 - 在工具中選擇 Arduino 主機板、處理器和連接埠
下拉式選單.
程式碼上傳
- 複製提供的examp將程式碼放入 Arduino IDE。
- 點擊箭頭將程式碼上傳到 Arduino。
- 開啟串行監視器 view 數據傳輸。
常問問題
Q:如果我的 Arduino Uno 只有一個通訊端口,該怎麼辦?
港口?
答:將白金感測器連接到該連接埠。使用
串行監視器,它還將顯示傳輸的十六進制。
「`
應用筆記 AN0007
ARDUINO 至 PLATINUM COMMS 說明文檔
動力有限公司
赫爾米tag英國諾丁漢郡曼斯菲爾德 Kings Mill Way e Lane 工業區,郵編 NG18 5ER。電話:44 (0)1623 663636
電子郵件: sales@dynament.com www.dynament.com
AN0007
問題1.2
09/04/2025
變更說明 805
第 1 頁(共 14 頁)
內容
Dynament Limited …………………………………………………………………………………………………….1 連接感測器…………………………………………………………………………………………………….3 Arduino IDE …………………………………………………………………………………………………………5 程式碼解釋…… ……………………………………………………………………………………………….9 使用 Serial.read() ………………………………………………………………………………………….11
進階轉換說明……………………………………………………………………………….14
AN0007
問題1.2
09/04/2025
變更說明 805
第 2 頁(共 14 頁)
連接感測器本資料表使用 Arduino Mega 作為範例amp例如,Ardunio Mega 提供多個通訊端口,因此通訊端口 1 用於與感測器通信,通訊端口 0 用於列印到 PC。
Arduino 使用 5v 邏輯高電平,而白金感測器使用 3.3v,因此為了防止損壞感測器,tag必須使用分壓器。 R1和R2的建議值為4KΩ。
圖 1:降低波動率tag達到可用水平
通往 Arduino 接收器的感測器傳輸線不需要分壓器,因為 3.3v 是 Arduino 可接受的輸入。
為了給感測器供電,必須將其連接到 5V 和 0V。為此,您可以使用 Arduino 上的引腳。
完成後,感測器現在應該連接以下引腳:
5v -> 5v Arduino 腳
0v -> Arduino GND
Tx->Arduino RX1
Rx -> 連接至分壓器的輸出。輸入連接至 Arduino Tx
AN0007
問題1.2
09/04/2025
變更說明 805
第 3 頁(共 14 頁)
完成後,您的白金感應器應按如下所示連接:
圖 2:感測器倒置,附焊接適配器
如果您使用的 Arduino 只有一個通訊端口(例如 Arduino Uno),則必須將其連接到該端口,但是當您使用串行監視器(稍後顯示)時,它還會顯示傳輸的十六進制。
AN0007
問題1.2
09/04/2025
變更說明 805
第 4 頁(共 14 頁)
Arduino IDE 前往 Arduino web網站並下載最新版本的 Arduino IDE 軟體。安裝完成後,您將看到以下畫面:
圖3:Arduino主螢幕
在工具下拉式選單中選擇您正在使用的 Arduino 板、處理器和連接埠:
圖 4:選擇主機板、處理器和連接埠選項
AN0007
問題1.2
09/04/2025
變更說明 805
第 5 頁(共 14 頁)
複製此範例amp程式碼:void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup(){Serial.begin(38400);Serial1.begin(38400);
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); 延遲(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
問題1.2
09/04/2025
變更說明 805
第 6 頁(共 14 頁)
圖 5:準備上傳的程式碼
點擊箭頭將程式碼上傳到 Arduino。 Arduino 程式完成後,開啟串列埠監視器。
AN0007
圖 6:開啟串行監視器
問題1.2
09/04/2025
變更說明 805
第 7 頁(共 14 頁)
圖 7:串列埠監視器顯示已收到的資料包
AN0007
問題1.2
09/04/2025
變更說明 805
第 8 頁(共 14 頁)
程式碼說明 Arduino IDE 使用 C++ 對 Arduino 進行程式設計。
這行是前向聲明。它用於告訴微控制器,在程式的後續部分將呼叫“send_read_live_data_simple”函數和“receive_read_live_data_simple”函數。
接下來是設定函數。此程式碼僅在啟動時運行一次。它啟動 Serial0 和 Serial1 連接埠。 Serial0 是串行監視器螢幕上顯示的連接埠。 Serial1 是與感測器通訊的連接埠。
這是主循環,這段程式碼不斷循環。透過函數名稱可以看出,它發送了一個請求,讀取即時資料結構的簡化版本。然後,它讀取接收連接埠以讀取回應。此後,微控制器等待 5000 毫秒。
此函數將獲取即時資料簡單結構體的請求寫入序列埠 1。如前所述,如果您只有一個串行端口,則應將 Serial1 變更為 Serial。若要查看完整的命令列表,請參閱 Premier 感測器通訊協定文件。以下是文件中有關此命令的說明:
AN0007
問題1.2
09/04/2025
變更說明 805
第 9 頁(共 14 頁)
此函數在仍有資料需要從 Platinum 感測器接收時循環執行讀取函數。 Serial1.read() 從連接到感測器的 Serial1 讀取數據,並將其列印到 Serial0 上,以便在串列監視器上查看。然後列印字元「|」以拆分接收到的每個位元組,使其在串列埠監視器上更清晰地顯示。
完成後,它會向串行監視器寫入新行。
AN0007
問題1.2
09/04/2025
變更說明 805
第 10 頁(共 14 頁)
封包分解圖 8 和 9 顯示了連接到接收和發送線路的串列解碼器的輸出。
圖 8:傳出資料包
圖 9:傳入資料包
圖 10 和 11 分別顯示了傳出的十六進制和傳入的十六進制,並用一列顯示了它是哪個命令。
圖10:傳出資料包描述
AN0007
問題1.2
09/04/2025
變更說明 805
第 11 頁(共 14 頁)
圖 11:傳入資料包描述
請注意,氣體讀數是小數,而不是整數。此小數採用 IEEE-754 格式,您可以使用類似這樣的線上轉換器進行轉換。本例中的氣體值顯示為 -250(因為當時處於錯誤模式)。
AN0007
問題1.2
09/04/2025
變更說明 805
第 12 頁(共 14 頁)
使用 Serial.read()
上面的程式碼僅將接收到的資料列印到串列埠監視器,如果要將資料儲存到變數中,則需要進行一些進一步的處理。接收到的資料包會被拆分成字節,因此您需要將其中一些資料連接成變數。 Serial1.Read() 傳回一個 int 類型(對於 Arduino 來說,int 是 16 位元),但是,只使用了前 8 位元。因此,我們可以將其複製到較小的 8 位元資料類型中,在本例中我將使用 char 類型。
對於只有一個位元組長的資料包,這可以正常工作:
對於長度為 2 個位元組或 4 個位元組的資料包,您需要連接資料。
您可以透過多種不同的方式來做到這一點,這裡我要做的是左移數據,然後對其進行「或」運算。
使用此程式碼,如果 readByte1 為 0x34 且 readByte2 為 0x12。
(int)讀取位元組2
// 這會將 0x12 轉換為 0x0012。
(int)讀取位元組2 << 8
// 這會將位移位一個位元組,使其成為 0x1200。
(int)readByte2 << 8 | readByte1 // 然後與 0x34 進行或運算,得到 0x1234。
另一種方法是將值放入陣列中,然後將陣列轉換為所需的類型:
AN0007
問題1.2
09/04/2025
變更說明 805
第 13 頁(共 14 頁)
字元型的長度為 4 個位元組,而浮點型的長度為 4 個位元組。因此,如果我們建立一個包含 XNUMX 個字元的數組,並將值儲存在其中,然後將類型變更為浮點型。
在這種情況下,readArray 是一個指向 char 陣列的指標。 (float*)readArray 這部分將其轉換為指向浮點數的指針,然後在前面添加 * 以獲取浮點數的值。
進階轉換說明
1. Serial.read() 傳回 int 而不是 char,因為錯誤會回傳負值。你的程序應該檢查這一點。
2. 應分別使用 uint8_t 和 uint16_t 來代替 char 和 int,因為這些型別沒有標準大小(在我的 PC 上 int 是 32 位,而在 Arduino 上它是 16 位)。
3. 通訊協定包含位元組填充字元(也稱為控製字元),tds0045 Premier 感測器通訊協定文件對此進行了更詳細的解釋。因此,讀取即時資料的簡單資料包有時會比預期的要大。
AN0007
問題1.2
09/04/2025
變更說明 805
第 14 頁(共 14 頁)
文件/資源
![]() |
DYNAMENT AN0007 Arduino 轉 Platinum COMM [pdf] 使用者指南 AN0007 Arduino 至 Platinum COMM,AN0007,Arduino 至 Platinum COMM,至 Platinum COMM,Platinum COMM |