Mã Arduino và Video cho Mô-đun Khoảng cách Hồng ngoại Sharp
Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng mô-đun đo khoảng cách Sharp IR để đo khoảng cách và kích hoạt các hành động dựa trên khoảng cách phát hiện được. Dự án này sẽ trình bày cách thiết lập phần cứng và viết mã Arduino để đọc các phép đo khoảng cách và kích hoạt còi khi phát hiện vật thể trong một phạm vi nhất định. Bạn sẽ học cách nối các linh kiện với nhau và hiểu các định danh chính trong mã.

Đối với dự án này, chúng ta sẽ sử dụng cảm biến Sharp IR phát ra ánh sáng hồng ngoại và đo khoảng cách đến vật thể dựa trên ánh sáng phản xạ. Khi phát hiện vật thể trong phạm vi, còi sẽ được kích hoạt, cung cấp một cách đơn giản nhưng hiệu quả để trình bày khả năng của mô-đun Sharp IR. Hãy xem video để có hướng dẫn trực quan về thiết lập và mã (trong video tại 00:00).
Giải thích phần cứng
Các linh kiện chính của dự án này bao gồm cảm biến khoảng cách Sharp IR, bo mạch Arduino và còi. Cảm biến Sharp IR bao gồm một bộ phát và một bộ thu hoạt động cùng nhau để đo khoảng cách. Khi ánh sáng hồng ngoại từ bộ phát chạm vào vật thể, nó phản xạ trở lại bộ thu, cho phép tính toán khoảng cách dựa trên thời gian ánh sáng quay trở lại.
Arduino đóng vai trò là bộ điều khiển, đọc các phép đo khoảng cách từ cảm biến IR và điều khiển còi dựa trên các số đọc. Còi sẽ kêu khi phát hiện vật thể trong phạm vi chỉ định, làm cho thiết lập này hữu ích cho các ứng dụng như phát hiện chướng ngại vật trong robot.
Chi tiết từ bảng dữ liệu
| Nhà sản xuất | Sharp |
|---|---|
| Số bộ phận | GP2Y0A21YK0F |
| Điện áp logic/IO | 5 V |
| Điện áp cung cấp | 4.5 – 5.5 V |
| Điện áp đầu ra | 0.4 – 2.5 V |
| Phạm vi đo | 10 – 80 cm |
| Thời gian phản hồi | 50 ms |
| Dòng điện đầu ra | 20 mA |
| Đóng gói | Mô-đun |
| Ghi chú / biến thể | Có sẵn trong nhiều phạm vi khoảng cách |
- Đảm bảo nguồn điện phù hợp (4.5 – 5.5 V) để tránh hư hỏng.
- Sử dụng điện trở để giới hạn dòng điện nếu cần.
- Giữ cảm biến sạch sẽ để có số đọc chính xác.
- Chú ý đến nhiễu ánh sáng xung quanh.
- Dây nối phải chắc chắn để tránh kết nối không liên tục.
Hướng dẫn nối dây

Để nối mô-đun khoảng cách Sharp IR, kết nối chân nối đất của mô-đun với chân GND trên Arduino. Sau đó, kết nối chân VCC của mô-đun với chân 5V trên Arduino. Chân đầu ra tín hiệu từ mô-đun Sharp IR nên được kết nối với chân 2 trên Arduino, chân này sẽ đọc dữ liệu khoảng cách.
Đối với còi, kết nối chân dài hơn (dương) với chân 8 trên Arduino và chân ngắn hơn (âm) với GND. Đảm bảo tất cả các kết nối đều chắc chắn và các linh kiện được cấp nguồn đúng cách để đảm bảo hoạt động chính xác.
Ví dụ mã & hướng dẫn chi tiết
Dưới đây là một đoạn trích ngắn từ mã Arduino nơi chúng ta định nghĩa các chân và thiết lập cảm biến. Định danh IR được định nghĩa là chân analog được sử dụng cho tín hiệu cảm biến.
#define IR A0 // định nghĩa chân tín hiệu
SharpIR SharpIR(IR, model); // Khởi tạo SharpIR với chân đã định nghĩa
Mã này khởi tạo cảm biến Sharp IR trên chân analog được chỉ định. Định danh model chỉ định loại cảm biến đang được sử dụng, trong trường hợp này được đặt là 1080 cho mô hình GP2Y0A21YK0F.
Trong hàm setup, chúng ta bắt đầu giao tiếp nối tiếp để theo dõi các số đọc khoảng cách:
void setup() {
Serial.begin(9600); // Khởi tạo giao tiếp nối tiếp
Serial.println("Robojax Sharp IR "); // In thông báo ra màn hình nối tiếp
}
Hàm setup khởi tạo giao tiếp nối tiếp ở tốc độ 9600 baud, cho phép Arduino gửi dữ liệu khoảng cách đến Màn hình nối tiếp để quan sát.
Trong hàm loop, chúng ta đọc khoảng cách từ cảm biến và in nó:
void loop() {
int dis = SharpIR.distance(); // Đọc khoảng cách
Serial.print("Mean distance: "); // In khoảng cách ra màn hình nối tiếp
Serial.println(dis); // Xuất phép đo khoảng cách
}
Đoạn trích này cho thấy cách liên tục đọc khoảng cách và in nó ra Màn hình nối tiếp. Biến dis giữ giá trị khoảng cách được đo bởi cảm biến Sharp IR.
Trình diễn / Điều gì sẽ xảy ra
Khi thiết lập hoàn tất, bạn có thể mong đợi còi sẽ kêu bất cứ khi nào phát hiện vật thể trong phạm vi chỉ định của cảm biến Sharp IR. Màn hình nối tiếp sẽ hiển thị "Mean distance" cùng với khoảng cách đo được tính bằng centimet. Nếu không có vật thể nào trong phạm vi, màn hình sẽ chỉ ra điều đó (trong video tại 02:30).
Các lỗi thường gặp bao gồm đảm bảo cảm biến được căn chỉnh đúng và không có vật cản chặn tín hiệu hồng ngoại. Ngoài ra, hãy kiểm tra nguồn điện ổn định để tránh các số đọc bất thường.
Mốc thời gian video
- 00:00 - Giới thiệu về dự án
- 02:30 - Trình diễn chức năng của cảm biến
- 03:45 - Giải thích về nối dây
- 05:00 - Hướng dẫn chi tiết mã
/*
* Sharp IR (infrared) distance measurement module for Arduino
* Measures the distance in cm.
* Original library: https://github.com/guillaume-rico/SharpIR
* Watch video instruction for this code: https://youtu.be/GL8dkw1NbMc
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on Feb 03, 2018 at 07:34
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
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/>.
*/
*/
// Sharp IR code for Robojax.com
#include <SharpIR.h>
#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor: 1080 for GP2Y0A21Y
// 20150 for GP2Y0A02Y
// 430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR(IR, model);
void setup() {
// Sharp IR code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
}
void loop() {
// Sharp IR code for Robojax.com
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis=SharpIR.distance(); // this returns the distance to the object you're measuring
// Sharp IR code for Robojax.com
Serial.print("Mean distance: "); // returns it to the serial monitor
Serial.println(dis);
//Serial.println(analogRead(A0));
unsigned long endTime=millis()-startTime; // the following gives you the time taken to get the measurement
Serial.print("Time taken (ms): ");
Serial.println(endTime);
// Sharp IR code for Robojax.com
}
Nghĩ bạn có thể cần
-
Amazon
Tài nguyên & tài liệu tham khảo
-
Bên ngoàiSharp IR GP2Y0A51SK0F Datasheet (PDF)global.sharp
-
Bên ngoàiSharp Library from RoboJob.comrobojax.com
Tập tin📁
Thư viện Arduino (tệp nén)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Bảng dữ liệu (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
Tập tin Fritzing
-
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Các tập tin khác
-
Sharp GP2Y0A41SK0F Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F Infrared distance sensor datashee
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB