코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-11-07 17:39:55
본문에서는 알코올 센서를 사용하여 현재 알코올 양을 시리얼 모니터에 출력해봅시다.
또 프로세싱을 사용하여 알코올 양에 따른 움직이는 그래프를 그려봅시다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | 브레드 보드 | 1 | |
3 | 알코올 센서 | 1 | MQ-3센서 모듈을 사용했습니다. |
4 | 점퍼 케이블 | 4 |
부품명 | 오렌지 보드 | 브레드 보드 | 점퍼 케이블 | 알코올 센서 |
사진 | x1 | x1 | x4 | x1 |
아래의 스케치를 업로드 하세요.
int dout = 6; //센서 디지털 핀 선언 int aout = A0; //센서 아날로그 핀 선언 void setup() { pinMode(dout, INPUT); //디지털 핀 입력용으로 선언 Serial.begin(9600); } void loop() { int analogValue = analogRead(aout); //아날로그 값 읽음 int digitalValue = digitalRead(dout); //디지털 값 읽음 Serial.println(analogValue); //아날로그 값 출력 Serial.println(digitalValue); //디지털 값 출력 Serial.println("-----------------"); delay(500); }
두번 째 스케치
/* 다음 스케치는 http://sensorworkshop.blogspot.kr/2008/04/sensor-report 에서 참고하였습니다. */ int gasPin = 0; int value = 0; void setup() { Serial.begin(9600); pinMode(gasPin,INPUT); } void loop() { value = analogRead(0)/2; Serial.print("Alcohol:"); Serial.println(value); delay(100); }
프로세싱
/* 이 코드는 http://sensorworkshop.blogspot.kr/2008/04/sensor-report 를 참고하였습니다. */ import processing.serial.*; PFont font; //vlw폰트는 PFont 객체 int an1; int val = 0; int xPos=0; String buff = ""; int displaySize = 2; int a=127; Serial port; void setup(){ size(600,500); smooth(); port = new Serial(this, Serial.list()[1], 9600); //맞는 시리얼 포트를 선택하기 위햇 배열의 인덱스를 확인하세요. port.write(65); font = loadFont("ArialMT-24.vlw"); //ArialMT-24.vlw이 필요합니다. textFont(font, 24); } void draw(){ while (port.available() > 0) { serialEvent(port.read()); } } void serialEvent(int serial) { if(serial != '\n') { //시리얼을 통해 값을 받은 후 buff += char(serial); //char타입으로 buff에 저장 } else { int curX = buff.indexOf("Alcohol:"); if(curX >=0){ String val = buff.substring(curX+8); an1 = Integer.parseInt(val.trim()); println(an1); xPos++; if(xPos > width) xPos = 0; fill(50,5); noStroke(); rect(0,0,width,height); fill(0); rect(xPos+displaySize+1, 0, 160, height); fill(255, an1-20); text(buff, xPos+10, an1-10); sensorTic(xPos,an1+20); //원 그리기 } buff = ""; } } //값의 따른 원그리기 함수 void sensorTic(int x, int y){ fill(255, 360-an1,0,an1-35); ellipse(x,y,displaySize+an1/20,displaySize+an1/20); }
MQ-3 알코올 센서는 총 6개의 핀을 가지고 있습니다.
그 중 두개는 heating system을 위한 핀이고 나머지 두 개는 GND와 VCC를 위한 핀 입니다.
MQ-3 센서는 내부 튜브를 가열 시키는 데 시간이 필요하므로 연결시 준비시간이 필요합니다.
또 알코올이 있을 경우 값을 감지하는 것은 매우 빠르게 작동하지만
다시 재측정을 위한 준비시간이 필요합니다.
또한 모듈의 경우 뒷 부분에 민감도 조절하는 부분이 있습니다.
시계 방향을 돌리면 민감도가 커지고 반시계 방향의 경우 작아집니다.
int dout = 6; //센서 디지털 핀 선언 int aout = A0; //센서 아날로그 핀 선언
이 센서는 디지털 값과 아날로그 값을 읽을 수 있는 핀이 총 2개가 있습니다.
아날로그 핀의 경우 알코올 농도를 측정하고
디지털 핀의 경우 알코올의 유무를 측정합니다.
0일 경우 알코올이 있다는 뜻입니다.
PFont font; int an1; int val = 0; ....... .......
void setup(){ size(600,500); smooth(); port = new Serial(this, Serial.list()[1], 9600); //맞는 시리얼 포트를 선택하기 위햇 배열의 인덱스를 확인하세요. port.write(65); font = loadFont("ArialMT-24.vlw"); //ArialMT-24.vlw이 필요합니다. textFont(font, 24); }
다음 프로세싱을 실행하기 위해서는 ArialMT-24.vlw이 필요합니다.
값을 텍스처로 표현 해주는 파일 중 하나입니다.
다음 링크로 가서 zip파일을 다운로드 하신 후 압축을 푸시면 ./data 밑에 존재합니다.
이 파일을 프로세싱 파일이 설치된 폴더에 넣어 주세요.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!