Mục lục:

Arduino I2C Sniffer: 4 bước
Arduino I2C Sniffer: 4 bước

Video: Arduino I2C Sniffer: 4 bước

Video: Arduino I2C Sniffer: 4 bước
Video: Giao Tiếp I2C Với LCD 16x2 Bằng Arduino Uno R3 | Điện tử DAT 2024, Tháng mười một
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C là một giao thức nối tiếp được sử dụng để giao tiếp một bộ vi điều khiển với các thiết bị ngoại vi bên ngoài được gắn vào cùng một mạch. Mỗi thiết bị ngoại vi phải có một số ID duy nhất được gọi là địa chỉ được sử dụng để xác định nó là người nhận dự định của một tin nhắn nhất định. Những địa chỉ đó được chỉ định bởi nhà sản xuất thiết bị và hầu hết các trường hợp không thể thay đổi được. Một trình dò tìm quét tất cả các địa chỉ có thể tìm kiếm các thiết bị được kết nối và báo cáo những địa chỉ mà nó tìm thấy. Điều này giúp xác định các chip không được đánh dấu vì sau đó địa chỉ có thể được đưa lên Google để biết thêm thông tin về chip.

Thiết bị này bắt chước hành vi của tập lệnh Raspberry Pi i2cdetect trên Arduino UNO, đánh hơi tất cả các địa chỉ i2c có thể tìm kiếm các thiết bị được kết nối và in kết quả độc đáo trên màn hình LCD 16x02.

Để phù hợp với mọi thứ trên màn hình, cả phần cao và thấp của địa chỉ đều được in phía trên kết quả, phần cao nằm trên kiểu chữ đậm. Hai nút nhấn cho phép điều hướng giữa các địa chỉ, hiển thị 16 địa chỉ cùng một lúc. Trong trường hợp một thiết bị được phát hiện, W sẽ được in để hiển thị nó dưới dạng địa chỉ ghi và R sẽ được hiển thị trong trường hợp đó là địa chỉ đọc. Trong trường hợp không có gì được phát hiện tại địa chỉ đó, một dấu gạch ngang (-) sẽ được hiển thị trên màn hình.

Bước 1: Vật liệu

Vật liệu
Vật liệu
Vật liệu
Vật liệu

lựa chọn 1

1 x Arduino UNO

Màn hình LCD 1 x 16x02

Chiết áp 1x 10K

Điện trở 1x 330 ohm

3x nút ấn

Cáp nhảy

1x bộ dịch chuyển cấp I2C (không phải trên hình ảnh tư liệu)

Lựa chọn 2

1 x Arduino UNO

Tấm chắn bàn phím LCD (các nút trên tấm chắn sẽ không được sử dụng)

3x nút ấn

Cáp nhảy

1x bộ chuyển đổi mức I2C (không có trên hình ảnh tư liệu)

Phương án 2 là phương án sẽ được xây dựng vì đó là những gì tôi có trong tay vào lúc này. Bộ dịch mức là một phần quan trọng của mạch vì ngày nay hầu hết các thiết bị sử dụng logic 3.3V và 5V từ Arduino làm hỏng chúng.

(Trên hình ảnh, tài liệu bị gạch chéo là không cần thiết.)

Bước 2: Mạch

Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện

Mạch khá thẳng về phía trước, sử dụng sơ đồ chân chuẩn cho các ví dụ Arduino cho màn hình LCD, các chân mặc định cho I2C và 3 chân dự phòng cho các nút bấm.

Trong trường hợp bạn sử dụng Tấm chắn bàn phím LCD, sơ đồ chân của màn hình LCD sẽ thay đổi nhưng điều đó đã được xem xét trong mã. Các nút Tấm chắn bàn phím LCD không được sử dụng vì chúng yêu cầu phương pháp thăm dò tương tự phá vỡ khả năng tương thích giữa hai mạch triển khai có thể có (Tấm chắn và màn hình LCD độc lập)

Bước 3: Mã

Mã số
Mã số

Trong trường hợp sử dụng Tấm chắn bàn phím LCD, #define LCD_SHIELD phải được bỏ ghi chú ở đầu bản phác thảo. Nếu không, hãy bình luận nó để sử dụng sơ đồ đầu tiên.

Bước 4: Kết luận

Kết luận
Kết luận
Kết luận
Kết luận
Kết luận
Kết luận

Để kiểm tra mã và mạch, chip BQ32000 RTC và gia tốc kế MMA8452Q đã được sử dụng. Như có thể thấy trên hình ảnh, thiết bị đang phát hiện 4 địa chỉ: 0x3A và 0xD0 là địa chỉ ghi, và 0x3B và 0xD1 là địa chỉ đọc. Địa chỉ này tương ứng với các thiết bị thử nghiệm để mã đang hoạt động.

Tôi muốn cảm ơn những cô gái tốt bụng tại Beijing Makerspace, Fu Yao và Liu Xin, đã giúp tôi có được những tài liệu cần thiết để thử nghiệm dự án này trong một thông báo ngắn như vậy.

Đề xuất: