Talaan ng mga Nilalaman:

Arduino I2C Sniffer: 4 Hakbang
Arduino I2C Sniffer: 4 Hakbang

Video: Arduino I2C Sniffer: 4 Hakbang

Video: Arduino I2C Sniffer: 4 Hakbang
Video: How I2C Communication Works and How To Use It with Arduino 2024, Hulyo
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

Ang I2C ay isang serial protocol na ginamit upang makipag-usap sa isang microcontroller na may panlabas na mga peripheral na nakakabit sa parehong circuit. Ang bawat paligid ay dapat magkaroon ng isang natatanging numero ng ID na tinatawag na address na ginagamit upang makilala ito bilang inilaan na tatanggap ng isang naibigay na mensahe. Ang mga address na iyon ay itinalaga ng gumagawa ng aparato at ang karamihan sa mga oras ay hindi mababago. Sinusuri ng isang sniffer ang lahat ng mga posibleng address na naghahanap ng mga konektadong aparato at iniuulat ang mga nahahanap nito. Tumutulong ito na makilala ang mga hindi naka-marka na chips habang ang address ay maaaring maging google para sa karagdagang impormasyon tungkol sa maliit na tilad.

Ginagaya ng aparatong ito sa isang Arduino UNO ang pag-uugali ng script ng Raspberry Pi i2cdetect, sinisinghot ang lahat ng posibleng mga i2c address na naghahanap ng mga konektadong aparato at pini-print ang mga resulta nang maayos sa isang 16x02 LCD screen.

Upang magkasya ang lahat sa screen, ang parehong mataas at mababang bahagi ng address ay naka-print sa itaas ng mga resulta, ang mataas na bahagi ay nasa isang naka-bold na typeface. Pinapayagan ng dalawang mga pindutan ng push na mag-navigate sa pagitan ng mga address, na nagpapakita ng 16 mga address nang paisa-isa. Kung sakaling may napansin na aparato, mai-print ang W upang maipakita ito bilang isang pagsulat na address at ipapakita ang R kung sakaling ito ay isang address ng pagbabasa. Kung sakaling walang napansin sa address na iyon, isang hyphen (-) ay ipapakita sa screen.

Hakbang 1: Mga Kagamitan

Mga Kagamitan
Mga Kagamitan
Mga Kagamitan
Mga Kagamitan

Pagpipilian 1

1 x Arduino UNO

1 x 16x02 LCD screen

1x 10K potensyomiter

1x 330 ohm risistor

3x Mga pindutan ng push

Mga kable ng jumper

1x I2C level shifter (wala sa larawan ng mga materyales)

Pagpipilian 2

1 x Arduino UNO

LCD Keypad Shield (hindi gagamitin ang mga pindutan sa kalasag)

3x Mga pindutan ng push

Mga kable ng jumper

1x I2C level shifter (wala sa larawan ng mga materyales)

Ang Opsyon 2 ay ang itatayo sapagkat iyon ang nasa kamay ko sa ngayon. Ang antas ng shifter ay isang mahalagang bahagi ng circuit dahil sa kasalukuyan ang karamihan sa mga aparato ay gumagamit ng 3.3V lohika at ang 5V mula sa Arduino ay nakakasira sa kanila.

(Sa mga larawan, hindi kinakailangan ang naka-cross out na materyal.)

Hakbang 2: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Ang circuit ay medyo tuwid pasulong, gamit ang karaniwang pinout para sa mga halimbawa ng Arduino para sa LCD, ang mga default na pin para sa I2C at 3 ekstrang mga pin para sa mga pushbutton.

Kung sakaling gagamitin mo ang LCD Keypad Shield, ang pinout para sa LCD ay nagbabago ngunit isinasaalang-alang na sa loob ng code. Ang mga pindutan ng LCD Keypad Shield ay hindi ginagamit sapagkat nangangailangan sila ng isang paraan ng pagbobotohan ng analog na pumipigil sa pagiging tugma sa pagitan ng dalawang posibleng mga circuit ng pagpapatupad (Shield at mag-iisa na LCD)

Hakbang 3: Code

Code
Code

Sakaling magamit ang LCD Keypad Shield, ang #define LCD_SHIELD ay dapat iwanang hindi komportable sa simula ng sketch. Kung hindi man, puna ito upang magamit ang unang diagram.

Hakbang 4: Mga Konklusyon

Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon

Para sa pagsubok sa code at circuit, isang BQ32000 RTC chip at isang MMA8452Q accelerometer ang ginamit. Tulad ng makikita sa mga larawan, ang aparato ay nakakakita ng 4 na mga address: 0x3A at 0xD0 bilang mga address ng pagsulat, at 0x3B at 0xD1 bilang mga nabasa na address. Ang mga address na ito ay tumutugma sa mga test device kaya't gumagana ang code.

Nais kong pasalamatan ang mga mabait na batang babae sa Beijing Makerspace, Fu Yao at Liu Xin, sa pagtulong sa akin na makuha ang mga kinakailangang materyal para sa pagsubok sa proyektong ito sa isang maikling paunawa.

Inirerekumendang: