흥미로운 조명 효과로 물을 무조건 뿌려주는 분수대가 여러 개 있습니다. 그래서 나는 외부 음악에 반응하고 음악 비트에 따라 물을 뿌릴 수있는 혁신적인 분수를 디자인하는 것에 대해 배회했다. 흥미롭지 않나요?
이 Arduino Water Fountain 의 기본 아이디어는 모바일, iPod, PC 등과 같은 외부 음원에서 입력을 받아 사운드를 샘플링하여 다른 전압 범위로 분류 한 다음 출력을 사용하여 다양한 릴레이를 켜는 것입니다. 먼저 콘덴서 마이크 기반 사운드 센서 모듈 을 사용하여 사운드를 다른 전압 범위로 분할하기 위해 사운드 소스를 수행했습니다. 그런 다음 전압이 op-amp에 공급되어 사운드 레벨을 특정 한계와 비교합니다. 더 높은 전압 범위는 노래의 비트와 리듬에 맞춰 작동하는 음악 분수로 구성된 릴레이 스위치 ON에 해당합니다. 그래서 여기 우리는 아두 이노와 사운드 센서를 사용 하여이 음악 분수를 만들고 있습니다.
필요한 재료
- Arduino Nano
- 사운드 센서 모듈
- 12V 릴레이 모듈
- DC 펌프
- LED
- 전선 연결
- Vero 보드 또는 브레드 보드
사운드 센서의 작동
사운드 센서 모듈은 환경에서 외부 사운드를 감지하는 데 사용되는 간단한 일렉 트릿 마이크 기반 전자 보드입니다. LM393 파워 앰프와 일렉 트릿 마이크를 기반으로 하며 설정된 임계 값 한계를 초과하는 소리가 있는지 여부를 감지하는 데 사용할 수 있습니다. 모듈 출력은 사운드가 임계 값보다 크거나 작음을 나타내는 디지털 신호입니다.
전위차계는 센서 모듈의 감도를 조정하는 데 사용할 수 있습니다. 음원이 전위차계에 의해 설정된 임계 값보다 낮거나 높을 때 모듈 출력은 HIGH / LOW입니다. 동일한 사운드 센서 모듈을 사용하여 데시벨 단위의 사운드 레벨을 측정 할 수도 있습니다.
사운드 센서 회로도
사운드 센서 모듈에서 기본 입력 장치는 사운드 신호를 전기 신호로 변환하는 마이크입니다. 그러나 사운드 센서의 전기 신호 출력은 크기가 너무 작아 분석하기가 매우 어렵 기 때문에이를 증폭하고 출력 신호를 Op-의 비 반전 입력에 공급하는 NPN 트랜지스터 증폭기 회로를 사용했습니다. 앰프. 여기서 LM393 OPAMP는 마이크의 전기 신호와 전압 분배기 회로에서 나오는 기준 신호를 비교하는 비교기로 사용됩니다. 입력 신호가 기준 신호보다 크면 OPAMP의 출력이 높고 그 반대의 경우도 마찬가지입니다.
연산 증폭기 회로 섹션을 따라 작동에 대해 자세히 알아볼 수 있습니다.
뮤지컬 분수 회로도
위 음악 분수 회로도에서 보듯 이 사운드 센서는 Arduino Nano의 3.3V 전원으로 전원이 공급되고 사운드 센서 모듈의 출력 핀은 Nano의 아날로그 입력 핀 (A6)에 연결됩니다. 모든 아날로그 핀을 사용할 수 있지만 프로그램에서 변경해야합니다. 릴레이 모듈과 DC 펌프는 그림과 같이 외부 12VDC 전원 공급 장치에 의해 전원이 공급됩니다. 릴레이 모듈의 입력 신호는 Nano의 디지털 출력 핀 D10에 연결됩니다. 조명 효과를 위해 두 가지 색상의 LED를 선택하여 Nano의 두 디지털 출력 핀 (D12, D11)에 연결했습니다.
여기서 펌프는 릴레이 모듈의 입력에 HIGH 펄스가 주어지면 릴레이의 COM 접점이 NO 접점에 연결되고 전류가 폐쇄 회로 경로를 통해 펌프를 통해 흐르도록 연결됩니다. 물 흐름을 활성화하십시오. 그렇지 않으면 펌프가 꺼진 상태로 유지됩니다. HIGH / LOW 펄스는 사운드 입력에 따라 Arduino Nano에서 생성됩니다.
perfboard에 전체 회로를 납땜하면 다음과 같습니다.
여기서 우리 는 분수 용기로 플라스틱 상자를 사용하고 분수 역할을하기 위해 미니 5v 펌프 를 사용했습니다. 우리는 이전에 소방 로봇에서이 펌프를 사용했습니다.
춤추는 분수를위한 Arduino Nano 프로그래밍
이 Arduino 분수 프로젝트 의 전체 프로그램은 페이지 하단에 있습니다. 그러나 여기서는 더 나은 이해를 위해 부분별로 설명하고 있습니다.
프로그램의 첫 번째 부분은 다음 프로그램 블록에서 사용할 핀 번호를 할당하는 데 필요한 변수를 선언하는 것입니다. 그런 다음 사운드 센서 모듈의 기준 값인 값으로 상수 REF를 정의합니다. 할당 된 값 (700)은 사운드 센서의 출력 전기 신호에 해당하는 바이트 값입니다.
int 센서 = A6; int redled = 12; int greenled = 11; int 펌프 = 10; #define REF 700
에서는 무효 설정 기능 우리가 사용한 pinMode의 핀의 입력 / 출력 데이터의 방향을 지정하는 기능. 여기서 센서는 INPUT으로 간주되고 다른 모든 장치는 OUTPUT으로 사용됩니다.
void setup () { pinMode (sensor, INPUT); pinMode (redled, OUTPUT); pinMode (greenled, OUTPUT); pinMode (pump, OUTPUT); }
무한 내부 루프 , analogRead의 함수는 변수의 센서 핀을 저장로부터의 아날로그 값을 입력으로 판독한다라고 sensor_value .
int sensor_value = analogRead (센서);
마지막 부분에서 if-else 루프는 입력 아날로그 신호를 기준 값과 비교하는 데 사용됩니다. 기준보다 크면 모든 출력 핀에 HIGH 출력이 주어 지므로 모든 LED와 펌프가 활성화되고 그렇지 않으면 모든 것이 꺼진 상태로 유지됩니다. 여기에서도 릴레이의 ON / OFF 시간을 구분하기 위해 70 밀리 초의 지연을 제공했습니다.
if (sensor_value> REF) { digitalWrite (greenled, HIGH); digitalWrite (redled, HIGH); digitalWrite (pump, HIGH); 지연 (70); } else { digitalWrite (greenled, LOW); digitalWrite (redled, LOW); digitalWrite (pump, LOW); 지연 (70); }
이것이 Arduino가 제어하는 Water Fountain의 작동 방식이며 작동하는 비디오 가 포함 된 완전한 코드가 아래에 나와 있습니다.