본문으로 바로가기

아두이노 WIFI모듈 wemos d1, blynk, servo, dht11


안녕하세요. 애드라이프 입니다.

DIY HOME IOT 첫번째 포스팅에서 말했던 3번 -> 온습도와 Servo모터를 

WeMos D1 보드와 Blynk를 사용하여 간이 테스트를 해보도록 하겠습니다.



이번 포스팅에서 사용할 부품들을 소개하겠습니다.▼

아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

가장 중요한 Wemos D1 보드입니다.


그리고 온습도 센서로는 dht11을 사용할 텐데요. 모듈타입을 사용하려고 했으나

어디있는지 찾을 수가 없어서 센서만 달린것을 사용합니다.

그래서 5Kohm의 저항을 함께 준비해야 합니다.


마지막으로 서보모터는 SG90을 사용하겠습니다. 가장 흔하고 간단히 사용하기 편한 모델이죠.

아두이노 WIFI모듈 wemos d1, blynk, servo, dht11아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

왼쪽이 DHT11(온습도 센서        오른쪽이 SG90(Servo Motor)


datasheet를 첨부하겠습니다. 참고해 주세요.▼


DHT11.pdf

sg90_datasheet.pdf


그럼 위 부품들을 사용해서 어떻게 구성했는지 회로도를 확인하겠습니다.▼

아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

WeMos D1 보드를 기반으로 서보모터와 DHT11센서(온습도 센서)을 연결하였습니다.

앞서도 말씀드렸지만 DHT11모듈이 없어서 5Kohm을 사용하여 센서자체를 연결한 회로입니다.

위에 첨부해 놓은 부품들의 데이터 시트를 확인하시면서 회로를 구성하시면 어렵지 않게 하실 수 있습니다.


그럼 Blynk어플에서 프로젝트를 생성하겠습니다.

Blynk어플에 대한 자세한 내용을 알고싶은신분은 아래 링크를 참고해 주세요.



아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

1. 프로젝트를 생성합니다.


아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

2. 위 화면과 같은 아이템을 추가합니다.


아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

3. 서보모터 구동을 위한 버튼 1개를 추가합니다.


아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

4. 온도와 습도를 디스플레이 하기위해 Value Display 2개를 추가합니다.


아두이노 WIFI모듈 wemos d1, blynk, servo, dht11

5. 추가한 아이템에 대해 Virtual Pin으로 

버튼은 V1, 온도용은 V6 습도용은 V5로 설정해주세요.



이제 Blynk 프로젝트도 완성되었으니 만든 프로젝트로 

온습도 센서와 서보모터를 사용하기 위한 프로그램을 살펴보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#define BLYNK_PRINT Serial
 
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>                                      //일반적으로 쓰는 DHT라이브러리는 안되는 경우가 많습니다.
#include <Servo.h> 
 
char auth[] = "ae1e1****************************";     //blynk프로젝트 생성 후 받은 메일에 있는 토큰값을 입력합니다.
char ssid[] = "SK_***********";                      //자신이 연결할 와이파이 이름을 적습니다,
char pass[] = "1**********";                           //해당 와이파이의 비밀번호를 입력합니다.
 
// Servo
Servo servo; 
int minAngle = 0;
int maxAngle = 180;
 
#define DHTPIN 4          // What digital pin we're connected to
 
#define DHTTYPE DHT11     // DHT 11       자신이 쓰고 있는 모듈을 선택합니다.
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301
 
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
 
void sendSensor()
{
  float h = dht.readHumidity();           //습도값을 받아옵니다.
  float t = dht.readTemperature();        //온도값을 받아옵니다.
  Serial.println(h);                     //시리얼모니터 디스플레이(습도)
  Serial.println(t);                     //시리얼모니터 디스플레이(온도)
  if (isnan(h) || isnan(t)) {             //nan(not a number)값이 디스플레이 될경우에 대한 조건문
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);            //Blynk프로젝트의 V5 아이템에 습도표시
  Blynk.virtualWrite(V6, t);            //Blynk프로젝트의 V6 아이템에 온도표시
}
BLYNK_WRITE(V1)         //Blynk V1핀의 함수
{
  int pinData = param.asInt(); 
  if(pinData == HIGH)               //V1의 버튼이 ON 경우 동작 정의
  {
    servo.write(maxAngle); 
    delay(30); 
  }
  else if(pinData == LOW)           //V1의 버튼이 OFF 경우 동작 정의
  {
    servo.write(minAngle); 
    delay(30);     
  }
}
void setup()
{
  // Debug console
  Serial.begin(115200);               //시리얼 통신속도 115200
  servo.attach(D6);                     //Servo 제어핀 D6번
  Blynk.begin(auth, ssid, pass);      //WIFI연결 시도
  
  servo.write(minAngle);              //모터 초기화
  dht.begin();                        //온습도센서 초기화
  timer.setInterval(1000L, sendSensor); //1초에 한번씩 온습도 센서값 갱신
}
 
void loop()
{
  timer.run();
  delay(100);
  Blynk.run();
}
cs

프로그램의 전체적인 흐름은 주석을 참고해주세요.(옆으로 넘기면서 보실수 있습니다.)


위 프로그램을 업로드하면 어떻게 동작하는지 동영상으로 확인해 보면서 이번 포스팅을 끝내겠습니다.


지금까지 아두이노(Arduino) 고급 WIFI모듈을 이용한 DIY HomeIoT(Blynk) - 3편 포스팅이였습니다.

처음에 계획했던 모든 간이 TEST가 끝났습니다. 이제 본격적으로 실제 가전에 점목해봐야 겠습니다.

하지만 IOT관련 포스팅은 잠시 미뤄야 할 것 같습니다.

아내 화장대 거울에 조명을 다뤄 줘야해서.....조명장치 설치 후에 다시 찾아 뵙겠습니다.

by 애드라이프