아두이노 코드 및 비디오 송신기와 레이저 센서
이 튜토리얼에서는 레이저 송신기와 수신기를 사용하여 레이저 빔을 감지하고 부저 또는 다른 동작을 트리거하는 방법을 배웁니다. 이 설정은 자동화 및 로봇 공학을 포함한 다양한 응용 분야에서 활용될 수 있습니다. 튜토리얼이 끝나면 구성 요소를 배선하고 Arduino 코드를 작성하여 모든 것이 원활하게 작동하도록 하는 방법을 이해하게 될 것입니다.


튜토리얼 전반에 걸쳐 이 프로젝트에 관련된 주요 구성 요소, 올바른 배선 방법 및 코드 작동 방식에 대해 논의합니다. 자세한 설명은 비디오를 시청하세요(비디오 02:00 지점).
하드웨어 설명
이 프로젝트의 주요 구성 요소에는 레이저 송신기, 레이저 수신기 및 부저가 포함됩니다. 레이저 송신기는 빛의 빔을 방출하고 수신기는 이 빔을 감지합니다. 빔이 차단되면 수신기는 Arduino에 신호를 보내 부저를 활성화하거나 다른 동작을 수행할 수 있습니다.
송신기 모듈은 5볼트에서 작동하며 전류를 제한하는 저항이 포함되어 있습니다. 수신기 모듈은 배치 유연성을 위해 외부 와이어에 연결할 수 있습니다. 부저도 5볼트로 전원이 공급되며 양극과 접지의 두 핀이 있습니다.
데이터시트 세부 정보
| 제조업체 | 알 수 없음 |
|---|---|
| 부품 번호 | 레이저 송신기/수신기 모듈 |
| 작동 전압 | 5V |
| 전류 소비 | 5mA (일반) |
| 출력 유형 | 디지털 신호 |
| 감지 범위 | 환경에 따라 다름 |
| 크기 | 송신기: 14.8mm x 18.8mm, 수신기: 15.4mm x 23.4mm |
- 손상을 방지하려면 적절한 전압 공급을 확인하세요.
- 신호 손실을 최소화하려면 짧은 와이어를 사용하세요.
- 안정적인 감지를 위해 수신기를 송신기와 정렬하세요.
- 다양한 조명 조건에서 설정을 테스트하세요.
- 오탐지를 유발할 수 있는 반사에 주의하세요.
배선 지침

레이저 송신기를 배선하려면 접지 핀을 Arduino GND에 연결하고 양극 핀을 Arduino 5V에 연결하세요. 송신기의 중간 핀은 사용되지 않습니다. 레이저 수신기의 경우 접지 핀을 GND에, 양극 핀을 5V에, 출력 핀을 Arduino 핀 2에 연결하세요. 이 출력 핀은 레이저 수신기의 신호를 읽습니다.
다음으로 부저를 연결합니다. 긴 핀(양극)은 Arduino 핀 8에 연결하고 짧은 핀(접지)은 GND에 연결합니다. 작동 중 간헐적인 문제를 방지하려면 모든 연결이 안전한지 확인하세요.
코드 예제 및 설명
Arduino 코드는 DETECT 및 ACTION 식별자를 사용하여 레이저 센서와 동작(부저)의 핀을 정의하는 것으로 시작합니다. 코드는 디버깅을 위해 시리얼 통신을 초기화하고 setup() 함수에서 핀 모드를 설정합니다.
#define DETECT 2 // 센서용 핀 2
#define ACTION 8 // 동작 수행용 핀 8
void setup() {
Serial.begin(9600);
pinMode(DETECT, INPUT); // 감지 입력 핀 정의
pinMode(ACTION, OUTPUT); // ACTION 출력 핀 정의
}
이 코드 조각은 입력 및 출력 핀을 구성하는 방법을 보여주며, 이는 설정의 기능에 중요합니다. Serial.begin(9600) 명령은 시리얼 모니터와의 통신을 허용하여 디버그 메시지를 볼 수 있게 합니다.
loop() 함수에서 코드는 레이저 센서의 상태를 지속적으로 확인합니다. 레이저 빔이 감지되면 부저를 활성화하고 시리얼 모니터에 "Detected!"를 출력합니다.
void loop() {
int detected = digitalRead(DETECT); // 레이저 센서 읽기
if(detected == HIGH) {
digitalWrite(ACTION, HIGH); // 부저 켜기
Serial.println("Detected!");
} else {
digitalWrite(ACTION, LOW); // 부저 끄기
Serial.println("No laser");
}
delay(200); // 200밀리초 대기
}
이 코드 조각은 프로그램의 핵심 로직을 보여줍니다. detected 변수는 레이저 빔이 존재하는지 확인하는 digitalRead() 함수의 출력을 저장합니다. 상태에 따라 부저가 켜지거나 꺼집니다.
시연 / 기대 효과
설정이 올바르게 배선되고 코드가 업로드되면 시스템은 예상대로 작동해야 합니다. 레이저 빔이 수신기에 도달하면 시리얼 모니터에 "Detected!"가 표시되고 부저가 울립니다. 빔이 차단되거나 감지되지 않으면 "No laser"가 표시되고 부저가 꺼집니다.
안정적인 작동을 위해 레이저 빔이 수신기와 올바르게 정렬되었는지 확인하는 것이 중요합니다. 비디오(비디오 08:00 지점)에서 논의된 대로 오탐지를 유발할 수 있는 잠재적 반사에 주의하세요.
비디오 타임스탬프
- 00:00 - 소개
- 02:00 - 하드웨어 설명
- 04:30 - 배선 지침
- 06:15 - 코드 설명
- 08:00 - 시연
++
/*
* Laser Sensor module for Arduino
* Turns ON a buzzer or you can control a motor or servo or any other action.
* Watch the video https://youtu.be/h_y1y6eUvIY
* *
Laser Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on Feb 02, 2018 at 18:24 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
* 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/>.
/*
/*
*/
// Laser Sensor code for Robojax.com
#define DETECT 2 // pin 2 for sensor
#define ACTION 8 // pin 8 for action to do something
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Laser Module Test");
pinMode(DETECT, INPUT);//define detect input pin
pinMode(ACTION, OUTPUT);//define ACTION output pin
// Laser sensor code for Robojax.com
}
void loop() {
// Laser Sensor code for Robojax.com
int detected = digitalRead(DETECT);// read Laser sensor
if( detected == HIGH)
{
digitalWrite(ACTION,HIGH);// set the buzzer ON
Serial.println("Detected!");
}else{
digitalWrite(ACTION,LOW); // Set the buzzer OFF
Serial.println("No laser");
// Laser Sensor code for Robojax.com
}
delay(200);
}
필요할 수 있는 것들
-
아마존
자원 및 참고자료
아직 자원이 없습니다.
파일📁
파일이 없습니다.