GithubHelp home page GithubHelp logo

vl53l0x-multiple-arduino's Introduction

Sử dụng nhiều module VL53L0X trên 1 kênh I2C với Arduino

1. Kết nối

  • Cấp nguồn +5V và GND cho các module VL53L0X
  • Chân SCL được nối với nhau và nối với SCL trên Arduino
  • Chân SDA được nối với nhau và nối với SDA trên Arduino
  • Chân X (XSHUT) được nối với các chân Digital trên Arduino để điều khiển bật tắt module VL53L0X

2. Cài đặt và sử dụng

  • Sử dụng thư viện Adafruit_VL53L0X nhưng đã có chỉnh sửa
  • Trong ví dụ này sử dụng PlatformIO
  • Clone repo này về và mở bằng PlatformIO để chạy

3. Nguyên lý hoạt động

  • Module VL53L0X có chân XSHUT để điều khiển bật tắt module. Khi chân XSHUT được kéo xuống mức LOW thì module sẽ bị tắt nguồn. Khi chân XSHUT được kéo lên mức HIGH thì module sẽ được cấp nguồn.
  • Để sử dụng được nhiều module thì ta cần định các địa chỉ I2C khác nhau cho chúng. Để làm điều này, ta sẽ sử dụng chân XSHUT để điều khiển bật tắt module. Mỗi khi module được tắt đi và bật lại thì nó sẽ về địa chỉ mặc định là 0x29. Ta chỉ có thể đổi địa chỉ cho cùng lúc 1 module nên vì vậy các bước để đổi địa chỉ như sau:
  1. Reset về địa chỉ mặc định bằng cách tắt nguồn module và bật lại rồi lại tắt tất cả module.
  2. Lần lượt bật từng module lên và đổi địa chỉ cho từng module.
    • Địa chỉ được đặt phải khác địa chỉ mặc định
    • Địa chỉ của các module phải khác nhau

Như vậy ta có thể sử dụng nhiều module VL53L0X trên 1 kênh I2C với Arduino.

4. Giải thích code

Trong ví dụ này sẽ demo với 3 cảm biến.

  1. Đặt các địa chỉ cho các module
#define LOX1_ADDRESS 0x30
#define LOX2_ADDRESS 0x31
#define LOX3_ADDRESS 0x32
  1. Khải báo các chân XSHUT
#define SHT_LOX1 10
#define SHT_LOX2 12
#define SHT_LOX3 13
  1. Khởi tạo các biến
// Các biến quản lý các module
Adafruit_VL53L0X laser = Adafruit_VL53L0X();

// Các biến lưu trữ giá trị của các cảm biến
VL53L0X_RangingMeasurementData_t measure;
  1. Chỉnh sửa hàm setID() để phù hợp với số lượng module sử dụng
  2. Khai báo OUTPUT cho các chân XSHUT, và gọi hàm setID() để đặt địa chỉ cho các module trong hàm setup()
void setup() {
    pinMode(SHT_LOX1, OUTPUT);
    pinMode(SHT_LOX2, OUTPUT);
    pinMode(SHT_LOX3, OUTPUT);

    // Định địa chỉ cho cảm biến
    setID();
}
  1. Trong hàm loop() đọc giá trị cảm biến
void loop() {
    // B1. Định địa chỉ
    laser.pMyDevice->I2cDevAddr = LOX1_ADDRESS & 0x7F;
    delay(10); // Thời gian chờ ổn định - có thể để nhỏ hơn
    // B2. Đọc giá trị
    laser.rangingTest(&measure, false);
    // B3. Lưu vào s1
    s1 = measure.RangeMilliMeter;

    laser.pMyDevice->I2cDevAddr = LOX2_ADDRESS & 0x7F;
    delay(10);
    laser.rangingTest(&measure, false);
    s2 = measure.RangeMilliMeter;

    laser.pMyDevice->I2cDevAddr = LOX3_ADDRESS & 0x7F;
    delay(10);
    laser.rangingTest(&measure, false);
    s3 = measure.RangeMilliMeter;
}

Build và chạy

1698743715710

Thời gian đáp ứng: delay có thể chỉnh nhỏ hơn nữa

laser.pMyDevice->I2cDevAddr = LOX2_ADDRESS & 0x7F;
delay(10); <---
laser.rangingTest(&measure, false);
s2 = measure.RangeMilliMeter;

vl53l0x-multiple-arduino's People

Contributors

nhthai173 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.