Мазмуну:

Zio Modules жана Qwiic менен I2C киргизүү: 6 кадам
Zio Modules жана Qwiic менен I2C киргизүү: 6 кадам

Video: Zio Modules жана Qwiic менен I2C киргизүү: 6 кадам

Video: Zio Modules жана Qwiic менен I2C киргизүү: 6 кадам
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Ноябрь
Anonim
IioC Zio Modules жана Qwiic менен тааныштыруу
IioC Zio Modules жана Qwiic менен тааныштыруу

Робин Шарма мындай деди: "Убакыттын өтүшү менен күнүмдүк кичинекей жакшыртуулар таң калыштуу натыйжаларга алып келет". Сиз ойлонуп жаткандырсыз: "Ой, башка I2C посту?". Ооба, I2C жөнүндө сөз болгондо, албетте, миңдеген маалымат бар. Бирок кабардар болуңуз, бул жөн гана I2C макаласы эмес. Qwiic Connect системасы жана Zio перифериялык бөлүштүрүү такталары сөзсүз түрдө I²C оюнун алмаштыруучулар!

Киришүү

Эгерде сиз электрондук долбоорлорду куруп, укмуштуудай нерселерди жасап жатсаңыз, анда сиздин проекттериңиз чоңойгон сайын, сиздин нандын үстөлү жыландын чуңкуруна окшош боло баштаганын түшүнгөн чыгарсыз (бир аз баш аламан туурабы?).

Мындан тышкары, эгерде сизде бир нече долбоорлор жүрүп жатса, сиз зымдарды долбоордон долбоорго которууга көп убакыт коротосуз.

Биз жаратуучуларбыз, ошондуктан күрөштү түшүнөбүз. OHS коомчулугуна биздин эң акыркы салымыбыз Qwiic туташтыруу тутумун кабыл алган ZIO деп аталган модулдук прототиптөө системасы. Qwiic - бул I²C аркылуу сенсорлорго, аткаргычтарга жана сындыруучу такталарга программалоочу схеманы жеткирүүнүн эң ыңгайлуу жолу.

1 -кадам: I²C деген эмне жана бизге эмне үчүн жагат

I²C деген эмне жана эмне үчүн бизге жагат
I²C деген эмне жана эмне үчүн бизге жагат

I²C-эң кеңири колдонулган көп мастердик автобус, башкача айтканда бир эле автобуска ар кандай чиптерди туташтырса болот. Бул кожоюн менен кулдун же бир нече мастер менен кулдун түзмөктөрүнүн ортосунда көптөгөн тиркемелерде колдонулат. Микроконтроллерлерден, смартфондорго, өнөр жай колдонмолоруна, айрыкча компьютер мониторлору сыяктуу видео түзмөктөргө. Бул көптөгөн электрондук дизайндарда оңой эле ишке ашырылышы мүмкүн (жана жакында Qwiic туташтыргычы менен дагы оңой).

Эгерде I²Cди эки сөз менен сүрөттөө керек болсо, биз жөнөкөйлүктү жана ийкемдүүлүктү колдонмокпуз.

I²Cдин башка байланыш протоколдорунан эң чоң артыкчылыктарынын бири - бул эки зымдуу интерфейс, бул эки сигнал зымына гана муктаж, SDA (Сериялык маалымат линиясы) жана SCL (Сериялык саат линиясы). Бул эң ылдам протокол болбошу мүмкүн, бирок автобустун чыңалуусуна ийкемдүүлүккө ээ болуп, абдан ийкемдүү болгону менен белгилүү.

Бул автобусту жагымдуу кылган дагы бир маанилүү өзгөчөлүк - кожоюн менен кулдун ортосундагы мамиле. Бир эле автобуска бир нече түзмөктү туташтырса болот жана түзмөктөрдүн ортосундагы зымдарды алмаштыруунун кажети жок, анткени ар бир аппарат уникалдуу дарекке ээ (мастер байланыш үчүн түзмөктү тандайт).

2 -кадам: Жакыныраак карап көрөлү

Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү
Жакыныраак карап көрөлү

Ошентип, I²C кантип иштейт? Буга чейин биз белгилегендей, эң маанилүү өзгөчөлүктөрдүн бири - бул чыңалуу чеги, бул I²C SDA жана SCL байланыш линиялары үчүн ачык коллекторду (ачык дренаж деп да аталат) колдонот.

SCL - бул сааттын сигналы, I²C шинасындагы түзмөктөрдүн ортосунда маалыматтарды өткөрүүнү синхрондоштурат жана аны мастер жаратат. SDA сенсорлордон же автобуска туташкан башка түзмөктөрдөн маалыматтарды жөнөтүү же алуу үчүн маалыматтарды алып жүрөт.

Сигналдын чыгышы жерге туташтырылган, башкача айтканда, ар бир түзмөк төмөндөйт. Сигналды жогорку деңгээлге кайтаруу үчүн, эки линия тең токтотуучу резистор аркылуу оң камсыздоо чыңалуусуна туташкан.

ZIO модулдары менен биз сизди каптап алдык, биздин бардык сынык такталары керектүү каршылыкты камтыйт.

I²C кожоюнга кулдук түзмөктөр менен байланышуу үчүн билдирүү протоколуна баш ийет. Эки линия (SCL жана SDA) бардык I²C кулдарынын ичинде таралган, автобустагы бардык кулдар билдирүүнү угушат.

Билдирүү протоколу тиркелген сүрөттө көрсөтүлгөн формат боюнча жүрөт:

Бул бир караганда татаал көрүнүшү мүмкүн, бирок бизде жакшы кабар бар. Arduino IDE колдонууда I²C билдирүү протоколун орнотууну жөнөкөйлөтүү үчүн Wire.h китепканасы бар.

Баштоо шарты маалымат линиясы (SDA) төмөн түшүп, саат линиясы (SCL) дагы эле жогору болгондо пайда болот. Arduino интерфейсинде долбоор түзүүдө, баштоо шартын түзүү жөнүндө тынчсыздануунун кажети жок, ал белгилүү бир функция менен башталат (Wire.beginTransmission (slaveAddress)).

Мындан тышкары, бул функция конкреттүү кул дареги менен берүүнү баштайт. Жалпы автобуста баарлашуу үчүн кулду тандоо үчүн, кожоюн байланышуу үчүн кулга дарегин өткөрүп берет. Дарек тиешелүү кулга байланышууга орнотулгандан кийин, тандалган режимге жараша, билдирүү окуу же жазуу менен коштолот.

Куткаруу ырастоо менен жооп берет (ACK же NACK), жана автобустагы башка кулдук түзмөктөр калган маалыматты билдирүү бүткүчө жана автобус бекер болгонго чейин арзандатат. ACKдан кийин, кулдардын ички дареги реестринин ырааттуулугу берүүнү улантууда.

Маалымат жөнөтүлгөндө, өткөрүп берүү билдирүүсү токтотуу шарты менен аяктайт. Берүүнү токтотуу үчүн маалымат линиясы жогорку деңгээлге өзгөрөт жана саат линиясы жогору бойдон калууда.

3 -кадам: I²C жана ZIO

I²C жана ZIO
I²C жана ZIO

Биз уста (а. Zuino, биздин микро) менен кулдардын (a.k.a ZIO сынык такталары) ортосундагы баарлашууда жогорудагы бардык маалыматты пландаштыруу эң жакшы болорун түшүндүк.

Бул негизги мисалда биз ZIO TOF аралык сенсорун жана ZIO OLED дисплейин колдонуп жатабыз. TOF аралык маалыматын берет, ал эми ZIO Oled маалыматтарды көрсөтөт. Колдонулган компоненттер жана түзмөктөр:

  • ZUINO M UNO - Мастер
  • ZIO OLED дисплейи - Slave_01
  • ZIO TOF дистанциялык сенсор - Slave_02
  • Qwiic Cable - I²C түзмөктөрү үчүн оңой туташуу

Бул жерде тактайларды Qwiic аркылуу бири -бирине туташтыруу канчалык оңой, нандын кереги жок, кошумча кабелдер же ZUINO казыктары. ZUINO сериялык сааты жана маалымат линиясы Qwiic туташтыргычы аркылуу автоматтык түрдө аралык сенсоруна жана OLEDге туташат. Башка эки кабель 3V3 жана GND болуп саналат.

Биринчиден, кожоюнга кулдар менен байланышуу үчүн уникалдуу даректерди билишибиз керек болгон маалыматты карап көрөлү.

Түзмөк: ZIO Distance Sensor

  • Бөлүмдүн номери: RFD77402
  • I2C дареги: 0x4C
  • Маалымат барагынын шилтемеси

Түзмөк: ZIO OLED дисплейи

  • Бөлүмдүн номери: SSD1306
  • Дареги: 0x3C
  • Маалымат барагынын шилтемеси

Кул түзмөктөр үчүн уникалдуу даректи табуу үчүн берилген маалымат барагын ачыңыз. Distance сенсорунун дареги Module Interface секционунда берилет. Ар бир сенсордо же компонентте ар кандай маалымат берилген башка маалымат барагы бар. Кээде аны 30 барактан турган маалымат барагынан табуу кыйынга турушу мүмкүн (кыйытма: PDF кароодо табуу куралын ачып, тез издөө үчүн "дарек" же "түзмөктүн идентификаторун" териңиз).

Ар бир түзмөктүн уникалдуу дареги белгилүү болгондон кийин, маалыматтарды окуу/ жазуу үчүн, ички реестрдин дарегин аныктоо керек (ошондой эле маалымат барагынан). ZIO Distance сенсорунун маалымат барагын карап туруп, аралыкты алуу үчүн дарек 0x7FFке туура келет.

Бул учурда, сенсорду колдонуу үчүн бул маалыматтын бизге китепкананын китепканасында болгондой кереги жок.

Кийинки кадам, кодду тапшырыңыз. ZUINO M UNO Arduino IDE менен шайкеш келет, бул орнотууну бир топ жеңилдетет. Бул долбоор үчүн керектүү китепканалар төмөнкүлөр:

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

Wire.h - бул arduino китепканасы, эки Adafruit китепканасы OLED үчүн, акыркылары Дистанция сенсору үчүн колдонулат. Бул окуу куралын *.zip китепканаларын Arduino IDE менен кантип байланыштыруу керектигин текшериңиз.

Кодду карасак, адегенде китепканалар жана OLED дареги жарыяланууга тийиш.

Орнотууда () берүү башталат жана аралык сенсорунун иштеши үчүн текст көрсөтүлөт.

Цикл () аралыкты өлчөйт жана OLED аны басып чыгарат.

Github шилтемесиндеги мисал булак кодун текшериңиз.

Эки сындыруучу тактаны колдонуу бардык мааниде абдан оңой. Аппараттык жагында Qwiic туташтыргычы жабдыктын орнотулушун тездетет жана нандын тактайы менен секирүүчү зымдарга караганда бир топ начар кылат. Ал эми программалык камсыздоо үчүн I2C байланыш үчүн тиешелүү китепканаларды колдонуп, сенсор жана дисплей кодду бир топ жөнөкөй кылат.

4 -кадам: Кабелдин максималдуу узундугу кандай?

Максималдуу узундук SDA жана SCL үчүн колдонулган резисторлорго жана кабелдин сыйымдуулугуна көз каранды. Резисторлор ошондой эле автобустун ылдамдыгын аныктайт, автобустун ылдамдыгы канчалык төмөн болсо, кабелдин чеги ошончолук узун болот. Кабелдин сыйымдуулугу автобустагы түзмөктөрдүн санын, ошондой эле кабелдин узундугун чектейт. Типтүү колдонмолор зымдын узундугун 2,5-3,5мге чейин чектейт, бирок колдонулган кабелге жараша вариация бар. Маалымат үчүн, I2C тиркемелеринин максималдуу узундугу корголгон 22 AWG ийри түгөй кабелин колдонуп, болжол менен 1 м (3 фут) 100 кбаунд, 10 м (30 фут) 10kbaud.

Могами же WolframAlpha сыяктуу кээ бир сайттар бар, алар кабелдин узундугун баалоого мүмкүндүк берет.

5 -кадам: Бир эле автобуста бир нече түзмөктү кантип туташтыруу керек?

Бир эле автобуста бир нече түзмөктү кантип туташтыруу керек?
Бир эле автобуста бир нече түзмөктү кантип туташтыруу керек?
Бир эле автобуста бир нече түзмөктү кантип туташтыруу керек?
Бир эле автобуста бир нече түзмөктү кантип туташтыруу керек?

I2C - бул бардык түзмөктөр жалпы автобуска туташкан сериялык автобус. Qwiic туташтыргычы менен, ар кандай сындыруучу такталар Qwiic туташтыргычы менен бири -биринен кийин туташтырылышы мүмкүн. Ар бир тактада жок дегенде 2 Qwiic туташтыргычы бар.

Биз Qwiic жана I2C чектөөлөрүн чечүү үчүн ар кандай такталарды түздүк. Zio Qwiic адаптер тактасы Qwiic туташтыргычы жок Qwiic түзмөктөрү аркылуу туташуу үчүн колдонулат, Qwiicти эркек баш кабелине нан үчүн. Бул жөнөкөй трюк чексиз мүмкүнчүлүктөрдү түзөт.

Автобуста же дарак тармагында ар кандай түзмөктөрдү туташтыруу үчүн биз Zio Qwiic Hub менен келдик.

Акыркы, бирок жок дегенде, Zio Qwiic MUX бир даректи колдонуп эки же андан көп түзмөктү туташтырууга мүмкүндүк берет.

6 -кадам: I2C токтотуу деген эмне?

I2C токтотуу үчүн талап кылынат, ошондуктан линия башка түзмөктөрдү кошууга акысыз. Бул бир аз түшүнүксүз болушу мүмкүн, анткени токтотуу термини көбүнчө автобустун тартылуу каршылыгын сүрөттөө үчүн колдонулат (демейки абалды камсыз кылуу үчүн, бул учурда чынжырга ток берүү үчүн). Zuino такталары үчүн резистордун мааниси 4.7kΩ.

Эгерде токтотуу алынып салынса, автобуста эч кандай байланыш болбойт- кожоюн баштапкы шартты түзө албайт, андыктан билдирүү кулдарга өткөрүлбөйт.

Кошумча маалымат жана Zio мүмкүнчүлүктөрү үчүн акыркы Zio продукттарын текшериңиз. Бул макаланын максаты I²C байланышынын негиздерин жана анын Zio жана Qwiic туташтыргычы менен кантип иштээрин түшүндүрүү. Дагы жаңыртуулардан кабардар болуңуз.

Сунушталууда: