Оглавление:

Сниффер Arduino I2C: 4 шага
Сниффер Arduino I2C: 4 шага

Видео: Сниффер Arduino I2C: 4 шага

Видео: Сниффер Arduino I2C: 4 шага
Видео: Подключение нескольких устройств по шине i2c 2024, Июль
Anonim
Сниффер Arduino I2C
Сниффер Arduino I2C

I2C - это последовательный протокол, используемый для связи микроконтроллера с внешними периферийными устройствами, подключенными к той же цепи. Каждое периферийное устройство должно иметь уникальный идентификационный номер, называемый адресом, который используется для идентификации его как предполагаемого получателя данного сообщения. Эти адреса назначаются производителем устройства и в большинстве случаев не могут быть изменены. Сниффер сканирует все возможные адреса в поисках подключенных устройств и сообщает о найденных. Это помогает идентифицировать немаркированные чипы, так как затем адрес можно поискать в Google для получения дополнительной информации о чипе.

Это устройство имитирует на Arduino UNO поведение сценария Raspberry Pi i2cdetect, обнюхивая все возможные адреса i2c в поисках подключенных устройств и красиво распечатывая результаты на ЖК-экране 16x02.

Чтобы уместить все на экране, верхняя и нижняя части адреса печатаются над результатами, а верхняя часть - жирным шрифтом. Две кнопки позволяют перемещаться между адресами, показывая 16 адресов одновременно. В случае обнаружения устройства W будет напечатан, чтобы показать его как адрес записи, и R будет показан, если это адрес чтения. Если по этому адресу ничего не обнаружено, на экране будет отображаться дефис (-).

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы

Опция 1

1 х Arduino UNO

1 x 16x02 ЖК-экран

1x 10K потенциометр

1x 330 Ом резистор

3x кнопки

Соединительные кабели

1x переключатель уровня I2C (не на фотографии материалов)

Вариант 2

1 х Arduino UNO

LCD Keypad Shield (кнопки на экране не используются)

3x кнопки

Соединительные кабели

1x переключатель уровня I2C (не на фотографии материалов)

Вариант 2 - это тот, который будет построен, потому что это то, что у меня было под рукой в данный момент. Сдвигатель уровня является важной частью схемы, поскольку в настоящее время большинство устройств используют логику 3,3 В, а 5 В от Arduino повреждают их.

(На картинках зачеркнутый материал не требуется.)

Шаг 2: Схема

Схема
Схема
Схема
Схема
Схема
Схема

Схема довольно проста, используется стандартная распиновка для примеров Arduino для ЖК-дисплея, контакты по умолчанию для I2C и 3 запасных контакта для кнопок.

Если вы используете экран LCD Keypad Shield, распиновка ЖК-дисплея изменится, но это уже учтено в коде. Кнопки LCD Keypad Shield не используются, потому что для них требуется аналоговый метод опроса, который нарушает совместимость между двумя возможными схемами реализации (Shield и автономный ЖК-дисплей).

Шаг 3: Код

Код
Код

В случае использования экрана ЖК-клавиатуры, #define LCD_SHIELD необходимо оставить без комментария в начале эскиза. В противном случае закомментируйте его, чтобы использовать первую диаграмму.

Шаг 4: выводы

Выводы
Выводы
Выводы
Выводы
Выводы
Выводы

Для тестирования кода и схемы использовались микросхема BQ32000 RTC и акселерометр MMA8452Q. Как видно на рисунках, устройство определяет 4 адреса: 0x3A и 0xD0 как адреса записи и 0x3B и 0xD1 как адреса чтения. Эти адреса соответствуют тестовым устройствам, поэтому код работает.

Я хотел бы поблагодарить добрых девушек из Beijing Makerspace, Фу Яо и Лю Синь, за то, что они помогли мне получить материалы, необходимые для тестирования этого проекта, в такой короткий срок.

Рекомендуемые: