아두이노 조도센서 BH1750 디지털로 사용해보자.
아두이노 센서 중에는 어떤 값을 아날로그로 측정해서 보내는 녀석이 있는 반면 디지털로 측정을 해주는 녀석도 있는데요. 제가 갖고 있는 센서 중에서 조도센서는 아래 사진(왼쪽)처럼 생겨서 아날로그로 그 값을 측정하던 녀석이었습니다.
그런데 너무 저렴한 거라서 정밀한 값을 측정하는 데는 한계가 있더라고요. 그래서 이번에 센서 몇 개를 구입하면서 아두이노 조도센서 중에서 디지털로 값을 측정해 주는 녀석이 있길래 하나 구입을 했거든요. 오늘은 그 녀석을 이용해서 데이터를 읽어볼 생각입니다.
▲ 오른쪽이 BH1705 디지털 조도센서인데 꽤 정밀하게 조도를 측정한다니까 기대를 해보고요. 핀 연결이 안 되어 있는 관계로 먼저 납땜 작업부터 해야겠군요.
저 개인적으로는 저것들을 직접 만져보면서 바로바로 글을 정리하기 때문에 잠깐 멈추고 납땜부터 해결하고 다시 와야겠네요. ㅎㅎ
▲ 이럴 때 급하게 사용하려고 구입해놓은 장비를 꺼내서 준비를 하고요.
▲ 후다닥 납땜을 완료했습니다. 이제 이 녀석을 아두이노와 연결해서 회로를 만들고 코딩을 한 후 값을 읽어볼 텐데요. 그러기 위해서는 다음 라이브러리를 추가를 해줘야 합니다.
혹시 필요한 분들이 있을지 몰라 파일은 첩부를 해봤고요. 이제 회로를 만들겠습니다.
▲ 이 조도센서는 사진처럼 VCC, GND, SCL, SDA, ADD 핀이 있는데 이 중 SDA는 아날로그 4번에 SCL은 5번에 각각 연결을 하면 되는데 아날로그 핀에 연결을 하는 걸로 봐서 이 녀석이 값은 디지털로 측정한 후 아날로그로 변환을 해서 보내주나 보네요.
▲ 회로도에서는 VCC를 3.3에 연결했지만 5V에 연결해도 무관하니 참고하시고요.
다음은 만들어져 있는 예제를 가져와서 소스 코드의 내용을 살펴본 후 아두이노 보드에 업로드해서 빛의 밝기를 측정해볼게요.
▲ BH1750 객체 light를 만들고 센서 값을 시리얼 모니터에서 확인하기 위한 준비를 하고 있으며... 조도의 단위인 lux 계산을 BH1750 안에 있는 readLightLevel()이라는 함수에서 해주나 보군요. 여하튼 그렇게 2초 단위로 빛의 밝기를 체크해서 시리얼 모니터에서 출력하도록 하는 내용인데요.
주의할 점 하나는 SDA와 SCL를 연결했던 아날로그 4번과 5번의 위치가 바뀌면 안 될 것 같네요.^^ 참고하시고요. 회로를 똑같이 만들고 이 소스 코드를 업로드해서 테스트를 해보겠습니다.
▲ 시리얼 모니터에서 값의 변화를 체크하는데 집중하다 보니 주변 환경이 잘 안 보이긴 하는데요. 현재 형광등이 켜져 있고 바로 위에서 스탠드 조명을 쏘고 있는 상황입니다. 그리고 스탠드 빛의 밝기가 3단계로 조정이 되는 녀석이라서 처음에는 가장 밝게 해놨다가 순서대로 밝기를 조정하면서 조도센서가 읽어들이는 값을 확인해봤어요.
그런데 영상의 시리얼 모니터를 자세히 보면 알겠지만 정말 엄청난 정밀로도 값을 읽어내는군요. 오차(?)라고 해야 할까요? 그게 2도 안되는 거 같습니다. 만약 조도센서를 이용해서 뭔가를 만들 거라면 꼭 이런 녀석을 이용하는 게 좋을 거 같다는 생각을 해봅니다. 가격도 3천 원 밖에 안 하네요.
여하튼 참고하시고.... 이렇게 해서아두이노 조도센서 중에서 BH1750이라는 디지털 센서를 사용해봤는데요. 그 정밀도에 감탄을 하면서 오늘 글은 마무리합니다. 수고하셨어요.