산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

WALTER - Arduino Photovore 곤충

구성품 및 소모품

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
초음파 센서 - HC-SR04(일반)
× 3
포토다이오드
× 4
저항 100k 옴
× 4
MG90S 메탈 기어드 마이크로 서보
× 5
스마트폰용 휴대용 파워 팩(2채널:1A 및 2.1 A)
× 1

필요한 도구 및 기계

납땜 인두(일반)
뜨거운 글루건(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

[제 영어를 실례합니다]

나는 2 서보 arduino 곤충의 인기 있는 설정을 정말 좋아합니다. 유튜브에. 내가 그것을 보았을 때, 나는 항상 BEAM 로봇 놈들이 그 설정이 인기를 얻기 오래 전에 무엇을 했는지 기억합니다. 아날로그 로봇 매니아인 이 사람들은 두 모터(마이크로코어/바이코어 워커) 사이의 각도가 더 좋아 보행이 더 좋았습니다. 등).

그러나 제 생각에는 앞서 언급한 것 중 VBug1.5보다 더 생생하게 보이는 것은 없습니다. (워크맨이라고도 함) 빔 로봇의 창시자인 Mark Tilden이 만들었습니다. 5개의 모터를 사용하기 때문에 기동성이 더 좋습니다.

간단한 BEAM 로봇을 만드는 것은 어렵지 않지만 VBug1.5와 같은 복잡한 것을 만드는 것은 나 같은 전자 초보자에게 괴로움이 될 수 있습니다. 그래서 Tilden의 버그와 같은 것을 만들기로 결정했을 때 엔지니어가 아닌 사람(저의 경우 창피하게도 엔지니어 지망생)에게 가장 쉬운 arduino 플랫폼으로 정착해야 했습니다.

그 결과 월터 , 5개의 서보가 있는 4개의 다리가 있는 arduino 로봇. 내가 살아있는 버그 로봇을 만들고 싶다면 왜 8개 또는 12개의 서보를 사용하지 않았는지 궁금할 것입니다. 글쎄, 나는 내가 가질 수 있는 최대한의 기동성을 얻기 위해 내가 할 수 있는 가장 간단한 것을 생각하고 있었다. 틀을 만드는 대신 풀을 많이 쓴다는 얘기입니다.

행동

다른 많은 arduino 로봇과 마찬가지로 Walter는 HC-SR04 초음파 센서를 사용하여 장애물을 피할 수 있습니다. 벌레로 캐릭터를 추가하기 위해 Walter는 또한 광식 동물, 즉 그가 빛에 끌린다는 것을 의미합니다. 광다이오드는 빛을 감지하는 데 사용됩니다. arduino 스케치에는 임의의 값이 생성되어 Walter가 언제 멈추고 쉬고 싶은지 결정하고 보행 속도(3단계)를 임의로 변경합니다.

내가 시작할 때 Walter의 각 발 아래에 재치 버튼을 두어 그가 표면 센서를 가질 수 있도록 하려고 했습니다. 그러나 배터리(스마트폰용 휴대용 보조 배터리)는 서보의 무게에 비해 비용이 많이 듭니다. 택트 버튼의 무게는 무게를 추가할 걱정이 거의 없다는 것을 알고 있지만 아이러니하게도 로봇의 무게는 거꾸로 된 버튼을 누를 수 있을 만큼 충분하지 않습니다.

더 큰 서보로 Walter 버전 2를 만들고 이 버튼을 표면 센서로 포함할 계획이었습니다.

세부정보

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • WALTER.이노
  • WALTER.ino아두이노
    /*WALTER - 4개의 다리가 있는 사진이 Arduino 스케치는 "WALTER"라는 이름의 5개의 서보 4족 보행 로봇(4개 다리) 로봇을 구축하려는 시도입니다. 이 스케치를 사용하려면 편리한 또는 자신의 하드웨어 설정에 맞게 조정합니다. 이 표시를 찾아(Ctrl + F) 변경해야 할 수 있는 값을 쉽게 검색할 수 있습니다. - **** :이 표시는 서보의 중심 위치이며 보정해야 함을 의미합니다(로봇 유휴 상태일 때 다리의 물약화). - *** :이 표시는 arduino 핀 할당(arduino에 대한 센서 및 서보 연결)을 의미합니다. 로봇 제작 시 참고하세요. - ** :이 표시는 사용자의 취향(다리의 보폭, 빛/장애물 감지 시 회전량 등)에 따라 임의로 값을 변경할 수 있음을 의미합니다. 당신이 무엇을하고 있었는지 모르는 경우 그대로 두십시오.이 스케치는 귀하의 책임하에 사용할 수 있습니다. 그리고, 그것은 있는 그대로 제공됩니다. 게시된 소스 코드에 작성??요점은 이 코드를 사용할 때 나쁜 일이 발생했을 경우 책임을 지지 않는다는 것입니다.즐거운 시간을 보내세요!요하네스 마르테디 - 2015*/#include // ** **서보의 중심각을 보정합니다("xx.writeMicroseconds();" 명령을 사용하기 때문에 마이크로초 단위). 1500으로 시작합니다.const int ANGLE_mid_Shaft =1520;const int ANGLE_mid_FLeft =1550;const int ANGLE_mid_FRight =1570;const int ANGLE_mid_BLeft =1450;const int =ANGLE_mid_5 // **이 값(마이크로초)을 설정하여 서보가 스위프할 너비(다리의 단계 너비)를 결정합니다. 더 큰 값은 더 넓은 스위프 각도를 의미합니다. const int ANGLE_res =10; // **서보 이동 해상도(마이크로초)를 최소한 서보의 기본 데드 밴드 폭(최고 해상도) 이상(낮은 해상도) 이상으로 설정합니다. 예:SG90 서보 불감대 폭은 10 마이크로초입니다.int sweepSPEED; // 서보가 스위프하는 속도를 결정하는 변수.int sweepSPEED_Rand[3] ={4, 6, 8}; // **서보 속도(보행 속도)는 3가지 모드에서 무작위로 변경됩니다. 각 모드의 속도(밀리초)를 설정합니다. 값이 작을수록 더 빠릅니다. const int ANGLE_turnMAX =ANGLE_sweep * 1.5; // **봇이 빛을 향해 최대로 향하는 정도를 결정하려면 이 값을 설정합니다. 값이 클수록 turn.const int ANGLE_turnNARROW =ANGLE_sweep * 0.25; // **이 값을 설정하면 봇이 좁은 공간에서 측면에 있는 물체를 피하면서 최대 회전 범위를 결정할 수 있습니다. 값이 클수록 turn.const int SONAR_sum =3; // 사용된 소나의 양.const int PHOTO_sum =4; // 사용된 포토다이오드의 양.int PIN_trig[SONAR_sum] ={13, 11, 8}; // ***초음파 센서의 트리거 핀에 연결된 arduino 핀을 설정합니다. {앞, 왼쪽, 오른쪽}.int PIN_ec[SONAR_sum] ={12, 10, 7}; // ***초음파 센서의 에코 핀에 연결된 arduino 핀을 설정합니다. {앞, 왼쪽, 오른쪽}.int PIN_PHOTO[PHOTO_sum] ={2, 3, 1, 0}; // ***포토다이오드에 연결된 arduino 아날로그 입력 핀을 설정합니다. {앞 왼쪽, 앞 오른쪽, 뒤 왼쪽, 뒤 오른쪽}.const int distRotate =25; // **로봇이 회전하여 회피하기 전에 로봇과 장애물 사이의 최소 거리(cm)를 구성합니다. const int distRetreat =10; // **로봇이 후퇴하여 장애물을 피하기 전에 로봇과 장애물 사이의 최소 거리(cm)를 구성합니다. const int distTurn =20; // **로봇이 회전하여 회피하기 전에 로봇과 장애물 사이의 최소 거리(cm)를 설정합니다.const int counter_gait_max =8; // **로봇이 장애물을 피하기 위해 얼마나 많은 단계를 수행할지 구성합니다(회전 또는 후퇴할 때).// **봇이 정지하고 실행하는 시간(밀리초 단위)을 구성합니다.const int RUN_time =25000;const int REST_time =3000;// 소나용 ID:int SONAR_id;const int FRONT =0;const int LEFT =1;const int RIGHT =2;// 광다이오드용 ID:const int FRONT_LEFT =0;const int FRONT_RIGHT =1;const int BACK_LE 2;const int BACK_RIGHT =3;// 광다이오드 읽기용 변수:int PHOTO_Front_Left;int PHOTO_Front_Right;int PHOTO_Back_Left;int PHOTO_Back_Right;const int SONAR_TrigSig =10; // 트리거 신호의 지속 시간(S) 초음파 사운드를 생성하는 데 필요한 센서(제품에서 이미 지정, 이 값을 변경하지 않음).const unsigned long SONAR_MaxEc =50000; // 센서에서 제공하는 에코 신호의 최대 지속 시간(S 단위)(이미 제품에서 지정, 이 값을 변경하지 않음).const float SOUND_speed =0.034; // 공기 중 소리의 속도(S/cm)(sciene에 의해 이미 지정됨, 이 값을 변경하려면 에어 벤딩을 수행하기 위해 아바타 Aang이 필요함).int distance[SONAR_sum]; // 거리 계산 결과.// 서보 선언:Servo SERVO_shaft;Servo SERVO_front_left;Servo SERVO_front_right;Servo SERVO_back_left;Servo SERVO_back_right;//서보 각도별 변수:int ANGLE_shaft =_int FLANGLE_shaft =ANGLE_mid_Shaft; ANGLE_front_right =ANGLE_mid_FRight;int ANGLE_back_left =ANGLE_mid_BLeft;int ANGLE_back_right =ANGLE_mid_BRight;// 중간 서보(축)에 대한 각도 조작.const int ANGLE_max_Shaft =ANGLE_mid_Shaft 기록 ANGLE_mid_Shaft + ANGLE_min_sweep; 각 서보의 각도:int ANGLE_shaft_record;int ANGLE_front_left_record;int ANGLE_front_right_record;int ANGLE_back_left_record;int ANGLE_back_right_record;// 빛 감지에 따른 서보 각도 보정을 위한 변수:int LIGHT_left;int LIGHT_right에 따른 서보 각도 감지를 위한 변수 int SONAR_left;int SONAR_right;// 그런 것들 플래그, 카운터, 레코드와 같이 항상 설명하는 방법을 모르겠습니다. :(int ANGLE_prev;int flag_shaft_reverse;int flag_transition_rotate;int flag_transition_start =1;int flag_rest =0;int flag_RUN_time =0;int 회전_랜덤;int counter_gait;void setup() { // Serial.begin(9600); // 직렬. 알다시피, 확인 및 디버깅.. SERVO_shaft.attach(2); // *** arduino에서 수평(축) 서보의 신호 핀 설정 SERVO_front_left.attach(4); // ***설정 전면 왼쪽 arduino에 서보 신호 핀 SERVO_front_right.attach(3); // *** arduino에 전면 우측 서보 신호 핀 설정 SERVO_back_left.attach(6); // *** 후면 좌측 서보 신호 핀에 설정 arduino.SERVO_back_right.attach(5); // ***arduino에 후방 오른쪽 서보의 신호 핀을 설정합니다. // 서보를 중간 각도에서 준비합니다. SERVO_shaft.writeMicroseconds(ANGLE_mid_Shaft); SERVO_front_left.writeMicroseconds(ANGLE_mid_FLeft); SERVO_front_right.writeMicroseconds(ANGLE_mid_FRight); SERVO_back_left.writeMicroseconds(ANGLE_mid_BLeft); SERVO_back_right.writeMicroseconds(ANGLE_mid_BRight); // 핀 설정 s 소나의 경우 pinMode 및 value. for(SONAR_id =0; SONAR_id  distRotate) { flag_RUN_time =0; while(flag_RUN_time ==0) { 앞으로(); } } while(거리[FRONT]> distRetreat &&거리[FRONT] <=distRotate) { while(거리[LEFT]> 거리[RIGHT]) { ROTATE_LEFT_AVOID(); 부서지다; } while(거리[LEFT] <거리[RIGHT]) { ROTATE_RIGHT_AVOID(); 부서지다; } while(거리[LEFT] ==거리[RIGHT]) { ROTATE_RANDOM_AVOID(); 부서지다; } } 동안(거리[FRONT] <=distRetreat) { RETREAT_AVOID(); } }/*___________________________________________________________________________________________________############################################ 보행 # #########################################*//*===================================샤프트 이동 ===================================*/void SHAFT() { unsigned long TIMER_servo =millis(); while((millis() - TIMER_servo) <=sweepSPEED) { while(ANGLE_shaft ==ANGLE_mid_Shaft) { counter_gait++; SONAR_READ_ALL(); LIGHT_COMPARE_EXECUTE(); SIDE_AVOID(); flag_RUN_time =1; 부서지다; } } if(ANGLE_prev =ANGLE_max_Shaft) { ANGLE_prev =ANGLE_shaft; ANGLE_샤프트 -=ANGLE_res; } else if(ANGLE_prev> ANGLE_shaft &&ANGLE_shaft> ANGLE_min_Shaft) { ANGLE_prev =ANGLE_shaft; ANGLE_샤프트 -=ANGLE_res; } else if(ANGLE_shaft <=ANGLE_min_Shaft) { ANGLE_prev =ANGLE_shaft; ANGLE_샤프트 +=ANGLE_res; } SERVO_shaft.writeMicroseconds(ANGLE_shaft);} 무효 SHAFT_REVERSE() { if(ANGLE_prev  ANGLE_shaft) { ANGLE_prev =ANGLE_shaft - 1; }}/*========================================================================================================*//*======================================전환 ======================================*/void TRANSITION_GAIT() { ANGLE_front_left_record =ANGLE_front_left; ANGLE_front_right_record =ANGLE_front_right; ANGLE_back_left_record =ANGLE_back_left; ANGLE_back_right_record =ANGLE_back_right; ANGLE_축_레코드 =ANGLE_축; 정수 플래그 =HIGH; 정수 카운터 =0; 동안(플래그 ==높음) { 샤프트(); LIGHT_left =0; LIGHT_right =0; 카운터++; ANGLE_front_left =map(카운터, 1, ((ANGLE_sweep * 2) / ANGLE_res), ANGLE_front_left_record, ANGLE_mid_FLeft); ANGLE_front_right =지도(카운터, 1, ((ANGLE_sweep * 2) / ANGLE_res), ANGLE_front_right_record, ANGLE_mid_FRight); ANGLE_back_left =map(카운터, 1, ((ANGLE_sweep * 2) / ANGLE_res), ANGLE_back_left_record, ANGLE_mid_BLeft); ANGLE_back_right =map(카운터, 1, ((ANGLE_sweep * 2) / ANGLE_res), ANGLE_back_right_record, ANGLE_mid_BRight); SERVO_shaft.writeMicroseconds(ANGLE_shaft); SERVO_front_left.writeMicroseconds(ANGLE_front_left); SERVO_front_right.writeMicroseconds(ANGLE_front_right); SERVO_back_left.writeMicroseconds(ANGLE_back_left); SERVO_back_right.writeMicroseconds(ANGLE_back_right); if(카운터 ==((ANGLE_sweep * 2) / ANGLE_res)) { 플래그 =LOW; 시작(); flag_transition_rotate =0; } }}무효 TRANSITION_START() { if(ANGLE_shaft ==ANGLE_mid_Shaft || (ANGLE_shaft> ANGLE_mid_Shaft &&ANGLE_shaft> ANGLE_prev) || (ANGLE_shaft =ANGLE_mid_Shaft &&ANGLE_prev =ANGLE_mid_Shaft &&ANGLE_prev> ANGLE_shaft) { ANGLE_front_left =map(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_FLeft, ((ANGLE_mid_FLeftweep_left_ ) -sSONLE_mid_FLeftweep_leftval); ANGLE_front_right =지도(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_Fright, ((ANGLE_mid_FRight + ANGLE_sweep_val) + LIGHT_right + SONAR_right)); ANGLE_back_left =지도(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_BLeft, ((ANGLE_mid_BLeft - ANGLE_sweep_val) + LIGHT_left + SONAR_left)); ANGLE_back_right =지도(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_BRight, ((ANGLE_mid_BRight - ANGLE_sweep_val) - LIGHT_right - SONAR_right)); } else if(ANGLE_shaft  ANGLE_shaft) { ANGLE_front_left =map(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, ((ANGLE_mid_FLeft + ANGLE_sweep_val) - SONAR_LIGHT_left) ANGLE_front_right =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, ((ANGLE_mid_Fright + ANGLE_sweep_val) + LIGHT_right + SONAR_right), ANGLE_mid_FRight); ANGLE_back_left =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, ((ANGLE_mid_BLeft - ANGLE_sweep_val) + LIGHT_left + SONAR_left), ANGLE_mid_BLeft); ANGLE_back_right =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, ((ANGLE_mid_BRight - ANGLE_sweep_val) - LIGHT_right - SONAR_right), ANGLE_mid_BRight); + } else if(ANGLE_shaft =ANGLE_mid_Shaft &&ANGLE_prev =ANGLE_mid_Shaft &&ANGLE_prev> ANGLE_shaft) { ANGLE_front_left =지도(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_FLeft, (ANGLE_mid_FLeft - ANGLE_val)_sweet ANGLE_front_right =지도(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_Fright, (ANGLE_mid_Fright + ANGLE_sweep_val)); ANGLE_back_left =map(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_BLeft, (ANGLE_mid_BLeft + ANGLE_sweep_val)); ANGLE_back_right =map(ANGLE_shaft, ANGLE_max_Shaft, ANGLE_mid_Shaft, ANGLE_mid_BRight, (ANGLE_mid_BRight - ANGLE_sweep_val)); } else if(ANGLE_shaft  ANGLE_shaft) { ANGLE_front_left =map(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, (ANGLE_mid_FLeft - ANGLE_sweep_val), FLef t)_mid_ ANGLE_front_right =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, (ANGLE_mid_Fright + ANGLE_sweep_val), ANGLE_mid_FRight); ANGLE_back_left =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, (ANGLE_mid_BLeft + ANGLE_sweep_val), ANGLE_mid_BLeft); ANGLE_back_right =지도(ANGLE_shaft, ANGLE_mid_Shaft, ANGLE_min_Shaft, (ANGLE_mid_BRight - ANGLE_sweep_val), ANGLE_mid_BRight); } else if(ANGLE_shaft  0.0) { SONAR_distance =SONAR_EcInterval * (SOUND_speed / 2.0); 부서지다; } 동안(SONAR_EcInterval ==0.0) { SONAR_distance =501.0; 부서지다; } return SONAR_distance;}/*==================================================================================================================*//*======================================빛 감지 =====================================*/void LIGHT_COMPARE_EXECUTE() { //PHOTO_FLeft_RAW =analogRead(PIN_PHOTO[FRONT_LEFT]); //PHOTO_Fright_RAW =analogRead(PIN_PHOTO[FRONT_RIGHT]); PHOTO_Front_Left =analogRead(PIN_PHOTO[FRONT_LEFT]); PHOTO_Front_Right =analogRead(PIN_PHOTO[FRONT_RIGHT]); PHOTO_Back_Left =analogRead(PIN_PHOTO[BACK_LEFT]); PHOTO_Back_Right =analogRead(PIN_PHOTO[BACK_RIGHT]); if((PHOTO_Front_Left + PHOTO_Front_Right)>=(PHOTO_Back_Left + PHOTO_Back_Right)) { int LIGHT_Sensitivity =50; if(LIGHT_COMPARE()> LIGHT_Sensitivity) { LIGHT_left =LIGHT_COMPARE(); LIGHT_right =0; } else if(LIGHT_COMPARE() <-LIGHT_Sensitivity) { LIGHT_left =0; LIGHT_right =LIGHT_COMPARE(); } else { LIGHT_left =0; LIGHT_right =0; } } else { if(PHOTO_Back_Left> PHOTO_Back_Right) { LIGHT_right =0; LIGHT_left =ANGLE_turnMAX; } else if(PHOTO_Back_Left  PHOTO_Front_Right) { LIGHT_rate =PHOTO_Front_Left; } else if(PHOTO_Front_Right> PHOTO_Front_Left) { LIGHT_rate =PHOTO_Front_Right; } else { // 이 변수 ​​중 하나를 사용하도록 선택하고 아래에 다른 변수에 주석을 추가합니다. // LIGHT_rate =PHOTO_Front_Left; LIGHT_rate =PHOTO_Front_Right; } int LIGHT_compareRAW =PHOTO_Front_Left - PHOTO_Front_Right; LIGHT_compareRAW =지도(LIGHT_compareRAW, -LIGHT_rate, LIGHT_rate, -ANGLE_turnMAX, ANGLE_turnMAX); return LIGHT_compareRAW;}/*=============================================================================================================================================================================*//*=======================================행동 ======================================*/void RETREAT_AVOID() { counter_gait =0; while(counter_gait <=counter_gait_max) { RETREAT(); }} 무효 ROTATE_LEFT_AVOID() { counter_gait =0; 회전 무작위 =2; while(counter_gait <=counter_gait_max) { ROTATE_LEFT(); }} 무효 ROTATE_RIGHT_AVOID() { counter_gait =0; 회전 무작위 =2; while(counter_gait <=counter_gait_max) { ROTATE_RIGHT(); }} 무효 ROTATE_RANDOM_AVOID() { 회전_랜덤 =ROTATE_RANDOM(); while(rotate_random ==0) { ROTATE_LEFT_AVOID(); } while(rotate_random ==1) { ROTATE_RIGHT_AVOID(); }} 무효 SIDE_AVOID() { if(거리[LEFT] <=distTurn &&거리[RIGHT]> distTurn) { LIGHT_left =0; LIGHT_right =0; SONAR_왼쪽 =0; SONAR_right =-(지도(거리[LEFT], 0, distTurn, ANGLE_turnMAX, 0)); } else if(거리[오른쪽] <=distTurn &&거리[LEFT]> distTurn) { LIGHT_left =0; LIGHT_right =0; SONAR_right =0; SONAR_left =지도(거리[오른쪽], 0, distTurn, ANGLE_turnMAX, 0); } else if(거리[LEFT] <=distTurn &&거리[RIGHT] <=distTurn) { LIGHT_left =0; LIGHT_right =0; if(거리[LEFT] <거리[RIGHT]) { SONAR_left =0; SONAR_right =-(지도(거리[LEFT], 0, distTurn, ANGLE_turnNARROW, 0)); } else if(거리[오른쪽] <거리[왼쪽]) { SONAR_right =0; SONAR_left =지도(거리[오른쪽], 0, distTurn, ANGLE_turnNARROW, 0); } } 그렇지 않으면 { SONAR_right =0; SONAR_왼쪽 =0; }}/*==============================================================================================================================*/

    회로도


    제조공정

    1. Arduino 디지털 주사위
    2. 아이언맨
    3. 나를 찾기
    4. Arduino 3D 인쇄 로봇 팔
    5. Arduino를 사용하여 지구의 질량을 측정하는 방법
    6. Arduino 가습기 제어
    7. NeoMatrix Arduino Pong
    8. Arduino 조이스틱
    9. Arduino TEA5767 FM 라디오 수신기
    10. Health Band - 노인을 위한 스마트 도우미