AN0007 Arduino tới Platinum COMM
“
Thông tin sản phẩm
Thông số kỹ thuật
- Tên sản phẩm: TÀI LIỆU TRỢ GIÚP GIAO TIẾP ARDUINO ĐẾN PLATINUM
- Nhà sản xuất: Dynament Limited
- Địa chỉ: HermitagKhu công nghiệp e Lane, Đường Kings Mill,
Mansfield, Nottinghamshire, NG18 5ER, Vương quốc Anh - Liên hệ: Điện thoại: 44 (0)1623 663636, Email: sales@dynament.com,
Webtrang web: www.dynament.com - Số phát hành: 1.2, Ngày: 09/04/2025
Hướng dẫn sử dụng sản phẩm
Kết nối cảm biến
Bảng dữ liệu này sử dụng Arduino Mega làm ví dụample. Kết nối như
sau đây:
- Chân Arduino 5v -> 5v
- 0v -> Arduino GND
- Tx -> Arduino RX1
- Rx -> Đi đến đầu ra của bộ chia điện thế. Đầu vào
đi đến Arduino Tx
Tậptage Khả năng tương thích
Arduino sử dụng logic cao 5v trong khi Cảm biến Platinum sử dụng
3.3v. Sử dụng một voltagbộ chia e với các giá trị đề xuất cho R1 và R2 là
4K7 để tránh làm hỏng cảm biến.
Thiết lập Arduino IDE
- Tải xuống phiên bản mới nhất của phần mềm Arduino IDE từ
Arduino webđịa điểm. - Chọn bo mạch Arduino, bộ xử lý và cổng trong các công cụ
menu thả xuống.
Tải mã lên
- Sao chép ví dụ được cung cấpampnhập mã vào Arduino IDE.
- Tải mã lên Arduino bằng cách nhấp vào mũi tên.
- Mở màn hình nối tiếp để view truyền dữ liệu.
Câu hỏi thường gặp
H: Tôi phải làm gì nếu tôi có Arduino Uno chỉ có một giao tiếp?
cảng?
A: Kết nối Cảm biến Platinum vào cổng đó. Khi sử dụng
màn hình nối tiếp, nó cũng sẽ hiển thị mã hex đã truyền.
“`
Lưu ý ứng dụng AN0007
TÀI LIỆU TRỢ GIÚP GIAO TIẾP TỪ ARDUINO ĐẾN PLATINUM
Công ty TNHH Dynament
Hermitage Lane Industrial Estate Kings Mill Way Mansfield Nottinghamshire NG18 5ER UK. Điện thoại: 44 (0)1623 663636
email: sales@dynament.com www.dynament.com
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 1 trong 14
Nội dung
Dynament Limited …………………………………………………………………………………………………….1 Kết nối cảm biến…………………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………………5 Giải thích mã………………………………………………………………………………………………………..9 Phân tích gói tin ……………………………………………………………………………………………………….11 Sử dụng Serial.read() ………………………………………………………………………………………….13
Ghi chú chuyển đổi nâng cao……………………………………………………………………………….14
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 2 trong 14
Kết nối cảm biến Bảng dữ liệu này sử dụng Arduino Mega làm ví dụample. Ardunio Mega cung cấp nhiều hơn một cổng giao tiếp, do đó cổng giao tiếp 1 được sử dụng để giao tiếp với cảm biến và cổng giao tiếp 0 được sử dụng để in ra PC.
Arduino sử dụng logic cao 5v trong khi Cảm biến Platinum sử dụng 3.3v, do đó để tránh làm hỏng Cảm biến, cần phải giảm điện áp.tagPhải sử dụng bộ chia e. Giá trị đề xuất cho R1 và R2 là 4K7.
Hình 1: Giảm âm lượngtage đến mức có thể sử dụng
Đường truyền cảm biến đến bộ thu của Arduino không cần bộ chia vì 3.3v là mức đầu vào chấp nhận được của Arduino.
Để cấp nguồn cho cảm biến, nó phải được kết nối với điện áp 5V và 0V. Để làm điều này, bạn có thể sử dụng các chân trên Arduino.
Sau khi hoàn tất, cảm biến sẽ có các chân sau được kết nối:
Chân Arduino 5v -> 5v
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Đi đến đầu ra của bộ chia điện thế. Đầu vào đi đến Arduino Tx
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 3 trong 14
Sau khi hoàn tất, Cảm biến Platinum của bạn sẽ được kết nối như hình minh họa:
Hình 2: Cảm biến được hiển thị lộn ngược với bộ chuyển đổi hàn
Nếu bạn sử dụng Arduino chỉ có một cổng giao tiếp (như Arduino Uno), bạn sẽ phải kết nối nó với cổng đó, tuy nhiên khi bạn sử dụng màn hình nối tiếp (sẽ trình bày sau), nó cũng sẽ hiển thị mã hex được truyền đi.
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 4 trong 14
Arduino IDE Đi tới Arduino webTruy cập trang web và tải xuống phiên bản mới nhất của phần mềm Arduino IDE. Sau khi cài đặt, bạn sẽ thấy màn hình sau:
Hình 3: Màn hình chính của Arduino
Trong menu thả xuống công cụ, hãy chọn bo mạch Arduino, bộ xử lý và cổng bạn đang sử dụng:
Hình 4: Chọn tùy chọn Bo mạch, Bộ xử lý và Cổng
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 5 trong 14
Sao chép trong ví dụ nàyampmã lệnh: 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(); 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(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 6 trong 14
Hình 5: Mã đã sẵn sàng để tải lên
Nhấp vào mũi tên để tải mã lên Arduino. Sau khi Arduino được lập trình, hãy mở màn hình giám sát nối tiếp.
AN0007
Hình 6: Mở Serial Monitor
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 7 trong 14
Hình 7: Serial Montor hiển thị gói tin đã được nhận
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 8 trong 14
Giải thích mã Arduino IDE sử dụng C++ để lập trình Arduino.
Dòng này là một khai báo chuyển tiếp. Nó được dùng để báo cho Vi điều khiển biết rằng hàm `send_read_live_data_simple' và hàm `receive_read_live_data_simple' sẽ được gọi ở phần sau của chương trình.
Tiếp theo là hàm thiết lập. Mã này chỉ được chạy một lần khi khởi động. Nó khởi động các cổng Serial0 và Serial1. Serial0 là cổng hiển thị trên màn hình giám sát serial. Serial1 là cổng giao tiếp với cảm biến.
Đây là vòng lặp chính, đoạn mã này được lặp lại nhiều lần. Đọc tên hàm, bạn có thể thấy nó gửi yêu cầu đọc phiên bản đơn giản của cấu trúc dữ liệu trực tiếp. Sau đó, nó đọc cổng nhận để đọc phản hồi. Sau đó, Vi điều khiển chờ 5000 ms.
Hàm này ghi yêu cầu lấy dữ liệu trực tiếp từ cấu trúc đơn giản đến cổng nối tiếp 1. Như đã đề cập trước đó, nếu bạn chỉ có một cổng nối tiếp, bạn nên đổi Serial1 thành Serial. Để xem danh sách đầy đủ các lệnh, hãy tham khảo tài liệu Giao thức truyền thông cảm biến Premier. Dưới đây là phần tài liệu hướng dẫn bạn những gì cần viết cho lệnh này:
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 9 trong 14
Hàm này lặp lại hàm đọc trong khi vẫn còn dữ liệu cần nhận từ Cảm biến Platinum. Serial1.read() đọc dữ liệu từ Serial1 được kết nối với cảm biến và in dữ liệu đó lên Serial0 để có thể xem trên màn hình nối tiếp. Ký tự `|' sau đó được in ra để chia nhỏ từng byte nhận được, giúp dữ liệu rõ ràng hơn trên màn hình nối tiếp.
Sau khi hoàn tất, nó sẽ ghi một dòng mới vào màn hình nối tiếp.
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 10 trong 14
Phân tích gói tin Hình 8 và 9 hiển thị đầu ra của bộ giải mã nối tiếp được kết nối với đường truyền và đường nhận.
Hình 8: Gói tin đi
Hình 9: Gói tin đến
Hình 10 và 11 hiển thị mã hex đi và đến tương ứng với một cột cho biết đó là lệnh nào.
Hình 10: Mô tả gói tin đi
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 11 trong 14
Hình 11: Mô tả gói tin đến
Xin lưu ý rằng giá trị đo khí là số thập phân, không phải số nguyên. Số thập phân này được định dạng theo chuẩn IEEE-754, bạn có thể sử dụng công cụ chuyển đổi trực tuyến như thế này để chuyển đổi. Giá trị khí trong trường hợp này hiển thị -250 (vì nó đang ở chế độ lỗi tại thời điểm đó).
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 12 trong 14
Sử dụng Serial.read()
Đoạn mã trước chỉ in dữ liệu nhận được ra màn hình serial, nếu bạn muốn lưu dữ liệu dưới dạng biến, bạn sẽ cần phải xử lý thêm. Gói tin bạn nhận được được chia thành các byte, vì vậy bạn sẽ cần nối một số dữ liệu này vào các biến. Serial1.Read() trả về một int (với Arduino là 16 bit), tuy nhiên, chỉ có 8 bit đầu tiên được sử dụng. Vì vậy, chúng ta có thể sao chép nó sang một kiểu dữ liệu nhỏ hơn, chỉ có 8 bit, trong trường hợp này tôi sẽ sử dụng char.
đối với các gói tin chỉ dài một byte, cách này hiệu quả:
Đối với các gói tin dài 2 byte hoặc 4 byte, bạn sẽ cần nối dữ liệu.
Bạn có thể thực hiện điều này theo nhiều cách khác nhau, ở đây tôi sẽ dịch chuyển dữ liệu sang trái rồi thực hiện phép OR.
Sử dụng mã này, nếu readByte1 là 0x34 và readByte2 là 0x12.
(int)readByte2
// điều này chuyển đổi 0x12 thành 0x0012.
(int)readByte2 << 8
// điều này dịch chuyển các bit qua một byte, tạo thành 0x1200.
(int)readByte2 << 8 | readByte1 // sau đó sẽ được OR, với 0x34 thành 0x1234.
Một cách khác để thực hiện điều này là đưa các giá trị vào một mảng và sau đó chuyển đổi mảng đó thành kiểu bạn muốn:
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 13 trong 14
chars dài một byte, trong khi float dài 4 byte. Vì vậy, nếu chúng ta tạo một mảng 4 ký tự chứa các giá trị của chúng ta và đổi kiểu thành float.
Trong trường hợp này, readArray là con trỏ tới một mảng char. (float*)readArray phần này chuyển đổi nó thành con trỏ tới một float và sau đó thêm * vào phía trước để lấy giá trị của float.
Ghi chú chuyển đổi nâng cao
1. Serial.read() trả về int thay vì char vì lỗi sẽ trả về giá trị âm. Chương trình của bạn nên kiểm tra điều này.
2. uint8_t và uint16_t nên được sử dụng thay cho char và int vì các kiểu dữ liệu này không có kích thước chuẩn (trên máy tính của tôi, int là 32 bit trong khi trên Arduino là 16 bit).
3. Giao thức truyền thông chứa các ký tự nhồi byte (còn được gọi là ký tự điều khiển), điều này được giải thích chi tiết hơn trong tài liệu giao thức truyền thông cảm biến Premier tds0045. Do đó, gói dữ liệu đọc trực tiếp đôi khi sẽ lớn hơn dự kiến.
AN0007
Số 1.2
09/04/2025
Thay đổi Ghi chú 805
Trang 14 trong 14
Tài liệu / Tài nguyên
![]() |
DYNAMENT AN0007 Arduino tới Platinum COMM [tập tin pdf] Hướng dẫn sử dụng AN0007 Arduino tới Platinum COMM, AN0007, Arduino tới Platinum COMM, tới Platinum COMM, Platinum COMM |