화요일, 3월 08, 2016

라즈베리파이2 와 8채널 릴레이를 이용한 전등(형광등) 컨트롤(Lighting control with Raspberry Pi2 & 8ch Relay) 만들기 - Part2


"1. Raspberry pi2의 설치와 설정"은 앞글에 나열한 링크로 대신 하고자 한다. 해당 링크를 따라 들어가 본다면 충분히 해볼만 하도록 쉽게 설명되어 있다.

자.. 그럼.. 20년전 배운 "디지털 공학" 수업 시간에 내가 수업을 잘 들었는지 아니면 그 시간에 잤는지 테스트해 볼 시간이 되었다.

2. 모듈 단위 개발 및 테스트
 1) 수제 push 스위치 제작
정말 회로등을 잘 아는 사람이라면 아마도 내가 한 짓(?)에 대하여 실소를 금치 못할 것이다.

"잘했네" 라고 말하는 사람은 아마 나랑 같은 실수를 하고 있는 사람 일 것이고, "초보자네" 라고 하는 사람이 대부분일 것이다. 무엇이 잘못 되었을까?

그리고 실재 내가 사용한 push button switch는 위에보이는 4pin 짜리가 아니고 멋모르고 사버린 6pin push button switch였다. 그건 이것이랑 또다른 상황에 봉착 하게 되는데 이미지가 없으므로 4pin을 기준으로 내가 했던 멍청한 행동에 대하여 말해 보고자 한다.

※ 일단 Raspberry Pi에 연결된 pin array는 문제 없다.(나는 시리얼 포트나 기타 외장 인터페이스를 사용 하지 않을 것이므로 어느 핀을 쓰던 상관이 없다. 물론 전원과 GND는 제외)

문제는 회로와 전기에 대한 기본 상식이 없었기 때문에 발생한 것이다. 처음 저렇게 만들어 놓고 입력 신호를 읽는데, 도무지 값이.. 틀린것이다. 왜일가?

"Floating Status"
나는 전기가 들어가면(3.3V) 1 안들어가면 0이라고 생각 하고 위와 같이 연결하였다.(물론 Raspberry Pi의 내부에 있는 pull down/up resister를 이용하면 된다는 자료는 찾긴 했지만 나의 귀차니즘은 끝내 모르면 미처버리는 내 성질을 이기지 못했다.  그래서 자료들을 찾아본 결과 스위치의 연결은 다음과 같은 기준으로 연결해야 한다는 결론을 얻었다.
OR

그리고 4 pin push button 및 6 pin push button의 회로도를 꼭 보고 확인해야 한다.

6pin push button(switch)를 기준으로 위의 회로에서 알수 있는 사항은 평상시 A/B, F/E가 연결 되어 있고 누르면 B/C, E/D가 연결 된다. 

4pin push button(switch)는 또 다르게 1/2,3/4가 항상 쌍으로 연결 되어 있고 누르면 1/2/3/4가 연결되는 형태를 갖는다.

그래서 나는 어떻게 했을까.(6Pin 기준)


Pull-up 저항을 기준으로 위와 같이 만들었다. 그런데 위와 같이 복잡하게 한 이유는 무엇일까?
 생각을 해보니 여러 신호가 한꺼번에 오면 내가 처리 하기 귀찮을 것 같기도 하고, 회로에 이상이 상기지나 않을까 하는 걱정도 되어서 위와 같이 만들었다. 위와 같이 만들면 어떤 일이 일어 날까? 한번에 하나의 입력만 받을 수 있게 된다.
즉, 2번 버튼을 누르면 3번이 죽고 1번을 누르면 2/3번이 죽는다.(엄밀히 말해서 죽는게 아니라 floating status가 되어 버린다고 해야 한다. 이 경우 값을 제대로 읽어 오지 않는다.

응용을 위장한 실패인데 아마 회로를 잘아는 사람이라면 위와 같이 만들어서는 안된다고 할지도 모르겠다. 결코 floating status가 좋은게 아니므로.

 ※floating status 가 도대체 먼가 해서 찾아 보았다. 
   - "기준 값이 없으므로 0도 1도 아닌 알수 없는 상태" 라고 설명한다. 
      그냥 모른다. 처리 하지 말아야 되는 값이다. 라고 생각 해버렸다.

그럼 4pin push button(switch)는 어떻게 해야 할가? 4pin push button(switch)는 해보지 않았다만 아래와 같이 하면 되지 않을까 싶다.

 이번 글은 여기 까지 하겠다.  다음 글은 아마 스위치로부터 값을 읽어 오는 부분일 것 같다 이부분에도 약간의 트릭(?)이 숨어 있다. 그럼 다음 글에서 보자.

※ 그리고 나의 오타에 대하여 사과한다.( 발견하는데로 바로바로 고치도록 하겠다.)

댓글 없음: