INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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
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
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
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
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.