LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
IoT

[PROJEKT] KAmodVL6180X i KAmduino UNO

kamodvl6180x

Nowością w dziedzinie czujników pomiaru odległości są sensory wykorzystujące technologię Time of Flight. Technologia ta została opracowana przez firmę STMicroelectronics i pozwala na precyzyjny pomiar odległości od sensora bez względu na warunki w jakich pracuje. Na odczyt odległości nie wpływa barwa i materiał powierzchni ani oświetlenie pochodzące z otoczenia. Czujniki te są w stanie mierzyć również natężenie oświetlenia otoczenia.

kamodvl6180x-modul-z-czujnikiem-odleglosci-gestow-i-als

Moduł KAmodVL6180X bazuje na sensorze VL6180X działającym właśnie w tej technologii. Prezentowany czujnik ma możliwość wykonywania pomiarów w zakresie od 0 do 100 mm. Moduł został wyposażony w stabilizator napięcia oraz konwerter poziomów logicznych dzięki czemu może być zasilany napięciem 2,8..5,5 V oraz być bez problemu użyty w aplikacjach zasilanych napięciem 5 V jak i 3,3 V. Komunikacja z czujnikiem odbywa się z wykorzystaniem magistrali I2C. Na płytce modułu zostały wyprowadzone dwie linie GPIO wychodzące z czujnika odległości.

W przykładzie posłużymy się gotową biblioteką od SparkFun do obsługi tego czujnika. Proponuję pobrać bibliotekę poprzez polecenie „Zarządzaj bibliotekami…” w menu „Szkic” -> „Dołącz bibliotekę”, programu Arduino (Rysunek 1).

Rys. 1. Menu menedżera bibliotek

Rys. 1. Menu menedżera bibliotek

Następnie w menedżerze bibliotek w prawej górnej części ekranu wpisujemy „VL6180”, oraz wybieramy „SparkFun VL6180 Sensor” i klikamy przycisk „Instaluj”.

Menedżer bibliotek programu Arduino

Rysunek 2. Menedżer bibliotek programu Arduino

 

Obsługa czujnika w Arduino jest niezwykle prosta i ogranicza się do utworzenia obiektu VL6180x z podaniem jako argument adresu czujnika. Odczytu parametru odległości dokonujemy poprzez użycie funkcji getDistance(). Odczyt parametru natężenia oświetlenia otoczenia wymaga podania argumentu, którym jest wzmocnienie brane do przeliczania wyniku pomiaru. Wynik pomiaru zwracany jest w luxach.

Dostępne w bibliotece są następujące definicje wzmocnień:

const float GAIN_1_25 = 1.28; // Actual ALS Gain of 1.28
const float GAIN_1_67 = 1.72; // Actual ALS Gain of 1.72
const float GAIN_2_5 = 2.6; // Actual ALS Gain of 2.60
const float GAIN_5 = 5.21; // Actual ALS Gain of 5.21
const float GAIN_10 = 10.32; // Actual ALS Gain of 10.32
const float GAIN_20 = 20; // Actual ALS Gain of 20
const float GAIN_40 = 40; // Actual ALS Gain of 40

Pisanie programu rozpoczynamy od dołączenia bibliotek SparkFun_VL6180X oraz Wire (do obsługi interfejsu I2C) do naszego programu.

#include <Wire.h>
#include <SparkFun_VL6180X.h>

Kolejnym krokiem jest utworzenie obiektu „sensor”

VL6180x sensor(0x29);

W funkcji setup() ustawiamy parametry transmisji interfejsu UART, uruchamiamy interfejs I2C oraz ustawiamy domyślne parametry czujnika VL6180X.

void setup() {
  // put your setup code here, to run once:
  
  Serial.begin(115200);
  Wire.begin();
  delay(100);

  sensor.VL6180xDefautSettings();

  delay(1000);
}

Ostatnim krokiem jest odczytanie zmierzonych przez sensor wartości i wyświetlenie ich w terminalu.

void loop() {
  // put your main code here, to run repeatedly:
  Serial.print("Natezenie oswietlenia (Lux) = ");
  Serial.println( sensor.getAmbientLight(GAIN_1) );

  Serial.print("Dystans (mm) = ");
  Serial.println( sensor.getDistance() ); 

  delay(500);  
}

Wyniki działania programu przedstawiają poniższe zrzuty ekranu. Rysunek 3 przedstawia nie ruchome położenie czujnika przy zmianie natężenia światła (różne tryby świecenia lampki biurowej, zmiana temperatury barwowej światła), zaś rysunek 4 przedstawia zmianę dystansu między czujnikiem, a obiektem przed nim.

lux

Rysunek 3. Zmiana natężenia oświetlenia otoczenia czujnika

 

distance

Rysunek 4. Zmiana odległości od obiektu przed czujnikiem

Autor: Jakub Kuryło