본문 바로가기
아두이노/제품 검사 센서 2

#1 기획 및 제작

by songbum 2024. 11. 1.

작년에 지인 공장에 제품 검사 센서를 납품한 적이 있었는데, 이번에도 또 비슷한 요청을 받았다.  마찬가지로 레이저 각인기에 대상 제품이 정위치에 놓여야 각인 스위치가 활성화 되는 장비인데, 포토 인터럽터 센서로 정위치 여부를 판단했던 것과 달리 이번에는 전기가 통하는지 여부로 판단해야 한다고 한다.  지난 번과 거의 유사한 구성인데다가 센서 부분은 오히려 더 단순해졌기 때문 스터디 없이 바로 제작에 들어갔다.

 

https://songbum.tistory.com/16

 

#9 제작 - 기능 개선

테스트 및 검수 과정에서 개선해야 할 사항들이 나왔다. 오류 발생 시의 부저 소리가 모두 동일해 구분이 어렵다는 것과, 센서 양 쪽에 물체가 감지돼 엔터키 출력이 가능해질 때 이를 사용자에

songbum.tistory.com

 

사용한 아두이노 보드는 키보드 출력이 가능한 Pro Micro 이다.  디지털 4번 핀과 GND 에 연결된 갈색 선이 연결되면 전기가 통한 것이므로 적색 및 녹색 LED 가 점등되고, 디지털 5번 핀에 연결된 노란색 택트스위치가 활성화 된다.  이 택트스위치는 활성화 되기 전까지는 눌러도 반응이 없다가 활성화가 되면 누를 때마다 엔터키 신를 출력한다.  갈색 선을 분리시켜 전기가 통하지 않게 되면 LED 가 소등되고 택트스위치도 비활성화 된다.

 

 

아두이노 IDE 에서 아래와 같이 프로그램을 업로드 했다.

#include <Keyboard.h>

int led1Pin = 3;
int checkerPin = 4;
int keyboardPin = 5;
int led2Pin = 8;

boolean keyboardSend = false;

void setup() {
  Serial.begin(9600);
  while(!Serial && millis()<5000) {
  }

  Keyboard.begin();
  pinMode(led1Pin, OUTPUT);
  pinMode(checkerPin, INPUT_PULLUP);
  pinMode(keyboardPin, INPUT);
  pinMode(led2Pin, OUTPUT);
  Serial.println("START");
}

void loop() {
  if (digitalRead(checkerPin) == LOW) {
    //Serial.println("connected");
    keyboardSend = true;
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);    
  }
  else {
    //Serial.println("disconnected");
    keyboardSend = false;
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
  }
  if (digitalRead(keyboardPin) == LOW) {
    //Serial.println("press");
    if (keyboardSend == true) {
      Serial.println("Enter");
      Keyboard.press(KEY_RETURN);
      delay(500);
      Keyboard.release(KEY_RETURN);
      keyboardSend = false;
    }
  }
 
  delay(100);
}

 

테스트 결과는 다음과 같다.

 

 

케이스 없이 위 상태대로 납품했고, 고객사에서 기계에 맞는 케이스를 제작해 사용했다고 한다.