Съдържание:

Arduino I2C Sniffer: 4 стъпки
Arduino I2C Sniffer: 4 стъпки

Видео: Arduino I2C Sniffer: 4 стъпки

Видео: Arduino I2C Sniffer: 4 стъпки
Видео: How I2C Communication Works and How To Use It with Arduino 2024, Ноември
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C е сериен протокол, използван за комуникация на микроконтролер с външни периферни устройства, свързани към същата схема. Всяко периферно устройство трябва да има уникален идентификационен номер, наречен адрес, който се използва за идентифицирането му като предполагаем получател на дадено съобщение. Тези адреси се присвояват от производителя на устройството и в повечето случаи не могат да се променят. Снифър сканира всички възможни адреси, търсейки свързани устройства, и докладва тези, които намери. Това помага да се идентифицират немаркирани чипове, тъй като тогава адресът може да бъде потърсен в Google за повече информация относно чипа.

Това устройство имитира на Arduino UNO поведението на скрипта Raspberry Pi i2cdetect, надушвайки всички възможни i2c адреси в търсене на свързани устройства и отпечатвайки добре резултатите на 16x02 LCD екран.

За да побере всичко на екрана, високата и долната част на адреса се отпечатват над резултатите, като високата част е върху удебелен шрифт. Два бутона позволяват да се придвижвате между адресите, показвайки 16 адреса наведнъж. В случай на откриване на устройство, W ще бъде отпечатано, за да се покаже като адрес за писане, а R ще се покаже, ако това е адрес за четене. В случай, че нищо не е открито на този адрес, на екрана ще се покаже тире (-).

Стъпка 1: Материали

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

Опция 1

1 x Arduino UNO

1 x 16x02 LCD екран

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

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

3x бутони

Джъмперни кабели

1x превключвател на ниво I2C (не на снимката на материалите)

Вариант 2

1 x Arduino UNO

Щит на LCD клавиатурата (бутоните на щита няма да се използват)

3x бутони

Джъмперни кабели

1x превключвател на ниво I2C (не на снимката на материалите)

Вариант 2 е този, който ще бъде изграден, защото точно това имах под ръка в момента. Превключвателят на нивото е важна част от веригата, тъй като в днешно време повечето устройства използват 3.3V логика и 5V от Arduino ги уврежда.

(На снимките зачеркнатият материал не се изисква.)

Стъпка 2: Схема

Верига
Верига
Верига
Верига
Верига
Верига

Веригата е доста правилна, използвайки стандартния извод за примерите на Arduino за LCD дисплея, стандартните щифтове за I2C и 3 резервни щифта за бутоните.

В случай, че използвате щит за клавиатура на LCD, извеждането на LCD дисплея се променя, но това вече се разглежда в кода. Бутоните за щитове на клавиатурата на LCD не се използват, защото изискват метод за аналогово опросване, който нарушава съвместимостта между двете възможни схеми за изпълнение (щит и самостоятелен LCD)

Стъпка 3: Код

Код
Код

В случай, че се използва щитът за LCD клавиатура, #define LCD_SHIELD трябва да бъде оставен без коментар в началото на скицата. В противен случай го коментирайте, за да използвате първата диаграма.

Стъпка 4: Заключения

Изводи
Изводи
Изводи
Изводи
Изводи
Изводи

За тестване на кода и веригата бяха използвани BQ32000 RTC чип и акселерометър MMA8452Q. Както може да се види на снимките, устройството открива 4 адреса: 0x3A и 0xD0 като адреси за запис и 0x3B и 0xD1 като адреси за четене. Тези адреси съответстват на тестовите устройства, така че кодът да работи.

Бих искал да благодаря на любезните момичета от Beijing Makerspace, Fu Yao и Liu Xin, че ми помогнаха да получа материалите, необходими за тестване на този проект, за толкова кратко време.

Препоръчано: