아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨IOT) 열두번째.

 

스마트폰 Blynk APP으로 원격지에서 토양수분값 확인하고 워터펌프를 가동시키는 기능의 구현 

 

 

 

 

 

 

Blynk APP설정 : 다음과 같이 3개의 Widget을 생성하여  토양수분수치의 확인, 워터펌프의 가동시간 확인용 디스플레이 와 워터펌프의 기동용으로 사용한다.   

 

 

 

Blynk 기능활용 아두이노 프로그램

 

  1. #include <Wire.h>  
  2. #include <ESP8266WiFi.h>  
  3. #include <BlynkSimpleEsp8266.h>  
  4. int pinPower = D5;   
  5. int pinRelay = D7;   
  6.   
  7. char  ssid[30] = "pnit";  
  8. char  password [30] = "xxxxxxxxxxxxx";  
  9. char Blynk_auth[50] = "0c5d9xxxxxxxxxxxxxxxxxxxx0acc8d62aa";     
  10.   
  11. int moist;  
  12. int moistr;  
  13. int go_stop;  
  14. int time_on;  
  15. long  time_start = 0;  
  16.   
  17. void procBlynk() {  
  18.      if ( go_stop ==  1 ) {  
  19.           time_on = ( millis() - time_start ) / 1000;   
  20.           Blynk.virtualWrite(V2, time_on);  
  21.           digitalWrite(pinPower, HIGH);  
  22.           delay(200);  
  23.           moistr = analogRead(A0);  
  24.           moist = map(moistr,1023,0,0,100) ;   
  25.           Blynk.virtualWrite(V3, moist);  
  26.     }  
  27.     if ( time_on > 20 ) {  
  28.         go_stop = 0;   
  29.         digitalWrite(pinRelay, LOW);  
  30.         digitalWrite(LED_BUILTIN, LOW);  
  31.     }  
  32. }  
  33.   
  34. BLYNK_WRITE(V1) {    
  35.    Serial.println("V1 detect ");       
  36.    go_stop = param.asInt();  
  37.    if ( go_stop ==  1 ) {  
  38.       digitalWrite(pinRelay, HIGH);  
  39.       digitalWrite(LED_BUILTIN, HIGH);  
  40.       time_start =  millis();  
  41.    }  
  42.    else{  
  43.       digitalWrite(pinPower, LOW);  
  44.       digitalWrite(pinRelay, LOW);  
  45.       digitalWrite(LED_BUILTIN, LOW);  
  46.    }  
  47. }  
  48.   
  49. void setup() {  
  50.    Serial.begin(115200);  
  51.    Serial.println("==waterman IOT  START==");  
  52.    pinMode(pinPower, OUTPUT);  
  53.    pinMode(pinRelay, OUTPUT);  
  54.    digitalWrite(pinRelay, LOW);  
  55.    Blynk.begin(Blynk_auth, ssid, password);  
  56. }  
  57.   
  58. void loop() {  
  59.   Blynk.run();  
  60.   procBlynk();  
  61. }  

 

  4 line : 토양수분을 측정하기 위해 전원을 공급하기 위한 PIN
  5 line : 워터펌프 전원을 제어하기 위한 PIN
7~9 line : 각자의 환경에 맞는 공유기 SSID/Password와 각자 프로젝트별 Blynk Auth Key
17~32 line : 센서값들을 읽고그 값을 Blynk에 전달하기 위한 함수
19~20 line : 펌프가동 시간을 계산하여  Blynk V2 pin 에 전달 
21~25 line : 토양수분센서에 전원을 공급하고 값을 계산하여 Blynk V2 pin 에 전달
27~31 line : 펌프가동시간이 20초를 초과하면 자동으로 종료하기
34~47 line :  Blynk Virtual PIN V1 에 대한 기능을 구현하는 함수 
   36  line: 스마트폰 Blynk APP에서 V1 상태 값을 Interger로 전달 받기
37-41 line: 스마트폰 Blynk APP에서 V1 상태. 즉, 버튼이 눌러져 있는지 여부에 따라 워터펌프 전원공급제어핀 활성화

 55  line: Blynk  Auth Token, 공유기SSID, 공유기암호를 주어 Blynk 시작 

+ Recent posts