કોડ શોધો

લેસર VL53L0X 6-પિન મોડ્યુલ અને TM1637 ડિસ્પ્લે સાથે Arduino માટે અંતર માપવું

લેસર VL53L0X 6-પિન મોડ્યુલ અને TM1637 ડિસ્પ્લે સાથે Arduino માટે અંતર માપવું


આ ટ્યુટોરિયલમાં, આપણે VL53L0X લેસર અંતર સેન્સરનો ઉપયોગ કરીને અંતર કેવી રીતે માપવું અને TM1637 7-સેગમેન્ટ ડિસ્પ્લે પર રીડિંગ્સ કેવી રીતે દર્શાવવું તે શીખીશું. આ પ્રોજેક્ટ બંને ઘટકોને જોડીને એક સરળ છતાં અસરકારક અંતર માપન સાધન બનાવે છે. VL53L0X ચોક્કસ અંતર રીડિંગ્સ પ્રદાન કરવા માટે લેસર ટેકનોલોજીનો ઉપયોગ કરે છે, જ્યારે TM1637 ડિસ્પ્લે આ રીડિંગ્સને વપરાશકર્તા-મૈત્રીપૂર્ણ ફોર્મેટમાં દર્શાવે છે.

VL53L0X 200cm range sensor
TM1637 4 digit display module

આપણે જરૂરી હાર્ડવેર, વાયરિંગ સૂચનાઓ અને બધું ચાલુ કરવા માટે જરૂરી કોડમાંથી પસાર થઈશું. આ ટ્યુટોરિયલના અંત સુધીમાં, તમારી પાસે એક કાર્યરત અંતર માપન ઉપકરણ હશે જે વિવિધ એપ્લિકેશનોમાં ઉપયોગમાં લઈ શકાય છે. વિઝ્યુઅલ માર્ગદર્શન માટે, વિડિયો (વિડિયોમાં 00:00 પર) ચોક્કસપણે જુઓ.

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટ માટેના મુખ્ય ઘટકો VL53L0X લેસર અંતર સેન્સર અને TM1637 ડિસ્પ્લે મોડ્યુલ છે. VL53L0X એક ટાઇમ-ઓફ-ફ્લાઇટ સેન્સર છે જે લેસર બીમ ઉત્સર્જિત કરીને અને પ્રતિબિંબ પાછા આવવામાં લાગતો સમય ગણતરી કરીને ઑબ્જેક્ટનું અંતર માપે છે. તે 2.6V થી 3.5V ની વોલ્ટેજ રેન્જ પર કાર્ય કરે છે પરંતુ સંકલિત વોલ્ટેજ રેગ્યુલેટરને કારણે 5V સાથે પણ કાર્ય કરી શકે છે.

TM1637 એક ડિસ્પ્લે ડ્રાઇવર છે જે 7-સેગમેન્ટ LED ડિસ્પ્લેને નિયંત્રિત કરે છે. તે સરળ 2-વાયર ઇન્ટરફેસ (CLK અને DIO) પર સંચાર કરે છે, જે તેને Arduino સાથે જોડવાનું સરળ બનાવે છે. ડિસ્પ્લે આંકડાકીય મૂલ્યો દર્શાવી શકે છે અને VL53L0X સેન્સરમાંથી અંતર માપનને વિઝ્યુઅલાઇઝ કરવા માટે યોગ્ય છે.

ડેટાશીટ વિગતો

ઉત્પાદકSTMicroelectronics
ભાગ નંબરVL53L0X
લોજિક/IO વોલ્ટેજ2.6 V - 3.5 V
સપ્લાય વોલ્ટેજ2.6 V - 5 V
ઓપરેટિંગ તાપમાન-20 °C થી 70 °C
માપન રેન્જ30 mm થી 2000 mm
I2C આવૃત્તિ400 kHz
ટાઇમઆઉટ સેટિંગ500 ms
પેકેજ6-પિન મોડ્યુલ

  • યોગ્ય પાવર સપ્લાયની ખાતરી કરો (5V સ્વીકાર્ય છે).
  • લીકેજ ટાળવા માટે પુલ-અપ રેઝિસ્ટર સાથે XSHUT પિન જોડો.
  • સંચાર માટે I2C નો ઉપયોગ કરો; SDA અને SCL યોગ્ય રીતે જોડો.
  • અણધારી વર્તણૂક ટાળવા માટે કોડમાં ટાઇમઆઉટ હેન્ડલ કરો.
  • ચોકસાઈ માટે ઓપરેટિંગ તાપમાન રેન્જનું ધ્યાન રાખો.

વાયરિંગ સૂચનાઓ

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

VL53L0X અને TM1637 ડિસ્પ્લેને વાયર કરવા માટે, VL53L0X ના VCC પિનને Arduino પરના 5V પિન સાથે અને GND પિનને Arduino પરના ગ્રાઉન્ડ પિન સાથે જોડીને શરૂ કરો. આગળ, VL53L0X ના SDA પિનને Arduino પરના A4 પિન સાથે જોડો, જે સામાન્ય રીતે I2C ડેટા સંચાર માટે વપરાય છે. SCL પિનને Arduino પરના A5 પિન સાથે જોડવું જોઈએ, જે ક્લોક સિગ્નલ માટે વપરાય છે.

TM1637 ડિસ્પ્લે માટે, CLK પિનને Arduino પરના ડિજિટલ પિન 2 સાથે અને DIO પિનને ડિજિટલ પિન 3 સાથે જોડો. છેલ્લે, VL53L0X ના XSHUT પિનને Arduino પરના ડિજિટલ પિન 12 સાથે જોડો. ખાતરી કરો કે કોઈપણ બિનઉપયોગી પિન, જેમ કે VL53L0X પરનો GPIO1, અજોડ રહે. આ સેટઅપ Arduino ને સેન્સર અને ડિસ્પ્લે બંને સાથે અસરકારક રીતે સંચાર કરવાની મંજૂરી આપશે.

કોડ ઉદાહરણો અને વોકથ્રુ

કોડ સેન્સર અને ડિસ્પ્લેને પ્રારંભ કરે છે, I2C સંચાર સેટ કરે છે અને સતત અંતર માપન વાંચે છે. નીચે સેટઅપ ફંક્શન દર્શાવતો સ્નિપેટ છે જ્યાં પિન ગોઠવવામાં આવે છે અને સેન્સર પ્રારંભ થાય છે:

void setup() {
  pinMode(12, INPUT_PULLUP); // પિન 12 ને ઇનપુટ માટે સેટ કરો
  digitalWrite(12, HIGH); // પિન 12 ને હાઇ (5V) સેટ કરો
  Serial.begin(9600);
  Wire.begin(); // I2C સંચાર પ્રારંભ થયો
  sensor.init(); // અંતર સેન્સર પ્રારંભ થયું
  sensor.setTimeout(500); // ટાઇમઆઉટ સેટ થયું
  sensor.startContinuous(); // માપનનો પ્રકાર સેટ થયો
}

આ સેટઅપ ફંક્શનમાં, XSHUT માટેનો પિન પુલ-અપ રેઝિસ્ટર સાથે ઇનપુટ તરીકે ગોઠવવામાં આવે છે, અને સેન્સર સતત રેન્જ માપન માટે પ્રારંભ થાય છે. સીરિયલ મોનિટર પણ અંતર રીડિંગ્સ દર્શાવવા માટે સેટ કરવામાં આવે છે.

આગળ, મુખ્ય લૂપ અંતર વાંચે છે અને ડિસ્પ્લે અપડેટ કરે છે. અહીં લૂપ ફંક્શનમાંથી એક કેન્દ્રિત અંશ છે:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters(); // અંતર mm માં વાંચો
  display.setSegments(clearLED); // LED ડિસ્પ્લેમાંથી અગાઉનું મૂલ્ય દૂર કરો
  display.showNumberDec(distance, false, 4, 0); // અંતર દર્શાવો
  Serial.print("અંતર: ");
  Serial.print(distance); // સીરિયલ મોનિટર પર અંતર છાપો
}

આ લૂપ સતત સેન્સરમાંથી અંતર વાંચે છે અને TM1637 ડિસ્પ્લેને નવીનતમ માપન સાથે અપડેટ કરે છે. તે ડીબગિંગ હેતુઓ માટે સીરિયલ મોનિટર પર પણ અંતર છાપે છે. જો તમે સંપૂર્ણ કોડ જોવા માંગતા હો, તો તે લેખની નીચે લોડ થશે.

પ્રદર્શન / શું અપેક્ષા રાખવી

સેટઅપ પૂર્ણ કરીને અને કોડ અપલોડ કર્યા પછી, તમારે VL53L0X દ્વારા માપેલ અંતર TM1637 પર દર્શાવેલું જોવું જોઈએ. જેમ તમે ઑબ્જેક્ટને સેન્સરની નજીક અથવા દૂર ખસેડો છો, તેમ દર્શાવેલ મૂલ્ય તે મુજબ બદલાશે. જો તમને કોઈ અણધારી રીડિંગ્સ અનુભવાય, તો ખાતરી કરો કે સેન્સર અવરોધિત નથી અને ઑબ્જેક્ટની સપાટી લેસર પ્રતિબિંબ માટે યોગ્ય છે (વિડિયોમાં 09:30 પર).

સામાન્ય મુશ્કેલીઓમાં ઊલટું વાયરિંગ અથવા સેન્સરને યોગ્ય રીતે પ્રારંભ ન કરવું શામેલ છે, જે ટાઇમઆઉટ ભૂલો તરફ દોરી શકે છે. ખાતરી કરો કે યોગ્ય પિન જોડાયેલા છે અને ચોક્કસ અંતર માપન માટે સેન્સર પૂરતું પાવર થયેલું છે.

છબીઓ

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
ભાષા: C++
/* This example shows how to use continuous mode to take readings.

This is Arduino code to measure distance with VL53L0X and display it on a TM1637 LED 7-segment display.

Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
You have to watch 1 video before using this code:
1- Watch VL53L0X video and get code https://youtu.be/1n9eJ9HaYpE
2- Watch TM1637 video and get code https://robojax.com?vid=robojax-TM1637
You can get this code from Robojax.com

Pin connection

VL53L0X Pin  Arduino Pin
VCC         5V
GND         GND
SDA         A4 or SDA if available
SCL         A5 or SCL if available
GPIO1       leave it unconnected
XSHUT       D12 (digital 12 or pin 12)
*/


#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

/////// start of TM1637 Display
#include <Arduino.h>
#include <TM1637Display.h> 
#define CLK 2
#define DIO 3
#define TEST_DELAY   500
TM1637Display display(CLK, DIO);
uint8_t clearLED[] = { 0x0, 0x0, 0x0, 0x0 }; // value for clearing the LEDs
////// End of TM1637 Display 


void setup()
{
  pinMode(12,INPUT_PULLUP);// set pin 12 for input
  digitalWrite(12,HIGH);// set pin 12 high (5V)
  Serial.begin(9600);
  Wire.begin();// I2C communication initialized

  sensor.init();// distance sensor is initialized
  sensor.setTimeout(500); // time out is set

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();// type of measurement is set
    Serial.println("VL53L0X with MAX6675 test");
    delay(500);
    display.setBrightness(0x0f);// set brightness for display
}

void loop()
{
  int distance =sensor.readRangeContinuousMillimeters();// read the distance in mm
  display.setSegments(clearLED);// remove previous value from LED display
  display.showNumberDec(distance, false, 4, 0);// display the distance

  
 //distance = distance;
  Serial.print("Distance: ");
  Serial.print(distance);// print distance on serial monitor
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
  delay(100);
}

સંસાધનો અને સંદર્ભો

હજી સુધી કોઈ સંસાધનો નથી.

ફાઇલો📁

ડેટાશીટ (pdf)

Fritzing ફાઇલ

વપરાશકર્તાનું માર્ગદર્શિકા

અન્ય ફાઇલો