Hvernig á að hafa samskipti við tvo Arduino með I2C samskiptareglunum?
I2C siðareglur Það er mikið notað á sviði rafeindatækni til að koma á samskiptum milli tækja. Þegar um er að ræða Arduino borð er þessi tækni sérstaklega gagnleg þegar þú vilt tengja og hafa samskipti við tvö eða fleiri borð við hvert annað. Í þessari grein munum við kanna grundvallaratriði I2C samskiptareglunnar og veita nákvæma skref fyrir skref til að koma á farsælum samskiptum milli tveggja Arduinos með því að nota þessa samskiptareglu.
Hvað er I2C samskiptareglan?
I2C samskiptareglur, einnig þekktar sem Inter-Integrated Circuit, eru samstilltar raðsamskiptareglur sem gera kleift að flytja gögn á milli tækja yfir tvær línur: gagnalínu (SDA) og klukku (SCL). I2C er mikið notað vegna þess einfaldleiki og skilvirkni í samskiptum við mörg tæki tengd á sama strætó.
Configuración de hardware
Áður en byrjað er að vinna með I2C samskiptareglur er mikilvægt að ganga úr skugga um að þú sért með viðeigandi vélbúnað. Í þessu tilfelli þurfum við tvö Arduino borð og nauðsynlegar snúrur til að tengja þau. Að auki verðum við að ákveða hvaða stjórn mun starfa sem húsbóndi og hver verður þrællinn í samskiptum.
Hugbúnaðarstillingar
Þegar við höfum vélbúnaðarstillingarnar tilbúnar þurfum við að undirbúa hugbúnaðinn á Arduino borðunum. Til að gera þetta munum við nota Wire bókasafnið, innifalið í Arduino IDE, sem veitir okkur nauðsynlegar aðgerðir til að innleiða I2C siðareglur. Á hvert borð verðum við að hlaða forriti sem frumstillir I2C samskipti og skilgreinir hvort það muni starfa sem herra eða þræll.
Comunicación I2C
Þegar við höfum stillt vélbúnað og hugbúnað á báðum borðum getum við byrjað að koma á I2C samskiptum. Þetta felur í sér að senda og taka á móti gögnum yfir SDA og SCL línurnar. Skipstjóri kemur af stað samskiptum með því að senda áfangastað til þrælsins. Í kjölfarið geta bæði tækin sent og tekið á móti gögnum tvíátt.
Að lokum er I2C samskiptareglan frábær kostur til að koma á samskiptum milli tveggja Arduino borða. Í gegnum þessa grein höfum við kannað grunnatriði þessarar samskiptareglur og veitt skref fyrir skref að setja upp og koma á farsælum samskiptum. Nú er röðin komin að þér að koma þessari þekkingu í framkvæmd og byggja enn flóknari verkefni sem krefjast þess að tengja mörg Arduino tæki.
– Kynning á I2C samskiptareglunum um Arduino
I2C samskiptareglur, einnig þekktar sem Inter-Integrated Circuit, er raðsamskiptareglur sem notuð eru til að tengja mörg rafeindatæki á sameiginlegum strætó. Þetta þýðir að við getum notað þessa samskiptareglu til að tengja tvö eða fleiri Arduino töflur og leyfa þeim að eiga samskipti sín á milli. I2C samskipti eru tilvalin þegar leitast er við að tengja tæki í stuttri fjarlægð, þar sem það þarf aðeins tvær snúrur til að senda. gögn. Að auki er það mjög áreiðanleg og mikið notuð samskiptareglur í rafeindaiðnaðinum.
Til að koma á I2C-samskiptum milli tveggja Arduino-borða þurfum við að stilla meistara og einn eða fleiri þræla. Húsbóndinn mun bera ábyrgð á að hefja og stjórna samskiptum, en þrælarnir munu svara beiðnum húsbóndans. Þegar tengingunni hefur verið komið á getum við sent og tekið á móti gögnum á milli tækjanna. Það er mikilvægt að hafa í huga að hvert tæki á I2C rútunni verður að hafa sérstakt heimilisfang sem gerir skipstjóranum kleift að bera kennsl á þau og hafa samskipti við þau eftir þörfum.
Kostur við I2C samskiptareglur er að hún leyfir tvíhliða samskipti, sem þýðir að bæði skipstjóri og þrælar geta sent og tekið á móti gögnum. Þetta opnar „heim möguleika“ hvað varðar upplýsingaskipti milli tækja. Að auki gerir þessi samskiptaregla einnig ráð fyrir „cascade-samskiptum“ sem þýðir að Við getum tengt marga þræla við einn meistara og þannig aukið möguleika kerfisins okkar. Með grunnþekkingu á forritunarmálum og notkun sérstakra bókasöfna fyrir I2C í Arduino er tiltölulega einfalt að koma á tengingu og byrja að skiptast á gögnum milli tækja sem nota þessari bókun.
- Arduino stillingar fyrir I2C samskipti
Ein skilvirkasta leiðin til að hafa samskipti á milli tveggja Arduinos er að nota I2C samskiptareglur, eða Inter-Integrated Circuit. Þessi samskiptareglur leyfa samstillt raðsamskipti milli margra tækja með því að nota aðeins tvær snúrur, eina fyrir gagnaflutning (SDA) og aðra fyrir klukkusamstillingu (SCL). Að stilla Arduinos til að nota I2C samskiptareglur er frekar einfalt og býður upp á marga kosti hvað varðar einfaldleika og skilvirkni í samskiptum.
Til að stilla Arduino fyrir I2C samskipti, þurfum við fyrst að skilgreina hlutverk hvers Arduino, það er hvort hann muni starfa sem húsbóndi eða þræll. Næst tengjum við báða Arduino með því að nota SDA og SCL snúrur sem samsvara hverju tæki. Það er mikilvægt að tryggja að báðir Arduino séu tengdir við jörðu (GND) til að koma á sameiginlegri spennuviðmiðun.
Þegar við höfum tengt Arduinos líkamlega, verðum við að forrita samsvarandi kóða í hverjum þeirra. Á Arduino meistaranum, við notum Wire.h bókasafnið til að hefja I2C samskipti, stilla æskilega samskiptatíðni. Síðan getum við sent og tekið á móti gögnum með því að nota aðgerðir sem safnið býður upp á, eins og Wire.beginTransmission() til að hefja sendingu og Wire. skrifa() til að senda gögn. Á þrælnum ArduinoVið notum líka Wire.h bókasafnið til að hefja samskipti og stilla truflunaraðgerð sem verður ræst þegar I2C sendingu er móttekin. Inni í þessari aðgerð getum við notað Wire.available() aðgerðina til að athuga hvort gögn séu tiltæk og Wire.read() aðgerðina til að taka á móti gögnunum sem skipstjórinn sendir.
Að stilla Arduinos fyrir I2C samskipti er skilvirk og einföld leið til að koma á raðsamskiptum milli margra tækja. Þessi samskiptaregla býður upp á tiltölulega háan samskiptahraða og krefst lágmarks fjölda snúra, sem einfaldar tenginguna og minnkar stærð rafrásanna. Með því að fylgja skrefunum sem nefnd eru hér að ofan getum við komið á sléttum og öruggum samskiptum milli tveggja Arduino með I2C samskiptareglunum. Nú ertu tilbúinn til að byrja að þróa flóknari verkefni sem krefjast samspils á milli mörg tæki!
– Líkamleg tenging Arduino tækja með I2C
I2C samskiptareglan er a skilvirk leið og vinsæl leið til að tengja Arduino tæki við hvert annað. Það leyfir tvíátta gagnasamskipti með því að nota aðeins tvær snúrur, sem gerir það auðvelt að tengja mörg tæki á neti. Þessi líkamlega tenging í gegnum I2C er byggð á pari af snúrum, einn fyrir gagnaflutning (SDA) og annar fyrir klukkuna (SCL). Með þessari tengingu er hægt að koma á rauntímasamskiptum milli tveggja Arduino fljótt og auðveldlega.
Til að nota I2C samskiptareglur á Arduino þarf að stilla eina af tækjunum sem húsbóndi og hinn sem þræll. Húsbóndinn ber ábyrgð á að koma af stað og stjórna samskiptum, en þrællinn bíður eftir fyrirmælum frá húsbóndanum og bregst við í samræmi við það. Það er mikilvægt að koma á einstakt heimilisfang fyrir hvert þrælatæki á I2C netinu til að forðast samskiptaárekstra.
Þegar líkamlega tengingin og meistara-þrælahlutverkin hafa verið stillt geta Arduino tæki skiptst á gögnum með því að nota I2C samskiptareglur. Þetta gerir kleift að senda og taka á móti upplýsingum eins og skynjaragildum, skipunum og hvers kyns öðrum gögnum sem nauðsynleg eru til notkunar tengdra tækja. Að auki leyfir I2C samskiptareglur tengingu nokkurra þrælatækja á sama neti, sem gefur möguleika á að auka getu Arduino á stigstærðan og sveigjanlegan hátt.
– Koma á I2C samskiptum milli Arduinos
I2C (Inter-Integrated Circuit) samskiptareglur eru einföld og skilvirk leið til að koma á samskiptum á milli tveggja eða fleiri Arduino tækja. Þessi samskiptaregla er byggð á meistara-þræla stillingu, þar sem einn af Arduinos virkar sem skipstjóri sem byrjar og stjórnar samskiptum, en hinir starfa sem þrælar sem taka við og bregðast við skipunum frá skipstjóra. Næst munum við sýna þér hvernig á að koma á I2C samskiptum milli tveggja Arduinos.
Til að byrja þarftu að tengja Arduinos með því að nota el bus I2C. Til að gera þetta verður þú að tengja SDA (Serial Data) og SCL (Serial Clock) pinna hvers Arduino. SDA pinninn er notaður til að senda og taka á móti gögnum og SCL pinninn er notaður til að samstilla samskipti. Þegar þú hefur tengt snúrurnar þarftu að stilla heimilisföng tækjanna. Hver Arduino verður að hafa einstakt heimilisfang til að aðgreina þá. Þú getur úthlutað þessum heimilisföngum í kóða hvers tækis með því að nota aðgerðina Wire.begin().
Þegar þú hefur komið á tengingum og heimilisföng tækisins geturðu byrjað að hafa samskipti á milli Arduinos með því að nota I2C samskiptareglur. Skipstjórinn getur beðið um gögn frá þrælnum með því að nota aðgerðina Wire.requestFrom(), og þrællinn getur svarað með því að senda gögnin með því að nota aðgerðina Wire.write(). Að auki geturðu notað aðgerðirnar Wire.available() y Wire.read() til að lesa móttekin gögn. Mundu að I2C samskipti gera þér kleift að flytja gögn af mismunandi gerðum, svo sem heiltölur, stafi og bætifylki.
– Innleiðing kóðans fyrir I2C samskipti
La kóða útfærslu fyrir I2C samskipti milli tveggja Arduino Þetta er ferli nauðsynlegt til að ná fram skilvirkri samskiptum milli beggja tækjanna. I2C (Inter-Integrated Circuit) samskiptareglur eru einföld og skilvirk samskiptaform þar sem aðaltæki getur stjórnað mörgum þrælatækjum í gegnum tvíátta gagnastrætó. Hér að neðan er dæmi um hvernig á að innleiða kóðann sem þarf til að koma á þessum samskiptum.
Til að byrja, það er nauðsynlegt skilgreindu pinnana sem verður notaðfyrir I2C samskipti á hverjum Arduino. Samkvæmt venju er hliðrænn pinna A4 notaður fyrir klukkumerkið (SCL) og pinna A5 er notaður fyrir gagnamerkið (SDA). Þessir pinnar verða að vera stilltir sem inntak og úttak í kóðanum. Að auki verður Wire.h bókasafnið að vera með til að hafa þær aðgerðir og aðferðir sem nauðsynlegar eru til að takast á við I2C samskiptareglur.
Þegar pinnar og bókasafn hafa verið stillt er nauðsynlegt að frumstilla I2C samskipti á báðum Arduino. Til að gera þetta er aðgerðin notuð Wire.begin() í kóðanum. Kalla verður á þessa aðgerð í setup() hvers Arduino til að tryggja að samskiptin séu rétt komið á. Þegar samskipti hafa verið frumstillt getur Arduino meistarinn sent og tekið á móti gögnum í gegnum I2C rútuna með því að nota þær aðgerðir sem eru tiltækar á bókasafninu.
– Flutningshraðasjónarmið í I2C samskiptum
Flutningshraðasjónarmið í I2C samskiptum
I2C samskiptareglur eru vinsæll kostur fyrir samskipti milli tveggja Arduinos vegna einfaldleika og skilvirkni. Hins vegar, þegar unnið er með þessa samskiptareglu, er mikilvægt að hafa í huga flutningshraðann. Hraði hefur bein áhrif á þann tíma sem það tekur að senda upplýsingar á milli tækja. tvö tæki, svo sem er nauðsynlegt greina og laga þessa færibreytu á viðeigandi hátt til að tryggja áreiðanleg samskipti.
Í fyrsta lagi er mikilvægt að skilja hvernig flutningshraðinn virkar í I2C samskiptareglunum.. Þessi hraði vísar til fjölda bita sem hægt er að senda á sekúndu. Ef um er að ræða samskipti milli tveggja Arduino, verða bæði tækin að vera stillt með sama hraða þannig að þau geti átt rétt samskipti. Auk þess getur hraðinn verið breytilegur eftir Arduino gerðinni sem notuð er, svo það er mikilvægt að skoða opinber skjöl til að vita hraðatakmarkanir hvers tækis.
Annar þáttur sem þarf að taka tillit til eru líkamlegar takmarkanir sem geta haft áhrif á flutningshraðann.. Lengd snúra sem notaðir eru til að tengja tæki, sem og rafsegultruflanir, geta haft áhrif á áreiðanleika samskipta á miklum hraða. Í sumum tilfellum getur verið nauðsynlegt að nota styttri snúrur eða jafnvel nota hlífðartækni til að lágmarka þessar tegundir vandamála. Það er líka mikilvægt að hafa í huga að flutningshraðinn getur haft áhrif á orkunotkun tækjanna og því er ráðlegt að stilla hann út frá sérþörfum verkefnisins.
Í stuttu máli, þegar þú sendir tvo Arduinos með I2C samskiptareglum, er mikilvægt að hafa í huga flutningshraðann. Rétt aðlögun þessarar breytu tryggir ekki aðeins áreiðanleg samskipti, heldur hámarkar einnig afköst kerfisins. Með því að skilja hvernig flutningshraðinn virkar og taka tillit til líkamlegra takmarkana er hægt að stilla I2C samskiptareglurnar á réttan hátt og ná farsælum samskiptum milli tækja.
- Bilanaleit og ráðleggingar fyrir I2C samskipti
Úrræðaleitog ráðleggingar fyrir I2C samskipti
Í þessari færslu munum við sýna þér nokkrar algengar lausnir á I2C samskiptavandamálum milli tveggja Arduino borða, auk nokkurra ráðlegginga til að tryggja skilvirka gagnaflutning.
Eitt af algengustu vandamálunum í I2C samskiptum er skortur á líkamlegri tengingu. Gakktu úr skugga um að snúrurnar séu rétt tengdar við SDA og SCL pinna beggja borða. Athugaðu einnig að uppdráttarviðnámið sé rétt tengt á milli SDA og SCL pinna og veituspennu.
Annað hugsanlegt vandamál gæti verið rangt I2C vistfang. Hvert tæki sem er tengt við I2C strætó verður að hafa einstakt heimilisfang. Ef þú ert að nota mörg tæki á sama strætó skaltu ganga úr skugga um að hvert tæki hafi einstakt heimilisfang og að heimilisfangið sé rétt stillt í kóðanum þínum. Athugaðu einnig hvort árekstrar séu á milli heimilisfönga tækisins og gakktu úr skugga um að það sé engin tvítekning.
Hér eru nokkrar tillögur til að bæta I2C samskipti:
1. Notaðu stuttar, vandaðar snúrur: Langar eða lélegar snúrur geta komið fyrir truflunum í I2C merkið. Notaðu stuttar, góðar snúrur til að lágmarka þessa truflun.
2. Settu uppdráttarviðnám: Uppdráttarviðnámin hjálpa til við að stilla rökfræði hátt ástand á SDA og SCL pinna þegar ekki er verið að knýja þá. Þetta hjálpar til við að viðhalda stöðugu merki og forðast samskiptavandamál.
3. Gakktu úr skugga um að þú hafir nægan biðtíma: Þegar gögn eru send yfir I2C strætó er mikilvægt að tryggja að nægur biðtími sé á milli sendinga. Þetta gefur tækjunum nægan tíma til að vinna úr mótteknum gögnum áður en þau fá ný gögn.
Mundu að I2C samskipti geta verið áhrifarík leið til að tengja mörg Arduino tæki, en það er mikilvægt að vera meðvitaður um þessi algengu vandamál og fylgja ráðleggingunum sem nefnd eru hér að ofan til að tryggja slétt samskipti.
– Kostir og gallar þess að nota I2C samskiptareglur á Arduino
Kostir þess að nota I2C samskiptareglur á Arduino
Einn helsti kosturinn við að nota I2C samskiptareglur á Arduino er hæfni þess til að tengja mörg tæki á einni samskiptarútu. Þetta þýðir að við getum haft nokkra Arduino í samskiptum við hvert annað, deilt upplýsingum og unnið á samræmdan hátt. Að auki er I2C samskiptareglan mjög skilvirk í gagnaflutningi, sem gerir okkur kleift að senda upplýsingar hratt og áreiðanlega.
Annar mikilvægur kostur er einfaldleiki þess í framkvæmd. I2C samskiptareglur notar aðeins tvo tengivíra (SDA og SCL) fyrir samskipti, sem gerir það auðvelt að stilla og tengja. Að auki býður samskiptareglan upp á mikinn sveigjanleika hvað varðar gagnaflutningshraða, sem gerir okkur kleift að laga hana að sérstökum þörfum okkar.
Ókostir þess að nota I2C samskiptareglur á Arduino
Þó að I2C samskiptareglan bjóði upp á marga kosti, þá hefur hún einnig nokkrar takmarkanir sem við verðum að taka tillit til. Einn af ókostunum er að lengd samskiptarútunnar er takmörkuð af viðnám og afkastagetu snúranna sem notaðar eru. Þetta þýðir að eftir því sem lengd kapalsins eykst eykst möguleikinn á samskiptavillum líka.
Annar ókostur er lítill gagnaflutningshraði miðað við aðrar samskiptareglur, svo sem SPI. Þetta getur verið galli í forritum sem krefjast flutnings á miklu magni upplýsinga. í rauntíma.
Niðurstöður
Í stuttu máli er I2C samskiptareglan frábær valkostur til að miðla tveimur Arduinos vegna kosta þess við fjöltengingu, skilvirkni í gagnaflutningi og einfaldleika í framkvæmd. Hins vegar verðum við að taka tillit til takmarkana þess hvað varðar lengd strætó og flutningshraða. Ef forritin okkar þurfa ekki mikið magn af rauntímagögnum eða þurfa ekki langtímasamskipti, gæti I2C samskiptareglan verið kjörinn kostur. Það er mikilvægt að taka tillit til sérstakra þarfa okkar áður en þú velur viðeigandi samskiptareglur fyrir Arduino verkefnin okkar.
Ég er Sebastián Vidal, tölvuverkfræðingur með brennandi áhuga á tækni og DIY. Ennfremur er ég skapari tecnobits.com, þar sem ég deili kennsluefni til að gera tækni aðgengilegri og skiljanlegri fyrir alla.