Hugh Herr에 대해 들어 본 적이 있습니까? 그는 장애의 한계를 깨뜨린 유명한 미국 암벽 등반가입니다. 그는 기술이 장애인이 정상적인 삶을 살 수 있도록 도울 수 있다는 강한 신념을 가지고 있습니다. TED 강연 중 하나에서 Herr는 “ 인간은 장애가 없습니다. 사람은 결코 부러 질 수 없습니다. 우리의 건설 된 환경, 우리의 기술은 무너지고 무력화됩니다. 우리 국민은 우리의 한계를 받아 들일 필요는 없지만 기술 혁신을 통해 장애를 전달할 수 있습니다 . ”. 이것들은 단순한 말이 아니라 그의 삶을 그들에게 살았고, 오늘날 그는 의족 다리를 사용하고 정상적인 삶을 살고 있다고 주장합니다. 그렇습니다. 기술은 실제로 인간의 장애를 무력화시킬 수 있습니다. 이를 염두에두고 Arduino를 사용하여 초음파 블라인드 지팡이 를 만들기 위해 간단한 개발 보드와 센서를 사용하겠습니다. 시각 장애인을위한 스틱 이상의 기능을 수행 할 수 있습니다.
이 스마트 스틱에는 장애물과의 거리를 감지 하는 초음파 센서, 조명 상태를 감지하는 LDR, 시각 장애인이 스틱을 원격으로 찾을 수있는 RF 리모컨이 있습니다. 모든 피드백은 부저를 통해 시각 장애인에게 제공됩니다. 물론 Buzzer 대신 바이브레이터 모터를 사용하여 창의력을 발휘하여 훨씬 더 발전 할 수 있습니다.
필요한 재료:
- Arduino Nano (모든 버전이 작동 함)
- 초음파 센서 HC-SR04
- LDR
- 부저 및 LED
- 7805
- 433MHz RF 송신기 및 수신기
- 저항기
- 커패시터
- 누름 단추
- 성능 보드
- 납땜 키트
- 9V 배터리
이 스마트 블라인드 스틱 프로젝트에 필요한 모든 구성 요소를 여기에서 구입할 수 있습니다.
블라인드 스틱 회로도:
이 Arduino Smart Blind Stick 프로젝트 에는 두 개의 별도 회로가 필요합니다. 하나는 맹인의 막대기에 장착 될 주 회로입니다. 다른 하나는 주 회로를 찾는 데 사용되는 작은 원격 RF 송신기 회로 입니다. 초음파 센서를 사용하여 블라인드 스틱 을 만들기위한 메인 보드의 회로도 는 다음과 같습니다.
우리가 볼 수 있듯이 Arduino Nano 는 모든 센서를 제어하는 데 사용되지만 arduino uno를 사용 하여 동일한 핀아웃과 프로그램 을 따라이 스마트 블라인드 스틱을 만들 수도 있습니다. 완전한 보드는 7805 전압 조정기를 사용하여 + 5V로 조정되는 9V 배터리로 전원이 공급됩니다. 초음파 센서는 5V 전원에 의해 트리거 에코 핀은 상기와 같이 3 핀 2 나노의 Arduino에 연결되어있다. LDR은 분압기와 전압의 차이는 ADC의 Arduino 핀 A1에 의해 판독을 형성 10K 값의 저항으로 접속되어있다. ADC 핀 A0은 RF 수신기 에서 신호를 읽는 데 사용됩니다. 보드의 출력은 핀 12에 연결된 버저에 의해 제공됩니다.
RF 리모트 회로는 아래와 같다. 그 작업도 더 설명됩니다.
이 RF 원격 제어 회로가 작동하도록 작은 해킹을 사용했습니다. 일반적으로이 433MHz RF 모듈을 사용하는 동안 이전 RF 송신기 및 수신기 회로에서 HT12D 및 HT12E, 디코더 및 인코더 IC를 각각 사용했듯이 작동하려면 인코더 및 디코더 또는 두 개의 MCU가 필요합니다. 그러나 우리의 애플리케이션에서는 송신기가 일부 신호를 보내는 지 감지하기 위해 수신기가 필요합니다. 따라서 송신기의 데이터 핀은 전원의 접지 또는 Vcc에 연결됩니다.
수신기의 데이터 핀은 RC 필터를 통과하여 아래 그림과 같이 Arduino에 전달됩니다. 이제 버튼을 누를 때마다 수신기는 일정한 ADC 값을 반복적으로 출력합니다. 이 반복은 버튼을 누르지 않으면 관찰 할 수 없습니다. 그래서 우리는 버튼이 눌 렸는지 감지하기 위해 반복되는 값을 확인하는 Arduino 프로그램을 작성합니다. 이것이 시각 장애인이 막대기를 추적하는 방법입니다. 여기에서 확인할 수 있습니다: RF 송신기 및 수신기 작동 방식.
나는 모든 연결을 납땜 하기 위해 perf 보드 를 사용하여 스틱에 손상되지 않도록했습니다. 그러나 브레드 보드에서 만들 수도 있습니다. 이들은 arduino를 사용 하여이 블라인드 스틱 프로젝트를 위해 만든 보드입니다 .
스마트 블라인드 스틱을위한 Arduino 프로그램:
하드웨어가 준비되면 Arduino를 컴퓨터에 연결하고 프로그래밍을 시작할 수 있습니다. 이 페이지에 사용 된 전체 코드 는이 페이지 하단에서 찾을 수 있으며 Arduino 보드에 직접 업로드 할 수 있습니다. 그러나 코드가 어떻게 작동하는지 궁금하다면 더 읽어보세요.
모든 프로그램과 마찬가지로 void setup () 으로 시작하여 입력 출력 핀을 초기화 합니다. 우리 프로그램에서 Buzzer와 Trigger 핀은 출력 장치이고 Echo 핀은 입력 장치입니다. 또한 디버깅을 위해 직렬 모니터를 초기화합니다.
void setup () {Serial.begin (9600); pinMode (Buzz, OUTPUT); digitalWrite (Buzz, LOW); pinMode (트리거, OUTPUT); pinMode (에코, INPUT); }
내부 주요 루프 우리는 모든 센서 데이터를 읽고있다. 거리에 대한 초음파 센서의 센서 데이터, 빛의 강도에 대한 LDR, 버튼이 눌 렸는지 확인하기 위해 RF 신호를 읽는 것부터 시작합니다. 이러한 모든 데이터는 향후 사용을 위해 아래와 같이 변수에 저장됩니다.
계산 거리 (트리거, 에코); 신호 = analogRead (원격); 강도 = analogRead (Light);
원격 신호 확인부터 시작합니다. similar_count 라는 변수를 사용 하여 RF 수신기에서 동일한 값이 몇 번 반복되는지 확인합니다. 이 반복은 버튼을 눌렀을 때만 발생합니다. 따라서 카운트가 100을 초과하면 원격 누름 경보를 트리거합니다.
// Remote가 눌 렸는지 확인 int temp = analogRead (Remote); similar_count = 0; while (Signal == temp) {Signal = analogRead (Remote); similar_count ++; } // 원격을 누른 경우 if (similar_count <100) {Serial.print (similar_count); Serial.println ("원격 누름"); digitalWrite (Buzz, HIGH); delay (3000); digitalWrite (Buzz, LOW); }
컴퓨터의 직렬 모니터에서도 확인할 수 있습니다.
다음으로 맹인 주변의 빛의 강도를 확인합니다. LDR이 200 미만의 값을 제공하면 매우 어두운 것으로 간주하고 200ms의 특정 지연 톤으로 부저를 통해 경고를 보냅니다. 강도가 800 이상으로 매우 밝 으면 또 다른 톤으로 경고를 보냅니다. 알람 음과 강도는 아래 코드에서 각 값을 변경하여 쉽게 변경할 수 있습니다.
// 매우 어두울 경우 if (Intens <200) {Serial.print (Intens); Serial.println ("밝은 빛"); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); 지연 (500); } // 매우 밝다면 if (Intens> 800) {Serial.print (Intens); Serial.println ("저조도"); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); }
마지막으로 장애물과 의 거리 측정 을 시작합니다. 측정 된 거리가 50cm 이상이면 알람이 울리지 않습니다. 단, 50cm 미만이면 부저가 울리면서 알람이 시작됩니다. 물체가 부저에 가까워지면 경고음 간격도 감소합니다. 물체가 가까울수록 부저가 더 빨리 울립니다. 측정 된 거리에 비례하는 지연을 생성하여이를 수행 할 수 있습니다. Arduino 의 지연 () 은 변수를 받아 들일 수 없기 때문에 아래와 같이 측정 된 거리를 기반으로 루프 하는 for 루프 를 사용해야 합니다.
if (dist <50) {Serial.print (dist); Serial.println ("개체 경고"); digitalWrite (Buzz, HIGH); for (int i = dist; i> 0; i--) delay (10); digitalWrite (Buzz, LOW); for (int i = dist; i> 0; i--) delay (10); }
초음파 센서와 Arduino를 사용한 거리 측정에 대해 자세히 알아보십시오.
이 프로그램은 비교에 사용하는 값을 변경하여 애플리케이션에 쉽게 적용 할 수 있습니다. 직렬 모니터를 사용하여 잘못된 경보가 트리거되는 경우 디버깅합니다. 문제가 있으면 아래 댓글 섹션을 사용하여 질문을 게시 할 수 있습니다.
작동중인 Arduino 블라인드 스틱:
마지막으로 블라인드 스틱 arduino 프로젝트 를 테스트 할 시간 입니다. 회로도에 따라 연결이 완료되고 프로그램이 성공적으로 업로드되었는지 확인하십시오. 이제 9V 배터리를 사용하여 두 회로에 전원을 공급하면 결과를 볼 수 있습니다. Ultra Sonic 센서를 물체에 더 가까이 이동하면 버 저음 이 울리고 스틱이 물체에 가까워 질수록이 신호음 주파수가 증가합니다. LDR이 어둡거나 빛이 너무 많은 경우 부저가 울립니다. 모든 것이 정상이면 부저가 울리지 않습니다.
리모컨의 버튼을 누르면 부저가 길게 울립니다. Arduino를 사용하는 시각 장애인 용 Smart Stick 의 전체 작업 은이 페이지 끝 부분에있는 비디오에 나와 있습니다. 또한 작은 스틱을 사용하여 전체 어셈블리를 장착하면 더 큰 스틱 또는 실제 블라인드 스틱을 사용하여 작동시킬 수 있습니다.
부저가 항상 울리면 알람이 거짓으로 트리거 된 것입니다. 직렬 모니터를 열어 매개 변수를 확인하고 어떤 것이 임계에 속하는지 확인하고 조정할 수 있습니다. 항상 그렇듯이 댓글 섹션에 문제를 게시하여 도움을받을 수 있습니다. 프로젝트를 이해하고 무언가를 만드는 것을 즐겼기를 바랍니다.