สารบัญ:

Arduino I2C Sniffer: 4 ขั้นตอน
Arduino I2C Sniffer: 4 ขั้นตอน

วีดีโอ: Arduino I2C Sniffer: 4 ขั้นตอน

วีดีโอ: Arduino I2C Sniffer: 4 ขั้นตอน
วีดีโอ: #38 สอน Arduino Tutorial : Arduino แสดงข้อความออกจอ LCD แบบ I2C 2024, กรกฎาคม
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C เป็นโปรโตคอลอนุกรมที่ใช้ในการสื่อสารไมโครคอนโทรลเลอร์กับอุปกรณ์ต่อพ่วงภายนอกที่ต่ออยู่กับวงจรเดียวกัน อุปกรณ์ต่อพ่วงแต่ละเครื่องต้องมีหมายเลข ID ที่ไม่ซ้ำกันซึ่งเรียกว่าที่อยู่ซึ่งใช้เพื่อระบุว่าเป็นผู้รับข้อความที่กำหนด ที่อยู่เหล่านี้กำหนดโดยผู้ผลิตอุปกรณ์และส่วนใหญ่ไม่สามารถเปลี่ยนแปลงได้ นักดมกลิ่นจะสแกนที่อยู่ที่เป็นไปได้ทั้งหมดเพื่อค้นหาอุปกรณ์ที่เชื่อมต่อและรายงานสิ่งที่พบ วิธีนี้ช่วยระบุชิปที่ไม่ได้ทำเครื่องหมายเมื่อที่อยู่นั้นสามารถ googled เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับชิปได้

อุปกรณ์นี้เลียนแบบการทำงานของ Arduino UNO ของสคริปต์ Raspberry Pi i2cdetect โดยดมกลิ่นที่อยู่ i2c ที่เป็นไปได้ทั้งหมดเพื่อค้นหาอุปกรณ์ที่เชื่อมต่อและพิมพ์ผลลัพธ์อย่างดีบนหน้าจอ LCD ขนาด 16x02

เพื่อให้พอดีกับทุกอย่างบนหน้าจอ ทั้งส่วนที่สูงและต่ำของที่อยู่จะถูกพิมพ์เหนือผลลัพธ์ ส่วนที่สูงจะเป็นตัวพิมพ์หนา ปุ่มกดสองปุ่มช่วยให้นำทางไปมาระหว่างที่อยู่ โดยแสดงที่อยู่ได้ครั้งละ 16 รายการ ในกรณีที่ตรวจพบอุปกรณ์ W จะถูกพิมพ์เพื่อแสดงเป็นที่อยู่สำหรับเขียนและ R จะแสดงในกรณีที่เป็นที่อยู่สำหรับอ่าน ในกรณีที่ไม่พบสิ่งใดที่ที่อยู่นั้น เครื่องหมายยัติภังค์ (-) จะแสดงบนหน้าจอ

ขั้นตอนที่ 1: วัสดุ

วัสดุ
วัสดุ
วัสดุ
วัสดุ

ตัวเลือกที่ 1

1 x Arduino UNO

หน้าจอ LCD ขนาด 1 x 16x02

1x 10K โพเทนชิออมิเตอร์

ตัวต้านทาน 1x330 โอห์ม

3x ปุ่มกด

สายจัมเปอร์

1x I2C ระดับ shifter (ไม่ใช่บนภาพวัสดุ)

ตัวเลือก 2

1 x Arduino UNO

LCD Keypad Shield (ปุ่มบนโล่จะไม่ถูกใช้งาน)

3x ปุ่มกด

สายจัมเปอร์

1x I2C ระดับ shifter (ไม่ใช่บนภาพวัสดุ)

ตัวเลือกที่ 2 คือสิ่งที่จะถูกสร้างขึ้นเพราะนั่นคือสิ่งที่ฉันมีอยู่ในตอนนี้ ตัวเลื่อนระดับเป็นส่วนสำคัญของวงจรเนื่องจากปัจจุบันอุปกรณ์ส่วนใหญ่ใช้ลอจิก 3.3V และ 5V จาก Arduino สร้างความเสียหาย

(ในภาพ ไม่จำเป็นต้องขีดฆ่า)

ขั้นตอนที่ 2: วงจร

วงจร
วงจร
วงจร
วงจร
วงจร
วงจร

วงจรค่อนข้างตรงไปตรงมา โดยใช้พินมาตรฐานสำหรับตัวอย่าง Arduino สำหรับ LCD, พินเริ่มต้นสำหรับ I2C และพินสำรอง 3 พินสำหรับปุ่มกด

ในกรณีที่คุณใช้ LCD Keypad Shield หมุดสำหรับ LCD จะเปลี่ยนไป แต่ถือว่าอยู่ในโค้ดแล้ว ไม่ใช้ปุ่ม LCD Keypad Shield เนื่องจากต้องใช้วิธีการโพลแบบแอนะล็อกที่ทำลายความเข้ากันได้ระหว่างวงจรการใช้งานที่เป็นไปได้สองวงจร (Shield และ LCD แบบสแตนด์อโลน)

ขั้นตอนที่ 3: รหัส

รหัส
รหัส

ในกรณีที่ใช้ LCD Keypad Shield #define LCD_SHIELD จะต้องไม่ใส่เครื่องหมายกำกับไว้ที่จุดเริ่มต้นของร่าง มิฉะนั้น แสดงความคิดเห็นเพื่อใช้ไดอะแกรมแรก

ขั้นตอนที่ 4: บทสรุป

บทสรุป
บทสรุป
บทสรุป
บทสรุป
บทสรุป
บทสรุป

สำหรับการทดสอบรหัสและวงจร ใช้ชิป BQ32000 RTC และมาตรความเร่ง MMA8452Q ดังที่เห็นในภาพ อุปกรณ์กำลังตรวจจับที่อยู่ 4 แห่ง: 0x3A และ 0xD0 เป็นที่อยู่สำหรับเขียน และ 0x3B และ 0xD1 เป็นที่อยู่สำหรับอ่าน ที่อยู่นี้สอดคล้องกับอุปกรณ์ทดสอบเพื่อให้โค้ดใช้งานได้

ฉันขอขอบคุณผู้หญิงใจดีที่ Beijing Makerspace, Fu Yao และ Liu Xin ที่ช่วยฉันได้วัสดุที่จำเป็นสำหรับการทดสอบโครงการนี้ในช่วงเวลาสั้นๆ

แนะนำ: