Talaan ng mga Nilalaman:

Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic: 6 Mga Hakbang
Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic: 6 Mga Hakbang

Video: Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic: 6 Mga Hakbang

Video: Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic: 6 Mga Hakbang
Video: Ang Sa Iyo Ay Akin Linyahan | Episode 12 2024, Nobyembre
Anonim
Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic
Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic

Sinabi ni Robin Sharma: 'Ang maliit na pang-araw-araw na pagpapabuti sa paglipas ng panahon ay humantong sa nakamamanghang mga resulta'. Maaaring iniisip mo, 'Ay, ibang I2C post?'. Sa gayon, tiyak na may libu-libong impormasyon pagdating sa I2C. Ngunit manatili, ito ay hindi lamang isa pang artikulo ng I2C. Ang Qwiic Connect System at Zio peripheral breakout boards ay tiyak na mga changer ng laro ng I²C!

Panimula

Kung nagtatayo ka ng mga elektronikong proyekto at gumagawa ng mga kamangha-manghang bagay, maaaring napagtanto mo na habang lumalaki ang iyong mga proyekto, ang iyong papan sa tinapay ay nagsisimulang magmukhang isang hukay ng ahas (medyo magulo di ba?).

Bilang karagdagan, kung mayroon kang maraming mga proyekto na nangyayari, gumugugol ka ng maraming oras sa paglipat ng mga wire mula sa isang proyekto patungo sa proyekto.

Gumagawa kami, kaya nauunawaan namin ang pakikibaka. Ang aming pinakabagong kontribusyon sa pamayanan ng OHS ay isang modular na prototyping system na tinatawag na ZIO, na gumagamit ng system ng pagkonekta ng Qwiic. Ang Qwiic ay isang napaka maginhawang paraan upang makipag-usap sa isang programmable circuit board sa mga sensor, actuator at breakout board sa pamamagitan ng I²C.

Hakbang 1: Ano ang I²C at Bakit Gusto Namin Ito

Ano ang I²C at Bakit Gusto Namin Ito
Ano ang I²C at Bakit Gusto Namin Ito

Ang I²C ay ang pinaka malawak na ginamit na multi-master bus, nangangahulugang ang iba't ibang mga chips ay maaaring konektado sa parehong bus. Ginagamit ito sa maraming mga application sa pagitan ng isang master at alipin o maraming mga aparatong panginoon at alipin. Mula sa mga microcontroller, hanggang sa smartphone, hanggang sa pang-industriya na aplikasyon, lalo na sa mga video device tulad ng mga monitor ng computer. Maaari itong madaling ipatupad sa maraming mga elektronikong disenyo (at kamakailan lamang ay mas madali sa koneksyon ng Qwiic).

Kung kinailangan naming ilarawan ang I²C sa dalawang salita, malamang na gagamitin namin ang pagiging simple at kakayahang umangkop.

Ang isa sa pinakamalaking pakinabang ng I²C kaysa sa iba pang mga protocol ng komunikasyon ay ito ay isang dalawang interface ng kawad na nangangahulugang nangangailangan lamang ito ng dalawang signal wires, SDA (Serial Data Line) at SCL (Serial Clock Line). Maaaring hindi ito ang pinakamabilis na protocol, ngunit kilala ito sa pagiging napaka-kakayahang umangkop, pinapayagan ang kakayahang umangkop sa boltahe ng bus.

Ang isa pang makabuluhang katangian na ginagawang kaakit-akit ang bus na ito ay ang pakikisama sa pagitan ng master at alipin. Ang maraming mga aparato ay maaaring konektado sa parehong bus at hindi na kailangang baguhin ang mga kable sa pagitan ng mga aparato dahil ang bawat aparato ay may natatanging address (pipiliin ng master ang aparato upang makipag-usap).

Hakbang 2: Tingnan Natin ang Isang Malapit na Pagtingin

Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na
Tingnan Natin ang Isang Malapit Na

Kaya, paano gumagana ang I²C? Mas maaga naming nabanggit na ang isa sa pinakamahalagang tampok ay ang allowance ng boltahe, posible ito dahil gumagamit ang I CC ng isang bukas na kolektor (kilala rin bilang open drain) para sa parehong mga linya ng komunikasyon ng SDA at SCL.

Ang SCL ay ang signal ng orasan, sinasabay ang paglilipat ng data sa pagitan ng mga aparato sa I²C bus at nabuo ito ng master. Habang ang SDA ay nagdadala ng data upang magpadala o tumanggap mula sa mga sensor o iba pang mga aparato na nakakonekta sa bus.

Ang output sa signal ay konektado sa lupa, nangangahulugan na ang bawat aparato ay ipinataw bilang mababang. Upang makuha ang signal sa mataas, ang parehong mga linya ay konektado sa isang positibong boltahe ng suplay sa pamamagitan ng isang pull up risistor upang wakasan.

Sa mga module ng ZIO nakuha namin ang iyong sakop, lahat ng aming mga breakout board ay isinasama ang kinakailangang pull up risistor.

Sinusundan ng I²C ang isang protocol ng mensahe upang maiparating ang master sa mga aparato ng alipin. Ang dalawang linya (SCL at SDA) ay karaniwan sa loob ng lahat ng alipin ng I²C, lahat ng mga alipin sa bus ay nakikinig sa mensahe.

Sinusundan ng mensahe ng mensahe ang format na ipinapakita sa naka-attach na imahe:

Maaaring mukhang kumplikado ito sa unang tingin, ngunit mayroon kaming kaunting magandang balita. Kapag gumagamit ng Arduino IDE mayroong library Wire.h, upang gawing simple ang lahat ng na-set up para sa IctC message protocol.

Ang kondisyong panimula ay nabuo kapag ang linya ng data (SDA) ay bumaba nang mababa habang ang linya ng orasan (SCL) ay mataas pa rin. Kapag nagse-set up ng isang proyekto sa interface ng Arduino hindi talaga namin kailangang mag-alala tungkol sa pagbuo ng kondisyon ng pagsisimula, sisimulan ito sa isang tukoy na pagpapaandar (Wire.beginTransmission (slaveAddress)).

Bilang karagdagan, pinasimulan din ng pagpapaandar na ito ang paghahatid sa tukoy na address ng alipin. Upang mapili ang alipin na makipag-usap sa ibinahaging bus, nagpapatuloy ang master upang maipasa ang address sa alipin upang makipag-usap. Matapos ang address ay nakatakda upang makipag-usap sa kaukulang alipin, ang de mensahe ay sumusunod sa alinman sa isang nabasa o sumulat ng kaunti, depende sa napiling mode.

Ang salve ay nagbibigay ng isang tugon na may kinikilala (ACK o NACK), at iba pang mga aparato ng alipin sa bus ay binawasan ang natitirang data hanggang sa ang mensahe ay kumpleto at ang bus ay libre. Kasunod sa ACK, isang pagkakasunud-sunod ng isang panloob na pagrehistro sa mga alipin ay nagpapatuloy sa paghahatid.

Kapag naipadala ang data, ang mensahe ng paglipat ay nagtatapos sa isang kundisyon ng paghinto. Upang wakasan ang paghahatid ng mga linya ng data ay nagbabago sa mataas at ang linya ng orasan ay mananatiling mataas.

Hakbang 3: I²C at ZIO

I²C at ZIO
I²C at ZIO

Nalaman namin na mas makakabuti kong i-blueprint ang lahat ng impormasyon sa itaas sa isang pag-uusap sa pagitan ng isang master (a.k.a Zuino, aming micro) at mga alipin (a.k.a ZIO breakout boards).

Sa pangunahing halimbawang ito ginagamit namin ang sensor ng distansya ng ZIO TOF at ang ZIO OLED Display. Ibinibigay ng TOF ang impormasyon sa distansya habang ipinapakita ng ZIO Oled ang data. Ang mga sangkap at aparato na ginamit:

  • ZUINO M UNO - ang Master
  • ZIO OLED Display - Alipin_01
  • ZIO TOF Distance Sensor - Alipin_02
  • Qwiic Cable - Madaling koneksyon para sa mga aparato ng I²C

Narito kung gaano kadali ikonekta ang mga board sa bawat isa gamit ang Qwiic, walang kinakailangang breadboard, karagdagang mga cable na naka -dedded o mga ZUINO na pin. Ang serial Clock at Data line ng ZUINO ay awtomatikong konektado sa Distance sensor at OLED sa pamamagitan ng paggamit ng Qwiic konektor. Ang dalawang iba pang mga kable ay ang 3V3 at GND.

Una, tingnan natin ang impormasyong kinakailangan, upang maipaabot ang master sa mga alipin na kakailanganin nating malaman ang natatanging mga address.

Device: ZIO Distance Sensor

  • Bilang ng Bahagi: RFD77402
  • I2C Address: 0x4C
  • Link ng Datasheet

Device: ZIO OLED Display

  • Bahagi ng Bahagi: SSD1306
  • Address: 0x3C
  • Link ng Datasheet

Upang mahanap ang natatanging address para sa mga aparato ng alipin buksan ang ibinigay na datasheet. Para sa sensor ng Distansya ang address ay ibinibigay sa seksyon ng Module Interface. Ang bawat sensor o sangkap ay may iba't ibang datasheet na may iba't ibang ibinigay na impormasyon. Minsan ay maaaring maging mapaghamong hanapin ito sa isang 30 pahina na datasheet (pahiwatig: buksan ang tool sa paghahanap sa manonood ng PDF at i-type ang "address" o "aparato ID" para sa isang mabilis na paghahanap).

Ngayon na ang natatanging address para sa bawat aparato ay kilala, upang mabasa / sumulat ng data, ang panloob na address ng rehistro ay dapat makilala (mula rin sa datasheet). Ang pagkakaroon ng pagtingin sa datosheet ng sensor ng ZIO Distance ang address upang makuha ang distansya ay tumutugma sa 0x7FF.

Sa partikular na kasong ito talagang hindi namin kailangan ang impormasyong ito para sa paggamit ng sensor tulad ng ginagawa na ng library.

Susunod na hakbang, mga kamay sa code. Ang ZUINO M UNO ay katugma sa Arduino IDE, na ginagawang mas madali ang pag-setup. Ang mga aklatan na kinakailangan para sa proyektong ito ay ang mga sumusunod:

  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Ang Wire.h ay isang arduino library, ang dalawang aklatan ng Adafruit ay ginagamit para sa OLED at ang huli ay ginagamit para sa Distance sensor. Suriin ang tutorial na ito sa kung paano i-link ang *.zip library sa Arduino IDE.

Sa pagtingin sa code, unang dapat ideklara ang mga aklatan pati na rin ang address para sa OLED.

Sa setup () nagsisimula ang paghahatid at ipinapakita ang teksto para sa pagpapaandar ng distansya ng sensor.

Ang loop () ay kumukuha ng mga sukat sa distansya at ini-print ito ng OLED.

Suriin ang halimbawang source code sa link ng github.

Ang paggamit ng parehong mga breakout board ay medyo madali sa lahat ng mga pandama. Sa panig ng hardware ang konektor ng Qwiic ay ginagawang mas mabilis ang pag-setup ng hardware at mas gulo kaysa sa pagkakaroon ng isang breadboard at jumper wires. At para sa firmware, gamit ang mga kaukulang aklatan para sa komunikasyon ng I2C, ang sensor at ang display ay ginagawang mas simple ang code.

Hakbang 4: Ano ang Maximum na Haba ng Cable?

Ang maximum na haba ay nakasalalay sa mga pull up resistors na ginamit para sa SDA at SCL at ang cable capacitance. Natutukoy din ng mga resistor ang bilis ng bus, mas mababa ang bilis ng bus, mas matagal ang limitasyon ng cable. Nililimitahan ng capacitance ng cable ang bilang ng mga aparato sa bus, pati na rin ang haba ng cable. Karaniwan ang mga application na nililimitahan ang haba ng wire sa 2.5-3.5m (9-12ft) ngunit may pagkakaiba-iba depende sa ginamit na cable. Para sa sanggunian, ang maximum na haba sa mga aplikasyon ng I2C na gumagamit ng kalasag na 22 AWG twisted pair cables ay tungkol sa 1 m (3 ft) sa 100 kbaund, 10 m (30ft) sa 10kbaud.

Mayroong ilang mga site tulad ng mogami o WolframAlpha na nagbibigay-daan upang tantyahin ang haba ng cable.

Hakbang 5: Paano Ikonekta ang Maramihang Mga Device sa Parehong Bus?

Paano makakonekta sa Maramihang Mga Device sa Parehong Bus?
Paano makakonekta sa Maramihang Mga Device sa Parehong Bus?
Paano makakonekta sa Maramihang Mga Device sa Parehong Bus?
Paano makakonekta sa Maramihang Mga Device sa Parehong Bus?

Ang I2C ay isang serial bus, kung saan ang lahat ng mga aparato ay nakakonekta sa isang nakabahaging bus. Sa pamamagitan ng konektor ng Qwiic ang magkakaibang mga breakout board ay maaaring magkonekta nang sunud-sunod gamit ang konektor ng Qwiic. Ang bawat board ay may hindi bababa sa 2 mga konektor ng Qwiic.

Lumikha kami ng iba't ibang mga board upang malutas ang ilan sa mga limitasyon ng Qwiic at I2C. Ang Zio Qwiic adapter board ay ginagamit upang kumonekta sa pamamagitan ng mga aparatong Qwiic nang walang isang konektor ng Qwiic, gamit ang Qwiic sa breadboard na lalaki na header cable. Ang simpleng trick na ito ay lumilikha ng walang limitasyong mga posibilidad.

Upang ikonekta ang iba't ibang mga aparato sa isang network ng bus o puno nakarating kami sa Zio Qwiic Hub.

Huling ngunit hindi pa huli, pinapayagan ng Zio Qwiic MUX ang koneksyon ng dalawa o higit pang mga aparato gamit ang parehong address.

Hakbang 6: Ano ang Pagwawakas ng I2C?

Kinakailangan ang I2C upang wakasan, kaya't ang linya ay libre upang magdagdag ng iba pang mga aparato. Ito ay maaaring medyo nakalilito, dahil ang termino ng pagwawakas ay karaniwang ginagamit upang ilarawan ang mga resistors ng pull-up ng bus (upang magbigay ng isang default na estado, sa kasong ito upang magbigay ng kasalukuyang sa circuit). Para sa mga board ng Zuino, ang halaga ng risistor ay 4.7kΩ.

Kung ang pagwawakas ay tinanggal, hindi magkakaroon ng komunikasyon sa lahat sa bus- ang master ay hindi makakabuo ng kondisyong panimula, kaya't ang mensahe ay hindi maipapadala sa mga alipin.

Para sa karagdagang impormasyon at mga kakayahan ng Zio suriin ang pinakabagong mga produkto ng Zio. Ang layunin sa artikulong ito ay upang ipaliwanag ang mga pangunahing kaalaman sa komunikasyon ng I²C at kung paano ito gumagana sa Zio at Qwiic konektor. Abangan ang higit pang mga pag-update.

Inirerekumendang: