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

인간의 머리와 로봇의 머리

구성품 및 소모품

Arduino UNO
× 1
서보 모터
× 3
Android 기기
× 1
규제 전원 공급 보드
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

SensoDuino

이 프로젝트 정보

새로운 일을 계획하되 비용이 많이 들지는 않습니다. 저는 로보틱스를 아주 좋아합니다. 그러나 서보 및 기타 부품의 요구 사항으로 인해 만들고 싶지 않습니다. 이제 4개의 서보 모터가 13$에 불과합니다. 이미 Link it one 보드와 Arduino 보드가 있습니다.

그래서 모든 축에서 우리의 머리처럼 움직이는 로봇 머리를 저렴하게 만들 계획입니다. 다양한 센서와 방법을 연구하지만 마침내 모든 항목을 내 손에 들고 방법을 찾습니다. 이 프로젝트에서 많은 것을 공부합니다. 자, 내가 공부하는 것을 설명하겠습니다. 나는 배운 내용을 굵은 글씨로 언급합니다.

스마트 모바일 기울기 센서를 사용하여 머리 제어

1단계:필요한 자료

내가 사용한 자료

1) 아두이노 우노.

2) 하나의 보드를 링크합니다.

3) 3개의 서보 모터.

4) 여기에서 SensoDuino 무료 안드로이드 앱을 다운로드하세요.

5) 규제 전원 공급 보드(12V, 5V, 3.3V).

6) 일반 PCB.

7) PCB 수 커넥터

8) 폐 알루미늄 공급 절단 조각.

9) 핫 글루 건.

10) 12V 및 5V 어댑터.

11) 장식할 아이템이 더 있습니다.

Linkit one 보드와 Arduino uno를 사용해야 하는 이유

Linkit 1개 보드와 3V 서보 모터가 있는 경우 5V 서보가 제대로 작동하지 않기 때문에 Arduino UNO가 필요하지 않습니다. 하나의 보드를 연결합니다.

Arduino uno 및 Blue tooth 모듈이 있는 경우 하나의 보드를 연결합니다.

저는 파란 이빨 방패가 없으므로 Linkit one 보드와 Arduino uno를 사용합니다.

2단계:서보 실드 소유

1) Arduino용 서보 모터 쉴드를 만듭니다.(3v 서보 Linkit을 사용하더라도 PWM 핀이 2개뿐인 경우 주의하십시오.)

2) 서보 모터용 PCB와 같은 쉴드를 만듭니다.

3) 이 보드를 사용하여 arduino 핀(3,5,6,9,10,11)에서 6개의 서보 모터를 제어할 수 있습니다.

4) 3선식 서보를 사용합니다. 여기서 전원은 외부 5V 레귤레이터 전원 공급 보드에서 제공됩니다.

5) 서보를 제어하는 ​​동안 Arduino 보드용 어댑터 공급을 사용합니다. PC USB 전원 공급 장치가 진동을 일으키기 때문입니다. 이는 서보 모터의 과열 및 손상을 유발합니다. 서보 모터 <강하다>. (내 서보 손상 중 하나)

3단계:Linkit을 하나의 연결로 설정

1) Linkit 하나는 서보를 제어하기 위해 arduino와 대화하고 싶습니다.

2) 이를 위해 Linkit one 보드의 Tx를 Arduino 보드의 Rx와 Gnd 모두에 연결합니다.

3) 데이터가 수신될 때마다 Arduino로 전송됩니다.

참고:-

Arduino 블루투스 쉴드가 있으면 하나의 보드를 사용하여 전체 설정을 제어할 수 있습니다.

4단계:서보 위치

1) 모든 서보 모터를 90도로 설정합니다. 위의 프로그램을 arduino에 업로드하려면..

2) Servo 전원과 arduino 전원을 5V 및 12V 핀의 레귤레이터 전원 공급 장치 보드에 연결합니다.

3) 우리가 Arduino 디지털 핀 3,5,6에서 만드는 PCB의 경우 서보 암 커넥터를 수 커넥터에 연결합니다.

3) 12V 어댑터를 레귤레이터 전원 보드에 연결합니다.

4) 어댑터를 켭니다.

5) 이제 모든 모터가 프로그램에 따라 90도 회전합니다.

이제 로터를 방해하지 않고 함께 결합하기 위해 모터를 분리하십시오.

위치 Arduino IDE 코드는 Servoposition.ino로 제공됩니다.


5단계:계획

1) 헤드가 3축 x,y,z로 회전합니다.

2) 회전은

a) Yaw - 왼쪽과 오른쪽을 봅니다.

b) 피치 - 위아래 보기

c) 롤쉐이크 사이드 와이즈

3) 먼저 양면 테이프를 사용하여 서보를 계획합니다.

4) 알루미늄 파티션 조각을 L자 모양으로 잘라서 상단 서보를 두 번째 서보에 고정합니다.

5) 계획에 따라 또는 그림과 같이 서보 모터 혼을 연결하십시오.

6) 모든 서보 중심은 90도에서 일직선이어야 합니다.

7) 양면 테이프를 사용하여 모든 서보와 알루미늄 L 조각을 붙이고 움직임이 다른 서보를 방해하지 않는지 확인하십시오.

6단계:건설

1) 이제 영구적으로 수정할 때입니다.

2) 양면 스티커를 하나씩 떼어내고 핫글루건을 이용하여 영구적으로 고정합니다.

3) 서보가 손상되지 않도록 주의하십시오.

4) 서보 커넥터를 arduino 보드에 다시 연결하고 전원을 켭니다.

5) 마지막 이미지와 같이 모든 스탠드를 똑바로 일치시킵니다.

7단계:Android 앱 세부정보

1) 안드로이드 폰에서 SensoDuino를 엽니다. 모든 모바일 센서 판독값을 보고 파란 치아를 통해 보낼 수 있는 옵션이 있습니다.

2) 최신 센서가 모두 나열되며 휴대폰에서 사용할 수 있는 센서만 선택할 수 있습니다.

3) 메뉴로 이동하여 블루투스 연결을 선택합니다.

4) 사용 가능한 블루투스 기기 목록이 표시됩니다.

5) Linkit one 블루투스를 선택합니다.

6) 우리 프로젝트에서는 방향 센서를 사용합니다. 파란색 치아를 통해 데이터를 보내려면 첫 번째 상자를 켜고 두 번째 상자를 선택하십시오.

7) 또한 메뉴에서 성능 옵션을 선택하여 각 센서의 성능을 설정합니다. 각 판독값에 대한 시간 간격을 변경합니다.

8단계:코딩

1) Linkit 1에 대한 2개의 코딩이 있습니다.

블루 투스를 사용하여 모바일에서 데이터를 가져와 직렬 포트를 사용하여 Arduino로 보냅니다.

2) 아두이노 프로그램

직렬 포트에서 데이터를 수신하면 문자를 문자열로 연결합니다. 그리고 indexof와 substring을 사용하여 하나의 전체 세트 결과를 나눕니다. 해당 세트에서 다시 indexof 및 부분 문자열을 사용하여 각 위치를 가져옵니다. 거기에서 arduino의 맵을 사용하여 서보를 0도에서 180도까지 제어합니다. 블루투스 쉴드를 사용하신다면 요망넷에 따라 프로그램을 변경해주세요.

프로그램 작동 방식

1) 방향 센서를 이용하여 로봇이 우리처럼 머리를 돌립니다.

a) Yaw는 자기 위치에 따라 0도에서 360도까지의 회전입니다. 이를 위해 90 ~ 270도를 사용합니다. 여기서 180은 서보의 90도입니다. 그래서 우리는 모자를 썼을 때 끈처럼 180도 마주하고 싶습니다.

b) 피치는 앞면이 위아래입니다. 센서 판독값은 -180 ~ + 180입니다. 우리는 -90 ~ +90을 사용합니다.

c) 롤은 0 ~ 90 ~ 0 ~ -90 ~ 0입니다. 우리는 -90 ~ 90을 사용합니다.


Linkitonehead.ino에 Linkit one 코드가 제공됩니다.

Arduino 코드는 Arduinohead.ino에서 제공됩니다.


9단계:보드 주문

1) 두 쉴드 보드를 두 마이크로 컨트롤러의 상단에 연결합니다.

2) 양면스티커로 모두 붙여주세요.

3) 단말기에 총을 쏘지 않도록 주의하십시오.

10단계:손으로 추적

이제 모든 전원을 켜고 손에 있는 모바일을 사용하세요. 요에서 180도를 바라보고 앉아 모바일을 사용하여 세 개의 서보 모터를 모두 제어합니다.

11단계:얼굴 수정

1) 크리스마스 시즌이라 가게에 산타클로스 인형이 많이 있어요.

2) 인형 하나를 사서 더블 사이드 탭을 사용하여 상단 서보 암에 머리를 고정하십시오.

12단계:통제 모자 준비

1) 일반 모자를 가져가세요.

2) 그림과 같이 캡 전면에 양면 스티커를 붙여주세요.

3) 양면테이프에 휴대폰을 붙여주세요.

13단계:비디오 테스트

낮은 성능 테스트 250밀리초마다 센서 새로고침 빈도를 의미합니다.

14단계:최종 동영상

100밀리초당 하나의 판독값의 센서 판독 속도로 작업 보기

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

코드

<울>
  • Servoposition.ino
  • Linkitonehead.ino
  • Arduinohead.ino
  • Servoposition.inoArduino
    #include  서보 좌우;서보 업다운;서보 흔들림;void setup() { Serial.begin(9600); leftright.attach(3); updown.attach(5); 흔들기.부착(6); leftright.write(90); updown.write(90); 흔들기.쓰기(90); }무효 루프() {}
    Linkitonehead.ino아두이노
    #include #include int readval;String inputString ="";String outputString ="";int firstpoint=0;int secondpoint=0;void setup() { if(! LBTServer.begin((uint8_t*)"Sivam_LIO")) { 반환; }// Serial.begin(9600); Serial1.begin(9600); } 무효 루프() { uint8_t buf[64]; 정수 바이트 읽기; if(LBTServer.connected()) { while(true) { bytesRead =LBTServer.readBytes(buf, 32); if(!bytesRead) 중단; 입력 문자열=""; for(int j=0;j<32;j++) { char inChar =char(buf[j]); // inputString에 추가합니다. inputString +=inChar; }// 직렬.println(입력 문자열); Serial1.println(inputString);// firstpoint=inputString.indexOf('>');// Serial.println(inputString);// Serial.println(firstpoint);// if (firstpoint>0)// {/ / secondpoint=inputString.indexOf('>',firstpoint+1);// if (secondpoint>0)// {// outputString=inputString.substring(firstpoint,secondpoint);// inputString=inputString.substring(secondpoint);// Serial.println(outputString);// }// } } 지연(100); } else { LBTServer.accept(5); }}
    Arduinohead.inoArduino
    #include  서보 좌우;서보 상향;서보 흔들림;문자열 inputString ="";boolean stringComplete =false;문자열 teststr2;문자열 sensorid;문자열 sensorrecid;문자열 sensorval1;문자열 sensorval2;문자열 sensorval3;int S1;int S2;int S3;int startchr=0;int endchr=0;int rot1;int rot2;int rot3;void setup() { Serial.begin(9600); // inputString.reserve(200); leftright.attach(3); updown.attach(5); Shake.attach(6);}void 루프() {}void serialEvent() { while (Serial.available()) { char inChar =(char)Serial.read(); if (inChar !='\n') { inputString +=inChar; } } 시작 =inputString.indexOf('>'); if (startchr>=0) { endchr =inputString.indexOf('>',startchr+1); if (endchr>0) { teststr2=inputString.substring(startchr,endchr); inputString=inputString.substring(endchr); startchr =teststr2.indexOf(','); sensorid =teststr2.substring(1,startchr); endchr =teststr2.indexOf(',',startchr+1); sensorrecid=teststr2.substring(startchr+1,endchr); 시작 =종료; endchr =teststr2.indexOf(',',startchr+1); sensorval1=teststr2.substring(startchr+1,endchr); 시작 =종료; endchr =teststr2.indexOf(',',startchr+1); sensorval2=teststr2.substring(startchr+1,endchr); 시작 =종료; sensorval3=teststr2.substring(startchr+1); S1=sensorval1.toInt(); S2=sensorval2.toInt(); S3=sensorval3.toInt(); rot1=지도(S1, 90, 270, 180, 0); if (rot1<0) rot1=0; else if (rot1>180) rot1=180; rot2=맵(S2, -90, 90, 0, 180); if (rot2<0) rot2=0; else if (rot2>180) rot2=180; rot3=맵(S3, 90, -90, 0, 180); (rot3<0) rot3=0이면; else if (rot3>180) rot3=180; if (rot1!=0 &rot1!=180) { leftright.write(rot1); } if (rot1!=0 &rot1!=180) { updown.write(rot2); } if (rot1!=0 &rot1!=180) {shake.write(rot3); } 지연(15); // Serial.print("센서-");// Serial.println(sensorid);// Serial.print("센서 Val1-");// Serial.println(rot1);// Serial.print(" 센서 Val2-");// Serial.println(rot2); // Serial.print("센서 Val3-");// Serial.println(rot3); } } }

    제조공정

    1. 라즈베리 파이 CD 상자 로봇
    2. 구르는 알람 로봇
    3. RaspiRobot 보드 V2
    4. Minecraft 크리퍼 로봇 제작
    5. 아르키메데스:AI 로봇 올빼미
    6. CV 로봇 열기
    7. ROS 로봇
    8. KINECT 및 RASPBERRY PI를 사용한 SONBI 로봇 인간 탐지
    9. 간단한 파이 로봇
    10. 인적 자본