Giả sử bạn có 2 arduino đang kết nối với nhau bằng 1 giao tiếp nào đó (I2C, SPI, UART, IR ..) , có thể là không dây hay có dây. Bạn có 1 biến dữ liệu trong arduino A và muốn nó sẽ nằm trong arduino B bằng cách gửi qua giao tiếp đó.
Trong thiết bị điện tử logic chỉ có 2 mức tín hiệu là High (1) và Low (0) tương ứng với 2 mức điện áp. Khi xuất ra đường truyền, dữ liệu cũng sẽ chỉ là các Byte chứa các Bit nhị phân 0-1 như thế này
Vậy làm sao để thiết bị nhận (arduino B) tìm ra chính xác dữ liệu mong muốn ?
Cách tốt nhất để giải quyết vấn đề này là đặt ra những quy ước chung cho dữ liệu muốn gửi.
Máy thu sẽ dựa vào những dấu hiệu đó để nhận biết và tách lấy thứ nó cần.
Ví dụ: Chúng ta có 1 byte dữ liệu A với giá trị bằng 11. Phía trước của A sẽ là 1 byte Start (B10101010) , Phía sau của A là 1 byte Stop (B10011010), Như vậy A có thể sẽ bằng B00000101.
Ta nói “có thể sẽ bằng” là vì A có thể là 1 giá trị nhiễu (không giống với dữ liệu gửi), hoặc khi A trùng với Start sẽ khiến máy thu không thể phân biệt…
Như vậy, để xác suất nhận đúng A tăng lên thì ta phải nâng cao quy ước như :
- Giá trị của A chỉ nằm trong khoảng 0 => 20.
- Tăng độ dài của Start và Stop..vv
Cũng giống như khi bạn mua hàng online, để hàng có thể đến tận tay thì bạn cần điền đầy đủ thông tin của người nhận, mỗi một thông tin điền vào sẽ giúp cho cửa hàng loại trừ và thu hẹp khu vực của bạn.
Quy ước càng chắc chắn thì dữ liệu càng đáng tin cậy!