குறியீட்டை தேடு

பாடம் 78: VL53L0X இலிருந்து தூரத்தை LCD இல் காட்டுதல் | Arduino படிப்படியான படிப்பு

பாடம் 78: VL53L0X இலிருந்து தூரத்தை LCD இல் காட்டுதல் | Arduino படிப்படியான படிப்பு

VL53L0X 200cm range sensor-blue

இந்த வழிகாட்டி VL53L0X டைம்-ஆஃப்-ஃப்ளைட் சென்சார் மற்றும் I2C தொகுதியுடன் கூடிய 16x2 LCD டிஸ்ப்ளேவைப் பயன்படுத்தி துல்லியமான லேசர் தூர அளவியை எவ்வாறு உருவாக்குவது என்பதை நிரூபிக்கிறது. இந்த திட்டம் தங்கள் படைப்புகளில் துல்லியமான, தொடர்பு இல்லாத தூர அளவீட்டைச் சேர்க்க விரும்பும் மேக்கர்களுக்கு ஏற்றது. VL53L0X தூரத்தை அளவிட லேசரைப் பயன்படுத்துகிறது, இது அல்ட்ராசோனிக் சென்சார்கள் சிரமப்படக்கூடிய பயன்பாடுகளுக்கு ஏற்றதாக அமைகிறது, அதாவது தொட்டியின் நிரப்பு அளவை அளவிடுவது அல்லது கன்வேயர் பெல்ட்டில் ஒரு பொருளின் சரியான நிலையைக் கண்டறிவது போன்றவை.

இந்த திட்டத்தை நீங்கள் பயன்படுத்தக்கூடிய சில நடைமுறை வழிகள் இங்கே:

  • தானியங்கி செல்லப்பிராணி உணவளிப்பான்: ஒரு கொள்கலனில் உணவு அளவை அளந்து மீண்டும் நிரப்புவதைத் தூண்டவும் அல்லது அறிவிப்பை அனுப்பவும்.
  • ஸ்மார்ட் குப்பைத் தொட்டி: தொட்டி எவ்வளவு நிரம்பியுள்ளது என்பதைக் கண்டறிந்து, அதை காலி செய்ய வேண்டியிருக்கும் போது உங்களை எச்சரிக்கவும்.
  • DIY உயர அளவி: சிறிய பொருட்களுக்கு துல்லியமான அளவீட்டு கருவியை உருவாக்கவும் அல்லது குழந்தையின் வளர்ச்சியைக் கண்காணிக்கவும்.
  • பார்க்கிங் உதவியாளர்: கேரேஜ் அல்லது குறுகிய இடத்தில் துல்லியமான பார்க்கிங்கிற்கு உதவும் சென்சார் அமைப்பை உருவாக்கவும்.
  • ரோபாட்டிக்ஸ்: தடைகளைக் கண்டறிய அல்லது வழிசெலுத்தலுக்காக சுவருக்கான தூரத்தை அளவிட ரோபோவில் இதைப் பயன்படுத்தவும்.
VL53L0x_pin_round_module

தேவையான வன்பொருள்

  • Arduino போர்டு (எ.கா., Uno)
  • VL53L0X லேசர் தூர சென்சார்
  • I2C தொகுதியுடன் கூடிய LCD 1602 டிஸ்ப்ளே
  • ஜம்பர் கம்பிகள்

வயரிங் வழிகாட்டி

இந்த திட்டத்திற்கான வயரிங் எளிமையானது, ஏனெனில் I2C நெறிமுறை LCD மற்றும் சென்சார் இரண்டும் ஒரே இரண்டு கம்பிகள் வழியாக தொடர்பு கொள்ள அனுமதிக்கிறது. VL53L0X சென்சாருக்கு 5V மின்சாரம் தேவைப்படுகிறது, இது Arduino இன் 5V பின்னிலிருந்து நேரடியாக எடுக்கப்படுகிறது. சென்சாருக்கு நிலையான மின்சார மூலத்தை உறுதி செய்ய, கூடுதல் பின் இரண்டாம் நிலை VCC ஆகப் பயன்படுத்தப்படுகிறது. (வீடியோவில் 00:27)

VL53L0X_LCD1602_wiring-3
VL53L0X_LCD1602_wiring-2
VL53L0X_LCD1602_wiring-1
VL53L0X_LCD1602_wiring-4

இணைப்பு வரைபடம் இங்கே:

Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)

இணைப்புகள் பின்வருமாறு:

  • VL53L0X VCC -> Arduino 5V மற்றும் Pin 13 (Pin 13 கூடுதல் மின்சார நிலைத்தன்மையை வழங்க டிஜிட்டல் வெளியீடாக அமைக்கப்பட்டுள்ளது).
  • VL53L0X GND -> Arduino GND.
  • VL53L0X SCL -> Arduino SCL (A5).
  • VL53L0X SDA -> Arduino SDA (A4).
  • LCD I2C VCC -> Arduino 5V.
  • LCD I2C GND -> Arduino GND.
  • LCD I2C SCL -> Arduino SCL (A5).
  • LCD I2C SDA -> Arduino SDA (A4).

நீங்கள் வேறு Arduino மாடலைப் பயன்படுத்தினால், I2C பின்கள் வேறு இடத்தில் இருக்கலாம். SDA மற்றும் SCL பின்கள் பெரும்பாலும் போர்டில் நேரடியாகக் குறிக்கப்பட்டிருக்கும். (வீடியோவில் 02:42)

குறியீடு விளக்கம்

குறியீடு உள்ளமைக்க எளிதாக வடிவமைக்கப்பட்டுள்ளது. முக்கிய பயனர்-உள்ளமைக்கக்கூடிய பகுதிகள் ஸ்கெட்ச்சின் மேலே உள்ளன. (வீடியோவில் 04:18)

முதலில், கூடுதல் மின்சார பின்னுக்கான மாறிலியை வரையறுக்கிறோம். இது சென்சாருக்கு சுத்தமான 5V விநியோகத்தை வழங்கப் பயன்படுகிறது.

const int vcc2 = 13; // VL53L0X சென்சாருக்கான கூடுதல் VCC பின்

அடுத்து, LCD நூலகத்தின் ஒரு நிகழ்வை உருவாக்கி அதன் I2C முகவரியை வரையறுக்கிறோம். வீடியோவில் காட்டப்பட்டுள்ளபடி, I2C ஸ்கேனர் ஸ்கெட்ச்சை இயக்குவதன் மூலம் இந்த முகவரியை நீங்கள் காணலாம். (வீடியோவில் 03:26)

LiquidCrystal_I2C lcd(0x3F, 16, 2); // 16 எழுத்துகள் மற்றும் 2 வரி டிஸ்ப்ளேக்காக LCD முகவரியை 0x3F ஆக அமைக்கவும்

இறுதியாக, அளவீட்டு அலகைக் கட்டுப்படுத்தும் ஒரு மாறி உள்ளது. தூரத்தை மில்லிமீட்டர் அல்லது சென்டிமீட்டரில் காட்ட இந்த மதிப்பை மாற்றலாம்.

const int type = 1; // மில்லிமீட்டருக்கு 1, சென்டிமீட்டருக்கு 2 ஆக அமைக்கவும்

setup() செயல்பாட்டில், கூடுதல் VCC பின் வெளியீடாக உள்ளமைக்கப்பட்டு சென்சாருக்கு மின்சாரம் வழங்க HIGH ஆக அமைக்கப்படுகிறது. பின்னர் LCD துவக்கப்படுகிறது.

loop() செயல்பாட்டில் உள்ள முக்கிய தர்க்கம் சென்சாரிலிருந்து தூரத்தைப் படித்து, LCD ஐ அழித்து, மதிப்பை அலகுடன் சேர்த்து அச்சிடுகிறது. type 2 ஆக அமைக்கப்படும் போது, தூரம் மில்லிமீட்டரிலிருந்து மிகவும் துல்லியமான வாசிப்புக்காக சென்டிமீட்டரில் மிதவை மதிப்பாக மாற்றப்படுகிறது. (வீடியோவில் 06:47)

நேரடி திட்ட ஆர்ப்பாட்டம்

ஆர்ப்பாட்டத்தில், சென்சார் அதன் துல்லியத்தை சரிபார்க்க ஒரு அளவுகோலுக்கு எதிராக சோதிக்கப்படுகிறது. சென்சார் மிகவும் துல்லியமான அளவீடுகளை வழங்குவதாக வீடியோ காட்டுகிறது, சில மில்லிமீட்டர்கள் மட்டுமே விலகல் உள்ளது. (வீடியோவில் 08:32)

தொடர்ச்சியான அளவீட்டு முறையில் சென்சாரின் அதிகபட்ச வரம்பு சுமார் 1.2 மீட்டர் என்பதை கவனத்தில் கொள்ள வேண்டும். இலக்கு வரம்பிற்கு வெளியே இருக்கும்போது, டிஸ்ப்ளே 8190 மதிப்பைக் காண்பிக்கும். (வீடியோவில் 09:53)

மற்றொரு முக்கிய கவனிப்பு என்னவென்றால், அதிக பிரதிபலிப்பு மேற்பரப்புகளில் சென்சார் தவறான அளவீடுகளை கொடுக்க முடியும். பளபளப்பான பொருளை நோக்கி அதை சுட்டிக்காட்டினால் குறிப்பிடத்தக்க பிழைகள் ஏற்படலாம், அதே நேரத்தில் மேட் மேற்பரப்பை நோக்கி சுட்டிக்காட்டினால் துல்லியமான முடிவுகள் கிடைக்கும். (வீடியோவில் 10:42)

குறியீடு வெவ்வேறு VL53L0X தொகுதி வகைகள் மற்றும் பெரிய LCD களுடன், 2004 மாதிரி போன்றவற்றுடன், வயரிங்கில் எந்த மாற்றமும் இல்லாமல் இணக்கமாக உள்ளது. (வீடியோவில் 11:30)

வீடியோ அத்தியாயங்கள்

  • [00:05] VL53L0X மற்றும் LCD திட்டத்திற்கான அறிமுகம்
  • [00:27] VL53L0X மற்றும் LCD க்கான வயரிங் வரைபடம்
  • [02:51] உண்மையான Arduino பலகையில் விரிவான வயரிங்
  • [03:26] I2C முகவரிகளுக்காக ஸ்கேன் செய்தல்
  • [04:18] குறியீடு விளக்கம் மற்றும் உள்ளமைவு
  • [08:32] தூர அளவீட்டின் நேரடி ஆர்ப்பாட்டம்
  • [09:53] சென்சாரின் வரம்பு மற்றும் வரம்புகளை சோதித்தல்
  • [10:42] வெவ்வேறு மேற்பரப்புகளில் துல்லியம்
  • [11:30] வேறு சென்சார் தொகுதி மற்றும் பெரிய LCD உடன் சோதனை

படங்கள்

VL53L0X 200cm range sensor-black
VL53L0X 200cm range sensor-black
VL53L0X 200cm range sensor-blue
VL53L0X 200cm range sensor-blue
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
VL53L0x_pin_module
VL53L0x_pin_module
VL53L0x_pin_round_module
VL53L0x_pin_round_module
VL53L0X LCD1602 wiring 4
VL53L0X LCD1602 wiring 4
VL53L0X LCD1602 wiring 1
VL53L0X LCD1602 wiring 1
VL53L0X LCD1602 wiring 2
VL53L0X LCD1602 wiring 2
VL53L0X LCD1602 wiring 3
VL53L0X LCD1602 wiring 3
641-Lesson 78: Using a VL53L0X Laser Distance Sensor with an LCD1602 or LCD2004 Display and Arduino
மொழி: C++
/*
* Lesson 76-1: Using One single VL6180 Laser Distance Sensor with Arduino 
 * Adafruit code modified for this tutorial
 * by Ahmad Shamshiri at 22:22 on 
 * March 10-11, 2021 in Ajax, ON, Canada
 Please watch video instruction of this code: https://youtu.be/_H9D0czQpSI
 
View code for using two or more VL6180X sensors: https://robojax.com/course1/lecture76

  This video is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8

 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. * 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>. 
 */
#include <Wire.h>
#include "Adafruit_VL6180X.h"

Adafruit_VL6180X vl = Adafruit_VL6180X();

void setup() {
  Serial.begin(115200);

  // wait for serial port to open on native usb devices
  while (!Serial) {
    delay(1);
  }
  
  Serial.println("Adafruit VL6180x test!");
  if (! vl.begin()) {
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop() {

  uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

  if (status == VL6180X_ERROR_NONE) {
    Serial.print("Range: "); Serial.print(range);
    Serial.println("mm");
  }
//  if(range <=76)
//  {
//    //do something
//  }

  // Some error occurred, print it out!
  
  if  ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
    Serial.println("System error");
  }
  else if (status == VL6180X_ERROR_ECEFAIL) {
    Serial.println("ECE failure");
  }
  else if (status == VL6180X_ERROR_NOCONVERGE) {
    Serial.println("No convergence");
  }
  else if (status == VL6180X_ERROR_RANGEIGNORE) {
    Serial.println("Ignoring range");
  }
  else if (status == VL6180X_ERROR_SNR) {
    Serial.println("Signal/Noise error");
  }
  else if (status == VL6180X_ERROR_RAWUFLOW) {
    Serial.println("Raw reading underflow");
  }
  else if (status == VL6180X_ERROR_RAWOFLOW) {
    Serial.println("Raw reading overflow");
  }
  else if (status == VL6180X_ERROR_RANGEUFLOW) {
    Serial.println("Range reading underflow");
  }
  else if (status == VL6180X_ERROR_RANGEOFLOW) {
    Serial.println("Range reading overflow");
  }
  delay(50);
}

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

பிரிட்சிங் கோப்பு

  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
    Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz 0.02 MB