INHOUDSOPGAWE:

Arduino I2C Sniffer: 4 stappe
Arduino I2C Sniffer: 4 stappe

Video: Arduino I2C Sniffer: 4 stappe

Video: Arduino I2C Sniffer: 4 stappe
Video: Урок 26.3 Соединяем две arduino по шине I2C #iarduino 2024, November
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C is 'n seriële protokol wat gebruik word om 'n mikrobeheerder te kommunikeer met eksterne randapparatuur wat aan dieselfde stroombaan gekoppel is. Elke randapparaat moet 'n unieke ID -nommer hê met die naam adres wat gebruik word om dit as die bedoelde ontvanger van 'n gegewe boodskap te identifiseer. Die adresse word deur die vervaardiger van die toestel toegewys en kan meestal nie verander word nie. 'N Snuffelaar skandeer alle moontlike adresse op soek na gekoppelde toestelle en rapporteer diegene wat dit vind. Dit help om ongemerkte skyfies te identifiseer, aangesien die adres dan gegoogle kan word vir meer inligting oor die skyfie.

Hierdie toestel boots die gedrag van die Raspberry Pi i2cdetect -script na op 'n Arduino UNO, snuif al die moontlike i2c -adresse op soek na gekoppelde toestelle en druk die resultate mooi op 'n 16x02 LCD -skerm.

Om alles op die skerm te pas, word beide die hoë en die lae dele van die adres bo die resultate gedruk, en die hoogste gedeelte is met 'n vet lettertipe. Met twee drukknoppies kan u tussen die adresse navigeer, met 16 adresse op 'n slag. As 'n toestel opgespoor word, word W gedruk om dit as 'n skryfadres aan te dui, en R sal getoon word as dit 'n leesadres is. As daar niks by die adres opgespoor word nie, word 'n koppelteken (-) op die skerm vertoon.

Stap 1: materiaal

Materiaal
Materiaal
Materiaal
Materiaal

Opsie 1

1 x Arduino UNO

1 x 16x02 LCD -skerm

1x 10K potensiometer

1x 330 ohm weerstand

3x drukknoppies

Springkabels

1x I2C vlakverskakelaar (nie op materiaalfoto nie)

Opsie 2

1 x Arduino UNO

LCD -sleutelbordskerm (die knoppies op die skerm sal nie gebruik word nie)

3x drukknoppies

Springkabels

1x I2C vlakverskakelaar (nie op materiaalfoto nie)

Opsie 2 is die een wat gebou sal word, want dit is wat ek op die oomblik byderhand gehad het. Die vlakverskuiwing is 'n belangrike deel van die kring, aangesien die meeste toestelle deesdae 3.3V logika gebruik en die 5V van die Arduino dit beskadig.

(Op die foto's is die deurmekaar materiaal nie nodig nie.)

Stap 2: Skakel

Kring
Kring
Kring
Kring
Kring
Kring

Die kring is redelik reguit, met behulp van die standaard pinout vir die Arduino -voorbeelde vir die LCD, die standaard penne vir I2C en 3 ekstra penne vir die drukknoppies.

As u die LCD -sleutelbordskerm gebruik, verander die pinout vir die LCD, maar dit word reeds binne die kode oorweeg. Die knoppies van die LCD -sleutelbord word nie gebruik nie, omdat dit 'n analoog opnamemetode benodig wat die verenigbaarheid tussen die twee moontlike implementeringskringe (skild en losstaande LCD) verbreek

Stap 3: Kodeer

Kode
Kode

As die LCD -sleutelbordskerm gebruik word, moet #define LCD_SHIELD aan die begin van die skets sonder kommentaar gelaat word. Lewer andersins kommentaar daarop om die eerste diagram te gebruik.

Stap 4: Gevolgtrekkings

Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings

Vir die toets van die kode en stroombaan is 'n BQ32000 RTC -chip en 'n MMA8452Q -versnellingsmeter gebruik. Soos op die foto's gesien kan word, bespeur die toestel 4 adresse: 0x3A en 0xD0 as skryfadresse, en 0x3B en 0xD1 as leesadresse. Hierdie adresse stem ooreen met die toetstoestelle, sodat die kode werk.

Ek wil die vriendelike meisies by Beijing Makerspace, Fu Yao en Liu Xin bedank dat hulle my op so 'n kort kennisgewing gehelp het om die nodige materiaal vir die toets van hierdie projek te kry.

Aanbeveel: