Skocz do zawartości

Arduino i czujnik laserowy VL53LXX - V2


c15wito

Pomocna odpowiedź

Witam serdecznie Kolegów i zwracam się z pytaniem, czy któryś z Was miał okazję eksperymentować z laserowym czujnikiem odległości VL 53 LXX - V2.

Mam gotowy, działający układ, którego funkcja polega na załączeniu przekaźnika po wykryciu przeszkody. Czujnikiem jest HR-SR04, a mi się zamarzyło, przede wszystkim na znikome wymiary, zastosowanie czujnika laserowego. Mam taki czujnik, na monitorze widać jego działanie, ale nie wiem jak go użyć w moim układzie, więc uprzejmie proszę o pomoc...ale, żeby to było "przejście przez rzekę bosą stopą, bez budowania wielkich mostów". Proszę mi wybaczyć tą uwagę, ale niestety bardzo często zauważam, że na proste pytanie potrzebującego pomocy kolegi, zaczynają się uniwersyteckie wykłady, które po trzech, czterech postach, mówią o zupełnie czymś innym. Ktoś pyta, jak włączyć żarówkę a ktoś mu pisze, że musi zbudować elektrownię ! Podziwiam Kolegów, którzy posiadając wiedzę, dzielą się nią z innymi, a Tych, którzy robią to w sposób "dydaktyczny" szczególnie. Rozpisałem się nieco, bo od dawna chodziło mi to po głowie, pozdrawiam i mam nadzieję, że doczekam się jakiejś rady.

 

Link do komentarza
Share on other sites

Oj chyba musisz doprecyzować swoje pytanie. Piszesz że masz gotowy i działający układ z HC-SR04. Piszesz także, że widzisz pomiar z czujnika laserowego - więc masz opanowaną programową obsługę tego VL53... W czym więc problem? Na podstawie tego co opisujesz i pokazujesz można odpowiedzieć jedynie abyś w działającym programie z HC-SR04 procedury pomiaru zastąpił procedurami pomiaru VL53 i ... tyle. Cóż więcej można powiedzieć?

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Witam Kolego Belferek, jestem raczkującym użytkownikiem Arduino i popełniłem błąd ogólnym opisem zagadnienia, więc dołączając kod programu, naprawiam ten błąd. Jest to kod pobrany z sieci i zapewne nieudolnie przeze mnie "przerobiony" na moje potrzeby. W założeniach i w działaniu jest dokładnie to o co mi chodzi, jednak ze względy na duże rozmiary HC-SR04, chcę wykorzystać VL53...ale vl53...komunikuje się przez I2C, i właśnie z tym mam problem jak to zrobić, żeby przy zbliżeniu na określoną, programowalną odległość przedmiotu uruchomił się przekaźnik. Ponieważ jestem zwolennikiem nauki "od przodu" ( w tym przypadku), będę wdzięczny za pełną pomoc, bez odsyłania do sieci, czy kursów, i radości z działającego urządzenia. Trzeba pamiętać, że znacznej części z nas przyjemność sprawia wymyślenie czegoś i uruchomienie korzystając z dostępnych w sieci kodów ( i nie jest to kradzież, czy lenistwo), i radość, że działa. Ucząc się prowadzenia pojazdu, nie musisz wiedzieć jak działają wtryski, BSM, czy ECU ! Będziesz chciał wiedzieć, wiedzę znajdziesz, ale już jeździsz!

Kolego Belferek, to co napisałem w żadnym stopniu nie odnosi się do Twojej osoby, mam jednak nadzieję, że inni, czytający to Koledzy wezmą to sobie do serca. Pozdrawiam

                                          //viral science
//Ultrasonic Distance alarm
const int trigPin = 4;   //wyjście sygnału
const int echoPin = 3;  // wejście sygnału
const int ssr = 2;   //wyjście przekaźnika ssr
const int ziel = 5;   //wyjscie diody led zielonej
const int konPin = 6;    //wejście kontraktonu
const int nieb = 7;    // poziom cieczy- niebieska
const int czer = 8;    // poziom cieczy - czerwona
// defines variables
long duration;
int distance;
int safetyDistance;

void setup() {
pinMode(trigPin, OUTPUT); // nadajnik
pinMode(echoPin, INPUT); // odbiornik
pinMode(ssr, OUTPUT); // wyjscie przekaźnika ssr
pinMode(ziel, OUTPUT); // dioda sygnał zielona
pinMode(konPin, INPUT_PULLUP);  //wejście kontaktronu poziomu cieczy
pinMode(nieb, OUTPUT);    // poziom cieczy dioda niebieska
pinMode(czer, OUTPUT);    //poziom cieczy dioda czerwona
Serial.begin(9600); // komunikacja z monitorem
}


void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// sygnał z nadajnika na 10 ms.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// odczyt sygnału z nadajnika
duration = pulseIn(echoPin, HIGH);

// obliczanie dystansu
distance= duration*0.034/2;

safetyDistance = distance;
if (safetyDistance <=5){ //dystans do przeszkody
  delay(500);
  digitalWrite(ssr, HIGH);   //przekaźnik włączony
  delay(100);                //na 100ms
  digitalWrite(ssr, LOW);    //przekaźnik wyłączony
  digitalWrite(ziel, HIGH);  //dioda włączona
  delay(2000);               //na 2 sek.
  digitalWrite(ziel,LOW);    // dioda wylączona
}
if (digitalRead(konPin) ==LOW){   //przy niskim poziomi cieczy, dioda czerwna i niebieska migają na przemian
  delay(100);
  digitalWrite(czer, HIGH);
  delay(100);
  digitalWrite(czer, LOW);
  delay(100);
 digitalWrite(czer, HIGH);
  delay(100);
  digitalWrite(czer, LOW);
   digitalWrite(nieb, HIGH);
  delay(100);
  digitalWrite(nieb, LOW);
}

else{
 // digitalWrite(ssr, LOW);
 // digitalWrite(ledPin, LOW);
}

// odzcyt dystansu w monitorze
Serial.print("Distance: ");
Serial.println(distance);
}

 

Edytowano przez Gieneq
Link do komentarza
Share on other sites

Akurat nie z tym modelem, ale z innymi (L0X i L1X) trochę eksperymentowałem.

Masz jakąś bibliotekę do tego lasera? Możesz podać jaką?

W przypadku tych które znam sprawa jest bardzo prosta, dla przykładu dla L0X:

Tworzę sobie jakiś globalny obiekt:

VL53L0X laser;

W setup wstawiam skopiowane z jakiegoś przykładu linijki, np.:
 

Wire.begin(); // inicjalizacja I2C
laser.begin(); // i lasera

A w loop() zamiast tego całego galimatiasu z machaniem pinami wstawiam po prostu:

distance = laser.readRangeSingleMillimeters();

No i mam odległość w milimetrach - prościej niż w przypadku HC-SR04, prawda?

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zacny Kolego, z Towjej odpowiedzi wnoszę, że nie przeczytałeś w czym mam problem, machanie, jak to nazwałeś, pinami, ma określony cel i tak działa. Nie interesuje mnie mierzenie odległości  w milimetrach, a jedynie reakcja układu na przeszkodę tj. włączenie przekaźnika . Biblioteka i przykładowy program z Arduino IDE.

  • Nie zgadzam się! 1
Link do komentarza
Share on other sites

Przecież ten kawałek programu już masz (o przekaźniku). A cały fragment programu od początku loop aż do linii:

distance= duration*0.034/2;

to przecież obsługa HC-SR04 (którego chcesz się pozbyć).

Czyli nie bardzo rozumiem co znaczy:

25 minut temu, c15wito napisał:

machanie, jak to nazwałeś, pinami, ma określony cel i tak działa

jeśli docelowo ma nie działać... No, chyba że chcesz za pomocą Arduino mierzyć czas powrotu wiązki laserowej - to może być trochę trudne 🙂

A jak uczysz się prowadzenia pojazdu to warto wiedzieć, czy jest napędzany benzyną, na pedały czy wiatrem.

29 minut temu, c15wito napisał:

Biblioteka i przykładowy program z Arduino IDE.

Jaka biblioteka, konkretniej się wyrażaj. I napisz konkretnie z czym masz problem a nie "chciałbym" - bo ja na przykład chciałbym żeby wreszcie bary otworzyli i żebym mógł spokojnie się piwa napić zamiast próbować pomóc komuś kto - jak się okazuje - takiej pomocy nie potrzebuje.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.