This document summarizes a 3D project that uses sensors and a relay module to monitor temperature and proximity. It includes an introduction to the project, descriptions of the algorithm using an ultrasonic sensor and infrared thermometer, code and function details, information about 3D printing an enclosure, images of the final product, and a demo section. The project senses distance and temperature, and can power off a relay module if the temperature reaches 70 or 90 degrees Celsius, or an object gets within 30 centimeters.
인천대학교 공학교육혁신센터 2016년 애로기술 캡스톤 디자인 경진대회 출품작품입니다.
주제 : 실내 환경 청정도 유지를 위한 측정 및 경보장치 제작
팀명 : 챔프(산업경영공학과)
팀원 : 김현아, 최연희, 김성곤
반도체와 같은 첨단 IT 제품은 아주 작은 미세먼지로 인해 오작동이 발생할 수 있어 온도, 습도, 소음 등의 제어에 관하여 환경적으로 제어되는 공간이 클린룸 내에서만 생산해야 한다. 하지만 위험 요소를 즉시 발견하지 못하고 제어하지 못할 경우가 생길 수 있으므로 이러한 경우를 대비하여 효율적인 생산을 위해 제작하고자 하는 장치가 필요하다.
현재 클린룸 내부 측정 장비에 사용되는 파티클 센서 하나의 가격은 500만원대로 접근성이 낮아, 적은 비용으로 생산할 수 있는 실내 환경 측정, 경보 기능 장치가 필요하다. 또한 제품의 생산 장소와 클린룸의 위치가 떨어져있기 때문에 작업을 하는 데 있어서 효율성이 떨어지게 되는데, 이 문제점을 해결하고자 작업장과 가까운 곳에 설치할 수 있는 측정 장치를 제작하였다.
This document summarizes a 3D project that uses sensors and a relay module to monitor temperature and proximity. It includes an introduction to the project, descriptions of the algorithm using an ultrasonic sensor and infrared thermometer, code and function details, information about 3D printing an enclosure, images of the final product, and a demo section. The project senses distance and temperature, and can power off a relay module if the temperature reaches 70 or 90 degrees Celsius, or an object gets within 30 centimeters.
인천대학교 공학교육혁신센터 2016년 애로기술 캡스톤 디자인 경진대회 출품작품입니다.
주제 : 실내 환경 청정도 유지를 위한 측정 및 경보장치 제작
팀명 : 챔프(산업경영공학과)
팀원 : 김현아, 최연희, 김성곤
반도체와 같은 첨단 IT 제품은 아주 작은 미세먼지로 인해 오작동이 발생할 수 있어 온도, 습도, 소음 등의 제어에 관하여 환경적으로 제어되는 공간이 클린룸 내에서만 생산해야 한다. 하지만 위험 요소를 즉시 발견하지 못하고 제어하지 못할 경우가 생길 수 있으므로 이러한 경우를 대비하여 효율적인 생산을 위해 제작하고자 하는 장치가 필요하다.
현재 클린룸 내부 측정 장비에 사용되는 파티클 센서 하나의 가격은 500만원대로 접근성이 낮아, 적은 비용으로 생산할 수 있는 실내 환경 측정, 경보 기능 장치가 필요하다. 또한 제품의 생산 장소와 클린룸의 위치가 떨어져있기 때문에 작업을 하는 데 있어서 효율성이 떨어지게 되는데, 이 문제점을 해결하고자 작업장과 가까운 곳에 설치할 수 있는 측정 장치를 제작하였다.
Presentation from #andevcon by Anna Schaller
Peter van der Linden, Android Technology Evangelists from the Developer Platforms and Services team at Motorola Mobility. More info at http://developer.motorola.com
IoT EDU/MAKE 플랫폼인 Circulus 를 이용하여,
라즈베리파이를 개발할 때 제공되는 API 가이드라인입니다.
이 가이드에서는
LED, 초음파센서, 7세그먼트, 온습도 센서, 조도 센서, SW/HW PWM, TTS, 카메라, 사운드인식, 위치파악, 모니터링, 광학문자인식(OCR) 등에 대해 단 몇줄의 자바스크립트만으로 제어하는 예제를 다루고 있습니다. 앞으로도 지속적으로 추가될 예정입니다.
Presentation from #andevcon by Anna Schaller
Peter van der Linden, Android Technology Evangelists from the Developer Platforms and Services team at Motorola Mobility. More info at http://developer.motorola.com
IoT EDU/MAKE 플랫폼인 Circulus 를 이용하여,
라즈베리파이를 개발할 때 제공되는 API 가이드라인입니다.
이 가이드에서는
LED, 초음파센서, 7세그먼트, 온습도 센서, 조도 센서, SW/HW PWM, TTS, 카메라, 사운드인식, 위치파악, 모니터링, 광학문자인식(OCR) 등에 대해 단 몇줄의 자바스크립트만으로 제어하는 예제를 다루고 있습니다. 앞으로도 지속적으로 추가될 예정입니다.
13. 코드 설명
스마트폰 제어3 – 라이브러리 및 핀 설정
#include <Servo.h>
int servoPin1 = 9;
Servo servo1;
int pos = 0;
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3);
#include <DS1302.h>
DS1302 rtc(4, 5, 6);
Time t;
int Red = 11;
int Green = 12;
int count = 0;
-서보 모터를 9번핀으로 설정했습니다.
-블루투스 통신하기 위해<SoftwareSerial.h>
라이브러리를 썼습니다.( 2번핀이 RX, 3번핀이 TX입
니다)
-<DS1302.h>는 인터넷에서 다운받은 rtc1302 모듈
(시간 측정) 라이브러리입니다.
-DS1302 rtc(4, 5, 6)는 6번핀 – sck_pin, 5번핀 –
io_pin, 4번핀- rst_pin으로 설정합니다.
-Led red는 11번핀, Led green은 12번핀에 연결했습
니다. (알람 설정 확인을 위한 것)
-Speaker는 피에조 부저인데, 8번핀에 연결. val은 방
범장치입니다.(떨어져있을 때 – 1, 붙어있을 때 - 0)
-msg[4] 배열을 설정했습니다.
int speaker = 8;
int val=0;
int msg[4] = {0, 0, 0, 0};
14. 코드 설명
스마트폰 제어4 – 기본 설정
void setup() {
BTSerial.begin(9600);
Serial.begin(9600);
pinMode(13, INPUT_PULLUP);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
servo1.attach(servoPin1);
rtc.halt(false);
rtc.writeProtect(false);
/* Set the time and date */
rtc.setDOW(MONDAY);
rtc.setTime(13, 38, 0);
rtc.setDate(23, 11, 2015);
}
/* Set the time and date */ 밑에 코드는 현재 요일,
현재 시간, 현재 날짜를 적으면 됩니다.
한번만 설정 해줌으로서, 다음 번에는 안 해도 됩니다.
15. 코드 설명
스마트폰 제어5 – 블루투스로 값 받기
void loop(){
t = rtc.getTime();
if (BTSerial.available()){
msg[0] = 0;
count = 0;
while (BTSerial.available() > 0){
for (int i = 0; i <= 3; i = i + 1){
msg[i] += (BTSerial.read());
}
}
} t = rtc.getTime();
-t = rtc.getTime()는 현재 시간, 날짜, 요일을 얻어와
서 t에다 저장합니다.
-앱으로 블루투스 통신을 받으면, msg 배열에 받은 값
을 각각 저장합니다.
16. 코드 설명
스마트폰 제어6 – 기본 제어
if (msg[0] == 1){
delay(10);
msg[1] = msg[1]+1;
msg[2] = msg[2]+1;
msg[3] = msg[3]+1;
for (pos = 90; pos < 180; pos += 1){
servo1.write(pos);
delay(15);
msg[0] = 0;
}
}
else if (msg[0] == 2){
delay(10);
msg[1] = msg[1]+1;
msg[2] = msg[2]+1;
-앱으로 켜기를 누르면 1값이 아두이노로 전송되는데,
그게 msg[0]에 저장됩니다. 그래서 msg[0] == 1 이
라면 서보모터가 90도에서 180도로 돌아갑니다.
-마찬가지로 끄기를 누르면 2값이 전송되고 msg[0]에
저장됩니다. 그래서 msg[0] = 2 라면 90도에서 1도로
돌아갑니다.
msg[3] = msg[3]+1;
for (pos = 90; pos >= 1; pos -= 1){
servo1.write(pos);
delay(15);
msg[0] = 0;
}
}
17. 코드 설명
스마트폰 제어7 - 알람
delay(10);
if (t.date == msg[1] && t.hour == msg[2] && t.min
== msg[3]){
if (count == 0){
for (pos = 90; pos < 180; pos += 1) {
servo1.write(pos);
count = count + 1;
delay(15);
}
}
for (int thisNote = 0; thisNote < 8; thisNote++){
int noteDuration =
1000/noteDurations[thisNote];
tone(8, melody[thisNote], noteDuration);
-앱으로 알람을 맞추고 켜기를 누르면 날짜, 시(hour),
분(minute)가 아두이노로 전송되는데, msg[1]은 날
짜가 저장되고, msg[2]는 시간이, msg[3]은 분이 저
장됩니다.
-날짜, 시간, 분이 정확히 맞아떨어지면, 서보모터가
90도에서 180도로 움직여 조명이 켜지도록 합니
다.(count를 사용한 이유는 한번만 켜지도록 하기위해)
그리고 알람이 울립니다.
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(8);
}
}