[아두이노] 미세먼지 센서와 아두이노 연결하고 코딩하기!
ฝัง
- เผยแพร่เมื่อ 25 ก.ค. 2024
- 아두이노와 미세먼지 센서를 연결하여 우리 주변의 먼지값을 측정해보는 시간을 가져봅시다!
※ 준비물 : 아두이노 우노(+케이블), 브레드보드, 미세먼지센서(+저항, 커패시트), I2C LCD, 암수/수수케이블
코딩 : 우리 주변의 미세먼지 값을 측정해보고, 먼지의 수치를 I2C LCD에 코딩해봅시다!
#미세먼지 #LCD #황사 #에코 #코딩 #아두이노 #비피랩
-
* 비피랩 커뮤니티
- 홈페이지 : bplab.kr/
- 블로그 : blog.naver.com/bpcode
- 스토어 : smartstore.naver.com/bplab
쉬운 설명 잘 봤어요~!
GP2Y10의 특성이라고 설명하신 부분의 식에 문제가 있어보입니다.
저 식을 그대로 사용했을 때 voltage의 값이 0.1 ~ 0.8인 경우 dust의 범위는 0~ 35가 되며, 0.8~1.0인 경우 10~ 40이 됩니다. 1이상인 경우에는 정상적으로 나오는듯하네요.
안녕하십니까, 비피랩입니다.
말씀해주신 것처럼 코드의 조건문의 수식에 오류가 있어 0.8~1까지의 조건에서의 수식은
Dust = 30 + 5*((Voltage - 0.8)*10);
이렇게 수정하시면 정확한 결과를 얻으실 수 있습니다.
감사합니다.
no matching funtction for call to LiquidCrystal_begin(); 이라고 에러가 뜨는 데 어떻게 하나요?
voltage was not declared in this scope 라고 뜨는데 어떻게 해결해야할까요
프로그래밍을 했는데 lcd.write(0)가 에러라고 뜨는데 어떻게 해야 할까요?
5핀 먼지센서는 아두이노에 어떻게 연결해야할까요??
제 센서는 전선 6개가 연결되어있지 않는데, 어떡하죠?
코딩은 어떤 앱으로 해야될까요??!
헤더파일이 뭔가요?
강의 감사합니다! 근데 IR LED 설명이 잘못 되었네요. LOW 값을 줘야 LED를 켜는 겁니다. 상식적으로도 LED에 반사되는 양을 측정하는데 끄고 값을 읽으라는 게 말이 안 되죠. ㅠㅠ
안녕하십니까, 비피랩입니다.
해당 코드는 데이터 시트 정보를 바탕으로 하여 작성한 코드입니다.
미세먼지센서인 GP2Y1014AU0F 모델은 10ms 간격으로 값을 측정하며 그 중 0.32ms 동안만 IR LED를 입력하게 되는데 이 중에서 샘플링은 0.28ms가 지난 후 0.04ms 동안만 하게 되어 있습니다.
따라서 아날로그로 값을 읽는 순간부터 0.04ms 동안만 출력된 적외선 값을 기준으로 미세먼지 값을 측정하게 됩니다.
따라서 digitalWrite(V_LED,HIGH);와 delayMicroseconds(40);의 위치를 바꾸시면 더 정확하게 동작함을 알려드립니다.
digitalWrite(V_LED,LOW);
delayMicroseconds(280);
Vo_value = analogRead(Vo);
digitalWrite(V_LED,HIGH);
delayMicroseconds(40);
delayMicroseconds(9680);
상세한 내용은 해당 모델의 데이터 시트를 참고하시기 바랍니다.
답변이 도움이 되셨으면 좋겠습니다.
감사합니다.
복수개의 라이브러리가 사용되었다고 뜨는데 뭐가 문젠가요?
안녕하세요. 비피랩입니다.
코드에서 사용된 lcd 라이브러리가 다수개의 라이브러리가 pc에 설치되었을 경우에 발생하는 문제입니다.
내pc>문서>arduino>librairs 폴더 내에 라이브러리를 확인하시고 삭제하시길 바랍니다.
한개의 아두이노 우노에 미세먼지 센서 2개를 장착할 수 있을까요?
안녕하세요. 비피랩입니다.
아두이노 우노에 미세먼지 센서 2개를 동시에 이용하는 것은 가능합니다.
다만, 보드에 연결된 출력센서가 많으면 보드에서 분배할 전력이 모자랄수 있어 그런 경우 제대로 된 측정이 불가할 수 있습니다.
이 부분 참고하셔서 진행하시길 바랍니다.
감사합니다!
@@BPLAB_Coding
int pin1 = 8; //먼지센서
unsigned long duration; //지속 시간
unsigned long starttime; //시작 시간
unsigned long sampletime_ms = 5000; //샘플시간 5초 마다 업데이트
unsigned long lowpulseoccupancy = 0; //Low 신호가 지속된 시간을 초기화
float ratio = 0; //비율
float concentration = 0; //입자 농도 0으로 초기화
float pcsPerCF = 0; //한 입자당 CF를 0으로 초기화
float ugm3 = 0; //최종 값으로 세제곱미터 당 마이크로 그램(㎍/㎥)
uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; // 시계 이모티콘
이런식으로 미세먼지센서를 구동시키고 있었는데 두번째 미세먼지를 따로 계산하는 방법을 모르겠어요.. 각각 다르게 또는 두번쨰것도 같이제어할 수 있을까요?
미세먼지센서 어디서 샀는지
알수 있을까요 ?
안녕하세요~ 영상에서 사용한 미세먼지 센서는 연구용 제품이라 정확한 구매처를 안내드리기 어려운 점 양해 부탁드립니다.
사용된 센서의 제품명은 GP2Y1014AU로, 검색사이트에서 제품명으로 검색하시면 구매처 충분히 찾으실 수 있으니 참고해주세요!
코딩 라이브러리는 어디서다운하나요,
안녕하세요~ 해당 영상에 사용한 라이브러리는 lcd를 사용하기 위한 LiquidCrystal_I2C 파일로 아래 링크에서 다운받을 수 있으니 참고해 주세요!
링크 : blog.naver.com/bpcode/222388425650
소스 코드에 lcd.begin();이 있는데 이대로 진행하면 컴파일 에러가 뜹니다. lcd.begin(16,2);로 하면 정상적으로 컴파일이 되네요. lcd.begin(16,2);로 진행해도 되나요?
안녕하십니까, 비피랩입니다.
lcd.init();로 수정해서 진행해 보시고
또 컴파일 에러가 뜬다면 다시 댓글 남겨주세요~
감사합니다!
저 탐구주제로 정해서 그런데 제품들 정확한 명과 어디서 샀는지 알려주실 수 있을까요?
안녕하세요 비피랩입니다!
해당 부품은 저희 비피랩에서 판매하는 공기청정기 키트 내 센서로, 센서만 개별 판매하고 있지 않는 점 양해 부탁 드립니다.
혹시 코딩파일좀 받을수 있을까요?
안녕하세요~ 해당 예제 파일은 현재 저희가 따로 게시하지 않아 예제 파일을 확인할 수 있는 링크를 전달 드리기 어려운 점 양해 부탁드립니다!
사용한 미세먼지 센서는 GP2Y1014AU로, 관련 예제는 인터넷에 검색하시면 충분히 활용하실 수 있는 글들이 많이 있을 것으로 예상됩니다.
아무쪼록 제작에 도움이 되셨으면 좋겠습니다.
오늘도 좋은 하루 되세요😊