Trong hướng dẫn này, ta sẽ học cách sử dụng cảm biến gia tốc góc nghiêng MPU6050, một trong những mô-đun cảm biến gia tốc tốt nhất hiện nay, tương thích với Arduino. Cảm biến MPU6050 được sử dụng trong robot tự cân bằng, con lắc động, máy bay
(1) x Arduino Uno R3
(1) x Cảm biến gia tốc góc nghiêng MPU6050
(4) x Dây cắm đực - cái
IMU (Inertial Measurement Unit) thường gồm có 2 loại cảm biến: cảm biến gia tốc (accelerometer) và cảm biến quay (gyroscope).
Accelerometer (gọi tắt là accel): như tên gọi của nó, accel đơn giản là một cảm biến đo gia tốc của bản thân module và thường sẽ có 3 trục xyz ứng với 3 chiều không gian. Lưu ý là accel đo cả gia tốc của trọng lực nên giá trị thực khi đo sẽ bao gồm cả trọng lực.
Gyroscope (gọi tắt là gyro): là một loại cảm biến đo tốc độ quay của nó quanh một trục. Tương tự với accel, gyro cũng thường có 3 trục xyz.
Một ví dụ đơn giản, khi bạn đặt một con chip IMU thẳng đứng như trên và để im không chuyển động, giá trị trả về sẽ là accel = [0.0, -9.8, 0.0] và gyro = [0.0, 0.0, 0.0] do chỉ có trọng lực trái đất tác dụng lực và không có bất cứ chuyển động quay nào cả. Lưu ý rằng gyro chỉ đo tốc độ quay chứ không đo trực tiếp góc quay, nên khi bạn quay module một góc nào đó rồi dừng, giá trị của gyro sẽ tăng lên rồi hạ xuống về 0.
Một module IMU đầy đủ sẽ được gọi là 6-DOF (6 Degrees Of Freedom) tức là 6 trục độc lập (3 của accel và 3 của gyro).
Với chip IMU này các bạn có thể làm được nhiều món đồ "chơi" như:
Robot 2 bánh tự cân bằng
Máy bay điều khiển từ xa (drone)
Chuột máy tính trên không
Tay cầm chơi game
Hệ thống giữ thăng bằng cho camera/máy ảnh.
Các ứng dụng: đếm số bước chân, cảm biến rơi, cảm biến rung/lắc...
MPU-6050 là cảm biến của hãng InvenSense tích hợp 6 trục cảm biến bao gồm:
Con quay hồi chuyển 3 trục (Gyroscope).
Cảm biến gia tốc 3 chiều (Accelerometer).
MPU6050 có kèm sensor fusion sẵn trên chip (gọi là DMP - Digital Motion Processor), breakout board có thể tìm thấy: GY-521 breakout board (không rõ xuất xứ, nhưng rẻ), breakout board của Sparkfun (đắt hơn kha khá).
MPU6050 sử dụng giao thức I2C.
Kết nối cảm biến MPU6050 với mạch Arduino:
MPU6050 -- Arduino
Vcc 5V
GND GND
SCL A4
SDA A5
Code này sẽ giúp bạn đọc dữ liệu từ MPU6050 cách thô và đơn giản nhất.