Prvé kolo

Zo stránky 3D liga wiki
Prejsť na navigáciu Prejsť na vyhľadávanie

Druhá stavebnica

VL53L0X senzor

Dostali ste malý, ale účinný senzor na meranie vzdialenosti. VL53L0X funguje na princípe vysielania infračerveného svetla – lúč sa odrazí od objektu a vráti sa späť za rádovo nanosekundy. Zmeria sa čas letu (Time of Flight) a vypočíta sa vzdialenosť.

Táto technológia je výrazne presnejšia a rýchlejšia ako ultrazvukový senzor – pracujeme so svetlom, ktoré je niekoľkonásobne rýchlejšie ako zvuk.

Zapojenie

Senzor komunikuje cez zbernicu I2C – potrebuje iba 4 vodiče:

Pin senzora Pin na RP2350-Zero
VCC 3.3V
GND GND
SDA GP4
SCL GP5

Inštalácia knižnice

  1. V Arduino IDE otvorte Tools → Manage Libraries
  2. Vyhľadajte "VL53L0X" a nainštalujte knižnicu od autora Pololu

Kód

Vyskúšaj toto: Skopíruj a spusti nasledujúci program. Otvor sériový monitor (115200 baud) a pohybuj rukou pred senzorom.

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup() {
  Serial.begin(115200);
  Wire.setSDA(4);  // GP4
  Wire.setSCL(5);  // GP5
  Wire.begin();

  if (!sensor.init()) {
    Serial.println("Senzor nenájdený!");
    while (1);  // zastav program
  }

  sensor.setTimeout(500);
  sensor.startContinuous();
  Serial.println("VL53L0X OK");
}

void loop() {
  int dist = sensor.readRangeContinuousMillimeters();

  if (sensor.timeoutOccurred()) {
    Serial.println("Timeout!");
  } else {
    Serial.print("Vzdialenosť: ");
    Serial.print(dist);
    Serial.println(" mm");
  }

  delay(100);
}
Novinka Vysvetlenie
#include <Wire.h> Knižnica pre I2C zbernicu – spôsob komunikácie medzi mikrokontrolérom a senzorom cez 2 vodiče (SDA, SCL)
Wire.setSDA(4) / Wire.setSCL(5) Nastavíme ktoré piny budú použité pre I2C komunikáciu
sensor.init() Inicializuje senzor – ak vráti false, senzor nie je správne zapojený
sensor.startContinuous() Spustí nepretržité meranie – senzor meria stále bez čakania na príkaz
sensor.timeoutOccurred() Vráti true ak senzor neodpovedal včas – objekt je príliš ďaleko alebo senzor nefunguje

Pre hlbšie vysvetlenie ako funguje tento senzor prikladáme článok od Adafruit.


VAŠA ÚLOHA: Implementujte VL53L0X senzor na svoje prvé autíčko namiesto ultrazvukového senzora. Správanie psíčka zostáva rovnaké – zmeňte iba časť kódu ktorá meria vzdialenosť.

Štruktúra

Bonus: Použite 3× VL53L0X senzory – jeden dopredu, druhý doľava a tretí doprava. Roomba tak bude vidieť do všetkých strán naraz a nebude musieť otáčať hlavou.


Hotový program nahrajte do mikrokontroléra, natočte video a odošlite na insert mail.

Čo sme sa naučili?

  • VL53L0X meria vzdialenosť pomocou infračerveného svetla (Time of Flight) – presnejšie a rýchlejšie ako ultrazvuk.
  • I2C je spôsob komunikácie kde viacero zariadení zdieľa iba 2 vodiče – každé má svoju jedinečnú adresu.
  • Knižnica môže za nás vyriešiť celú komunikáciu so senzorom – stačí zavolať správne funkcie.

Gyroskop

8 line senzor