안녕하세요. 애드라이프 입니다.
DIY HOME IOT 첫번째 포스팅에서 말했던 3번 -> 온습도와 Servo모터를
WeMos D1 보드와 Blynk를 사용하여 간이 테스트를 해보도록 하겠습니다.
이번 포스팅에서 사용할 부품들을 소개하겠습니다.▼
가장 중요한 Wemos D1 보드입니다.
그리고 온습도 센서로는 dht11을 사용할 텐데요. 모듈타입을 사용하려고 했으나
어디있는지 찾을 수가 없어서 센서만 달린것을 사용합니다.
그래서 5Kohm의 저항을 함께 준비해야 합니다.
마지막으로 서보모터는 SG90을 사용하겠습니다. 가장 흔하고 간단히 사용하기 편한 모델이죠.
왼쪽이 DHT11(온습도 센서) 오른쪽이 SG90(Servo Motor)
datasheet를 첨부하겠습니다. 참고해 주세요.▼
그럼 위 부품들을 사용해서 어떻게 구성했는지 회로도를 확인하겠습니다.▼
WeMos D1 보드를 기반으로 서보모터와 DHT11센서(온습도 센서)을 연결하였습니다.
앞서도 말씀드렸지만 DHT11모듈이 없어서 5Kohm을 사용하여 센서자체를 연결한 회로입니다.
위에 첨부해 놓은 부품들의 데이터 시트를 확인하시면서 회로를 구성하시면 어렵지 않게 하실 수 있습니다.
그럼 Blynk어플에서 프로젝트를 생성하겠습니다.
Blynk어플에 대한 자세한 내용을 알고싶은신분은 아래 링크를 참고해 주세요.
1. 프로젝트를 생성합니다.
2. 위 화면과 같은 아이템을 추가합니다.
3. 서보모터 구동을 위한 버튼 1개를 추가합니다.
4. 온도와 습도를 디스플레이 하기위해 Value Display 2개를 추가합니다.
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 애드라이프
'아두이노 > 아두이노 고급' 카테고리의 다른 글
아두이노(Arduino) 고급 WIFI모듈을 이용한 DIY HomeIoT(Blynk) - 2편 (0) | 2018.12.20 |
---|---|
아두이노(Arduino) 고급 WIFI모듈을 이용한 DIY HomeIoT(Blynk) - 1편 (0) | 2018.12.18 |
아두이노(Arduino) 고급 음성인식 모듈 아두보이스 3편 음성으로 조명제어 (0) | 2018.12.09 |
아두이노(Arduino) 고급 음성인식 모듈 아두보이스 2편 프로그램 TEST (0) | 2018.12.07 |
아두이노(Arduino) 고급 음성인식 모듈 아두보이스 1편 기본사용법 (0) | 2018.12.05 |