기술연구

김경현 2018. 6. 28. 02:37

안녕하세요.


기술이 공유되지 않으면 미래의 사회는 지금보다 더욱 폐쇄적이고 불평등한 사회가 될 것입니다. 카피레프트(copyleft)는 개인의 지적재산권을 중시하는 기존의 카피라이트(copyright)에 대항해 사회적 공유를 강조하는 정신이자 운동입니다. DIY연구소는 카피레프트(copyleft) 정신과 4차 산업기술의 확산을 위하여 연구한 내용을 무료로 배포하고 있습니다. 오늘은 '3D프린터 로봇머리 전기제어 (이론)' 을 공유 합






DIY연구소 김경현 배상 (010 8604 6802)



[교육내용]


☞ 1. 3D프린터 설계제작

☞ 2. 3D프린터 프로그램

☞ 3. 3D프린터 의수제작

☞ 4. Core XY 3D프린터 구동방식과 조립

☞ 5. Prusa i3 3D프린터 조립

☞ 6. Prusa i3 3D프린터 배선

☞ 7. 3D프린터 전기조립 기초

☞ 8. Fun i3 3D프린터 조립

☞ 9. 3D프린터 오픈소스 RepRap

☞ 10. 20만원대 교육용 3D프린터 개발

☞ 11. 3D프린터 전기자전거 개발

☞ 12. 원노즐 듀얼 3D프린터 개발



[3D프린터 로봇머리 전기제어 (이론)]






# 공부 1. 안드로이드앱, 블루투스를 사용하여 아두이노의 다수 서보모터 제어하기




Connections:


- The external battery VCC / GND connect to the breadboard

- The Arduino GND connect to the breadboard's GND input

- The servo connections we use in this project are as follows;


  Orange Input - Signal Input

  Red Input - Power Input (VCC), 9V Battery

  Brown Input - Ground Input(GND)


- The Servo1 VCC and GND connect to the breadboard's VCC / GND inputs

- The Servo1 Signal connect to the Arduino Digital PWM 3

- The Servo2 VCC and GND connect to the breadboard's VCC / GND inputs

- The Servo2 Signal connect to the Arduino Digital PWM 5

- The Servo3 VCC and GND connect to the breadboard's VCC / GND inputs

- The Servo3 Signal connect to the Arduino Digital PWM 6

- The Servo4 VCC and GND connect to the breadboard's VCC / GND inputs

- The Servo4 Signal connect to the Arduino Digital PWM 9

- The Bluetooth module attach to the Breadboard

- The Bluetooth VCC connect to the Arduino 3.3V

- The Bluetooth GND connect to the Arduino GND

- The Bluetooth TX connect to the Arduino Digital Pin 10

- The Bluetooth RX connect to the Arduino Digital Pin 11























Code :


#include <SoftwareSerial.h> // TX RX software library for bluetooth


#include <Servo.h> // servo library 

Servo myservo1, myservo2, myservo3, myservo4; // servo name


int bluetoothTx = 10; // bluetooth tx to 10 pin

int bluetoothRx = 11; // bluetooth rx to 11 pin


SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);


void setup()

{

  myservo1.attach(3); // attach servo signal wire to pin 9

  myservo2.attach(5);

  myservo3.attach(6);

  myservo4.attach(9);

  //Setup usb serial connection to computer

  Serial.begin(9600);


  //Setup Bluetooth serial connection to android

  bluetooth.begin(9600);

}


void loop()

{

  //Read from bluetooth and write to usb serial

  if(bluetooth.available()>= 2 )

  {

    unsigned int servopos = bluetooth.read();

    unsigned int servopos1 = bluetooth.read();

    unsigned int realservo = (servopos1 *256) + servopos;

    Serial.println(realservo);


    if (realservo >= 1000 && realservo <1180) {

      int servo1 = realservo;

      servo1 = map(servo1, 1000, 1180, 0, 180);

      myservo1.write(servo1);

      Serial.println("Servo 1 on");

      delay(10);

    }

    if (realservo >= 2000 && realservo <2180) {

      int servo2 = realservo;

      servo2 = map(servo2, 2000, 2180, 0, 180);

      myservo2.write(servo2);

      Serial.println("Servo 2 on");

      delay(10);

    }

    if (realservo >= 3000 && realservo <3180) {

      int servo3 = realservo;

      servo3 = map(servo3, 3000, 3180, 0, 180);

      myservo3.write(servo3);

      Serial.println("Servo 3 on");

      delay(10);

    }

    if (realservo >= 4000 && realservo <4180) {

      int servo4 = realservo;

      servo4 = map(servo4, 4000, 4180, 0, 180);

      myservo4.write(servo4);

      Serial.println("Servo 4 on");

      delay(10);

    }

  }

}



About Bluetooth Connection:


- After establishing a connection, the LED on the Bluetooth module must be active continuously.

- If you get any errors (Device not found, broken pipe, etc.), please check the module connections. If the connections are correct, try connecting to the module a several times. It will be connect.









출처 : https://youtu.be/9o7DFpJShsQ


# 공부 2. 라즈베리파이, 안드로이드앱, 블루투스를 사용하여 아두이노의 서보모터 제어하기


아두이노로 조명스위치 on/OFF


[아두이노 스케치 준비]







Code :


#include <Servo.h>

#include <SoftwareSerial.h>


SoftwareSerial btSerial(10,11);  // txd, rxd 번호 지정

Servo myServo;                  // 서보변수 선언


void setup() {

  write(180);                     // 밑에 write 함수 별도로 만들었기에 myservo.write 지정안함

  btSerial.begin(9600);          // 9600 속도로 시리얼통신 시작

}


void loop() {

  if(btSerial.available()){        // 블루투스를 통하여 데이터가 들어왔는지 확인

   char c = btSerial.read();     // 데이터 들어왔다면 바이트 하나를 읽어서 c 라는 이름을 가진 char 형 변수에 넣는다


    switch(c){                   // 그 다음 변수 c 에 있는 값이 

      case 'a':                   // 알파벳 소문자 a 인지 확인해서

      write(180);                 // a 이면 180 도 (전등스위치 on 각도실측후 설정)

      break;

      case 'b':                  // 알파벳 소문자 b 인지 확인해서

      write(110);                // b 이면 110 도 (전등스위치 OFF 각도실측후 설정) 로 설정한다

      break;

    }

  }

}


void write(int angle) {             // 위의 write 호출할때마다 아래 코드들이 매번 실행된다

  myServo.attach(9);              // 9번 핀이 서보모터를 제어한다 설정

  myServo.write(angle);           // 위의 int angle 각도 값으로 서보모터의 각도 설정

  delay(1000);                     // 1초 쉬어주고

  myServo.detach();              // 서보모터가 어떠한 제어도 받지 않는다 설정. 서보모터 설정축 고정을 풀어주기 위함.

}



[모바일 준비]


컴퓨터에서 아두이노 아이디에서 시리얼 모니터로 통신하는것과 같은 프로그램. 블루투스로 시리얼 통신을 편리하게 사용하는 앱으로 아두이노에게 글자값을 전송하는 용도로 사용. 안드로이드 폰에 Bluetooth spp tools pro 앱 다운로드.










☞ 출처 : https://youtu.be/h8GRTrGia8c


# 공부 3. 3D프린터 로봇제어를 위한 라즈베리파이


☞ 출처 : https://youtu.be/WWtXeTnUo38

















# 공부 2. 라즈베리파이 살펴보기


☞ 출처 : https://youtu.be/-lErN7o2V4g


















































































# 공부 3. 라즈베리파이 아두이노 제어하기


☞ 출처 : https://youtu.be/UyE6GjVQsKo


















































# 공부 4. 라즈베리파이 안드로이드 연결하기


☞ 출처 : https://youtu.be/YxhB1bAtVnY























































# 공부 4. 앱인벤터 음성인식 아두이노 제어하기


☞ 출처 : https://youtu.be/zxfqPMbVukc





















#include <SoftwareSerial.h>  // 블루투스시리얼 소프트웨어지정

#define RELAY 8 // 릴레이를 디지털핀 8번에 연결, 매크로상수 RELAY 라는 이름으로 8번 선택


SoftwareSerial btSerial(2, 3); // RX, TX, 블루투스시리얼


void setup() {   

  pinMode(RELAY, OUTPUT);  // 전압을 연결했다 끊었다, 핀모드로 OUTPUT 설정

  digitalWrite(RELAY, HIGH);  // 처음 시작시 digitalWrite 릴레이모드 전압 IN HIGH 설정, NO 열려있다.

  btSerial.begin(9600);  // 블루투스시리얼 속도설정

}


void loop() {  // 루프부분

  if (btSerial.available()) {  // 블루투스로 데이터가 왔는지 확인후

    char c = btSerial.read();  // 왔다면 캐릭터형 변수 한글자 한 바이트로 받아서 

    switch (c) {

      case 'a':   // 한글자가 'a' 인지 확인한후

        digitalWrite(RELAY, LOW);   // 'a' 이면 릴레이쪽 데이터핀 전압을 LOW, 릴레이 NO 연결해 전기흘러 문열림.

        break;

      case 'b':  // 한글자가 'b' 인지 확인한후

        digitalWrite(RELAY, HIGH);  // 'b' 이면 릴레이쪽 데이터핀 전압을 HIGH, 릴레이 NO 평시상태로 전기끊어 문잠김.

        break;

    }

  }

}













































# 공부 5. 앱인벤터 스마트폰으로 RC카 제어하기


☞ 출처 : https://youtu.be/Jr4QgC3j7No












































[3D프린터 로봇머리 (기계) KIT :  구입]








사업자 정보 표시
| | | 사업자 등록번호 : -- | TEL : -- | 사이버몰의 이용약관 바로가기