Ihe niile gbasara ụgbọ ala Arduino I2C

Arduino I2C ụgbọ ala

con Arduino nwere ike mepụta otutu oru ngo dị ka ị hụworo ma ọ bụrụ na ị gụọ Hwlibre, mmemme microcontroller n’ụzọ dị mfe. Mana n'etiti njikọ analog na dijitalụ nke bọọdụ ngwaike a na-akwụghị ụgwọ, enwere ụfọdụ ndị amachaghị ọtụtụ ndị mbido, dịka ezigbo ikike nke PWM njikọ, SPI, RX na TX pin nke ọdụ ụgbọ mmiri, ma ọ bụ nwee ụgbọ ala I2C. Yabụ, na ntinye a, ị nwere ike ma ọ dịkarịa ala mara ihe niile ịchọrọ site na I2C.

con ụgbọ ala I2C Nwere ike ijikọ ma jiri ọtụtụ ngwaọrụ nke atọ nwere ụdị usoro a iji kpọtụrụ ndị Arduino. N'etiti ha, ị nwere ike ijikọ accelerometers, ngosipụta, teepu, compasses, na ọtụtụ eriri sekit ndị ọzọ ejikọtara na nke a Philips mepụtara.

Gịnị bụ I2C?

I2C na-ezo aka na Circuit jikọrọ ọnụ, ya bụ, njikọkọ ejikọtara ọnụ. Ọ bụ ụgbọ ala nkwukọrịta data serial mepụtara na 1982 site na ụlọ ọrụ Philips Semiconductors, nke taa bụ NXP Semiconductors mgbe ọ tufụsịrị ngalaba a. Na mbu, emepụtara ya maka igwe onyonyo nke ika a, iji kpọtụrụ ọtụtụ igwe dị n'ime. Mana kemgbe 1990 I2C agbasaala ma jiri ọtụtụ ndị nrụpụta.

Ugbu a ka ọtụtụ ndị chipmakers na-eji ya maka ọtụtụ ọrụ. Atmel, onye okike nke microcontrollers maka bọọdụ Arduino, webatara aha TWI (Abụọ Wired Interface) maka ebumnuche ikike, ọ bụ ezie na ọ bụ nke I2C. Mana n’afọ 2006, patent mbụ ahụ gwụrụ ma ọ nọghị n’aka ikike nwebisiinka, yabụ ejigharịrị okwu ahụ bụ I2C (naanị akara ahụ ka na-echekwa echekwa, mana mmejuputa ya ma ọ bụ iji ya eme ihe anaghị egbochi).

I2C ụgbọ ala nkọwa teknụzụ

I2C ụgbọ ala

El I2C ụgbọ ala abụrụla ọkwa ụlọ ọrụ, Arduino etinyela ya n'ọrụ maka nkwukọrịta na akụkụ ndị chọrọ ya. Ọ chọrọ naanị ahịrị abụọ ma ọ bụ eriri maka ọrụ ya, otu maka akara elekere (CLK) na nke ọzọ maka izipu data ntanetị (SDA). Nke a bara uru ma e jiri ya tụnyere nkwukọrịta ndị ọzọ ma e jiri ya tụnyere ụgbọ ala SPI, ọ bụ ezie na ọrụ ya dịtụ mgbagwoju anya n'ihi sekit ndị ọzọ achọrọ.

N'ime ụgbọ ala a ngwaọrụ ọ bụla ejikọrọ na ya nwere adreesị ejiri nweta ngwaọrụ ndị a n'otu n'otu. Adreesị a na-edozi site na ngwaike, na-agbanwezi njedebe 3 ikpeazụ site na ndị na-agba ọsọ ma ọ bụ na-agbanye DIP, ọ bụ ezie na ọ nwere ike ịme site na ngwanrọ. Ngwaọrụ ọ bụla ga-enwe adreesị pụrụ iche, ọ bụ ezie na ọtụtụ n'ime ha nwere ike ịnwe otu adreesị ma ọ nwere ike ịdị mkpa iji bọs nke abụọ iji zere esemokwu ma ọ bụ gbanwee ya ma ọ bụrụ na ọ ga-ekwe omume.

Na mgbakwunye, ụgbọ ala I2C nwere a Master-Slave ụdị ije, ọo ya bụ, onye-ishi-ozi. Nke a pụtara na mgbe nkwalite malitere site na ngwaọrụ nnabata, ọ ga-enwe ike izipu ma ọ bụ nata data sitere n'aka ndị ohu ya. Ndị ohu ahụ agaghị enwe ike ịmalite nkwukọrịta ahụ, ọ bụ naanị nna ukwu nwere ike ịme ya, ndị ohu ahụ enweghị ike ịgwa ibe ha okwu ozugbo na-etinyeghị aka na nna ha ukwu.

Y’oburu ọtụtụ ndị nkụzi nọ na bọs, naanị otu nwere ike ịrụ ọrụ dịka onye nkuzi n'otu oge. Mana ọ baghị uru, ebe mgbanwe nke onye nkuzi chọrọ nnukwu mgbagwoju anya, yabụ na ọ naghị adịkarị.

Buru n’uche na nna ukwu na-enye akara elekere iji mekọrịta ngwaọrụ niile na bọs. Nke ahụ na-eme ka ohu ọ bụla ghara inwe elekere nke ha.

Usoro nkwekọrịta ụgbọ ala I2C na-ahụkwa maka iji ndị na-agbapụta ihe na ntinye ọkụ (Vcc), ọ bụ ezie na ndị a na-ejikarị ndị na-emegide ihe abụghị Arduino dọpụta n'ihi na ọba akwụkwọ mmemme dị ka Waya na-arụ ọrụ n'ime ya na ụkpụrụ nke 20-30 k. Nke a nwere ike ịdị nro maka ụfọdụ ọrụ, yabụ na-ebili n'ọnụ nke mgbaàmà ahụ ga-adị nwayọ nwayọ, yabụ enwere ike iji obere ọsọ na obere nkwukọrịta dị nkenke. Idozi na ị nwere ike ịtọ ntọala mpụga mpụga site na 1k ruo 4k7.

Ihe mgbaàmà

I2C mgbaama

 

La nkwukọrịta nke akara I2C bọs nwere bits ma ọ bụ steeti (ndị ejiri na Arduino, ebe ọ bụ na I2C ọkọlọtọ na-enye ndị ọzọ ohere):

  • 8 bits, 7 nke ha nduzi nke ngwaọrụ ohu ị chọrọ ịnweta iji zipu ma ọ bụ nata data site na ya. Site na ọnụọgụ asaa, enwere ike ịmepụta adreesị dị iche iche nke 7, nke mere na enwere ike ịnweta ngwaọrụ 128, mana naanị 128 nwere ike ịnweta, ebe ọ bụ na echekwara 112 maka ojiji pụrụ iche. Na bit ọzọ na-egosi ma ọ bụrụ na ịchọrọ zipu ma obu nata ohu ngwaọrụ ozi.
  • E nwekwara a nkwado bit, ma ọ bụrụ na ọ naghị arụ ọrụ, nkwukọrịta agaghị adị irè.
  • Mgbe ahụ data bytes na ha chọrọ iziga ma ọ bụ nata site n'aka ndị ohu. Kwa byte, dị ka ị maara, nwere 8-bits. Rịba ama na maka ihe ọ bụla 8-bit ma ọ bụ 1 byte nke data ezitere ma ọ bụ natara, achọrọ mgbakwunye 18 nkwado, adreesị, wdg, nke pụtara na bọs dị obere na ọsọ.
  • Nke ikpeazụ nke nkwado nke nkwukọrịta.

Na mgbakwunye, elekere ugboro maka nnyefe bụ 100 Mhz dị ka ọkọlọtọ, ọ bụ ezie na enwere ọnọdụ ngwa ngwa na 400 Mhz.

Uru na ọghọm nke ụgbọ ala I2C

na uru bụ:

  • Mfe nfe site na iji uzo abuo.
  • Ọ nwere usoro iji mara ma akara ngosi ahụ eruola jiri ya tụnyere usoro nkwukọrịta ndị ọzọ.

na adịghị ike bụ:

  • Ọsọ pụtara obere nnyefe.
  • Ọ bụghị duplex zuru ezu, ya bụ, ị nweghị ike izipu ma nata n’otu oge.
  • Anaghị eji parity ma ọ bụ ihe ọ bụla ọzọ ụdị nkwenye usoro mara ma ọ bụrụ na data ibe n'ibe natara ziri ezi.

 

 

I2C na Arduino

Arduino I2C ụgbọ ala

En Arduino, dabere na ihe nlereanya ahụ, atụdo ndị nwere ike ịme iji jiri bọs I2C a dịgasị iche iche. Ọmụmaatụ:

  • Arduino UNO, Nano, MiniPro: A4 ka eji mee SDA (data) yana A5 maka SCK (elekere).
  • Arduino Mega: pin 20 maka SDA na 21 maka SCK.

Cheta na iji ya gha agha were ọba akwụkwọ Waya maka Koodu IDE gị Arduino, ọ bụ ezie na enwere ndị ọzọ I2C y I2Cdevlib. Nwere ike ịgụ akwụkwọ nke ọba akwụkwọ ndị a ma ọ bụ isiokwu anyị gbasara ọrụ ndị masịrị gị ịnweta koodu nke etu esi ahazi ya.

Kedu otu esi ama adres nke ngwaọrụ iji ya na I2C?

Naanị ịdọ aka ná ntị ikpeazụ, nke ahụ bụ na mgbe ị zụrụ ICs n'aka ndị nrụpụta Europe, Japan ma ọ bụ America, ị gosi uzo na ị ga-eji maka ngwaọrụ ahụ. N'aka nke ọzọ, ndị China oge ụfọdụ anaghị akọwa ya ma ọ bụ na ọ zighi ezi, yabụ na ọ gaghị arụ ọrụ. Enwere ike idozi ya nke ọma na nyocha adreesị iji mata usoro ị kwesịrị ịtụle na eserese gị.

La obodo arduino kere ihe a Koodu iji nyochaa adreesị ahụ ma mata ya Na ụzọ dị mfe. Agbanyeghi na egosiri m koodu ahu ebe a:

#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);
}


Ọdịnaya nke isiokwu agbaso ụkpụrụ anyị nke ụkpụrụ nduzi. Kpesa mmejọ pịa ebe a.

Bụrụ onye mbụ ịza ajụjụ

Hapu okwu gi

Adreesị email gị agaghị bipụtara. Chọrọ ubi na-akara na *

*

*

  1. Rụ ọrụ maka data: Miguel Ángel Gatón
  2. Nzube nke data: Nchịkwa SPAM, njikwa okwu.
  3. Ikike: Nkwenye gị
  4. Nkwurịta okwu nke data: Agaghị agwa ndị ọzọ data ahụ ma ọ bụghị site na iwu.
  5. Nchekwa data: Ebe nchekwa data nke Occentus Networks (EU) kwadoro
  6. Ikike: Oge obula inwere ike igbachi, weghachite ma hichapụ ihe omuma gi.