AN0007 Arduino ถึง COMM แพลตตินัม
“
ข้อมูลสินค้า
ข้อมูลจำเพาะ
- ชื่อผลิตภัณฑ์: ARDUINO ถึงเอกสารช่วยเหลือการสื่อสาร PLATINUM
- ผู้ผลิต: Dynament Limited
- ที่อยู่: เฮอร์มีtagนิคมอุตสาหกรรมอีเลน ถนนคิงส์มิลล์
แมนส์ฟิลด์ นอตติงแฮมเชียร์ NG18 5ER สหราชอาณาจักร - ติดต่อ: โทร: 44 (0)1623 663636, อีเมล: sales@dynament.com
Webเว็บไซต์: www.dynament.com - ฉบับ: 1.2, วันที่: 09/04/2025
คำแนะนำการใช้ผลิตภัณฑ์
การเชื่อมต่อเซนเซอร์
แผ่นข้อมูลนี้ใช้ Arduino Mega เป็น example. เชื่อมต่อเป็น
ดังนี้:
- พิน Arduino 5v -> 5v
- 0v -> Arduino GND
- Tx -> Arduino RX1
- Rx -> ไปที่เอาต์พุตของตัวหารศักย์ อินพุต
ไปที่ Arduino Tx
เล่มที่tagความเข้ากันได้
Arduino ใช้ลอจิกสูง 5v ในขณะที่เซ็นเซอร์ Platinum ใช้
3.3v. ใช้โวลท์tagตัวหาร e พร้อมค่าแนะนำสำหรับ R1 และ R2 เป็น
4K7 เพื่อป้องกันความเสียหายต่อเซ็นเซอร์
การติดตั้ง Arduino IDE
- ดาวน์โหลดซอฟต์แวร์ Arduino IDE เวอร์ชันล่าสุดจาก
อาร์ดูอิโน่ webเว็บไซต์. - เลือกบอร์ด Arduino โปรเซสเซอร์ และพอร์ตในเครื่องมือ
เมนูแบบดรอปดาวน์
อัพโหลดโค้ด
- คัดลอกตัวอย่างที่ให้มาampนำโค้ดไปไว้ใน Arduino IDE
- อัปโหลดโค้ดไปยัง Arduino โดยคลิกลูกศร
- เปิดมอนิเตอร์แบบอนุกรมเพื่อ view การส่งข้อมูล
คำถามที่พบบ่อย
ถาม: ฉันควรทำอย่างไรหากฉันมี Arduino Uno ที่มีการสื่อสารเพียงตัวเดียว
ท่าเรือ?
A: เชื่อมต่อเซ็นเซอร์ Platinum เข้ากับพอร์ตนั้น เมื่อใช้
มอนิเตอร์แบบอนุกรมยังจะแสดงเลขฐานสิบหกที่ส่งออกมาด้วย
-
หมายเหตุการใช้งาน AN0007
เอกสารช่วยเหลือ ARDUINO ถึง PLATINUM COMMS
บริษัท ไดนาเมนท์ จำกัด
เฮอร์มีtagนิคมอุตสาหกรรมอีเลน คิงส์มิลล์เวย์ แมนส์ฟิลด์ นอตทิงแฮมเชอร์ 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 การแยกย่อยแพ็กเก็ต ………………………………………………………………………………………………………………….11 การใช้ Serial.read() ……………………………………………………………………………………………………….13
หมายเหตุการแปลงขั้นสูง……………………………………………………………………………….14
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 2 จาก 14
การเชื่อมต่อเซ็นเซอร์ แผ่นข้อมูลนี้ใช้ Arduino Mega เป็น example. Arduino Mega มีพอร์ตการสื่อสารมากกว่าหนึ่งพอร์ต ดังนั้น พอร์ตการสื่อสาร 1 จึงใช้ในการสื่อสารกับเซ็นเซอร์ และพอร์ตการสื่อสาร 0 ใช้เพื่อพิมพ์ไปยังพีซี
Arduino ใช้แรงดันลอจิกสูง 5v ในขณะที่เซ็นเซอร์ Platinum ใช้แรงดัน 3.3v ดังนั้นเพื่อป้องกันความเสียหายต่อเซ็นเซอร์tagต้องใช้ตัวหาร e ค่าที่แนะนำสำหรับ R1 และ R2 คือ 4K7
รูปที่ 1: ลดระดับเสียงtage ถึงระดับใช้งานได้
สายส่งสัญญาณเซ็นเซอร์ที่ไปยังเครื่องรับ Arduino ไม่จำเป็นต้องใช้ตัวแบ่ง เนื่องจาก 3.3v เป็นอินพุตที่ยอมรับได้สำหรับ Arduino
ในการจ่ายไฟให้เซ็นเซอร์ จะต้องเชื่อมต่อที่ 5V และ 0V โดยใช้พินบน Arduino
เมื่อขั้นตอนนี้เสร็จสมบูรณ์แล้ว เซ็นเซอร์ควรมีพินเชื่อมต่อดังต่อไปนี้:
พิน Arduino 5v -> 5v
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> ไปที่เอาต์พุตของตัวหารศักย์ อินพุตไปที่ Arduino Tx
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 3 จาก 14
หลังจากเสร็จสิ้นขั้นตอนนี้ คุณควรเชื่อมต่อเซ็นเซอร์ Platinum ของคุณตามที่แสดง:
รูปที่ 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
คัดลอกใน ex นี้ampรหัส: void send_read_live_data_simple(); void receive_read_live_data_simple();
การตั้งค่าเป็นโมฆะ() { Serial.begin(38400); Serial1.begin(38400);
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); delay(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(){ ในขณะที่ (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 6 จาก 14
รูปที่ 5: รหัสพร้อมอัปโหลด
คลิกลูกศรเพื่ออัปโหลดโค้ดไปยัง Arduino หลังจากตั้งโปรแกรม Arduino เสร็จแล้ว ให้เปิดหน้าจอ Serial Monitor
AN0007
รูปที่ 6: เปิดตัวตรวจสอบแบบอนุกรม
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 7 จาก 14
รูปที่ 7: Serial Montor แสดงแพ็กเก็ตที่ได้รับ
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 คือพอร์ตที่แสดงในหน้าจอมอนิเตอร์ Serial Serial1 คือพอร์ตที่ใช้สื่อสารกับเซ็นเซอร์
นี่คือลูปหลัก โค้ดนี้จะถูกวนซ้ำซ้ำๆ การอ่านชื่อฟังก์ชันจะเห็นว่าโค้ดส่งคำขอเพื่ออ่านโครงสร้างข้อมูลสดแบบย่อ จากนั้นจะอ่านพอร์ตรับเพื่ออ่านข้อความตอบกลับ หลังจากนั้นไมโครคอนโทรลเลอร์จะรอ 5000 มิลลิวินาที
ฟังก์ชันนี้จะเขียนคำขอเพื่อดึงข้อมูลสดจากโครงสร้างแบบง่ายไปยังพอร์ตอนุกรม 1 ดังที่ได้กล่าวไปแล้ว หากคุณมีพอร์ตอนุกรมเพียงพอร์ตเดียว คุณควรเปลี่ยน Serial1 เป็น Serial หากต้องการดูรายการคำสั่งทั้งหมด โปรดดูเอกสารโปรโตคอลการสื่อสารของเซ็นเซอร์ระดับพรีเมียร์ นี่คือส่วนของเอกสารที่บอกคุณว่าควรเขียนคำสั่งนี้อย่างไร:
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 9 จาก 14
ฟังก์ชันนี้จะวนซ้ำฟังก์ชันการอ่านในขณะที่ยังมีข้อมูลที่ต้องรับจากเซ็นเซอร์แพลตตินัม 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()
โค้ดก่อนหน้านี้พิมพ์เฉพาะข้อมูลที่ได้รับไปยัง Serial Monitor เท่านั้น หากต้องการบันทึกข้อมูลในตัวแปร คุณจะต้องประมวลผลเพิ่มเติม แพ็กเก็ตที่คุณได้รับจะถูกแบ่งออกเป็นไบต์ ดังนั้นคุณจึงต้องเชื่อมต่อข้อมูลบางส่วนเข้ากับตัวแปร Serial1.Read() คืนค่า int (ซึ่งสำหรับ Arduino คือ 16 บิต) อย่างไรก็ตาม จะใช้เฉพาะ 8 บิตแรกเท่านั้น ด้วยเหตุนี้ เราจึงสามารถคัดลอกข้อมูลลงในชนิดข้อมูลขนาดเล็กกว่าที่มีขนาดเพียง 8 บิต ซึ่งในกรณีนี้จะใช้ char
สำหรับแพ็กเก็ตที่มีความยาวเพียงหนึ่งไบต์ วิธีนี้ใช้ได้ดี:
สำหรับแพ็กเก็ตที่มีความยาว 2 ไบต์หรือ 4 ไบต์ คุณจะต้องเชื่อมโยงข้อมูล
คุณสามารถทำได้หลายวิธี สิ่งที่ฉันจะทำคือเลื่อนข้อมูลไปทางซ้ายแล้วเลื่อนหรือเลื่อนมัน
เมื่อใช้โค้ดนี้ ถ้า readByte1 คือ 0x34 และ readByte2 คือ 0x12
(int)readByte2
// นี่จะแปลง 0x12 ให้เป็น 0x0012
(int)readByte2 << 8
// การดำเนินการนี้จะเลื่อนบิตไปทีละไบต์ ทำให้เป็น 0x1200
(int)readByte2 << 8 | readByte1 // จากนั้นจึงได้รับ OR โดย 0x34 จะกลายเป็น 0x1234
อีกวิธีหนึ่งในการทำเช่นนี้คือการใส่ค่าลงในอาร์เรย์แล้วแปลงอาร์เรย์เป็นประเภทที่คุณต้องการ:
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 13 จาก 14
chars มีความยาวหนึ่งไบต์ ในขณะที่ float มีความยาว 4 ไบต์ ด้วยเหตุนี้ หากเราสร้างอาร์เรย์ที่มี 4 chars พร้อมค่าที่ต้องการ และเปลี่ยนชนิดข้อมูลเป็น float
ในกรณีนี้ readArray เป็นตัวชี้ไปยังอาร์เรย์ char (float*)readArray ส่วนนี้จะแคสต์เป็นตัวชี้ไปยัง float จากนั้นเพิ่ม * ไว้ด้านหน้าเพื่อรับค่าของ float
หมายเหตุการแปลงขั้นสูง
1. Serial.read() คืนค่า int แทน char เนื่องจากข้อผิดพลาดจะส่งคืนค่าลบ โปรแกรมของคุณควรตรวจสอบสิ่งนี้
2. ควรใช้ uint8_t และ uint16_t แทน char และ int ตามลำดับ เนื่องจากประเภทเหล่านี้ไม่มีขนาดมาตรฐาน (บนพีซีของฉัน int คือ 32 บิต ในขณะที่บน Arduino คือ 16 บิต)
3. โปรโตคอลการสื่อสารประกอบด้วยอักขระแบบไบต์ (หรือที่เรียกว่าอักขระควบคุม) ซึ่งมีคำอธิบายรายละเอียดเพิ่มเติมในเอกสารโปรโตคอลการสื่อสารเซ็นเซอร์ Premier tds0045 ด้วยเหตุนี้ แพ็กเก็ตข้อมูลแบบง่ายที่อ่านสดอาจมีขนาดใหญ่กว่าที่คาดไว้เป็นครั้งคราว
AN0007
ฉบับที่ 1.2
09/04/2025
หมายเหตุการเปลี่ยนแปลง 805
หน้าที่ 14 จาก 14
เอกสาร / แหล่งข้อมูล
![]() |
DYNAMENT AN0007 Arduino ถึง Platinum COMM [พีดีเอฟ] คู่มือการใช้งาน AN0007 Arduino ถึง Platinum COMM, AN0007, Arduino ถึง Platinum COMM, ถึง Platinum COMM, Platinum COMM |