Prvé kolo
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
- V Arduino IDE otvorte Tools → Manage Libraries
- 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ť.
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.