카테고리 없음

휴대용 음주측정기 아두이노 센서로 만들기

abc0123 2017. 11. 17. 12:49
반응형

 

아두이노 센서로 뭔가를 만들어볼 때 생활과 관련된 것 우선으로 생각하게 되는데 개인적으로 알코올을 좋아하는 사람이다 보니 알코올 측정기에도 관심이 가서 만들어보려고 센서를 하나 구입해봤다. 정확하게는 에탄올 측정기지만 에탄올이나 알코올이나 같은 말이기 때문에 이하 알코올로 표현하며 그것을 측정해서 휴대용 음주측정기를 만들어보려고 한다.

 

음주운전의 처벌 기준은 혈중 알코올 농도 0.05%부터인데 실제 경찰이 사용하는 음주측정기 기준을 모르기 때문에 여기서 사용할 녀석의 수치를 %로 환산하는 방법이 있는지는 모르겠지만 찾아봐서 적용을 해보기로 하고 이번에는 음주측정기 원리만 이해하면서 수치를 측정한 후 LCD에 값을 표시하도록 해보자.

 

 

1. 휴대용 음주측정기 아두이노 재료

 

먼저 이번 글에서 사용할 재료들을 준비해보자.

 

재료 준비

 

▲ 상징적으로나마 휴대용으로 만들어보기 위해서 빵 판에 아두이노 나노를 사용할 것이고 붉은색 동그라미 모양의 알코올 센서(MQ-3)에서 읽어 들인 값을 LCD에 표시하도록 해볼 것이다.

 

휴대용 음주측정기

 

▲ 대충 이것들만 있으면 휴대용으로 만들어질듯 하니 만들어보자.

 

알코올 센서

 

▲ 알코올 센서의 뒤쪽을 보니 저항이 있다. 이걸로 수치를 미세조정할 수 있는 거 같은데 앞에서도 언급했듯이 실제 음주측정기 기준을 모르니 일단 읽어들인 아날로그 값을 LCD에 표시해보자. 참고로 이 MQ-3 센서는 디지털과 아날로그 신호를 모두 체크할 수 있는데 디지털 신호는 알코올이 측정되면 LOW가 되기 때문에 크게 의미가 없을 거 같으니 아날로그 값을 읽어보기로 하고 회로를 만들어본다.

 

 

회로

 

▲ 알코올 센서는 네 개의 핀이 있는데 각각 +, -, 아날로그, 디지털 신호 등이다. 여기서는 아날로그 값을 읽어와서 LCD에 표시해보기 위해서 A0에서 값을 받아오도록 연결을 했다. 그리고 값의 출력을 위한 LCD 연결은 이전에 정리해놓은 글을 보고 그대로 연결을 했다.

 

LCD

 

2. 휴대용 음주측정기 코딩

 

이제 스케치 프로그램에서 만들고자 하는 대로 코딩을 해보자.

 

코딩

 

① 스케치 프로그램에서 LCD 관련 내용을 작성하기 위해서 <LiquidCrysta.h> 파일을 include 했고 객체 lcd를 만들어서 초기화를 했다. ② setup() 함수에서는 사용할 LCD 칸의 개수(16, 2)를 전달해서 초기화하고 있으며 ③ A0 핀으로 들어오는 알코올 센서의 아날로그 값을 받아서 float a 함수에 저장했는데 사실 int형으로 값이 들어오는 것 같지만 실제 음주측정기에서 혈중 알코올 농도 0.XX %라고 하기 때문에 비슷하게 흉내를 내보기 위해서 float로 선언을 해봤다.

 

다음으로 ④ LCD 출력을 위한 작업을 하고 있는데 LCD 관련 코드를 작성할 때는 반드시 loop() 시작과 동시에 lcd.clear() 함수를 한 번 호출해서 기존의 출력값을 지워줘야 한다. 그렇지 않으면 갱신되기 전의 바로 앞 데이터가 지워지지 않은 상태에서 새로운 값이 덮어 써지기 때문이다.

 

 

여하튼 그렇게 LCD를 초기화 한 후 커서를 위쪽 첫 번째 칸(0, 0)에 위치하게 한 후 적당한 문자열(ALCOHOL?)을 입력해봤다. 그리고 커서를 아래줄 첫 번째 칸으로 옮긴 후 아날로그 값을 출력하도록 했는데 실제 받아들이는 데이터는 기본 200~300 사이의 값이었다. 그런데 이것도 좀 더 현실적인 실수로 표현해보기 위해서 값을 100으로 나눠서 출력하도록 해봤다.

 

그리고 마지막으로 출력되는 값 뒤에 알콜 농도인 mg/L이 출력되도록 했으며 0.2초 단위로 새로운 값을 읽어들여 출력하도록 하고 있다. 이제 코드를 아두이노에 업로드해서 결과를 확인해보는데...

 

음주측정기

 

▲ 앞에부터 계속 언급하지만 실제 음주측정기의 기준을 모르기 때문에 값을 어떻게 변환을 해야 할지는 모르겠다. 그런데 실행을 한 후 입김을 불어봤더니 숫자가 미세하게나마 움직인다. 어제 한 잔 했던 알코올이 아직까지 남아 있나?ㅎㅎ

 

그리고 정말로 이 녀석이 알코올에 반응하는지 확인해보기 위해서 마지막으로 다음 영상과 같은 테스트를 해봤다.

 

 

▲ 당장 옆에 실제 술이 없는 관계로 알코올 성분이 들어간 휘발성 액체를 센서의 앞쪽에 가져가 봤는데 수치가 미친 듯이 올라가는 걸 확인할 수 있다.

 

이렇게 해서 아두이노 센서 중 알코올 센서를 이용해서 휴대용 음주측정기를 만들어봤는데 실제 사용하는 녀석의 기준을 안다면 맞춰서 사용할 수 있을 텐데.ㅋ 우스개& 소리로... 기준을 맞출 수 있는 방법이 있기는 하다. 적당한 알코올을 마신 후 운전은 하지 말고 지구대를 찾아가서 음주측정기를 불어보고 얼마나 나오는지 체크한 후 이 센서에도 불어서 나오는 값이 비슷한 수치가 나오도록 코딩을 해서 넣으면 되지 않을까?^^;ㅋ

반응형