뉴스에서미세먼지주의보가발령이된후학교에서대처가부족한사례 교실에있으면미세먼지를피할수있는지확인필요 실내에서환기여부 마스크착용여부가인체에주는영향확인 필요 관악산에인접한과천중앙고등학의지리적인여건이미세먼지 에영향을주는지확인필요 학교에서미세먼지에대처해서안전하게친구들을보호할수있는예보 시스템개발을위해기후환경 물리 컴퓨터 수학동아리가모임 분야 기후환경 물리 수학 컴퓨터 연구주제의선정과정 시스템개발을위한연구분야 미세먼지의농도에영향을주는독립변인의종류와특성 미세먼지사전실험연구 미세먼지센서 온도센서등기후관련센서의작동원리 미세먼지예보시스템의통계적자료분석 아두이노를이용하여센서정보수집및자료공유방안 미세먼지가심할때학교에서어떻게행동해야하는지에대한적절한안내가필요 학교에서미세먼지에영향을주는독립변인들설정후실험연구필요 예상되는독립변인들 ü 장소에따른차이가있는가 ü 시간에따른차이가있는가 ü 보조장치및행동이효과가있는가 사전실험연구의주제와기대되는결론 연구주제 기대결론 3. 연구내용및방법 연구방법 1. 사전실험 미세먼지가심할때학교에서구체적으로어떻게행동해야 하는가 미세먼지가심할때어느시간대에어느장소에서어떤행동 을하는것이도움이된다 시간대별미세먼지측정 미세먼지측정센서와 을이용해시간대별미세먼지농도 를측정한뒤그래프나 엑셀데이터로나타냄 학교내부의전체적인측정치를종합해평균값으로표시 학교내부미세먼지농도평균 학교외부 운동장및학교부지 의전체적인측정치를종합해 평균값으로표시 학교외부미세먼지농도평균 과천시의시간대별미세먼지농도와비교후시간대별특이성 탐구 장소별미세먼지측정 미세먼지측정센서와 을이용해장소별미세먼지농도를 측정한뒤그래프로나타냄 학교내부의공간들 교실 다목적실 급식실 교장실 교무실등 의 미세먼지농도를측정한뒤측정치를그래프로나타냄 과천시내와비교해비교적산지에위치한학교와 과천시내의 미세먼지농도를측정한뒤비교해 미세먼지의지형적인특이성을 알아봄
경보시스템구축 경보장치개발 미세먼지검출센서와 아두이노를이용하여미세먼지경보 장치개발 경보장치의서버와의데이터송수신을위한프로그램작성 미세먼지센서 미세먼지센서 Diameter of dust: Above1um Measurement range 8000 pcs / 283mL Working voltage DC5V±5% Working current 90mA Working temperature -10~45 Storage temperature -30~60 Working humidity 0-95%RH non-condensing Size 59*45*17.2(mm) Weight About 26g Stable time 1 minute after power on Output Low level valid, Hi:5V Lo:0V 미세먼지센서 PM1001 성능표 미세먼지센서
예보시스템구축 예보시스템개발 실제기상예보나 기타환경관련예보는정교하게짜여진알고리즘에따라슈퍼컴퓨터의연산을거쳐하게됨 하지만관측을위한고가의장비 다양한지역의기상정보 예보알고리즘에대한지식이전무함 따라서처음에는예보시스템은개발이불가능할것이라여김 하지만인터넷으로미세먼지농도는 시간간격으로기상청에서제공되고 학교가산지에위치해인위적환경보다자연적인환경의영향을더받아어느정도예보가가능할것이라여김 그리고미세먼지는주로중국에서발생하여한반도로바람을타고전파되는데 이바람인편서풍의속도를이용하여대략적인예보를할수있음 부가적인하드웨어를구축할필요없이예보시스템을개발할수있음 경보시스템개발 데이터베이스서버를구축하여 경보장치에서측정된수치를 서버에전송할수있게함 구축된데이터베이스서버를활용하여학교어플리케이션과 학교홈페이지에측정값을연동시킴 학교방송부와연계하여측정된미세먼지농도가매우높을땐 방송을통해학교전체에경보를발령함 학교홈페이지와어플리케이션에미세먼지경보가발령되었 을때의행동요령을공지하여피해를최소화시킬수있게함 세부계획 경보시스템구축 경보장치개발 미세먼지검출센서와아두이노 쉴드를연결하여 를통해서버와통신을하며미세먼지측정값을전송할수있는장치개발 개발된장치는학교옥상에배치 경보시스템설계도
예보시스템구축 예보시스템 수집 과천은경기도의중심에있어 예보시스템을구축의거점지형으로삼음 우리나라의연평균풍속은 인데 이것을 시간단위로바꾸면 정도가됨 예보에필요한정보들을가진거점도시들은 과천을중심으로반경 에위치한도시들임 파싱 이란 문장의분류루틴에의하여문장의음절로부터문장의종류를판별해각문자의처리프로그램의제어를넘기는파싱동작을표현하는알고리즘 지정한도시의위치 기상청이나 사이트에서는기상정보를 시 간 시간주기로제공함 예보에필요한지역별풍속 미세먼지농도를위의사이트 에서데이터파싱 을이용해 시간마다구축한데이터 베이스서버로전송 파싱의예 학교급식정보를학교데이터베이스에서가져옴
예보시스템구축 고등학생의능력과제한된자본으로인해직접측정소를도시마다세워직접예보시스템을구축하는것은불가능한일임 미세먼지의특성을조사하던중미세먼지는다른기상현상과는다르게산발적으로급격히일어나지않고 주로편서풍을타고중국으로부터날아오는것을알게됨 그래서중국에서불어오는편서풍의정보와 그에따른미세먼지검출여부를종합해분단위의정확한예보는아니지만 시간단위로예보를할수있을거라예상됨 마침과천은경기도의중심에위치해 미세먼지가바람을타고한국으로이동하게되면경기도의외곽에위치한도시들부터미세먼지가검출될것이고 그도시들을거쳐과천까지도달할것임 예보시스템구축단계에서수집한데이터들을토대로 거점도시에서미세먼지가검출된후 과천에서미세먼지가검출되기까지시간을그시점의풍향을반영해측정함 측정된시간을통해통계프로그램인 를이용해평균적으로미세먼지가과천에서측정되는데까지걸린시간을구함 약 주 주동안수집된데이터와위에서구한평균적인시간을토대로미세먼지예보시스템을구축함 미세먼지예보시스템을구축하는데고려할시스템변수로는계절에따른바람의방향의변동이있다 이것을해결하기위해지정한거점도시에서받아오는데이터를계절별로변경함 대한민국의계절별바람의방향 계절이봄이라면과천의남서쪽에있는도시의데이터를 가을이라면북동쪽에있는도시의데이터를가지고예보함 그리고미세먼지와더불어여러기상상황을알려주는사이트인 에서제공되는다른지역의대기상황과시간에따른미세먼지농도증감의추이를분석해미세먼지예보의정확성을향상시킬것임
예보시스템테스트 구축된미세먼지시스템을가지고실제예보가가능한지직접테스트를해봄 통계를이용해구한풍향에따른미세먼지도착예정시간을이용하여실제그시간에미세먼지가학교에서검출되는지학교에설치된미세먼지검출센서를이용하여측정함 지형과 온도와같은변수들을고려하여미세먼지예보의시간오차는 분으로함 만약지속적으로오차범위를크게벗어나예보라할수없을때에는예보시스템의알고리즘의재점검및거점도시의수 표본 를늘리고 환경적인변수를고려해시스템을재설계함 오차범위를크게벗어나지않고예보의정확도가 이상이되면학교홈페이지와 어플리케이션에미세먼지예보시스템을탑재함 그리고학교서버를이용하여학생들을통솔하는선생님들에게학교내부메신저를이용하여 시간간격으로미세먼지예보를전송함 4. 연구결과 사전실험을통한센서선정 PM1001 센서를이용하여실험을진행하였다. 가로축은시간, 세로축은미세먼지농도이며관양1동이센서로측정한값, 나머지선들은기상청에서제공하는미세먼지농도이다. 하루간의실험결과 PM1001센서는미세먼지농도의변화를제대로반영하지못하고있고, 실험에사용하기에부적합하다고판단하였다. 다음은 DSM501A 센서이다. Pm1001 센서와마찬가지로제대로반영을하지 못하고있으며, 역시실험에사용하기에부적합하다고판단하였다.
미세먼지측정센서코드작성 : 1 분에한번씩미세먼지측정값을 LCD 에표시하도록개발함. 다음은작성된프로그램의일부임 마지막으로 GP2Y10 센서이다. 측정지점에서가장가까운관측소인부림동 의측정결과와추세가일치다. 그래서가장신뢰성있는결과라고판단하였 고앞으로실험에사용할센서로선정하였다. #include "SoftwareSerial.h" #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup(){ Serial.begin(9600); lcd.init(); lcd.backlight(); void loop(){ digitalwrite(ledpower,low); // 센서내부 LED 점등 delaymicroseconds(samplingtime); vomeasured = analogread(measurepin); // 먼지센서측정값읽기 delaymicroseconds(deltatime); digitalwrite(ledpower,high); // 센서내부 LED 소등 delaymicroseconds(sleeptime); calcvoltage = vomeasured * (3.3 / 1024);// 데이터시트기반측정값 dustdensity = 0.17 * calcvoltage - 0.1; // 변환공식 lcd.setcursor(0, 1); // LCD커서를첫줄로설정 lcd.print("dust(ug/m^3)="); //LCD에 ~ 부분표시 lcd.print(dustdensity*100); //LCD에미세먼지농도표시
RTC 사용코드작성 : 분당미세먼지측정농도를기록하기위해 RTC 를사용함. 다음은작성된프로그램의일부임 *RTC(real time clock) 의약자로시간정보를알려주는모듈이다 #include <string.h> #include <Wire.h> #define RTC_ADDRESS 0x68 // RTC 모듈의 I2C 주소 byte bin2bcd(int n){ byte val = 0; int ten = n / 10; // 십자리 int one = n % 10; // 일자리 val = (ten << 4) one; // BCD 형식으로변환 return val; void timesetting(int _year, int _month, int _day, int _hour, int _min, int _sec){ Wire.beginTransmission(RTC_ADDRESS); // I2C 주소설정및전송시작 Wire.write(0); // RTC 모듈의레지스터주소설정 Wire.write(bin2bcd(_sec)); // 초설정 Wire.write(bin2bcd(_min)); // 분설정 Wire.write(bin2bcd(_hour)); // 시설정 Wire.write(0); // 요일설정 Wire.write(bin2bcd(_day)); // 일설정 Wire.write(bin2bcd(_month)); // 월설정 Wire.write(bin2bcd(_year - 2000)); // 년설정 Wire.write(0); // 정현파출력제어설정 Wire.endTransmission(); // 전송종료 byte bcd2bin(byte n){ byte val = 0; int ten = n >> 4; // 십자리 (5 비트에서 7 비트까지 3 비트 ) int one = n & 0x0F; // 일자리 ( 하위 4 비트 ) val = ten * 10 + one; // 이진형식으로변환 return val; void setup(){ Serial.begin(9600); Wire.begin(); // Wire 라이브러리초기화 timesetting(2014, 8, 8, 23, 47, 0); // 시작시간설정 void loop(){ Wire.beginTransmission(RTC_ADDRESS); Wire.write(0); // RTC 모듈의레지스터주소설정 Wire.endTransmission(); Wire.requestFrom(RTC_ADDRESS, 7); // 날짜시간정보요구 uint8_t _second = bcd2bin(wire.read() & 0x7F); // 초 uint8_t _minute = bcd2bin(wire.read()); // 분 uint8_t _hour = bcd2bin(wire.read()); // 시 Wire.read(); // 요일 uint8_t _day = bcd2bin(wire.read()); // 일 uint8_t _month = bcd2bin(wire.read()); // 월 uint16_t _year = bcd2bin(wire.read()) + 2000; // 년 // 연월일출력 lcd.setcursor(0, 0); lcd.print(string(_year) + "/"); lcd.print(string(_month) + "/"); lcd.print(string(_day) + " "); // 시분초출력 lcd.print(string(_hour) + ":"); lcd.print(string(_minute)); lcd.print(string(_second)); *RTC 소스는오픈소스를이용했음
MicroSD 카드저장코드작성 : 미세먼지센서에서받은값과, RTC 의 시간정보를이용하여 1 분에한번씩 SD 카드에저장하는코드이다. 다음은작성된프로그램의일부임 #include "SoftwareSerial.h" #include <Wire.h> #include <SD.h> const int chipselect = 4; void setup(){ Serial.begin(9600); Serial.print("Initializing SD card..."); // SD카드인식부분 pinmode(10, OUTPUT); // SD카드를인식하지못하면 if (!SD.begin(chipSelect)) { // 시리얼출력을통해알려줌 Serial.println("Card failed, or not present"); return; Serial.println("card initialized."); String datastring = ""; //SD카드에저장할데이터지정 int sensor = dustdensity*100; // 저장할데이터 = 측정값 datastring += String(sensor); /* 저장할데이터의양식 datastring += " ug/m^3"; 측정값, 연, 월, 일, 분, 초순으로기록 datastring += " "; ex: 48ug/m^3 2014/8/23/17:02/01 datastring += String(_year); */ datastring += "/"; datastring += String(_month); datastring += "/"; datastring += String(_day); datastring += " "; datastring += String(_hour); datastring += ":"; datastring += String(_minute); datastring += ":"; datastring += String(_second); delay(60000); // 1분을주기로저장 File datafile = SD.open("datalog.txt", FILE_WRITE); // 파일생성 if (datafile) { // datalog.txt라는이름을가짐 datafile.println(datastring); datafile.close(); Serial.println(dataString); else { Serial.println("error opening datalog.txt"); 제작방법 1 SPLduino 보드준비 (Lcd 모듈이호환되는신형 Spl 보드사용 ) * 신형보드는 I2C 포트의배열이 SCL, SDA, GND, VCC 순임
2 좌측하단의 I2C 포트에 LCD 모듈연결 4 RTC 모듈부착 이때 RTC 모듈의 VCC단자는보드의 5V핀에, GND to GND SDA to Analog 4 Pin SCL to Analog 5 Pin DS to Digital 1 pin 에연결한다. 5 미세먼지센서부착 3 Micro SD 리더기부착 이때리더기의 3V3단자는보드의 3.3V에, GND to GND SCK to Digital 13 Pin Do to Digital 12 Pin DI to Digital 11 pin CS to Digital 4 Pin 에연결한다. 최종적으로완성된미세먼지측정장치 이때미세먼지센서의 5V 단자는보드의 5V 핀에, GND to GND TX to Analog 0 pin RX to Analog 1 pin P1 to Analog 13pin 에연결한다.
5. 연구결과및향후계획 연구결과 미세먼지센서를이용하여미세먼지농도를측정할수있게됨 여러센서들을테스트하여실제사용할적합한센서를찾아냄 같은지역이라도거리에따른편차가꽤큼 향후계획 측정장치를모두개발완료했으므로, 겨울방학동안연구를진행시켜우선경보시스템을완성할계획 경보시스템이성공적으로작동하면어플리케이션에탑재하여학생들의접근성을높일것 참고문헌 홍선학외저, (2012), 아두이노따라하기 채진욱외저, (2011), 아두이노인터렉티브뮤직 윤성우외저, (2012), 열혈 c 프로그래밍