DYNAMENT AN0007 คู่มือผู้ใช้ Arduino ถึง Platinum COMM

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

  1. ดาวน์โหลดซอฟต์แวร์ Arduino IDE เวอร์ชันล่าสุดจาก
    อาร์ดูอิโน่ webเว็บไซต์.
  2. เลือกบอร์ด Arduino โปรเซสเซอร์ และพอร์ตในเครื่องมือ
    เมนูแบบดรอปดาวน์

อัพโหลดโค้ด

  1. คัดลอกตัวอย่างที่ให้มาampนำโค้ดไปไว้ใน Arduino IDE
  2. อัปโหลดโค้ดไปยัง Arduino โดยคลิกลูกศร
  3. เปิดมอนิเตอร์แบบอนุกรมเพื่อ 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

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *