https://bker001.tistory.com/383
생각보다 조회수와 반응이 괜찮아서 빠르게 진행해보고 있습니다. 그래봤자 하루에 10씩 ㅎ;
아무튼 이번에는 저번 글에 이어서 부품을 구매했다는 것 일단 보여드립니다
일단 아래처럼 nema17(스테퍼모터)을 연결할때 프로파일 안쪽으로 벨트를 넣고 프로파일 한 쪽 끝에는 텐셔너를 달아서 텐션 정리와 한 쪽 끝 고정을 확실히 하려고 합니다. 스테퍼모터에 따라오는 벨트용 타이밍 풀리, 엔드스톱등도 같이 구매했습니다.
여기에 추가적으로 필요할 M4 볼트들과 인서트너트, 브라켓, A4988 드라이버, 제일 중요한 스테퍼모터까지 구매해줬습니다. 대략 뼈대를 움직이게 하는 하드웨어적인 부품 구매가 끝나서 이제는 총체적으로 어떻게 아두이노와 연결할지 대략 회로도를 짜봤습니다.
보이시는 것처럼 연결할 예정입니다. 사진 찍을때 5v를 VIN으로 연결해버렸는데 그거만 수정하면 실제 연결과 똑같이 진행될 거 같습니다!
일단 전체적으로 5v전원을 고려하지 않고 회로를 분배했기 때문에 실제 작동을 시켜봐야 알거 같습니다.
코드도 대략 필요한 코드만 따왔고 상호간에 연결을 전혀 안해놨습니다. 진짜 따오기만 한 정도
int IRsensor = 6;
int IRvalue = 0;
const int stepPin = 12;
const int dirPin = 13;
int limitswitch1 = 7;
int limitswitch2 = 8;
int joystick = 10;
int relay = 11;
int rswi = 9;
void setup() {
// 리밋 스위치 설정
pinMode(limitswitch1, INPUT);
pinMode(limitswitch2, INPUT);
Serial.begin(9600);
// 조이스틱 설정
pinMode(joystick, INPUT_PULLUP);
// 릴레이 설정
pinMode(relay, OUTPUT);
// IR센서
pinMode(IRsensor, INPUT);
// 모터
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
// 리모콘 스위치
pinMode(rswi, INPUT_PULLUP);
}
void loop() {
// 리밋 스위치 설정
if(digitalRead(limitswitch1)==HIGH){
Serial.println("limitswitch1");
delay(100);
}
if(digitalRead(limitswitch2)==HIGH){
Serial.println("limitswitch2");
delay(100);
}
// 조이스틱 설정
Serial.print(analogRead(A1));
Serial.print(" ");
Serial.print(analogRead(A0));
Serial.print(" ");
Serial.println(digitalRead(joystick)); //스위치값
delay(100);
// 릴레이 설정
digitalWrite(relay, HIGH);
delay(1000);
digitalWrite(relay, LOW);
delay(1000);
// IR센서
IRvalue = digitalRead(IRsensor);
if (IRsensor == HIGH){
Serial.println(" ");
delay(1000);
}
else {
Serial.println(" ");
delay (1000);
}
// 모터
digitalWrite(dirPin,HIGH);
for(int x= 0; x < 200; x++){
digitlaWrite(stepPin.HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);
}
delay(1000); // One second delay
digitalWrite(dirPin,LOW); //Changes the rotations direction
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin,LOW);
delayMicroseconds(1000);
}
delay(1000);
// 리모컨 스위치
if(digitalRead(rswi) == LOW){
digitalWrite(relay, HIGH);
delay(300);
digitalWrite(relay, LOW);
}
else{
digitalWrite(relay, LOW);
}
}
여기까지 딱 준비해놨습니다. 이제 오면 조립하면서 추가 부품 모델링하고 제작하고 그렇게 진행됩니다!@
그리고 추가로 esp32를 이용한 블루투스 리모컨 이야기를 진지하게 찾아봤습니다...만
지금 하는 유선 리모컨만으로 문제가 되는 건 없어서 일단 진행해보고 욕심이 생기면 그때 더 알아보려고 합니다
https://blog.naver.com/PostView.nhn?blogId=elepartsblog&logNo=221539140298
https://makerspace.steamedu123.com/entry/ESP32-%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0