Gbogbo nipa ọkọ akero Arduino I2C

Arduino I2C akero

con Arduino le ṣẹda nọmba nla ti awọn iṣẹ akanṣe bi o ti rii ti o ba ka Hwlibre, siseto microcontroller ni ọna ti o rọrun. Ṣugbọn laarin awọn afọwọṣe ati awọn isopọ oni nọmba ti igbimọ ohun elo ọfẹ, awọn kan wa ti o tun jẹ itumo aimọ si ọpọlọpọ awọn olubere, bii agbara gidi ti awọn isopọ PWM, SPI, awọn pinni RX ati TX ti ibudo tẹlentẹle, tabi ara I2C akero. Nitorinaa, pẹlu titẹsi yii o le mọ ohun gbogbo ti o nilo lati I2C.

con akero I2C o le sopọ ki o lo ọpọlọpọ awọn ẹrọ ẹnikẹta ti o ni iru ilana yii lati ṣe ibasọrọ pẹlu igbimọ Arduino. Laarin wọn, o le sopọ awọn accelerometers, awọn ifihan, kika, awọn kọmpasi, ati ọpọlọpọ awọn iyipo ti a ṣepọ diẹ sii o ṣeun si imọ-imọ-imọ-imọ-imọ-imọ-imọ-imọ-ọfẹ yii.

Kini I2C?

I2C n tọka si Circuit Iṣọpọ Iṣọpọ, iyẹn ni, Circuit ti a ṣopọpọ. O jẹ bosi ibaraẹnisọrọ ibaraẹnisọrọ ni tẹlentẹle ti o dagbasoke ni ọdun 1982 nipasẹ ile-iṣẹ Philips Semiconductors, eyiti o jẹ NXP Semiconductors loni lẹhin ti o ti yọ apakan yii kuro. Ni akọkọ o ti ṣẹda fun awọn tẹlifisiọnu ti ami iyasọtọ yii, lati ṣe ibaraẹnisọrọ ọpọlọpọ awọn eerun inu inu ọna ti o rọrun. Ṣugbọn lati ọdun 1990 I2C ti tan ati lilo nipasẹ ọpọlọpọ awọn aṣelọpọ.

Lọwọlọwọ lo nipasẹ ọpọlọpọ awọn chipmakers fun awọn iṣẹ pupọ. Atmel, ẹlẹda ti awọn microcontrollers fun awọn igbimọ Arduino, ṣafihan ifilọlẹ TWI (Ọlọpọọmba Meji Meji) fun awọn idi iwe-aṣẹ, botilẹjẹpe o jẹ aami si I2C. Ṣugbọn ni ọdun 2006, itọsi atilẹba ti pari ati pe ko tun wa labẹ aṣẹ lori ara, nitorinaa a ti tun lo ọrọ I2C (aami nikan ni o tẹsiwaju lati ni aabo, ṣugbọn imuse rẹ tabi lilo ọrọ naa ko ni ihamọ).

Awọn alaye imọ-ẹrọ akero I2C

I2C akero

El Bosi I2C ti di boṣewa ile-iṣẹ, ati pe Arduino ti ṣe imuse fun ibaraẹnisọrọ pẹlu awọn pẹẹpẹẹpẹ ti o nilo rẹ. O nilo awọn ila meji tabi awọn kebulu nikan fun iṣẹ rẹ, ọkan fun ifihan agbara aago (CLK) ati ekeji fun fifiranṣẹ data ni tẹlentẹle (SDA). Eyi jẹ anfani ni akawe si awọn ibaraẹnisọrọ miiran ti a fiwewe ọkọ akero SPI, botilẹjẹpe iṣẹ rẹ jẹ itumo diẹ sii ni eka nitori afikun iyika ti o nilo.

Lori ọkọ akero yii ẹrọ kọọkan ti o sopọ si o ni adirẹsi kan lo lati wọle si awọn ẹrọ wọnyi ni ọkọọkan. Adirẹsi yii wa titi nipasẹ ohun elo, ṣiṣatunṣe awọn idinku 3 to kẹhin nipasẹ awọn oluta tabi yipada DIP, botilẹjẹpe o tun le ṣee ṣe nipasẹ sọfitiwia. Ẹrọ kọọkan yoo ni adirẹsi alailẹgbẹ, botilẹjẹpe ọpọlọpọ ninu wọn le ni adirẹsi kanna ati ọkọ akero keji le nilo lati lo lati yago fun awọn ija tabi yi pada ti o ba ṣeeṣe.

Ni afikun, akero I2C ni a Iru faaji Ọkọ-Ẹrú, iyẹn ni, oluwa-ẹrú. Eyi tumọ si pe nigbati ibaraẹnisọrọ ba bẹrẹ nipasẹ ẹrọ oluwa, yoo ni anfani lati firanṣẹ tabi gba data lati ọdọ awọn ẹrú rẹ. Awọn ẹrú kii yoo ni anfani lati bẹrẹ ibaraẹnisọrọ, oluwa nikan ni o le ṣe, ati pe awọn ẹrú naa ko le ba ara wọn sọrọ taara laisi idasi oluwa naa.

Ti o ba ni ọpọlọpọ awọn olukọ lori bosi, ẹnikan nikan le ṣiṣẹ bi olukọ nigbakanna. Ṣugbọn ko tọ ọ, nitori iyipada ti olukọ n beere idiju giga kan, nitorinaa kii ṣe loorekoore.

Jeki ni lokan pe awọn oluwa pese ifihan agbara aago lati muuṣiṣẹpọ gbogbo awọn ẹrọ inu ọkọ akero. Iyẹn yọkuro iwulo fun ọmọ-ọdọ kọọkan lati ni iṣọ ti ara wọn.

Ilana Bosi I2C tun rii tẹlẹ lilo awọn alatako fifa soke ni awọn ila foliteji ipese (Vcc), botilẹjẹpe awọn alatako wọnyi kii ṣe deede pẹlu Arduino fa-soke nitori awọn ile-ikawe siseto bi Waya ṣe mu awọn ti inu ṣiṣẹ pẹlu awọn iye ti 20-30 k. Eyi le jẹ asọ ti o ga ju fun diẹ ninu awọn iṣẹ akanṣe, nitorinaa awọn egbegbe ti o ga soke ti ifihan yoo lọra, nitorinaa awọn iyara kekere ati awọn ijinna ibaraẹnisọrọ kukuru le ṣee lo. Lati ṣatunṣe pe o le nilo lati ṣeto awọn alatako fifa-soke ita lati 1k si 4k7.

Ibuwọlu

I2C ifihan agbara

 

La fireemu ibaraẹnisọrọ eyiti ifihan agbara ọkọ akero I2C jẹ ninu awọn idinku tabi awọn ipinlẹ (awọn ti a lo ni Arduino, nitori idiwọn I2C gba awọn miiran laaye):

  • 8 die-die, 7 ti wọn ti itọsọna ti ẹrọ ẹrú ti o fẹ lati wọle si lati firanṣẹ tabi gba data lati ọdọ rẹ. Pẹlu awọn idinku 7, to awọn adirẹsi oriṣiriṣi oriṣiriṣi 128 le ṣẹda, nitorinaa awọn ẹrọ 128 le jẹ oṣeeṣe lati wọle si, ṣugbọn 112 nikan ni a le wọle si, nitori 16 wa ni ipamọ fun awọn lilo pataki. Ati bit diẹ ti o tọka ti o ba fẹ firanṣẹ tabi gba ẹrú ẹrọ alaye.
  • O wa tun a afọwọsi bit, ti ko ba ṣiṣẹ lọwọ ibaraẹnisọrọ naa ko ni wulo.
  • Lẹhinna baiti data pe wọn fẹ lati firanṣẹ tabi gba nipasẹ awọn ẹrú. Baiti kọọkan, bi o ṣe mọ, jẹ awọn 8-bit. Akiyesi pe fun gbogbo 8-bit tabi 1 baiti data ti a firanṣẹ tabi gba, a nilo afikun awọn ifunni afọwọsi 18, adirẹsi, ati bẹbẹ lọ, eyiti o tumọ si pe ọkọ akero naa ni opin pupọ ni iyara.
  • Ohun ik bit ti afọwọsi ti ibaraẹnisọrọ.

Ni afikun, awọn igbohunsafẹfẹ aago fun awọn gbigbe jẹ 100 Mhz bi bošewa, biotilejepe ipo yiyara ni 400 Mhz wa.

Anfani ati ailagbara ti ọkọ akero I2C

Las awọn anfani Wọn jẹ:

  • Irọrun nipa lilo awọn ila meji nikan.
  • O ni awọn ilana lati mọ boya ifihan ti de akawe si awọn ilana ibaraẹnisọrọ miiran.

Las alailanfani Wọn jẹ:

  • Titẹ iṣẹtọ kekere gbigbe.
  • Kii ṣe ile oloke meji, iyẹn ni pe, o ko le firanṣẹ ati gba nigbakanna.
  • Ko lo iraja tabi eyikeyi iru ẹrọ ijerisi lati mọ boya awọn idinku data ti o gba ni o tọ.

 

 

I2C lori Arduino

Arduino I2C akero

En Arduino, da lori awoṣe, awọn pinni ti o le muu ṣiṣẹ lati lo akero I2C yii yatọ. Fun apere:

  • Arduino UNO, Nano, Mini Pro: A4 ti lo fun SDA (data) ati A5 fun SCK (aago).
  • Arduino Mega: pin 20 fun SDA ati 21 fun SCK.

Ranti pe lati lo o o gbọdọ ṣe lilo ti awọn ìkàwé Waya.h fun awọn koodu IDE Arduino rẹ, botilẹjẹpe awọn miiran wa bii I2C y I2Cdevlib. O le ka awọn iwe ti awọn ile ikawe wọnyi tabi awọn nkan wa lori awọn iṣẹ akanṣe ti o nifẹ si ọ lati gba awọn koodu ti bawo ni yoo ṣe ṣe eto.

Bii o ṣe le mọ adirẹsi ti ẹrọ kan lati lo pẹlu I2C?

Ikilọ kan kẹhin kan, ati pe iyẹn ni pe nigba ti o ra awọn IC lati ọdọ awọn aṣelọpọ European, Japanese tabi Amẹrika, iwọ tọka itọsọna naa o yẹ ki o lo fun ẹrọ naa. Ni apa keji, awọn ara Ilu Ṣaina nigbami ma ṣe apejuwe rẹ tabi ko tọ, nitorinaa kii yoo ṣiṣẹ. Iyẹn le wa ni rọọrun pẹlu ọlọjẹ adirẹsi lati mọ iru itọsọna ti o yẹ ki o tọka si ninu aworan afọwọya rẹ.

La awujo arduino ti ṣẹda eyi koodu lati ṣe ayẹwo adirẹsi ati idanimọ rẹ Ni ọna ti o rọrun. Botilẹjẹpe Mo fi koodu naa han ọ ni ibi yii:

#include "Wire.h"
 
extern "C" { 
    #include "utility/twi.h"
}
 
void scanI2CBus(byte from_addr, byte to_addr, void(*callback)(byte address, byte result) ) 
{
  byte rc;
  byte data = 0;
  for( byte addr = from_addr; addr <= to_addr; addr++ ) {
    rc = twi_writeTo(addr, &data, 0, 1, 0);
    callback( addr, rc );
  }
}
 
void scanFunc( byte addr, byte result ) {
  Serial.print("addr: ");
  Serial.print(addr,DEC);
  Serial.print( (result==0) ? " Encontrado!":"       ");
  Serial.print( (addr%4) ? "\t":"\n");
}
 
 
const byte start_address = 8;
const byte end_address = 119;
 
void setup()
{
    Wire.begin();
 
    Serial.begin(9600);
    Serial.print("Escaneando bus I2C...");
    scanI2CBus( start_address, end_address, scanFunc );
    Serial.println("\nTerminado");
}
 
void loop() 
{
    delay(1000);
}


Awọn akoonu ti nkan naa faramọ awọn ilana wa ti awọn ilana olootu. Lati jabo aṣiṣe kan tẹ nibi.

Jẹ akọkọ lati sọ ọrọ

Fi ọrọ rẹ silẹ

Adirẹsi imeeli rẹ yoo ko le ṣe atejade. O beere aaye ti wa ni samisi pẹlu *

*

*

  1. Lodidi fun data naa: Miguel Ángel Gatón
  2. Idi ti data naa: SPAM Iṣakoso, iṣakoso ọrọ asọye.
  3. Ofin: Iyọọda rẹ
  4. Ibaraẹnisọrọ data: Awọn data kii yoo ni ifọrọhan si awọn ẹgbẹ kẹta ayafi nipasẹ ọranyan ofin.
  5. Ibi ipamọ data: Alaye data ti o gbalejo nipasẹ Awọn nẹtiwọọki Occentus (EU)
  6. Awọn ẹtọ: Ni eyikeyi akoko o le ni opin, gba pada ki o paarẹ alaye rẹ.