2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
I2C adalah protokol serial yang digunakan untuk mengomunikasikan mikrokontroler dengan periferal eksternal yang terpasang pada sirkuit yang sama. Setiap periferal harus memiliki nomor ID unik yang disebut alamat yang digunakan untuk mengidentifikasinya sebagai penerima yang dituju dari pesan yang diberikan. Alamat tersebut ditetapkan oleh produsen perangkat dan sebagian besar waktu tidak dapat diubah. Sniffer memindai semua alamat yang memungkinkan untuk mencari perangkat yang terhubung dan melaporkan perangkat yang ditemukannya. Ini membantu mengidentifikasi chip yang tidak ditandai karena alamatnya dapat di-google untuk informasi lebih lanjut mengenai chip tersebut.
Perangkat ini meniru pada Arduino UNO perilaku skrip Raspberry Pi i2cdetect, mengendus semua alamat i2c yang mungkin mencari perangkat yang terhubung dan mencetak hasilnya dengan baik pada layar LCD 16x02.
Agar sesuai dengan semua yang ada di layar, bagian tinggi dan rendah dari alamat dicetak di atas hasil, bagian tinggi berada pada jenis huruf tebal. Dua tombol push memungkinkan untuk menavigasi di antara alamat, menampilkan 16 alamat sekaligus. Jika perangkat terdeteksi, W akan dicetak untuk menunjukkannya sebagai alamat penulisan dan R akan ditampilkan jika itu adalah alamat baca. Jika tidak ada yang terdeteksi di alamat itu, tanda hubung (-) akan ditampilkan di layar.
Langkah 1: Bahan
Pilihan 1
1 x Arduino UNO
1x16x02 layar LCD
Potensiometer 1x 10K
1x 330 ohm resistor
3x Tekan tombol
Kabel jumper
1x shifter level I2C (tidak pada gambar material)
pilihan 2
1 x Arduino UNO
LCD Keypad Shield (tombol pada pelindung tidak akan digunakan)
3x Tekan tombol
Kabel jumper
1x shifter level I2C (tidak pada gambar material)
Opsi 2 adalah yang akan dibangun karena itulah yang saya miliki saat ini. Penggeser level adalah bagian penting dari rangkaian karena saat ini sebagian besar perangkat menggunakan logika 3.3V dan 5V dari Arduino merusaknya.
(Pada gambar, bahan yang dicoret tidak diperlukan.)
Langkah 2: Sirkuit
Rangkaian ini cukup lurus ke depan, menggunakan pinout standar untuk contoh Arduino untuk LCD, pin default untuk I2C dan 3 pin cadangan untuk tombol tekan.
Jika Anda menggunakan LCD Keypad Shield, pinout untuk LCD berubah tetapi itu sudah dipertimbangkan dalam kode. Tombol LCD Keypad Shield tidak digunakan karena memerlukan metode polling analog yang merusak kompatibilitas antara dua kemungkinan sirkuit implementasi (Perisai dan LCD yang berdiri sendiri)
Langkah 3: Kode
Dalam hal LCD Keypad Shield digunakan, #define LCD_SHIELD harus dibiarkan tanpa komentar di awal sketsa. Jika tidak, beri komentar untuk menggunakan diagram pertama.
Langkah 4: Kesimpulan
Untuk menguji kode dan sirkuit, chip BQ32000 RTC dan akselerometer MMA8452Q digunakan. Seperti dapat dilihat pada gambar, perangkat mendeteksi 4 alamat: 0x3A dan 0xD0 sebagai alamat tulis, dan 0x3B dan 0xD1 sebagai alamat baca. Alamat ini sesuai dengan perangkat uji sehingga kode berfungsi.
Saya ingin mengucapkan terima kasih kepada gadis-gadis baik di Beijing Makerspace, Fu Yao dan Liu Xin, karena telah membantu saya mendapatkan materi yang diperlukan untuk menguji proyek ini dalam waktu singkat.