안녕하세요? 


요즘 전국이 강추위가 강타한 가운데, 저도 컨디션이 그렇게 좋지 못한 듯 합니다. 하지만 그대로 배움에 대한 열정만은 남아 있는데, 몸이 못 따라오려 하는 것을 느끼기는 느끼는 중입니다. 아무튼 간에 이번 포스팅의 내용은 지난주 수요일에 있었던 아두이노 보드의 수업인데, 이번 수업내용에서도 여전히 블루투스가 쓰였지만, 센서에 대한 이해를 하기 위한 내용이 주된 수업이였습니다.


보통의 아두이노의 센서들은 다 모듈화 되어서 나와 있지만, 이렇게만 해서는 이해가 어렵기 때문에, 이번 수업시간에는 부득이 하게 CDS와 써미스터 센서를 이용, 브레드 보드에서 결선을 한 다음에 이를 사용해서 수업을 하였습니다.


먼저 Chungpa BT라는 앱을 다운로드 받는 것으로 수업이 시작했습니다.



거기서는 이전 수업시간에 다운로드 받았던 앱처럼 버튼의 이름과 데이터를 설정할 수 있었습니다.



일단 블루투스에 접속하지 않은 상태에서 키 설정만 완료하였습니다.



이제 블루투스 모듈에 이름을 지정할 차례입니다. 여기서 사소하지만 중요한 것이 있는데, 모두 대문자로 입력해야 된다는 것입니다. 소문자로 입력했더니 먹히지 않는 것을 발견하였습니다.



이제 통신 속도까지 설정을 해주도록 합니다.



모든 설정이 완료되었습니다.



이제 HORSE라고 이름을 지정한 블루투스에 접속을 하도록 합니다.



새로 다운로드 받은 청파이 BT에서 블루투스까지 접속에 성공하면 뜨는 화면입니다.



다음 단계로는 아두이노 IDE에서 코딩을 해주는 것입니다. 일단 빨간색 밑줄을 친 부분이 핵심으로, 여기를 잘 만들어 줍니다.



이제 실제로 아두이노 보드와 연결했고, 접속이 된 스마트폰도 준비가 되었습니다.



실제로 제가 스마트폰에서 지령을 내리는 대로 LED가 켜지고 꺼지는 것을 볼 수 있습니다.




일단은 아날로그 저항값을 입력받기 위한 결선의 모식도 입니다. 위 그림에서는 가변저항을 연결했는데, 아두이노 보드에서 아날로그 입력을 받을 수 있는 A1단자에 연결을 했습니다.



실제로 회로상에서 결선을 한 모양입니다.



이제 아날로그 신호를 입력 받는데, 일단 위 스크린샷에 있는 붉은색 밑줄친 부분을 추가했습니다.



그리고 왜 이리도 지난번에 받았는 BT chat이라는 앱에서 아무런 값도 안뜨는 가 했더니, 그 이유가 빨간색 밑줄의 코드를 빼먹어서 생긴 것입니다. 프린트를 해라는 명령이 없으니 이런 일이 생긴 것입니다.



그런데 1차 시도는 실패였습니다.



그래서 하는 수 없이 붉은색 박스친 부분을 if(BTSerial.available()){} 함수 밖으로 빼보았습니다.



그러했더니 성공적으로 값이 스마트폰의 BT chat에 출력되어 나왔습니다.



다만 너무 빨리 다량의 정보가 스마트폰에 들어와서 소위 스마트폰에 부하가 걸린다고 해야 할까요? 깨어짐 현상이 벌어지기에 하는 수 없이, 이렇게 딜레이를 주었습니다.



이번에야 말로 스마트폰에 부하를 안 주면서, 가변저항의 값이 변하면서 변화하는 값이 그대로 스마트폰에 반영이 되는 것을 볼 수 있었습니다.



이제 CDS저항을 연결하는데, 여기서 결선도입니다. 이 결선도에서 아두이노 보드의 아날로그 신호를 받는 접점인 A1걸리는 전압은 V2에 걸리는 전압이 걸립니다. 그런데, CDS는 빛이 통하면 통할수록 저항이 떨어져서 V=I*R이라는 공식에 의해서 A1에 걸리는 전압도 떨어지게 됩니다. 한마디로 어두우면 어두울 수록, 센서에 자극이 덜 가해지면 가해질 수록 A1에 걸리는 전압이 커지고, 그에 따라 아날로그 입력 신호의 최대값인 1023에 가까워 진다는 것입니다.



실제로 이게 적용되는지 알아보기 위해 브레드 보드에 CDS랑 LED를 결선해 보았습니다.




그리고 여기서 코딩을 했는데, 1차 시도는 실패 했습니다.



2중으로 겹쳐진 휴먼에러를 해결한다고 애를 먹긴 했지만, 일단은 성공했습니다.



너무 동시에 LED가 켜져서, 하는 수 없이 그 값의 범위를 크게 벌려 보았습니다.



일단 CDS센서에 그늘이 지는 것을 신호로 해서, LED를 켜고 끄는 것인 이제 되었습니다.



그래서 이제는 과제를 받았는데, 3개의 LED를 연결해서 가장 빛이 밝으면 1개만 들어오고, 중간 정도면 2개, 가장 어두우면 LED가 3개 들어오도록 만들어 주는 것입니다. 일단 1차 시도는 제가 어느정도 실수를 해서 실패했습니다.



실제로 C언어에서 두개의 조건을 쓸때는 &&를 써야 하는데, 너무 오랜만에 한다고 이걸 잠시 잊어 먹었습니다.



어떻게 밝기의 정도에 따라서, LED가 켜지는 숫자를 조절하는 데는 성공했습니다. 이제는 다음 과제로 갯수가 아니라 다른 LED한개만 들어오도록 하는 것입니다.



이번에는 if구문에서 else if가 사용이 되었습니다. 이번에도 너무 오랫만에 하니까 잠시 헷갈렸습니다.



이번에도 성공적으로 다른 종류의 LED1개만 점등이 되는 것을 확인할 수 있었습니다.



이번에는 GND와 전원에 걸리는 센서와 저항을 바꾸었습니다. 이런 경우에는 A1에는 2.2kΩ의 전압이 걸리게 됩니다. 즉, 아까의 CDS의 경우와는 다르게 자극이 들어오면 센서에 자극이 들어오면 가장 낮은 값에서 높은 값으로 A1에 들어오는 신호가 증가하게 됩니다.



일단 써미스터라고 열 센서를 브레드 보드 끝에 장착해서 해보았습니다.



그래서 써미스터를 이용해서 가장 온도가 낮을 때는 녹색, 중간에서는 황색, 가장 온도가 높을 때는 적색 LED에 불이 들어오도록 하는 것인데, 일단 1차 시도는 실패였습니다.





일단 2차 시도를 하기 위해서 위 사진과 같이 브래드 보드를 배치하는 데 까지는 했는데, 라이터로 써미스터-열센서를 가열하면서 한다고 촬영까지는 너무 무리였습니다.



일단 위 코드에서 빨간색 밑줄 부분을 수정하고 다시 시도를 해서 성공을 하기는 했습니다.



이제 드디어 인체감지 센서입니다. 이 센서가 거창해 보이지만, 위에 있는 하얀색 덮개를 벗기면....



안에는 아래와 같은 것이 있는 것을 볼 수 있습니다. 여기에도 마찬가지로 5V 전원을 걸어 주어야 하며, 신호를 내보내는 OUT부분이 A1과 같은 아두이노 보드의 아날로그 신호 입력부에 들어와야 합니다.



실제로 이렇게 인체감지 센서를 장치하고서 아래의 코드를 입력했습니다.



하지만 교실에 사람이 너무 많아서 이걸 가지고 하는 실습은 거의 실패를 했습니다. 그래서 동영상은 따로 올리지를 못했습니다.



마지막으로 적외선 센서입니다. 파란색을 띄는 전등이 발광부라고 해서 적외선을 발사하고, 검은색으로 칠해진 부분이 수광부라고 해서 적외선을 받는 역할을 합니다. 일반적으로 희색이 적외선을 더 많이 반사하기 때문에 희색에 가까워 질수록 센서에서 값이 커져야 하지만, 이번 실습에서는 반대로 되어 있는 센서를 다루게 되었습니다.



마지막으로 적외선 센서를 가지고서 했는 실습을 올리면서 마무리를 짓습니다. 이번 시간의 수업은 그렇게 까지 따지면 큰 내용이 없는 듯 하면서도, 결국 센서라는 것은 자기에게 자극이 가해지면 '저항(R)'이 내려간다는 것을 깨닫기 까지 이렇게 많은 시간이 걸렸다는 생각이 듭니다.


+ Recent posts

티스토리 툴바