ຄູ່ມືຜູ້ໃຊ້ DYNAMENT AN0007 Arduino ກັບ Platinum COMM

AN0007 Arduino ຫາ Platinum COMM

ຂໍ້ມູນຜະລິດຕະພັນ

ຂໍ້ມູນຈໍາເພາະ

  • ຊື່ຜະລິດຕະພັນ: ARDUINO ກັບ PLATINUM COMMS ເອກະສານຊ່ວຍເຫຼືອ
  • ຜູ້ຜະລິດ: Dynament Limited
  • ທີ່ຢູ່: Hermitage Lane Industrial Estate, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, ອັງກິດ
  • ຕິດຕໍ່: ໂທ: 44 (0)1623 663636, Email: sales@dynament.com,
    Webເວັບໄຊທ໌: www.dynament.com
  • ສະບັບ: 1.2, ວັນທີ: 09/04/2025

ຄໍາແນະນໍາການນໍາໃຊ້ຜະລິດຕະພັນ

ເຊື່ອມຕໍ່ເຊັນເຊີ

ແຜ່ນຂໍ້ມູນນີ້ໃຊ້ Arduino Mega ເປັນ exampເລ. ເຊື່ອມຕໍ່ເປັນ
ຕໍ່ໄປນີ້:

  • 5v -> 5v Arduino pin
  • 0v -> Arduino GND
  • Tx -> Arduino RX1
  • Rx -> ໄປຫາຜົນຜະລິດຂອງຕົວແບ່ງທີ່ມີທ່າແຮງ. ວັດສະດຸປ້ອນ
    ໄປຫາ Arduino Tx

ສະບັບtage ເຂົ້າກັນໄດ້

Arduino ໃຊ້ 5v logic ສູງໃນຂະນະທີ່ Platinum Sensor ໃຊ້
3.3v. ໃຊ້ voltage ຕົວແບ່ງທີ່ມີຄ່າທີ່ແນະນໍາສໍາລັບ R1 ແລະ R2 ເປັນ
4K7 ເພື່ອປ້ອງກັນຄວາມເສຍຫາຍຂອງເຊັນເຊີ.

ການຕິດຕັ້ງ Arduino IDE

  1. ດາວໂຫຼດຊອບແວ Arduino IDE ລຸ້ນໃໝ່ຫຼ້າສຸດຈາກ
    Arduino ໄດ້ webເວັບໄຊ.
  2. ເລືອກກະດານ Arduino, ໂປເຊດເຊີ, ແລະພອດໃນເຄື່ອງມື
    ເມນູເລື່ອນລົງ.

ອັບໂຫຼດລະຫັດ

  1. ສຳເນົາຕົວຢ່າງທີ່ສະໜອງໃຫ້ample ລະຫັດເຂົ້າໄປໃນ Arduino IDE.
  2. ອັບໂຫລດລະຫັດໃສ່ Arduino ໂດຍການຄລິກທີ່ລູກສອນ.
  3. ເປີດຈໍ serial ກັບ view ການ​ສົ່ງ​ຂໍ້​ມູນ​.

FAQ

ຖາມ: ຂ້ອຍຄວນເຮັດແນວໃດຖ້າຂ້ອຍມີ Arduino Uno ມີພຽງແຕ່ຫນຶ່ງ comm
ທ່າເຮືອ?

A: ເຊື່ອມຕໍ່ Platinum Sensor ກັບພອດນັ້ນ. ໃນ​ເວ​ລາ​ທີ່​ການ​ນໍາ​ໃຊ້​
ຕິດ​ຕາມ​ກວດ​ກາ serial​, ມັນ​ຍັງ​ຈະ​ສະ​ແດງ​ໃຫ້​ເຫັນ hex ຕິດ​ຕໍ່​ພົວ​ພັນ​.

“`

ຫມາຍເຫດຄໍາຮ້ອງສະຫມັກ AN0007
ARDUINO ເຖິງ PLATINUM COMMS ເອກະສານຊ່ວຍເຫຼືອ

Dynament ຈຳກັດ
ເຮີມີtage Lane Industrial Estate Kings Mill Way Mansfield Nottinghamshire NG18 5ER UK. ໂທ: 44 (0)1623 663636
ອີເມລ໌: sales@dynament.com www.dynament.com

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 1 ຈາກທັງໝົດ 14

ເນື້ອໃນ
Dynament Limited ………………………………………………………………………………………………………….1 ການເຊື່ອມຕໍ່ເຊັນເຊີ……………………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………………………5 Code ຄໍາອະທິບາຍ…………………………………………………………………………………………………………..9 Packet Breakdown ………………………………………………………………………………………………………….11 ການນໍາໃຊ້ Serial.read() ………………………………………………………………………………………………………….13
ບັນທຶກການແປງຂັ້ນສູງ ……………………………………………………………………………….14

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 2 ຈາກທັງໝົດ 14

ການເຊື່ອມຕໍ່ເຊັນເຊີເອກະສານຂໍ້ມູນນີ້ໃຊ້ Arduino Mega ເປັນ exampເລ. Ardunio Mega ໃຫ້ຫຼາຍກວ່າຫນຶ່ງພອດ comm, ດັ່ງນັ້ນ comm port 1 ຖືກນໍາໃຊ້ເພື່ອຕິດຕໍ່ສື່ສານກັບເຊັນເຊີແລະ comm port 0 ຖືກໃຊ້ເພື່ອພິມໃສ່ PC.
Arduino ໃຊ້ 5v logic ສູງໃນຂະນະທີ່ Platinum Sensor ໃຊ້ 3.3v, ດັ່ງນັ້ນເພື່ອປ້ອງກັນຄວາມເສຍຫາຍຂອງ Sensor a vol.tage divider ຕ້ອງຖືກນໍາໃຊ້. ຄ່າທີ່ແນະນຳສຳລັບ R1 ແລະ R2 ແມ່ນ 4K7.

ຮູບທີ 1: ຫຼຸດ voltage ໃນລະດັບທີ່ສາມາດໃຊ້ໄດ້
ສາຍສົ່ງສັນຍານຂອງເຊັນເຊີທີ່ໄປຫາ Arduino ໄດ້ຮັບບໍ່ຈໍາເປັນຕ້ອງມີຕົວແບ່ງຍ້ອນວ່າ 3.3v ເປັນວັດສະດຸປ້ອນເຂົ້າ Arduino ທີ່ຍອມຮັບໄດ້.
ເພື່ອພະລັງງານ Sensor ມັນຕ້ອງເຊື່ອມຕໍ່ກັບ 5v ແລະ 0v. ເພື່ອເຮັດສິ່ງນີ້, ທ່ານສາມາດໃຊ້ pins ໃນ Arduino.
ຫຼັງຈາກນີ້ສໍາເລັດ, ເຊັນເຊີຄວນຈະມີ pins ດັ່ງຕໍ່ໄປນີ້ເຊື່ອມຕໍ່:
5v -> 5v Arduino pin
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> ໄປຫາຜົນຜະລິດຂອງຕົວແບ່ງທີ່ມີທ່າແຮງ. ການປ້ອນຂໍ້ມູນໄປຫາ Arduino Tx

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 3 ຈາກທັງໝົດ 14

ຫຼັງ​ຈາກ​ນີ້​ແມ່ນ​ສໍາ​ເລັດ​ສົມ​ບູນ​ເຊັນ​ເຊີ Platinum ຂອງ​ທ່ານ​ຄວນ​ຈະ​ໄດ້​ຮັບ​ການ​ເຊື່ອມ​ຕໍ່​ດັ່ງ​ທີ່​ສະ​ແດງ​ໃຫ້​ເຫັນ​:
ຮູບທີ 2: ເຊັນເຊີຖືກສະແດງຂຶ້ນດ້ວຍຕົວອະແດບເຕີ solder
ຖ້າທ່ານກໍາລັງໃຊ້ Arduino ທີ່ມີພອດ comm ດຽວ (ເຊັ່ນ Arduino Uno) ທ່ານຈະຕ້ອງເຊື່ອມຕໍ່ມັນກັບມັນ, ຢ່າງໃດກໍຕາມ, ເມື່ອທ່ານໃຊ້ serial monitor (ສະແດງຕໍ່ມາ) ມັນຈະສະແດງ hex ທີ່ຖືກສົ່ງຕໍ່.

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 4 ຈາກທັງໝົດ 14

Arduino IDE ໄປທີ່ Arduino webເວັບໄຊ ແລະດາວໂຫຼດຊອບແວ Arduino IDE ເວີຊັນໃໝ່ຫຼ້າສຸດ. ເມື່ອ​ຕິດ​ຕັ້ງ​ທ່ານ​ຄວນ​ຈະ​ເຫັນ​ຫນ້າ​ຈໍ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​:
ຮູບທີ 3: ໜ້າຈໍຫຼັກ Arduino
ໃນເມນູເລື່ອນລົງເຄື່ອງມືເລືອກກະດານ Arduino, ໂປເຊດເຊີແລະພອດທີ່ທ່ານກໍາລັງໃຊ້:

ຮູບທີ 4: ເລືອກຕົວເລືອກ Board, Processor ແລະ Port

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 5 ຈາກທັງໝົດ 14

ສຳເນົາໃນຕົວຢ່າງນີ້ampລະຫັດ le: void send_read_live_data_simple(); 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(){ ໃນຂະນະທີ່ (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 6 ຈາກທັງໝົດ 14

ຮູບ 5: ລະຫັດພ້ອມທີ່ຈະອັບໂຫລດ
ຄລິກທີ່ລູກສອນເພື່ອອັບໂຫລດລະຫັດໃສ່ Arduino. ຫຼັງ​ຈາກ Arduino ໄດ້​ຮັບ​ການ​ຕັ້ງ​ໂຄງ​ການ​ເປີດ​ການ​ຕິດ​ຕາມ serial ໄດ້​.

AN0007

ຮູບທີ 6: ເປີດ Serial Monitor

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 7 ຈາກທັງໝົດ 14

ຮູບທີ 7: Serial Montor ສະແດງແພັກເກັດທີ່ໄດ້ຮັບ

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 8 ຈາກທັງໝົດ 14

ການອະທິບາຍລະຫັດ Arduino IDE ໃຊ້ C++ ເພື່ອຂຽນໂປຣແກຣມ Arduino.
ເສັ້ນນີ້ແມ່ນເປັນການປະກາດຕໍ່ຫນ້າ. ອັນນີ້ຖືກໃຊ້ເພື່ອບອກ Microcontroller ວ່າຕື່ມອີກໃນໂປຣແກມ ຟັງຊັນ `send_read_live_data_simple' ແລະຟັງຊັນ `receive_read_live_data_simple' ຈະຖືກເອີ້ນ.
ຕໍ່ໄປແມ່ນຫນ້າທີ່ຕັ້ງຄ່າ. ລະຫັດນີ້ຈະດໍາເນີນການພຽງແຕ່ຄັ້ງດຽວໃນເວລາເລີ່ມຕົ້ນ. ມັນເລີ່ມຕົ້ນພອດ Serial0 ແລະ Serial1. Serial0 ແມ່ນສິ່ງທີ່ສະແດງໃຫ້ເຫັນໃນຫນ້າຈໍຕິດຕາມກວດກາ serial. Serial1 ແມ່ນພອດເພື່ອຕິດຕໍ່ສື່ສານກັບເຊັນເຊີ.
ນີ້ແມ່ນ loop ຕົ້ນຕໍ, ລະຫັດນີ້ຖືກ looped ເລື້ອຍໆ. ທ່ານ​ສາ​ມາດ​ເບິ່ງ​ໄດ້​ໂດຍ​ການ​ອ່ານ​ຊື່​ຫນ້າ​ທີ່​ມັນ​ສົ່ງ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ເພື່ອ​ອ່ານ​ສະ​ບັບ​ງ່າຍ​ດາຍ​ຂອງ​ໂຄງ​ສ້າງ​ຂໍ້​ມູນ​ທີ່​ມີ​ຊີ​ວິດ​. ຫຼັງຈາກນັ້ນ, ມັນອ່ານພອດຮັບເພື່ອອ່ານການຕອບ. ຫຼັງຈາກນີ້ Microcontroller ລໍຖ້າ 5000mS.
ຟັງຊັນນີ້ຂຽນຄໍາຮ້ອງຂໍເພື່ອໃຫ້ໄດ້ຂໍ້ມູນທີ່ມີຊີວິດແບບງ່າຍດາຍ struct ກັບພອດ serial 1. ດັ່ງທີ່ໄດ້ກ່າວມາກ່ອນຫນ້ານີ້ຖ້າທ່ານມີພອດ serial ດຽວທ່ານຄວນປ່ຽນ Serial1 ເປັນ Serial. ເພື່ອເບິ່ງລາຍຊື່ຄຳສັ່ງທັງໝົດ, ໃຫ້ອ້າງອີງໃສ່ເອກະສານ Premier sensor Communications protocol. ນີ້ແມ່ນສ່ວນຂອງເອກະສານທີ່ບອກທ່ານວ່າຈະຂຽນຫຍັງສໍາລັບຄໍາສັ່ງນີ້:

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 9 ຈາກທັງໝົດ 14

ຟັງຊັນນີ້ loops ຟັງຊັນການອ່ານໃນຂະນະທີ່ຍັງມີຂໍ້ມູນທີ່ຈະໄດ້ຮັບຈາກ Platinum Sensor. Serial1.read() ອ່ານຂໍ້ມູນຈາກ Serial1 ທີ່ເຊື່ອມຕໍ່ກັບເຊັນເຊີແລະພິມມັນຢູ່ໃນ Serial0 ດັ່ງນັ້ນມັນສາມາດເຫັນໄດ້ໃນຈໍສະແດງຜົນ serial. ຕົວລະຄອນ `|' ຫຼັງຈາກນັ້ນຖືກພິມອອກເພື່ອທໍາລາຍແຕ່ລະ byte ທີ່ໄດ້ຮັບເພື່ອເຮັດໃຫ້ມັນຊັດເຈນຂຶ້ນຢູ່ໃນຈໍສະແດງຜົນ serial.
ຫຼັງ​ຈາກ​ນີ້​ແມ່ນ​ສໍາ​ເລັດ​ສົມ​ບູນ​ມັນ​ຂຽນ​ເສັ້ນ​ໃຫມ່​ກັບ​ການ​ຕິດ​ຕາມ serial ໄດ້​.

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 10 ຈາກທັງໝົດ 14

ແຜນຜັງ Packet ຮູບທີ 8 ແລະ 9 ສະແດງຜົນອອກຂອງຕົວຖອດລະຫັດ serial ທີ່ເຊື່ອມຕໍ່ກັບສາຍຮັບ ແລະສາຍສົ່ງ.
ຮູບທີ 8: ຊຸດຂາອອກ
ຮູບທີ 9: ຊຸດຂາເຂົ້າ
ຮູບ 10 ແລະ 11 ສະແດງ hex ຂາອອກແລະຂາເຂົ້າຕາມລໍາດັບດ້ວຍຖັນທີ່ສະແດງໃຫ້ເຫັນວ່າຄໍາສັ່ງໃດ.

ຮູບທີ 10: ລາຍ​ລະ​ອຽດ Packet ລາຍ​ຈ່າຍ

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 11 ຈາກທັງໝົດ 14

ຮູບທີ 11: ລາຍລະອຽດຊຸດເຂົ້າ
ກະລຸນາສັງເກດວ່າການອ່ານແກັດແມ່ນຕົວເລກທົດສະນິຍົມບໍ່ແມ່ນຈໍານວນເຕັມ. ທົດສະນິຍົມນີ້ຢູ່ໃນຮູບແບບ IEEE-754, ທ່ານສາມາດນໍາໃຊ້ຕົວແປງອອນໄລນ໌ເຊັ່ນນີ້ເພື່ອແປງມັນ. ມູນຄ່າອາຍແກັສໃນກໍລະນີນີ້ສະແດງໃຫ້ເຫັນ -250 (ຍ້ອນວ່າມັນຢູ່ໃນຮູບແບບຄວາມຜິດພາດໃນເວລາ).

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 12 ຈາກທັງໝົດ 14

ໃຊ້ Serial.read()
ລະຫັດທີ່ຜ່ານມາພຽງແຕ່ພິມຂໍ້ມູນທີ່ໄດ້ຮັບໃນຈໍສະແດງຜົນ serial, ຖ້າທ່ານຕ້ອງການບັນທຶກຂໍ້ມູນໃນຕົວແປຕ່າງໆ, ທ່ານຈະຕ້ອງດໍາເນີນການບາງຢ່າງຕື່ມອີກ. ແພັກເກັດທີ່ທ່ານໄດ້ຮັບຖືກແບ່ງອອກເປັນໄບຕ໌, ເພາະວ່າອັນນີ້ເຈົ້າຈະຕ້ອງລວມເອົາບາງຂໍ້ມູນນີ້ເຂົ້າໄປໃນຕົວແປ. Serial1.Read() ກັບຄືນ int (ເຊິ່ງສໍາລັບ Arduino ແມ່ນ 16 bits), ຢ່າງໃດກໍຕາມ, ພຽງແຕ່ 8 bits ທໍາອິດຖືກນໍາໃຊ້. ເນື່ອງຈາກວ່ານີ້ພວກເຮົາສາມາດຄັດລອກມັນເຂົ້າໄປໃນປະເພດຂໍ້ມູນຂະຫນາດນ້ອຍກວ່າທີ່ມີພຽງແຕ່ 8 bits, ໃນກໍລະນີນີ້ຂ້ອຍຈະໃຊ້ char.
ສໍາລັບແພັກເກັດທີ່ມີຄວາມຍາວພຽງແຕ່ byte, ນີ້ເຮັດວຽກໄດ້ດີ:
ສໍາລັບແພັກເກັດທີ່ມີ 2 bytes ຫຼື 4 bytes ຍາວ, ທ່ານຈະຕ້ອງເຊື່ອມຕໍ່ຂໍ້ມູນ.

ທ່ານສາມາດເຮັດໄດ້ໃນຫຼາຍວິທີທີ່ແຕກຕ່າງກັນ, ນີ້ແມ່ນສິ່ງທີ່ຂ້ອຍຈະເຮັດແມ່ນໃຫ້ປ່ຽນຂໍ້ມູນແລະຫຼັງຈາກນັ້ນ OR ມັນ.

ການນໍາໃຊ້ລະຫັດນີ້, ຖ້າ readByte1 ແມ່ນ 0x34 ແລະ readByte2 ແມ່ນ 0x12.

(int)readByte2

// ອັນນີ້ປ່ຽນ 0x12 ເປັນ 0x0012.

(int)readByte2 << 8

// ນີ້ປ່ຽນ bits ຜ່ານ byte ເຮັດໃຫ້ມັນ 0x1200.

(int)readByte2 << 8 | readByte1 // ນີ້ຫຼັງຈາກນັ້ນໄດ້ຮັບ OR'ed, ດ້ວຍ 0x34 ເຮັດໃຫ້ 0x1234.

ວິທີອື່ນທີ່ຈະເຮັດຄືການໃສ່ຄ່າເຂົ້າໄປໃນ array ແລະຫຼັງຈາກນັ້ນປ່ຽນ array ເປັນປະເພດທີ່ທ່ານຕ້ອງການ:

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 13 ຈາກທັງໝົດ 14

chars ແມ່ນຍາວ byte, ໃນຂະນະທີ່ float ແມ່ນ 4 bytes. ດ້ວຍເຫດນີ້, ຖ້າພວກເຮົາສ້າງ array ຂອງ 4 chars ທີ່ມີຄ່າຂອງພວກເຮົາຢູ່ໃນມັນແລະປ່ຽນປະເພດເປັນ float.
ໃນກໍລະນີນີ້ readArray ແມ່ນຕົວຊີ້ໄປຫາ char array. (float*)readArray ພາກສ່ວນນີ້ໂຍນມັນໃສ່ຕົວຊີ້ໄປຫາ float ແລະຫຼັງຈາກນັ້ນ a * ຖືກເພີ່ມໃສ່ດ້ານຫນ້າເພື່ອໃຫ້ໄດ້ມູນຄ່າຂອງ float.
ບັນທຶກການແປງຂັ້ນສູງ
1. Serial.read() ສົ່ງຄືນຄ່າ int ແທນ char ເພາະວ່າຂໍ້ຜິດພາດຈະສົ່ງຄ່າທາງລົບຄືນ. ໂຄງການຂອງທ່ານຄວນກວດສອບນີ້.
2. uint8_t ແລະ uint16_t ຄວນຖືກໃຊ້ແທນ char ແລະ int ຕາມລໍາດັບ, ເພາະວ່າປະເພດເຫຼົ່ານີ້ບໍ່ມີຂະຫນາດມາດຕະຖານ (ໃນ PC ຂອງຂ້ອຍ int ແມ່ນ 32 bits ໃນຂະນະທີ່ຢູ່ໃນ Arduino ມັນແມ່ນ 16 bits).
3. ໂປໂຕຄອນ comms ປະກອບມີຕົວອັກສອນທີ່ບັນຈຸ byte (ຍັງເອີ້ນວ່າຕົວອັກສອນຄວບຄຸມ), ນີ້ແມ່ນອະທິບາຍລາຍລະອຽດເພີ່ມເຕີມໃນເອກະສານ tds0045 Premier sensor Communications protocol. ດ້ວຍເຫດນີ້, ແພັກເກັດຂໍ້ມູນແບບງ່າຍໆທີ່ອ່ານສົດຈະໃຫຍ່ກວ່າທີ່ຄາດໄວ້ເປັນບາງໂອກາດ.

AN0007

ສະບັບ 1.2

09/04/2025

ປ່ຽນ Note 805

ໜ້າທີ 14 ຈາກທັງໝົດ 14

ເອກະສານ / ຊັບພະຍາກອນ

DYNAMENT AN0007 Arduino ຫາ Platinum COMM [pdf] ຄູ່ມືຜູ້ໃຊ້
AN0007 Arduino ຫາ Platinum COMM, AN0007, Arduino ຫາ Platinum COMM, ເຖິງ Platinum COMM, Platinum COMM

ເອກະສານອ້າງອີງ

ອອກຄໍາເຫັນ

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງການຖືກໝາຍໄວ້ *