- VL6180X Датчик часу прольоту (ToF) Далекомір
- Кругова діаграма
- Додавання необхідних бібліотек для датчика ToF VL6180
- Програмування та робоче пояснення
TOF або Час польоту - це загальновживаний метод вимірювання відстані віддалених предметів за допомогою різних датчиків вимірювання відстані, таких як ультразвуковий датчик. Вимірювання часу, витраченого частинкою, хвилею або предметом на проходження відстані через середовище, називається Час прольоту (TOF). Потім це вимірювання можна використовувати для обчислення швидкості або довжини шляху. Він також може бути використаний для вивчення частинок або властивостей середовища, таких як склад або швидкість потоку. Об'єкт, що подорожує, можна виявити прямо або побічно.
Ультразвукові прилади для вимірювання відстані є одними з найперших приладів, що використовують принцип часу польоту. Ці пристрої випромінюють ультразвуковий імпульс і вимірюють відстань до твердого матеріалу на основі часу, необхідного хвилі для відскоку до випромінювача. У багатьох наших додатках ми використовували ультразвуковий датчик для вимірювання відстані:
- Вимірювання відстані на основі датчика Arduino та ультразвуку
- Виміряйте відстань за допомогою ультразвукового датчика Raspberry Pi та HCSR04
- Як виміряти відстань між двома ультразвуковими датчиками
Метод часу польоту також може бути використаний для оцінки рухливості електронів. Власне, він був розроблений для вимірювання низькопровідних тонких плівок, пізніше він був скоригований для звичайних напівпровідників. Ця методика використовується для транзисторів з органічним польовим ефектом, а також метало-діелектрико-металевих конструкцій. Застосування лазера або імпульсу напруги генерує надлишкові заряди.
Принцип TOF використовується для вимірювання відстані між датчиком та об'єктом. Вимірюється час, необхідний сигналу для повернення до датчика після відбиття від предмета, і він використовується для обчислення відстані. Різні типи сигналів (носіїв), такі як звук, світло, можуть використовуватися за принципом TOF. Коли TOF використовується для пошуку дальності, він дуже потужний при випромінюванні світла, а не звуку. У порівнянні з ультразвуком, він забезпечує швидше зчитування, вищу точність та більший діапазон, зберігаючи при цьому свою низьку вагу, невеликі розміри та низькі характеристики споживання енергії.
У цьому посібнику ми використовуватимемо датчик дальномера VF6180X TOF з Arduino для обчислення відстані між датчиком та об’єктом. Цей датчик також повідомляє значення інтенсивності світла в LUX.
VL6180X Датчик часу прольоту (ToF) Далекомір
VL6180 відрізняється від інших датчиків відстані, оскільки використовує точний годинник для вимірювання часу, необхідного світлу для відбиття назад від будь-якої поверхні. Це дає перевагу VL6180 перед іншими датчиками, оскільки він є більш точним та захищеним від шуму.
VL6180 - це пакет 3 в 1, який включає ІЧ-випромінювач, датчик навколишнього освітлення та датчик дальності. Він взаємодіє через інтерфейс I 2 C. Він має вбудований регулятор 2,8 В. Отже, навіть якщо ми підключимо напругу більше 2,8 В, вона автоматично зміститься вниз, не пошкоджуючи плату. Він вимірює діапазон до 25 см. У ньому передбачено два програмованих GPIO.
Кругова діаграма
Тут Nokia 5110 LCD використовується для відображення рівня освітленості та відстані. РК-дисплей Nokia 5110 працює на напрузі 3,3 В, тому його неможливо підключити безпосередньо до цифрових контактів Arduino Nano. Тож послідовно додайте 10k резисторів із сигналами даних, щоб захистити лінії 3,3 В від цифрових контактів 5 В. Дізнайтеся більше про використання РК-дисплея Nokia 5110 з Arduino.
VL6180 Датчик може бути підключений безпосередньо до Arduino. Зв'язок між VL6180 та Arduino - це I2C. Насправді протокол зв'язку I2C поєднує в собі найкращі можливості SPI та UART. Тут ми можемо підключити декількох ведених до одного ведучого, і ми можемо мати декілька ведучих, які контролюють одного або декількох ведених. Як і зв'язок UART, I2C використовує два дроти для зв'язку SDA (послідовні дані) і SCL (послідовний годинник), лінію передачі даних і лінію годинника.
Схема підключення датчика дальномера VL6180 ToF з Arduino показана нижче:
- Підключіть RST-контакт РК-дисплея до контакту 6 Arduino через резистор 10K.
- Підключіть CE-вивід РК-дисплея до виводу 7 Arduino через резистор 10K.
- Підключіть штифт постійного струму РК-дисплея до висновку 5 Arduino через резистор 10K.
- Підключіть DIN-висновок РК-дисплея до виводу 4 Arduino через резистор 10K.
- Підключіть CLK-контакт РК-дисплея до контакту 3 Arduino через резистор 10K.
- Підключіть VCC-штифт РК-дисплея до 3,3-вольтового Arduino.
- Підключіть штифт GND РК-дисплея до GND Arduino.
- Підключіть контакт SCL VL6180 до контакту A5 Arduino
- Підключіть штифт SDA VL6180 до штирка A4 Arduino
- Підключіть контакт VCC VL6180 до контакту 5V Arduino
- Підключіть штифт GND VL6180 до штифта GND Arduino
Додавання необхідних бібліотек для датчика ToF VL6180
Три бібліотеки будуть використані для взаємодії датчика VL6180 з Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 - це бібліотека для монохромних РК-дисплеїв Nokia 5110. Ці дисплеї використовують SPI для зв'язку. Для взаємодії цього РК-дисплея потрібно чотири або п’ять контактів. Посилання для завантаження цієї бібліотеки наведено нижче:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Бібліотека Adafruit_GFX для Arduino - це основна графічна бібліотека для РК-дисплеїв, що забезпечує загальний синтаксис та набір графічних примітивів (точки, лінії, кола тощо). Його потрібно поєднати з конкретною апаратною бібліотекою для кожного пристрою відображення, який ми використовуємо (для обробки функцій нижчого рівня). Посилання для завантаження цієї бібліотеки наведено нижче:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 - це бібліотека Arduino з базовою функціональністю датчика VL6180. VL6180 складається з ІЧ-випромінювача, датчика дальності та датчика зовнішнього освітлення, які взаємодіють через інтерфейс I2C. Ця бібліотека дозволяє зчитувати відстань і світлові виходи датчика, а також виводить дані через послідовне з'єднання. Посилання для завантаження цієї бібліотеки наведено нижче:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Додайте всі бібліотеки одну за одною, перейшовши в Ескіз >> Включити бібліотеку >> Додати бібліотеку.ZIP в IDE Arduino. Потім завантажте бібліотеку, яку ви завантажили за вказаними вище посиланнями.
Іноді вам не потрібно буде додавати бібліотеки проводів та SPI, але якщо у вас з'являється помилка, завантажте та додайте їх до своєї IDE Arduino.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Програмування та робоче пояснення
Повний код із робочим відео наведено в кінці цього посібника, тут ми пояснюємо повну програму для розуміння роботи проекту.
У цій програмі більшість частин обробляються бібліотеками, які ми додали, тому вам не потрібно турбуватися про це.
В налаштуваннях частина s встановити швидкість передачі даних як 115200 і форматувати бібліотеку Wire для I2C. Потім перевірте, чи працює датчик VL6180 належним чином чи ні, якщо він не працює, покажіть повідомлення про помилку.
У наступній частині ми налаштовуємо дисплей, ви можете змінити контраст до бажаного значення, тут я встановлюю його як 50
void setup () { Serial.begin (115200); // Початок послідовного з 115200bps Wire.begin (); // Запуск затримки бібліотеки I2C (100); // затримка. if (sensor.VL6180xInit ()! = 0) { Serial.println ("Не вдалося ініціалізувати"); // Ініціалізуємо пристрій та перевіряємо помилки }; sensor.VL6180xDefautSettings (); // Завантажте налаштування за замовчуванням, щоб розпочати. затримка (1000); // затримка 1s display.begin (); // init done // Ви можете змінити контраст навколо, щоб адаптувати дисплей // для найкращого перегляду! display.setContrast (50); display.display (); // показати заставку екрана display.clearDisplay (); }
У налаштуваннях частини циклічного циклу наведено інструкції щодо відображення значень на РК-екрані. Тут ми відображаємо два значення, одне - «Рівень навколишнього освітлення в люксах» (Один люкс - це фактично один люмен на квадратний метр площі), а друге - «Відстань, виміряна в мм». Для відображення різних значень на РК-екрані визначте положення кожного тексту, який повинен відображатися на РК-екрані, використовуючи “display.setCursor (0,0);”.
порожня петля () { display.clearDisplay (); // Отримати рівень навколишнього освітлення та повідомити про це у LUX Serial.print ("Рівень навколишнього освітлення (Люкс) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ЧОРНИЙ); display.setCursor (0,0); display.println ("Рівень світла"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Отримати відстань і повідомити в мм Serial.print ("Відстань виміряна (мм) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ЧОРНИЙ); display.setCursor (0, 24); display.println ("Відстань (мм) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); затримка (500); }
Після завантаження програми відкрийте послідовний монітор, і він повинен відображати результати, як показано нижче.
Далекоміри VL6180 TOF використовуються у смартфонах, портативних сенсорних пристроях, планшетах, ноутбуках, ігрових пристроях та побутових приладах / промислових пристроях.
Тут ми відображаємо рівень навколишнього освітлення в люксах і відстань в мм.
Повну програму та демонстраційне відео знайдіть нижче. Також перевірте, як виміряти відстань за допомогою ультразвукового датчика та рівня освітлення за допомогою датчика зовнішнього освітлення BH1750.