Meriv çawa du Arduino bi protokola I2C re têkilî daynin?
Protokola I2C Ew bi berfirehî di warê elektronîkî de tê bikar anîn da ku pêwendiyê saz bike di navbera cîhazan de. Di mijara panelên Arduino de, ev teknolojî bi taybetî bikêr e dema ku hûn dixwazin du an bêtir panelan bi hev re girêdin û ragihînin. Di vê gotarê de, em ê bingehên protokola I2C bikolin û gav-bi-gav bi hûrgulî peyda bikin da ku pêwendiyek serfiraz di navbera du Arduinos de bi karanîna vê protokolê saz bikin.
Protokola I2C çi ye?
Protokola I2C, wekî Circuit Inter-Integrated jî tê zanîn, protokolek pêwendiya serial a hevdem e ku destûrê dide veguheztina daneyan di navbera cîhazan de li ser du rêzan: Xetek daneyê (SDA) û demjimêrek (SCL). I2C ji ber wê pir tê bikar anîn. sadebûn û karîgerî di danûstendina bi gelek cîhazên ku li ser heman otobusê ve girêdayî ne.
Configuración de hardware
Berî ku hûn bi protokola I2C re dest bi xebatê bikin, girîng e ku hûn pê ewle bibin ku hûn amûrek guncan heye. Di vê rewşê de, ji bo girêdana wan du panelên Arduino û kabloyên pêwîst hewce ne. Wekî din, divê em diyar bikin ku dê kîjan panel dê wekî serwer û kîjan dê bibe xulamê ragihandinê.
Configuración de software
Gava ku me veavakirina hardware amade kir, em ê hewce ne ku nermalavê li ser panelên Arduino amade bikin. Ji bo vê yekê, em ê pirtûkxaneya Wire, ku di Arduino IDE-yê de ye, bikar bînin, ku ji me re fonksiyonên pêwîst peyda dike da ku protokola I2C bicîh bîne. Li ser her panelê, divê em bernameyek ku pêwendiya I2C dest pê dike û diyar dike ka ew ê wekî master an xulam tevbigere bar bike.
Comunicación I2C
Dema ku me hardware û nermalavê li ser her du panelan mîheng kir, em dikarin dest bi avakirina ragihandina I2C bikin. Ev yek şandin û wergirtina daneyan li ser xetên SDA û SCL pêk tîne. Serwer bi şandina navnîşanek meqsedê ji xulam re dest bi danûstandinê dike.Piştî vê yekê, her du cîhaz dikarin daneyan bi dualî veguhezînin û bistînin.
Di encamê de, protokola I2C vebijarkek hêja ye ku di navbera du panelên Arduino de danûstendinê saz bike. Bi rêya vê gotarê, me bingehên vê protokolê lêkolîn kir û pêşkêş kir gav bi gav danûstendinek serketî saz bikin û saz bikin. Naha, dora we ye ku hûn vê zanînê bixin pratîkê û projeyên hê tevlihevtir ava bikin ku hewceyê girêdana gelek amûrên Arduino hewce ne.
- Danasîna protokola I2C li ser Arduino
Protokola I2C, ku wekî Circuit-Integrated jî tê zanîn, protokolek pêwendiya serial e ku ji bo girêdana gelek amûrên elektronîkî li ser otobusek hevpar tê bikar anîn. Ev tê wê wateyê ku em dikarin vê protokolê bikar bînin da ku du an bêtir panelên Arduino ve girêbidin û rê bidin wan ku bi hevûdu re têkilî daynin. Têkiliya I2C îdeal e dema ku meriv cîhazan li ser mesafeyek kurt ve girêbide, ji ber ku ew tenê du kabloyan hewce dike ku daneyan ragihîne. Wekî din, ew di pîşesaziya elektronîkî de protokolek pir pêbawer û pir tê bikar anîn e.
Ji bo sazkirina pêwendiya I2C di navbera du panelên Arduino de, em ê hewce bikin ku axayek û yek an bêtir xulam mîheng bikin. Mamoste dê ji destpêkirin û kontrolkirina ragihandinê berpirsiyar be, dema ku xulam dê bersivê bidin daxwazên axayê. Dema ku pêwendiyek hate saz kirin, em dikarin daneyan di navbera cîhazan de bişînin û bistînin. Girîng e ku bala xwe bidinê ku her amûrek li ser otobusa I2C divê navnîşek yekta hebe, ku destûrê dide master ku wan nas bike û li gorî hewcedariyê bi wan re têkilî dayne.
Feydeyek protokola I2C ev e ku ew rê dide danûstendina du-alî, tê vê wateyê ku hem master û hem jî xulam dikarin daneyan bişînin û bistînin. Ev di warê danûstendina agahdariyê de di navbera cîhazan de "cîhanek îmkanan" vedike. Wekî din, ev protokol di heman demê de rê dide danûstendina cascade jî, ku tê vê wateyê ku Em dikarin gelek xulam bi yek masterê ve girêbidin, bi vî rengî kapasîteyên pergala xwe berfireh dikin. Bi hin zanîna bernamesaziyê ya bingehîn û karanîna pirtûkxaneyên taybetî yên ji bo I2C li Arduino, bi nisbî hêsan e ku meriv pêwendiyek saz bike û dest bi danûstendina daneyan di navbera cîhazên ku bikar tînin de vê protokolê.
- Ji bo ragihandina I2C veavakirina Arduino
Yek ji awayên herî bikêrhatî yên danûstendina di navbera du Arduinos de karanîna protokola I2C, an Circuit-Integrated ye. Ev protokol rê dide danûstendina serial a hevdem a di navbera gelek cîhazan de ku tenê du kabloyan bikar tînin, yek ji bo veguheztina daneyê (SDA) û ya din jî ji bo hevdengkirina demjimêrê (SCL). Veavakirina Arduinos ji bo karanîna protokola I2C pir hêsan e û di warê sadebûn û karbidestiya ragihandinê de gelek feydeyan peyda dike.
Ji bo mîhengkirina Arduino ji bo ragihandina I2C, em pêşî hewce ne ku rola her Arduino diyar bikin, ango, gelo ew ê wekî axayek an xulam tevbigere. Dûv re, em herdu Arduinos bi karanîna kabloyên SDA û SCL yên ku ji her cîhazê re têkildar in ve girêdidin. Girîng e ku meriv pê ewle bibe ku her du Arduinos bi erdê (GND) ve girêdayî ne da ku referansek voltaja hevbeş saz bikin.
Gava ku me bi fîzîkî Arduinos ve girêda, divê em koda têkildar di her yek ji wan de bername bikin. Li ser masterê Arduino, em pirtûkxaneya Wire.h bikar tînin da ku pêwendiya I2C dest pê bikin, frekansa ragihandinê ya xwestî saz bikin. Dûv re, em dikarin daneyan bi karanîna fonksiyonên ku ji hêla pirtûkxaneyê ve hatine peyda kirin bişînin û bistînin, wek Wire.beginTransmission() da ku dest bi veguheztinek û Wire bikin. binivîse() ji bo şandina daneyê. Li ser xulamê ArduinoEm di heman demê de pirtûkxaneya Wire.h bikar tînin ku destpêkirina ragihandinê û mîhengkirina fonksiyona qutbûnê ya ku dê gava ku veguhezek I2C were girtin were dest pê kirin. Di hundurê vê fonksiyonê de, em dikarin fonksiyona Wire.available() bikar bînin da ku kontrol bikin ka dane berdest in û fonksiyona Wire.read() bikar bînin da ku daneyên ku ji hêla master ve hatî şandin bistînin.
Veavakirina Arduinos ji bo pêwendiya I2C rêgezek bikêr û hêsan e ku meriv pêwendiya serial di navbera gelek cîhazan de saz bike. Ev protokol leza ragihandinê ya nisbeten bilind pêşkêşî dike û hejmareke hindiktirîn kabloyan hewce dike, pêwendiyê hêsan dike û mezinahiya dorhêlan kêm dike. Bi şopandina gavên ku li jor hatine destnîşan kirin, em dikarin bi karanîna protokola I2C di navbera du Arduino de pêwendiyek nerm û ewledar saz bikin. Naha hûn amade ne ku dest bi pêşvebirina projeyên tevlihevtir ên ku pêwendiya di navbera wan de hewce ne bikin gelek cîhaz!
- Girêdana laşî ya cîhazên Arduino ku I2C bikar tînin
Protokola I2C a rêbazek bi bandor û awayê populer ku cîhazên Arduino bi hevûdu ve girêdidin. Ew rê dide danûstendina daneya du-alî ku tenê du kabloyan bikar tîne, girêdana gelek cîhazên li ser torê hêsan dike. Ev pêwendiya laşî ya bi I2C ve li ser cotek kabloyan e, yek ji bo veguheztina daneyê (SDA) û ya din jî ji bo demjimêrê (SCL). Bi vê pêwendiyê re, gengaz e ku meriv di navbera du Arduinos de zû û bi hêsanî pêwendiya rast-demê saz bike.
Ji bo ku protokola I2C li ser Arduino bikar bînin, pêdivî ye ku yek were mîheng kirin ji cîhazan wek axa û yê din wek xulam. Xwedî berpirsiyarê destpêkirin û kontrolkirina ragihandinê ye, dema ku xulam li benda talîmatên axayê ye û li gorî wê bersivê dide. Girîng e ku ji bo her amûrek xulamê li ser tora I2C navnîşek bêhempa were damezrandin da ku ji nakokiyên pêwendiyê dûr nekevin.
Dema ku girêdana laşî û rolên master-xulam têne mîheng kirin, cîhazên Arduino dikarin bi karanîna protokola I2C daneyan biguhezînin. Ev rê dide şandin û wergirtina agahdariya wekî nirxên sensor, ferman, û her cûre daneyên din ên ku ji bo xebata cîhazên girêdayî hewce ne. Digel vê yekê, protokola I2C destûrê dide girêdana çend cîhazên xulamê li ser heman torê, ku îmkana berfirehkirina kapasîteyên Arduino bi rengek berbiçav û maqûl peyda dike.
- Sazkirina pêwendiya I2C di navbera Arduinos de
Protokola I2C (Inter-Integrated Circuit) rêyek hêsan û bikêr e ku meriv pêwendiyê di navbera du an bêtir amûrên Arduino de saz bike. Ev protokol li ser bingeha mîhengek master-xulam pêk tê, ku yek ji Arduinos wekî axayê ku pêwendiyê dide destpêkirin û kontrol dike tevdigere, lê yên din wekî xulam tevdigerin ku fermanên ji axayê distînin û bersiv didin. Dûv re, em ê nîşanî we bidin ka meriv çawa di navbera du Arduinos de pêwendiya I2C saz dike.
Ji bo ku hûn dest pê bikin, hûn ê hewce bikin ku Arduinos bikar bînin el bus I2C. Ji bo vê yekê, divê hûn Pînên SDA (Daneyên Rêjeyî) û SCL (Daeta Rêjeyî) ya her Arduino girêdin. Pîneya SDA ji bo şandin û wergirtina daneyan, û pina SCL ji bo hevdemkirina ragihandinê tê bikar anîn. Piştî ku we kabloyan ve girêda, hûn ê hewce bikin ku navnîşanên cîhazan bicîh bikin. Pêdivî ye ku her Arduino navnîşek yekta hebe ku wan cûda bike. Hûn dikarin van navnîşan di koda her cîhazê bi karanîna fonksiyonê veqetînin Wire.begin().
Piştî ku we girêdan û navnîşanên cîhazê saz kirin, hûn dikarin bi karanîna protokola I2C-ê di navbera Arduinos de dest pê bikin. Serwer dikare bi karanîna fonksiyona daneyan ji xulam bixwaze Wire.requestFrom(), û xulam dikare bi şandina daneyan bi karanîna fonksiyonê bersiv bide Wire.write(). Wekî din, hûn dikarin fonksiyonan bikar bînin Wire.available() y Wire.read() ji bo xwendina daneyên wergirtî. Bînin bîra xwe ku danûstendina I2C dihêle hûn daneyên cûrbecûr, wekî jimar, karakter û rêzikên byte veguhezînin.
- Pêkanîna ya kodê ji bo ragihandina I2C
La pêkanîna kodê ji bo pêwendiya I2C di navbera du Arduino de Ew pêvajoyek e ji bo bidestxistina danûstendina bibandor di navbera her du cîhazan de girîng e. Protokola I2C (Inter-Integrated Circuit) rengek hêsan û bikêrhatî ya ragihandinê ye ku tê de amûrek master dikare bi otobusek daneya dualî ve gelek amûrên xulamê kontrol bike. Li jêr mînakek e ku meriv çawa koda ku ji bo sazkirina vê pêwendiyê hewce dike bicîh tîne.
Ji bo destpêkirinê, pêdivî ye pîneyan diyar bike ku dê ji bo ragihandina I2C li ser her Arduino were bikar anîn. Li gorî peymanê, pina analog A4 ji bo sînyala demjimêrê (SCL) û pin A5 ji bo sînyala daneyê (SDA) tê bikar anîn. Pêdivî ye ku ev pin di kodê de bi rêzê ve wekî têketin û derketinê bêne mîheng kirin. Wekî din, pêdivî ye ku pirtûkxaneya Wire.h tê de hebe ku fonksiyon û rêbazên ku ji bo birêvebirina protokola I2C hewce ne hebin.
Dema ku pin û pirtûkxane têne mîheng kirin, pêdivî ye ku meriv ragihandina I2C dest pê bike li ser herdu Arduino. Ji bo vê yekê, fonksiyonê tê bikaranîn Wire.begin() Di kodê de. Divê ev fonksiyon di mîhengê()ya her Arduino de bête gazî kirin da ku pê ewle bibe ku danûstendin rast hatîye saz kirin. Dema ku ragihandinê dest pê kir, masterê Arduino dikare bi karanîna fonksiyonên ku di pirtûkxaneyê de hene bişîne û bişîne ser otobusê I2C.
- Di pêwendiya I2C de ramanên rêjeya veguheztinê
Di Têkiliya I2C de Nîşanên Rêjeya Veguheztinê
Protokola I2C ji ber sadebûn û bikêrhatina wê ji bo danûstendina di navbera du Arduinos de bijarek populer e. Lêbelê, dema ku bi vê protokolê re dixebitin, girîng e ku meriv leza veguhastinê bifikire. Lez rasterast bandorê li dema ku ew ji bo veguheztina agahdarî di navbera cîhazan de digire dike. du cîhaz, wisa ku pêwîst e vê parameterê analîz bikin û bi guncan verast bikin da ku pêwendiya pêbawer peyda bikin.
Pêşîn, girîng e ku meriv fêm bike ka leza veguhastinê di protokola I2C de çawa dixebite.. Ev leza hejmara bitsên ku di çirkeyê de têne şandin vedibêje. Di rewşa danûstendina di navbera du Arduinos de, divê her du cîhaz bi heman lezê werin mîheng kirin da ku ew rast bi hev re têkilî daynin. Wekî din, dibe ku lez li gorî modela Arduino ya ku tê bikar anîn cûda bibe, ji ber vê yekê girîng e ku hûn bi belgeyên fermî şêwir bikin da ku hûn bizanin sînorên leza her cîhazê.
Aliyek din ku divê were hesibandin tixûbên laşî ye ku dikare bandorê li leza veguhastinê bike.. Dirêjiya kabloyên ku ji bo girêdana cîhazan têne bikar anîn, û her weha destwerdana elektromagnetîk, dikare bandorê li pêbaweriya ragihandinê bi leza bilind bike. Di hin rewşan de, dibe ku hewce be ku kabloyên kurttir bikar bînin an jî teknîkên parastinê bikar bînin da ku van celeb pirsgirêkan kêm bikin. Di heman demê de girîng e were fikirîn ku leza veguheztinê dikare bandorê li ser xerckirina hêzê ya cîhazan bike, ji ber vê yekê tê pêşniyar kirin ku ew li ser hewcedariyên taybetî yên projeyê rast bikin.
Bi kurtahî, dema ku du Arduinos bi karanîna protokola I2C re têkilî daynin, pêdivî ye ku meriv leza veguheztinê bihesibîne Rast eyarkirina vê parameterê ne tenê pêwendiya pêbawer garantî dike, lê di heman demê de performansa pergalê jî xweş dike. Bi têgihiştina rêjeya veguheztinê çawa dixebite û sînorkirinên fizîkî li ber çavan tê girtin, gengaz e ku meriv protokola I2C bi rêkûpêk mîheng bike û pêwendiya serketî di navbera cîhazan de bi dest bixe.
- Pirsgirêk û pêşniyarên ji bo ragihandina I2C
Pirsgirêk û pêşniyarên ji bo ragihandina I2C
Di vê postê de, em ê ji bo pirsgirêkên pêwendiya I2C di navbera du panelên Arduino de hin çareseriyên hevpar nîşanî we bidin, û hem jî hin pêşniyaran ji bo misogerkirina veguheztina daneya bi bandor.
Yek ji pirsgirêkên herî gelemperî di ragihandina I2C de nebûna pêwendiya laşî ye. Piştrast bikin ku kablo bi rêkûpêk bi pinên SDA û SCL yên her du panelan ve hatine girêdan. Di heman demê de kontrol bikin ku berxwedêrên vekişandinê bi rast di navbera pinên SDA û SCL û voltaja dabînkirinê de têne girêdan.
Pirsgirêkek din a gengaz dibe ku navnîşek I2C ya çewt be. Her amûrek ku bi otobusa I2C ve girêdayî ye divê navnîşek yekta hebe. Ger hûn di heman otobusê de gelek cîhazan bikar tînin, pê ewle bin ku her amûr navnîşek yekta ye û ew navnîş di koda we de rast hatî mîheng kirin. Di heman demê de nakokiyên di navbera navnîşanên cîhazê de jî kontrol bikin û pê ewle bibin ku dubarebûn tune.
Li vir çend pêşniyar hene ku ji bo pêwendiya I2C çêtir bikin:
1. Kabloyên kurt û kalîteyê bikar bînin: Kabloyên bi kalîte dirêj an jî nebaş dikarin midaxeleyê bixin nav sînyala I2C. Ji bo kêmkirina vê mudaxeleyê kabloyên kurt û qalîteya baş bikar bînin.
2. Berxwedêrên kişandinê bi cih bikin: Berxwedêrên hilkişandinê dibin alîkar ku rewşa bilind a mantiqî li ser pinên SDA û SCL were danîn dema ku ew bi rengek çalak nayên ajotin. Ev dibe alîkar ku îşaretek bi îstîqrar bihêle û pirsgirêkên pêwendiyê dûr bixe.
3. Piştrast bikin ku we têra xwe dema bendê heye: Dema ku daneyan li ser otobusa I2C veguhezînin, girîng e ku meriv pê ewle bibe ku di navbera veguheztan de demek têr bendewariyê heye. Ev yek dihêle ku cîhazên têra xwe demek têra xwe bidin ku daneyên wergirtî berî ku daneya nû bistînin.
Bînin bîra xwe ku danûstendina I2C dikare ji bo girêdana gelek amûrên Arduino rêyek bi bandor be, lê girîng e ku hûn ji van pirsgirêkên hevpar haydar bin û pêşniyarên ku li jor hatine destnîşan kirin bişopînin da ku pêwendiyek bêkêmasî peyda bikin.
- Awantaj û dezawantajên karanîna protokola I2C li ser Arduino
Avantajên karanîna protokola I2C li ser Arduino
Yek ji feydeyên sereke yên karanîna protokola I2C li ser Arduino şiyana wê ye ku meriv gelek cîhazan li yek otobusek ragihandinê ve girêbide. Ev tê vê wateyê ku em dikarin çend Arduinos bi hevûdu re têkilî daynin, agahdarî parve bikin û bi rengek hevrêzî bixebitin. Wekî din, protokola I2C di veguheztina daneyê de pir bikêr e, ku rê dide me ku em agahdariya zû û pêbawer bişînin.
Avantajek din a girîng hêsaniya wê ya pêkanînê ye. Protokola I2C tenê du têlên girêdanê (SDA û SCL) ji bo danûstendinê bikar tîne, veavakirin û girêdana wê hêsan dike. Digel vê yekê, protokol di warê leza veguheztina daneyê de nermbûnek mezin pêşkêşî dike, ku dihêle em wê li gorî hewcedariyên xwe yên taybetî biguncînin.
Dezawantajên bikaranîna protokola I2C li ser Arduino
Her çend protokola I2C gelek avantajên pêşkêşî dike jî, hin hûrguliyên wê jî hene ku divê em li ber çavan bigirin. Yek ji kêmasiyan ev e ku dirêjahiya otobusa ragihandinê ji hêla berxwedan û kapasîteya kabloyên têne bikar anîn ve sînordar e. Ev tê wê wateyê ku her ku dirêjiya kabloyê zêde dibe, îhtîmala xeletiyên ragihandinê jî zêde dibe.
Dezawantajek din leza wê ya veguheztina daneyê kêm e li gorî protokolên ragihandinê yên din, wek SPI. Ev dikare di serîlêdanên ku hewceyê veguhestina pir mezin a agahdariyê de kêmasiyek be. di wextê rast de.
Encam
Bi kurtahî, protokola I2C ji ber avantajên wê yên girêdana pirjimar, jêhatîbûna di veguheztina daneyê, û sadebûna pêkanînê de ji bo ragihandina du Arduinos vebijarkek hêja ye. Lêbelê, divê em di warê dirêjahiya otobusê û leza veguheztinê de sînorên wê bihesibînin. Ger serîlêdanên me hewcedariyek mezin a daneya rast-ê ne hewce ne an jî pêwendiya dûr û dirêj hewce nake, dibe ku protokola I2C bijareya îdeal be. Berî ku hûn protokola ragihandinê ya guncan ji bo projeyên me yên Arduino hilbijêrin, girîng e ku em hewcedariyên me yên taybetî bihesibînin.
Ez Sebastián Vidal im, endezyarek komputerê ku ji teknolojiyê û DIY-ê dilşewat e. Wekî din, ez afirînerê wê me tecnobits.com, ku ez dersan parve dikim da ku teknolojiyê ji her kesî re bigihînim û têgihîştî bikim.