[12V DC FAN 연결]
DC Fan 잡음을 줄이려고 25V 1000uf 캐패시터를 달았다.
// #define IA 5 // D5
// #define IB 4 // D2
#define IA D1 // D5 --> D1으로 수정
#define IB D2 // D2
// 25V1000uf Motor driver에 연결
void setup() {
pinMode(IA, OUTPUT);
pinMode(IB, OUTPUT);
Serial.begin(115200);
}
void loop() {
analogWrite(IA, 100);
analogWrite(IB, LOW);
Serial.println("Speed = 100 ");
delay(2000); // wait for a second
analogWrite(IA, 150);
analogWrite(IB, 0);
Serial.println("Speed = 150 ");
delay(2000); // wait for a second
analogWrite(IA, 200);
analogWrite(IB, 0);
Serial.println("Speed = 200 ");
delay(2000); // wait for a second
analogWrite(IA, 255);
analogWrite(IB, 0);
Serial.println("Speed = 255 ");
delay(2000); // wait for a second
analogWrite(IA, 300);
analogWrite(IB, 0);
Serial.println("Speed = 300 ");
delay(2000); // wait for a second
analogWrite(IA, 500);
analogWrite(IB, 0);
Serial.println("Speed = 500 ");
delay(3000); // wait for a second
analogWrite(IA, 700);
analogWrite(IB, 0);
Serial.println("Speed = 700 ");
delay(3000); // wait for a second
analogWrite(IA, 900);
analogWrite(IB, 0);
Serial.println("Speed = 900 ");
delay(3000); // wait for a second
analogWrite(IA, 1024);
analogWrite(IB, 0);
Serial.println("Speed = 1024 ");
delay(3000); // wait for a second
digitalWrite(IA, 1);
digitalWrite(IB, 0);
Serial.println("Speed = 1 ");
delay(3000); // wait for a second
analogWrite(IA, 500);
analogWrite(IB, 0);
Serial.println("Speed = 500 ");
delay(3000); // wait for a second
analogWrite(IA, 300);
analogWrite(IB, 0);
Serial.println("Speed = 300 ");
delay(3000); // wait for a second
analogWrite(IA, 200);
analogWrite(IB, 0);
Serial.println("Speed = 200 ");
delay(3000); // wait for a second
analogWrite(IA, 150);
analogWrite(IB, 0);
Serial.println("Speed = 150 ");
delay(3000); // wait for a second
digitalWrite(IA, 0);
digitalWrite(IB, 0);
Serial.println("Speed = 0 ");
delay(2000); // wait for a second
}
[PMS5003 연결]
Wemos D1 MINI PIN이 적은 관계로 TX만 연결했다.
PIN이 남는다면 RX도 연결해서 사용해야지.
#include <Arduino.h>
#include <pms.h>
//int pinTX = 22; // TX
//int pinRX = 21; // RX
Pmsx003 pms(D4, D6); //D6 -> D4
//Pmsx003 pms(RX,TX); //HW TX,RX
////////////////////////////////////////
void setup(void) {
Serial.begin(115200);
while (!Serial) {};
Serial.println("Pmsx003");
pms.begin();
pms.waitForData(Pmsx003::wakeupTime);
pms.write(Pmsx003::cmdModeActive);
Serial.println("____ START _____");
}
////////////////////////////////////////
auto lastRead = millis();
void loop(void) {
const auto n = Pmsx003::Reserved;
Pmsx003::pmsData data[n];
Pmsx003::PmsStatus status = pms.read(data, n);
switch (status) {
case Pmsx003::OK:
{
Serial.println("_________________");
auto newRead = millis();
Serial.print("Wait time ");
Serial.println(newRead - lastRead);
lastRead = newRead;
// For loop starts from 3
// Skip the first three data (PM1dot0CF1, PM2dot5CF1, PM10CF1)
for (size_t i = Pmsx003::PM1dot0; i < n; ++i) {
Serial.print(data[i]);
Serial.print("\t");
Serial.print(Pmsx003::dataNames[i]);
Serial.print(" [");
Serial.print(Pmsx003::metrics[i]);
Serial.print("]");
Serial.println();
}
break;
}
case Pmsx003::noData:
break;
default:
Serial.println("_________________");
Serial.println(Pmsx003::errorMsg[status]);
};
//delay(10000);
}
그림으로 그린 로직과 실제 구현은 참 많이 다른 느낌이다. 동작 여부를 확인하기 위해서 빵판에서 작업을 진행했따.
남는 보드에 납뗌을해서 쬐금 더 깔끔하게 작업하려고 한다.
12V 전원을 인가하고 7805 통해서 D1 MINI 5V에 연결하면 외부전원으로 사용할 수 있다.
USB를 통하지 않고 PIN을 통해 전원을 넣으려고 구글링을 많이 했다. 망가질까 조마 조마 했는데.... 다행이 잘 동작한다.
이게 맞는거겠지? 쓰다가 망가지려나?
뒷판은 점퍼선을 여기 저기 날려서 지져분하다. 뒷태가 아름답지 못 하네.
빨간불이 들어와야 안심이다. 그런데.. 쬐금 겁나기도 함. 실은 모터 드라이버를 하나 날려먹은 후라... ^^
Fan 동작과 소음을 확인 할 수 있다. 물론 속도 조절로 Fan off도 가능하다. Relay를 쓰지 않아서 돈 굳었다.
LCD와 버튼을 빨리 적업해야 하는데... 블로그를 하고 있다.
2019년 4월 2일 : 코드 추가함.
'DIY - 2019 > 공기청정기' 카테고리의 다른 글
케이스 만들기 (0) | 2019.04.03 |
---|---|
회로 구성 (0) | 2019.04.02 |
TFT LCD 연결 (0) | 2019.04.02 |
[공기청정기]메뉴 조작을 위한 구성 (0) | 2019.03.26 |
설계 및 준비 (0) | 2019.03.16 |