SCIENCEBOX
온라인 콘테스트

1회 참가작

창작[동물]집게벌레 로봇[이지수](과학상자 따라하기 카페 닉네임 과상톡톡)

작성일 21-05-12 17:27

페이지 정보

작성자 이지수 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물  (211.♡.55.109) 조회 3,102회 댓글 0건

본문


76db9b8e5ae30abb38d5cbd51869a857_1620806848_9537.jpg
과학상자와 코딩보드로 만든 집게벌레 로봇입니다76db9b8e5ae30abb38d5cbd51869a857_1620806962_1263.jpg 보행 동력은 이렇게 구동기어뭉치에서 축에 고정되지않은 평기어(대)를 지나 평기어(소)로,76db9b8e5ae30abb38d5cbd51869a857_1620807000_179.jpg평기어(소)와 같은축의 체인기어(소)에서 (대)로 연결되어서 동작합니다76db9b8e5ae30abb38d5cbd51869a857_1620807040_8405.jpg

조향 동력입니다

서보모터 축의 피니언기어가 크라운기어를 돌리고76db9b8e5ae30abb38d5cbd51869a857_1620809677_5404.jpg
체인기어로 수직으로 전달합니다

76db9b8e5ae30abb38d5cbd51869a857_1620807238_7083.jpg

다리 부분의 모습입니다

조향장치가 있는 부분은 상하좌우로 꺾일수 있어서 좌우로 움직여도 왕복운동이 가능하고, 위쪽에 있는 풀리(중)과 4칸스트립으로 된 부분은 크랭크와 연결된 링크가 옆으로 흔들리지 않게 잡아주는 역할입니다

76db9b8e5ae30abb38d5cbd51869a857_1620807393_4239.jpg

집게의 구조입니다

서보모터가 크라운기어로 평기어를 돌리면 휠판이 면판휠을 당기고 체인기어들로 집게가 동작합니다

또한 집게가 닫히면 집게의 체인기어는 더이상 회전할수없지만 면판휠 축은 회전하기 때문에 집게를 살짝 들어올립니다

76db9b8e5ae30abb38d5cbd51869a857_1620807432_8842.jpg

뒤쪽의 HC-06 블루투스 모듈과 배터리 홀더입니다

점퍼선으로 코딩보드의 RX는 HC06의 TXD에,GND는 GND에, 5V는 VCC에 연결해주었습니다

76db9b8e5ae30abb38d5cbd51869a857_1620807468_331.jpg
 

앱인벤터로 만든 조종 앱입니다

좌우 조향 슬라이드패드, 전후진 슬라이드 패드, 집게 버튼이 있습니다

아래는 앱인벤터와 아두이노 IDE로 코딩한것입니다

오작동으로 인해 앱인벤터와 블루투스 연결이 끊어지면 자동으로 정지하고, 재연결되도록 되어있습니다

76db9b8e5ae30abb38d5cbd51869a857_1620807507_3155.png

[code]

#include <Servo.h>

char a;//블루투스 받은 신호 저장

Servo servo;

Servo servo2;

unsigned long b;//신호 수신 시간 확인

boolean c;//집게 상태

void setup() {

pinMode(4,OUTPUT);//모터 1 방향

pinMode(5,OUTPUT);//모터 1 속도

servo.attach(9);//조향장치 서보모터

servo2.attach(10);//집게 서보모터

Serial.begin(9600);

servo2.write(180);

}

void loop() {

if(b+500<millis()){//연결 확인용 신호 수신후 0.5초가 지나면

analogWrite(5,0);//정지

}

if(Serial.available()){

a=Serial.read();

if (a=='a'){//연결 확인용 신호 수신

b = millis();//수신시 시간 저장

}

if (a=='1'){//좌회전

servo.write(180);

}

if (a=='2'){

servo.write(90);//직진

}

if (a=='3'){

servo.write(0);//우회전

}

if (a=='4'){//후진

digitalWrite(4,HIGH);

analogWrite(5,255);

}

if (a=='5'){//정지

analogWrite(5,0);

}

if (a=='6'){//전진

digitalWrite(4,LOW);

analogWrite(5,255);

}

if(a=='7'){

if(c==true){

servo2.write(180);//집게 동작

c = false;

}

else{

servo2.write(0);

c = true;

}

}

}

}

[/code]

아래는 작동 모습과 설명이 포함된 영상입니다

그럼 이만 작품소개를 마치겠습니다 

댓글목록

등록된 댓글이 없습니다.