Агуулгын хүснэгт:
- Алхам 1: I²C гэж юу вэ, яагаад бидэнд таалагддаг вэ
- Алхам 2: Илүү ойрхон харцгаая
- Алхам 3: I²C ба ZIO
- Алхам 4: Кабелийн хамгийн их урт хэд вэ?
- Алхам 5: Олон автобусыг нэг автобусанд хэрхэн холбох вэ?
- Алхам 6: I2C цуцлалт гэж юу вэ?
Видео: Zio Modules болон Qwiic -тэй I2C -ийг танилцуулж байна: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Робин Шарма хэлэхдээ: "Цаг хугацаа өнгөрөх тусам өдөр тутмын жижиг сайжруулалтууд гайхалтай үр дүнд хүргэдэг" гэжээ. Та "Аан, өөр I2C бичлэг үү?" Гэж бодож байж магадгүй. Мэдээжийн хэрэг, I2C -ийн тухайд олон мянган мэдээлэл байдаг. Гэхдээ анхааралтай байгаарай, энэ бол I2C -ийн өөр нэг нийтлэл биш юм. Qwiic Connect System ба Zio -ийн дагалдах самбарууд нь I²C тоглоомыг өөрчилдөг нь гарцаагүй!
Танилцуулга
Хэрэв та цахим төсөл барьж, гайхалтай зүйл хийж байгаа бол төслүүд тань томрох тусам талхны тавцан чинь могойн нүх шиг харагдаж эхэлдэг гэдгийг ойлгосон байх.
Нэмж хэлэхэд, хэрэв танд олон төсөл хэрэгжиж байгаа бол төслөөс төсөл рүү утас солиход маш их цаг зарцуулдаг.
Бид бүтээгчид учраас тэмцлийг ойлгодог. Бидний ХАБЭА -н нийгэмлэгт оруулсан хамгийн сүүлийн үеийн хувь нэмэр бол Qwiic холболтын системийг нэвтрүүлсэн ZIO нэртэй модульчлагдсан загварчлал юм. Qwiic бол програмчлагдах хэлхээний самбарыг I²C -ээр дамжуулан мэдрэгч, идэвхжүүлэгч, таслагч самбартай холбох маш тохиромжтой арга юм.
Алхам 1: 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
Мастер (a.k.a Zuino, бидний микро) ба боолууд (a.k.a ZIO -ийн самбар) хоорондын ярианд би дээрх бүх мэдээллийг төлөвлөх нь зүйтэй гэж бид ойлгосон.
Энэхүү үндсэн жишээнд бид ZIO TOF зай мэдрэгч болон ZIO OLED дэлгэцийг ашиглаж байна. TOF нь зайны мэдээллийг өгдөг бол ZIO Oled өгөгдлийг харуулдаг. Ашигласан бүрэлдэхүүн хэсгүүд ба төхөөрөмжүүд:
- ЗУИНО М УНО - Мастер
- ZIO OLED Дэлгэц - Slave_01
- ZIO TOF зайны мэдрэгч - Slave_02
- Qwiic кабель - I²C төхөөрөмжүүдийн хялбар холболт
Qwiic, талхны хавтан шаардлагагүй, нэмэлт кабель эсвэл ZUINO зүү ашиглан самбарыг хооронд нь холбох нь хэр хялбар болохыг энд харуулав. ZUINO -ийн Цагийн ба Өгөгдлийн цуваа нь Qwiic холбогчийг ашиглан зайны мэдрэгч ба OLED -т автоматаар холбогддог. Бусад хоёр кабель нь 3V3 ба GND юм.
Нэгдүгээрт, шаардлагатай мэдээллийг авч үзье, эзэн нь боолуудтай харилцахын тулд өвөрмөц хаягийг мэдэх шаардлагатай болно.
Төхөөрөмж: ZIO зайны мэдрэгч
- Хэсгийн дугаар: RFD77402
- I2C хаяг: 0x4C
- Өгөгдлийн хүснэгтийн холбоос
Төхөөрөмж: ZIO OLED дэлгэц
- Хэсгийн дугаар: SSD1306
- Хаяг: 0x3C
- Мэдээллийн хүснэгтийн холбоос
Боол төхөөрөмжүүдийн өвөрмөц хаягийг олохын тулд өгөгдсөн мэдээллийн хуудсыг нээнэ үү. Зайны мэдрэгчийн хувьд хаягийг модулийн интерфэйсийн хэсэгт өгсөн болно. Мэдрэгч эсвэл бүрэлдэхүүн хэсэг бүр өөр өөр мэдээлэл агуулсан өөр өөр мэдээллийн хуудастай байдаг. Заримдаа үүнийг 30 хуудасны мэдээллийн хуудсан дээрээс олоход хэцүү байдаг (сануулга: PDF үзэгч дээр хайх хэрэгслийг нээж, хурдан хайхын тулд "хаяг" эсвэл "төхөөрөмжийн ID" гэж бичнэ үү).
Төхөөрөмж бүрийн өвөрмөц хаягийг мэддэг болсон тул өгөгдлийг унших/ бичихийн тулд дотоод регистрийн хаягийг тодорхойлох шаардлагатай (мөн мэдээллийн хүснэгтээс). ZIO Distance sensor -ийн мэдээллийн хүснэгтийг үзээд зайг олж авах хаягийг 0x7FF -тэй нийцүүлнэ.
Энэ тохиолдолд номын сан аль хэдийн байдаг шиг мэдрэгчийг ашиглахад бидэнд энэ мэдээлэл үнэхээр хэрэггүй болно.
Дараагийн алхам бол кодыг өгнө. ZUINO M UNO нь Arduino IDE -тэй нийцдэг бөгөөд энэ нь тохиргоог ихээхэн хөнгөвчилдөг. Энэхүү төсөлд шаардлагатай номын сангууд нь дараахь зүйлүүд юм.
- Утас.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
Wire.h бол arduino номын сан бөгөөд Adafruit -ийн хоёр номын санг OLED -д ашигладаг бөгөөд сүүлчийнх нь Distance sensor -д ашиглагддаг. *. Zip номын санг Arduino IDE руу хэрхэн холбох талаар энэ хичээлийг үзнэ үү.
Кодыг харахад эхлээд номын сангуудыг OLED хаягийг зарлах ёстой.
Тохиргоонд () дамжуулалт эхэлж, зайны мэдрэгчийн үйл ажиллагааны текстийг харуулна.
Loop () нь зайг хэмждэг бөгөөд OLED нь үүнийг хэвлэдэг.
Github линк дээрх эх кодын жишээг шалгана уу.
Хоёр самбарыг хоёуланг нь ашиглах нь бүх утгаараа маш хялбар байдаг. Тоног төхөөрөмжийн тал дээр Qwiic холбогч нь талхны самбар, холбогч утастай байхаас илүү тоног төхөөрөмжийн тохиргоог илүү хурдан, бохирдуулдаг. Мөн програм хангамжийн хувьд I2C холболтын холбогдох номын санг ашиглан мэдрэгч, дэлгэц нь кодыг илүү хялбар болгодог.
Алхам 4: Кабелийн хамгийн их урт хэд вэ?
Хамгийн их урт нь SDA ба SCL -д ашигладаг татах эсэргүүцэл ба кабелийн багтаамжаас хамаарна. Резисторууд нь автобусны хурдыг тодорхойлдог, автобусны хурд бага байх тусам кабелийн хязгаар урт байх болно. Кабелийн багтаамж нь автобусанд байгаа төхөөрөмжийн тоо, кабелийн уртыг хязгаарладаг. Ердийн хэрэглээ нь утасны уртыг 2.5-3.5м (9-12ft) хүртэл хязгаарладаг боловч ашигласан кабелаас хамааран өөр өөр байдаг. Лавлахын тулд хамгаалагдсан 22 AWG эрчилсэн хос кабель ашигладаг I2C програмуудын хамгийн их урт нь 100 кбаундад ойролцоогоор 1 м (10 фут), 10 кбауд дээр 10 м (30 фут) байна.
Могами эсвэл ВольфрамАлфа гэх мэт кабелийн уртыг тооцоолох боломжтой сайтууд байдаг.
Алхам 5: Олон автобусыг нэг автобусанд хэрхэн холбох вэ?
I2C бол бүх төхөөрөмжүүд дундын автобусанд холбогдсон цуваа автобус юм. Qwiic холбогчтой бол янз бүрийн таслах самбарыг Qwiic холбогчийг ашиглан нэг нэгээр нь холбож болно. Самбар бүр дор хаяж 2 Qwiic холбогчтой.
Бид Qwiic болон I2C -ийн зарим хязгаарлалтыг шийдвэрлэхийн тулд өөр өөр самбаруудыг бүтээсэн. Zio Qwiic адаптерийн хавтанг Qwiic төхөөрөмжгүйгээр Qwiic холбогчгүйгээр холбоход ашигладаг бөгөөд эрэгтэй толгойны кабелийг талхаар Qwiic ашиглан хийдэг. Энэхүү энгийн заль мэх нь хязгааргүй боломжийг бий болгодог.
Автобус эсвэл модны сүлжээнд өөр өөр төхөөрөмжүүдийг холбохын тулд бид Zio Qwiic Hub -ийг олж мэдэв.
Эцэст нь хэлэхэд Zio Qwiic MUX нь ижил хаягийг ашиглан хоёр ба түүнээс дээш төхөөрөмжийг холбох боломжийг олгодог.
Алхам 6: I2C цуцлалт гэж юу вэ?
I2C -ийг цуцлах шаардлагатай тул бусад төхөөрөмжүүдийг нэмж оруулах боломжтой. Төгсгөлийн нэр томъёог ихэвчлэн автобусны татах эсэргүүцлийг тодорхойлоход ашигладаг (анхдагч төлөвийг өгөх, энэ тохиолдолд хэлхээг гүйдэлээр хангах) энэ нь ойлгомжгүй байж магадгүй юм. Zuino хавтангийн хувьд резисторын утга 4.7 кОм байна.
Хэрэв цуцлалтыг орхигдуулсан бол автобусанд ямар ч холбоо байхгүй болно- эзэн нь эхлэх нөхцлийг бүрдүүлж чадахгүй тул мессежийг боолуудад дамжуулахгүй.
Нэмэлт мэдээлэл, Zio -ийн боломжуудын талаар хамгийн сүүлийн үеийн Zio бүтээгдэхүүнүүдтэй танилцана уу. Энэхүү нийтлэлийн зорилго нь I²C харилцааны үндэс, Zio ба Qwiic холбогчтой хэрхэн ажилладаг талаар тайлбарлах явдал юм. Бусад шинэчлэлтүүдийг хүлээж байгаарай.
Зөвлөмж болгож буй:
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ болон RFID дээр суурилсан ирцийн систем: 5 алхам
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ, RFID дээр суурилсан ирцийн систем: Энэ төслийн видео
Arduino болон Apple HomeKit -ийн интеграцчлал - Гэрээ Siri -ээс удирдаарай! IoT энд байна: 6 алхам
Arduino болон Apple HomeKit -ийн интеграцчлал - Гэрээ Siri -ээс удирдаарай! IoT энд байна: Энэхүү зааварчилгаа нь iOS төхөөрөмж дээр Apple -ийн HomeKit -т arduino самбар нэмэх хурдан бөгөөд хялбар аргыг танд өгөх болно. Энэ нь сервер дээр ажиллаж буй скриптүүд, Apples HomeKit "Scenes" зэрэг бүх төрлийн боломжийг нээж өгдөг
Arduino Nano болон I2C Oled дэлгэцтэй Arduboy Clone: 3 алхам
Arduboy Clone нь Arduino Nano болон I2C Oled дэлгэцтэй: Arduboy клоны хямд хувилбар бөгөөд та хэд хэдэн анхны Arduboy тоглоом тоглох боломжтой
LoRa ™ -г танилцуулж байна!: 19 алхам
LoRa ™ -г нэвтрүүлж байна! Semtech брэндийн (™) барааны тэмдэгтэй (1960) АНУ -ын үндэстэн дамнасан сонгогдсон
ATtiny болон ATmega -д зориулсан I2C автобус: 8 алхам
ATtiny болон ATmega -д зориулсан I2C автобус: Би Atmel AVR микроконтроллерт дуртай! Энэхүү зааварт тайлбарласан Гетто хөгжүүлэх системийг бий болгосноос хойш би AVR ATtiny2313 болон ATmega168 -ийг туршиж үзээд зугаацаж байсангүй. Би бүр Instr бичих хүртэл явсан