RP2350-Zero/I2C

Zo stránky 3D liga wiki
Verzia z 15:19, 3. september 2026, ktorú vytvoril Sebastian (diskusia | príspevky) (Vytvorená stránka „== I2C == I2C (Inter-Integrated Circuit) je zbernica, cez ktorú vie doska komunikovať s viacerými zariadeniami pomocou iba dvoch vodičov: * '''SDA''' (Serial Data) – samotné dáta * '''SCL''' (Serial Clock) – hodinový signál, ktorý synchronizuje prenos Výhoda oproti napr. ultrazvuku (TRIG/ECHO) je, že na tie isté dva vodiče (SDA, SCL) sa dá pripojiť viacero zariadení naraz – každé má svoju vlastnú '''adresu''' (7-bitové číslo), podľa…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Prejsť na navigáciu Prejsť na vyhľadávanie

I2C

I2C (Inter-Integrated Circuit) je zbernica, cez ktorú vie doska komunikovať s viacerými zariadeniami pomocou iba dvoch vodičov:

  • SDA (Serial Data) – samotné dáta
  • SCL (Serial Clock) – hodinový signál, ktorý synchronizuje prenos

Výhoda oproti napr. ultrazvuku (TRIG/ECHO) je, že na tie isté dva vodiče (SDA, SCL) sa dá pripojiť viacero zariadení naraz – každé má svoju vlastnú adresu (7-bitové číslo), podľa ktorej ho doska osloví. RP2350 sa správa ako "master" (riadiace zariadenie), senzory ako "slave".

Vo väčšine breakout dosiek (aj BNO055, aj VL53L0X) sú potrebné pull-up rezistory na SDA/SCL už priamo na doštičke, takže netreba pridávať vlastné.

Princip

I2C komunikuje master spolu so slave zariadenim. Kazde slave zariadenie ma adresu podla ktorej sa identifikuje. Kazda adresa je v rozsahu 7 az 10 bitov (128 az 1024 adries). - Master zariadenie si mozeme predstavit ako nase RP2350-zero. - Slave (otrok) si mozeme predstavit VL53L0X laser distance senzor alebo gyroskop BNO055. - Komunikuje pomocou dvoch kablov SDA a SCL. -- SDA - prepojenie medzi mastrom a otrokom, cez ktore sa posielaju a prijimaju data. -- SCL - prepojenie z mastera do otroka, cez ktore sa posiela casovy signal.

Master ako z nazvu vypliva bude riadit slave a to podla svojich hodiniek. Podla tychto hodiniek posiela impulz a popri tom (podla hodiniek) posiela data cez SDA.

Data sa posielaju cez spravy. Spravy sa skladaju: - start bit - end bit - adresa - citaci/zapisaovaci bit - 2x 8-bitove ramy - potvrdzujjuce bity (od otroka)



Zariadenia v našej stavebnici

Zariadenie Čo meria Predvolená I2C adresa
BNO055 Gyroskop / akcelerometer / kompas (9-DOF IMU) 0x28
VL53L0X Laserový senzor vzdialenosti (Time-of-Flight) 0x29

Keďže majú tieto dve zariadenia rôzne adresy, dajú sa obe pripojiť na tú istú I2C zbernicu súčasne bez konfliktu.

Poznámka: konkrétne GPIO piny pre SDA/SCL si over v pinoute RP2350-Zero – v príkladoch nižšie použijeme GPIO0 (SDA) a GPIO1 (SCL), keďže sú v našej stavebnici zatiaľ voľné, ale dajú sa nastaviť aj inak.

I2C skener (test zapojenia)

Skôr než skúšaš konkrétny senzor, oplatí sa overiť, či ho doska na zbernici vôbec "vidí". Na to slúži klasický I2C skener – prejde všetky možné adresy a vypíše, na ktorých našiel odpoveď:

#include <Wire.h>

const int PIN_SDA = 0;
const int PIN_SCL = 1;

void setup() {
  Wire.setSDA(PIN_SDA);
  Wire.setSCL(PIN_SCL);
  Wire.begin();

  Serial.begin(115200);
  delay(1000);
  Serial.println("I2C skener spusteny...");
}

void loop() {
  byte pocetNajdenych = 0;

  for (byte adresa = 1; adresa < 127; adresa++) {
    Wire.beginTransmission(adresa);
    byte chyba = Wire.endTransmission();

    if (chyba == 0) {
      Serial.print("Zariadenie najdene na adrese 0x");
      if (adresa < 16) Serial.print("0");
      Serial.println(adresa, HEX);
      pocetNajdenych++;
    }
  }

  if (pocetNajdenych == 0) {
    Serial.println("Ziadne I2C zariadenie nenajdene.");
  }

  delay(3000);
}

Ak sa objaví 0x28, je zapojený BNO055. Ak 0x29, je zapojený VL53L0X. Ak sa nezobrazí nič, skontroluj zapojenie SDA/SCL/VCC/GND.