반응형

안녕하세요. 
라즈이노 ioT입니다.

이번 시간에는 Blynk2.0 업그레이드 강의 네 번째 시간으로 저렴하고 강력한 ESP32 보드를 이용하여 LED와 LED 전등 & 콘센트 제어를 통한 가전기기들을 제어해 보도록 하겠습니다. 

보드의 입출력 포트에 연결된 LED제어는 물론이고, 릴레이를 사용하면, 220V 전기를 사용하는 LED 전등 제어도 가능합니다. 뿐만 아니라, 릴레이 모듈을 Outlet 콘센트에 직접 연결해 놓으면 220V 전기를 사용하는 대부분의 가전제품을 On/Off 제어할 수 있습니다. 

Blynk 서비스가 2.0으로 업그레이드 됨에 따라, 스마트폰뿐 아니라 웹(Web) 페이지에서도 제어가 가능하게 되어 더욱 활용성이 커졌습니다. 앱과 서로 실시간 연동은 당연히 되는데요, 이번 영상을 통해 자신만의 멋진 IoT 시스템을 만들어 보세요~

참고로, 이번 실습을 위해서는 Blynk 서비스 가입 및 기본 사용법 영상을 함께 참고하시면 좋습니다. 

 

그럼 먼저, ESP32에 대해 간략히 알아볼게요

ESP32 칩은 Espressif Systems사에서 개발한 마이크로 프로세서인데요, ESP32 칩을 활용할 수 있도록 플래시 메모리 등의 부품을 넣어 만든 칩셋을 사용하게 됩니다.
이런 칩셋의 종류는 몇 가지 있지만 보편적으로 많이 활용 되는 칩셋이 ESP-WROOM-32입니다.


(아래) 또한 이런 칩셋을 이용해서 제품개발에 활용하기 좋도록 다양한 형태의 마이컴 보드들이 출시되었습니다.

그중에서 가장 기본 모델인 Do it DevKiT V1 보드를 가지고 실습을 진행합니다.

(아래) ESP32 보드의 가장 큰 특징은 블루투스와 WiFi를 이용해서 각종 기기들과 통신이 가능합니다.
이를 이용하여 저렴한 소형 ioT 기기 및 무선 제어 시스템을 구축할 수 있는 큰 장점이 있습니다.


(아래) 그럼, 일반적인 ESP32 보드의 스펙을 다른 보드와 함께 살펴보겠습니다.

보이는 것처럼 ESP32는 다른 보드들에 비해 뛰어난 기능을 제공하고 있습니다. 
Dual Core 이면서, 블루투스 기본 4.2 버전에 저전력 기능인 BLE까지 지원하고 있고, 
많은 수의 GPIO(입출력) 핀과 기능 핀을 제공하고 있고 홀센서도 내장되어 있습니다. 가격 또한 저렴하여, ESP32 칩셋을 이용한 다양한 ioT 관련 장비들이 만들어지고 있습니다. 또한, 기존 아두이노 IDE 플랫폼을 사용하여 동일하게 개발할 수 있기 때문에 쉽게 사용 가능합니다.


(아래)

【 실습을 위한 사전 학습 자료 】


① 【 Blynk 2.0 #1 】Nano33 ioT & Blynk2.0으로 LED On/Off  WiFi 제어하기!
    - 유튜브 자료 : https://youtu.be/4GZox37rXwg
    - 블로그 자료 : https://rasino.tistory.com/351
② 【Blynk2.0 #2】Nano33ioT DHT11 온도/습도값 웹과 앱 출력하기!
    -  유튜브 자료 : https://youtu.be/gxclf4fxvyc
    - 블로그 자료 : https://rasino.tistory.com/353  
③ 【Blynk2.0 #3】220V 가전기기 제어하기 (Nano + ESP01 + Relay)  
   -  유튜브 자료 : https://youtu.be/GL2vqtW6ql8
   - 블로그 자료 : https://rasino.tistory.com/354

★☆★ ④ 【 IoT 실습을 위한 Lamp & 콘센트 만들기 】 ★☆★
   - 유튜브 자료 : https://youtu.be/5QBnhgkfkhE

 

【 이번 영상에서의 주요 목차 】

 ①  이 번 실습의 결과물
 ②  실습의 준비
 ③  회로 실습을 위한 연결 도면
 ④  실습을 위한 아두이노 IDE 필수 라이브러리 설치
 ⑤  실습 예제 파일로 테스트
 ⑥  Blynk 2.0  웹 대시보드 만들기 (DataStream & Web Dashboard)
 ⑦  아두이노 코드 토큰(Auth Token) 값 수정 후 업로드 하기
 ⑧  WiFi 핫스팟 연결하여 동작시키기
 ⑨  APP(앱) 제어 화면 만들기 & 동작
 ⑩  IoT Outlet 콘센트로 가전기기(선풍기 예시)를 웹과 앱에서 제어해 보기
 ⑪  문제해결

실습의 큰 흐름(목차)

 

【 ①  이 번 실습의 결과물 】

 

【  ②~③ 실습 준비와 회로 실습용 연결 도면 】

실습에 사용될 부품에 대한 자세한 내용은 아래 링크를 참고해 주세요
아래는 실습을 위한 연결 도면입니다. 
회로는 크게 LED와 같은 부품을 GPIO포트로 직접 제어하는 기본 실습 부분과, 릴레이 모듈을 통해 220V로 동작되는 가전기기를 제어하는 응용 부분으로 되어있습니다.


[도면 1]  LED Lamp 직접 연결한 도면,

지금처럼 전등 연결선을 작업하여 제어할 수도 있으나, 이는 가전기기마다 케이블 작업을 해야 하는 불편함이 있기 때문에 아래 '도면 2'처럼 콘센트(Outlet)를 개조하여 연결하게 되면, 가전기기마다 별도의 케이블 작업 없이 콘센트에 전자제품을 꽂는 것만으로 쉽게 제어할 수 있게 됩니다. 연결도에 보이는 재료를 준비하여 브레드보드에 연결해 주세요. 
(주의) ESP32 보드 중 DEVKIT V1이 아닌 경우, 핀 수 및 핀 배열이 다르므로 연결 시 확인이 필요합니다.

[도면 2]  콘센트(Power Outlet)에 릴레이(Relay)를 연결한 도면

LED와 같은 부품은 GPIO 출력 포트로 단순히 High, Low와 같은 신호로 제어가 가능합니다. 
하지만, 220V 레벨의 큰 전기는 릴레이라는 부품(모듈)을 사용해야 제어할 수 있습니다. 도면의 릴레이는 LOW 신호에 동작하는 릴레이인데요(LOW level trigger),   동작을 위한 릴레이의 완전한 LOW 레벨 처리를 위해 트랜지스터(TR)를 사용하였습니다(FET 대체가능). 
 D14로 신호가 출력되면 TR의 스위칭 작용으로 GND가(LOW) 릴레이의 IN으로 연결되는 구조입니다. 
그럼, 실습에 사용될 LED 램프 소켓과 릴레이가 결합된 제어용 콘센트 제작 방법은  아래 링크를 통해 확인해 주세요. 
★☆★ ④ 【 IoT 실습을 위한 Lamp & 콘센트 만들기 】 ★☆★
   - 유튜브 자료 : https://youtu.be/5QBnhgkfkhE

 

 

【 ④  실습을 위한 아두이노 IDE 필수 라이브러리 설치 (환경설정) 】

이번 챕터에서는 ESP32 보드 사용을 위한 전반적인 환경설정에 대해 다루고 있습니다.
이것이 ESP32 보드입니다. (DEVKIT V1 버전).  

ESP32 DEVKIT V1 Doit 보드

다른 버전의 esp32 보드와 기능과 성능은 거의 유사하지만, 핀 수나 조합이 조금씩 다릅니다.  다르게 말해서 esp32 보드는 여러 버전이 존재하지만, 사용법은 거의 유사합니다. 
DEVKIT V1 보드는 PC와의 통신을 위해 Silicon Labs사의 CP2102 통신칩을 사용하고 있습니다.(아래)

따라서, PC에 CP2102 통신칩 인식을 위한 드라이버를 먼저 설치해 주어야 보드를 인식할 수 있습니다. 
제어판 혹은 '윈도 + X' 키를 눌러 '장치관리자'를 열어 보세요.
CP2102 칩 드라이버가 문제없이 설치된 PC에는 이렇게 아래와 같이 COM 포트가 할 당 되는 것을 볼 수 있습니다.

1. 드라이버 설치를 하기 위해서는 영상에서와 같이 Silicon Labs를 검색하고, 실리콘 랩(Silicon Labs)의 CP2102 최신 드라이버를 다운로드하여 먼저 설치 후 esp32 보드를 연결해 보세요.
CP2102 드라이버 링크 : https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
각자의 PC운영체제 환경에 맞는 드라이버를 받으세요. 

2. 아두이노 IDE에서 ESP32 보드를 사용하기 위해서는 ESP32보드를 인식할 수 있도록 환경설정 메뉴에서 esp32 보드 정보가 있는 링크를 추가해 주어야 합니다. 

환경설정 탭에서 추가적인 보드 매니저 URLs 부분에 아래 링크(경로)를 복사 붙여 넣기 하세요. (링크 2가지 중 하나만 링크하면 됩니다)  

링크 1 :  https://dl.espressif.com/dl/package_esp32_index.json

링크 2: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

 

 만약 기존에 다른 보드에 대한 URL이 이미 존재한다면, 우측에 있는 윈도창 모양의 아이콘을 누르면, 팝업창이 하나 더 뜨는데요, 거기 기존 링크 아래에 추가로 붙여 넣기 하면 됩니다.

 

① 이제 Blynk 서비스를 이용하기 위해서는 ,
 아두이노 IDE의 "라이브러리 매니저"창에서 아래와 같이 'blynk'로 검색하여 라이브러리를 설치해 주세요. (이미 설치되어 있다면, 생략하면 됩니다)

 

②  툴 》 보드 》 보드매니저에서 "esp32"를 검색하여 패키지를 설치해 주세요 

그럼 이렇게, ESP32 관련 보드 목록을 볼 수 있습니다. (아래)

목록에서, DOIT ESP32 DEVKIT V1을 선택해 주세요. 또한, 보드가 연결된 통신포트를 선택하세요.

 

【 ⑤  실습 예제 파일로 테스트하기 

[ 기본 실습 ]

▶ 파일 > 예제 > 01.Basics > Blink 예제를 선택하여 보드에 있는 LED를 깜빡여 볼게요.

보드 설정과 포트 설정을 한 번 더 확인하고 우선 업로드(&컴파일) 해 볼게요.
(※ 주의!) esp32 보드에 코드를 업로드할 때는 보드에 있는 Boot 버튼을 몇 초간 눌렀다 떼어야 업로드가 시작됩니다.

[기본 실습 예제 파일 다운로드 ]
1. Blink (빌트인 LED 기본 깜빡이기)

Blink.zip
0.00MB

2.  GPIO23(D23) 포트에 직접 LED를 연결하고 깜빡이도록 하기

LED를 연결하고, 코드내용을 아래처럼 23으로 바꾸어서 실행해 보세요.

ESP32 보드도 기본적인 사용법은 아두이노와 동일하기 때문에 아두이노를 사용해 보았다면 쉽게 다룰 수 있습니다. 

 

▶ WiFi 스캐닝 실습

그럼, ESP32의 핵심 기능인 WiFi를 사용해 볼 텐데요. 
우선, WiFi 스캐너 예제를 통해서 WiFi 기능을 테스트해 볼게요.

아두이노 IDE 메뉴에서  예제 》 WiFi  WiFiScan 예제 파일을 불러옵니다.
이 예제 파일은 보드 주변에서 잡히는 WiFi신호를 스캐닝하여 보여주는 예제 파일입니다.

 그다음, esp32 보드에 네트워크(WiFi)를 연결해 줄텐데요, 가장 편한 방법으로 폰의 핫스팟을 켜서 연결할 수 있습니다.
그럼 코드를 업로드하고 업로드 완료 되면, 시리얼 모니터를 열어서 확인해 봅니다.
( 마찬가지로,  코드 업로드 시에는 보드에 있는 Boot 버튼을 몇 초 길게 눌러주고, 코드 업로드 완료 후에는 재시작할 수 있도록  EN (enable) 버튼을 한 번 가볍게 눌렀다 떼주면 됩니다.)

[ WiFi Scan 코드 다운로드 ]

WiFiScan.zip
0.00MB

esp32의 WiFi 기능 테스트를 통해 주변 WiFi 신호를 스캐닝해 본 결과입니다. (아래)

 

⑥  Blynk 2.0  웹 대시보드 만들기 (DataStream & Web Dashboard)

[ 응용 실습 ]

그럼, 본격적으로 esp32 보드에 회로를 구성하고 Lamp와 콘센트를 제어하는 실습을 진행해 볼게요.

준비 사항으로 Blynk.io 사이트에 회원가입 후,  Cloud 제어화면(blynk.cloud)으로 접속을 해주세요. 
https://blynk.io      &  https://blynk.cloud

아래 연결도를 참고하여 연결해 주세요.

릴레이의 전원은 Vin핀을 통해 전원을 공급받을 수 있는데, 평소에는 Vin 핀은 보드를 동작시킬 수 있는 외부 전원공급 단자로 사용되기도 하지만,  esp32 보드의 마이크로5핀 단자로 전원을 공급받게 되면, Vin단자로 5V(약 4.5v)의 출력이 나오게 되어 전원 Output 단자로 사용할 수 있게 됩니다. 

회로 연결에 사용되는 브레드보드는 어떤 크기든 상관없고, 사이즈가 작다면 이렇게 두 개를 이어 붙여 사용할 수 있습니다.  다만 esp32보드의 폭이 다소 넓기 때문에, 브레드보드 하나를 사용하는 것보다 두 개 이상 붙여 사용하는 것이 작업상 편할 수 있습니다.

 

납땜을 제외하고 브레드보드에서 회로를 연결하는 방법에는 대략 아래 3가지 정도의 방법이 있습니다. 

1. 점퍼케이블을 이용한 회로 연결
2. 브레드보드 전용 점퍼케이블
3. Hook-UP Wire 를 이용한 연결

이 중에서 개인적으로 원하는 길이로 정확하게 잘라 쓸 수 있는 후크업(Hook-Up Wire) 와이어를 이용한 연결을 추천합니다.  이것은 회로를 더욱 간결하게 만들어 복잡한 회로도 파악하기 쉽도록 만들어 주며, 만들어진 결과물도 비록 납땜을 하지 않았지만, 단단히 잘 고정되어 있어 장기간 작품형태로 활용할 수 있어 좋습니다.  이때 이 세 가지의 선의 형태는 여러 가닥으로 뭉쳐진 연선이 아니라 하나의 단단한 단선이라는 것을 주의해 주세요.  일반적으로 브레드보드에 사용되는 단선의 내심 굵기는 22 AWG ~ 24 AWG 정도면 무난하게 사용할 수 있으며, 가급적 좀 더 굵은 22 AWG를 추천합니다. (AWG는 숫자가 작을수록 굵음)

아래는 회로 연결이 완성된 모습입니다. 

콘센트(Outlet)의 전원을 연결하게 되면, 릴레이의 COM / NO 단자 쪽에 220V의 전기가 흐르기 때문에 손으로 직접 터치되지 않도록 감전에 주의해 주세요. 

▶ 웹 대시보드 만들기 (WebDashboard)

웹 대시보드를 만들기 위해, https://Blynk.cloud 로 접속한 다음, 로그인해주세요.   

다음, 아래와 같이 Search 탭에서 + New Template를 클릭하세요. 

 

새 템플릿을 만들기 위한 기본 정보를 입력 및 선택해 주세요. 
HARDWARE에는 'ESP32'   /  CONNECTION TYPE에는 WiFi를 선택해 주세요

 

여기에서는 'Data Stream'  부분과 /  Web Dashboard 부분만 설정해 주면 완성됩니다.

먼저, 아래는 Data Stream 부분을 설정해 주는 모습입니다. 

 

아래처럼 LED1, LED2, Realy 이렇게 3개의 Data Stream을 만들어 주세요.   마지막에 Save 버튼을 눌러 마무리하면 됩니다. 

'Data Stream'은 Blynk 웹(앱)의 버튼으로 제어하기 위한 입출력 핀의 설정을 해주는 것이며,
'web Dashboard'는  Blynk 웹을 통해 제어할 수 있는 버튼들을 디자인하는 메뉴입니다.
그럼, 이제, Web Dashboard로 가서 제어를 위한 버튼 설정을 해볼게요.

먼저 LED에 대한 버튼 설정입니다.  위 이미지처럼 LED 위젯을 적당한 크기로 배치해 주세요.

Data Stream 메뉴에서 설정해 놓은 항목이 자동으로 뜨기 때문에, 선택만 정확히 해주면 쉽게 설정 가능합니다.

 

Data Stream 메뉴에서 설정해 놓은 항목이 자동으로 뜨기 때문에, 선택만 정확히 해주면 쉽게 설정 가능합니다.

지금 설정하는 LED 위젯은 On/Off를 위한 확인기능이기 때문에, 이제 LED를 실제 켜고 끄기 위한 스위치를 설정해 볼게요. 

그리고, LED 위젯과 마찬가지로 스위치(버튼) 위젯을 직접 끌어다 놓을 수도 있고, 어느 정도 설정된 위젯을 복제하여 좀 더 편하게 설정할 수도 있습니다. (아래)

아래와 같이 LED1 & Switch1  ,  LED2 & Switch2 위젯을 각각 배치해 주면 됩니다.

 

그럼 이제 릴레이(Relay)에 대한 위젯을 만들어 볼게요.
릴레이까지 다 동일한 방법으로 설정하게 되면 아래처럼 완성이 됩니다.   

모든 위젯을 설정한 후에는 화면 우측 상단에 있는 Save 버튼을 반드시 눌러 주세요. 

만약 다시 수정해야 한다면 이 버튼이 Edit 버튼으로 바뀌어 있을 것이고 따라서 Edit 버튼을 눌러 수정 후 다시 Save 하면 됩니다. 

 

이렇게만 하면 템플릿은 완성이 됩니다. 

Blynk를 활용하면 이렇게 복잡하지도 않고, 아주 쉽고 빠르게 웹 컨트롤 화면을 만들 수 있습니다. 

 

 ⑦  아두이노 코드, 토큰(Auth Token) 값 수정 후 업로드 하기

그럼, 아두이노 IDE로 가서 핵심 응용회로를 위한 Blynk 파일을 열어 볼 텐데요,  Blynk라이브러리를 설치하면, 함께 들어오게 되는 Blynk 예제 파일을 기본으로 조금만 수정해 주면, 제어용 코드가 쉽게 완성이 됩니다. 

예제 》 Blynk Boards_WiFi ESP32WiFi  예제를 클릭하여 여세요.

예제 파일을 열면 아래처럼 나타나는데요,  분홍 화살표 부분을 그 아래 이미지처럼 적절한 내용으로 바꾸어 주면 됩니다. 

 

Blynk Cloud 사이트에서 아래 분홍색 부분에 해당하는 TEMPLATE_ID,  DEVICE_NAME, AUTH_TOKEN 등을 복붙하면 됩니다. 

아두이노 코드 다운로드

ESP32_WiFi_APP_LED_LAMP.zip
0.00MB

주변 WiFi 또는 스마트폰의 핫스팟을 관련 ID와 패스워드를 입력해 주세요.  그런다음, 통신포트와 보드 선택이 제대로 된 것인지 확인 후 코드를 esp32 보드에 업로드해 주세요. 
코드 업로드 시,  Connecting... 표시가 뜨면 esp32에 있는 'Boot'스위치를 눌러 주세요. 

 

  ⑧  WiFi 핫스팟 연결하여 동작시키기

업로드 완료 후에는, 아두이노 IDE의 시리얼모니터 창을 열고서,  esp32보드에 있는  'Reset'스위치를 눌러 esp32 보드를 재시작시켜줍니다. 
그럼, 아래처럼, 스마트폰의 핫스팟으로 접속한 경우,  접속된 상황을 파악할 수 있습니다. 

 

  ⑧  WiFi 핫스팟 연결하여 동작시키기 

그럼, Blynk.cloud의 Search 탭으로 돌아가서 제어해 볼 텐데요. 
아래 부분이 Online으로 되어 있어야 연결이 제대로 된 것입니다. 
문제없이 Online이 되어 있다면,   LED 스위치들을 On/Off 시켜보세요. 

그럼, 이제 릴레이가 연결된 콘센트에 전원을 연결하고,  LED전등을 연결하거나 테스트할 가전기기를 연결하여 On/Off가 잘 되는지? 테스트해보세요. 

아래 모습은 USB선풍기이지만, 220V 어댑터를 사용하기 때문에 대부분의 가전제품은 동작시킬 수 있다고 보면 됩니다. 
이번엔, LED전등과 선풍기를 모드 콘센트에 연결하여 한 번에 작동시켜 보세요.

네, 아주 잘 작동됩니다.

한 번에 작동시킬 수 있는 용량은 릴레이가 견딜 수 있는 용량(스펙)에 따라 결정되어집니다.  여기서는 250 VAC , 10A 짜리를 사용했습니다. 

 

  ⑨  APP(앱) 제어 화면 만들기 & 동작 


그럼 이번엔 Blynk App을 이용해서 스마트폰에서 제어해 볼게요. 

스마트폰에서 Blynk iot 앱을 검색 후 설치하고 로그인해 주세요. 
Blynk 앱 메뉴 중에서 설정 메뉴를 터치하고 'Developer Mode'를 선택하세요. 

여러 가지 위젯 중에서 'LED'를 선택하고, 2-3초간 눌러 적절한 위치에 끌어다 놓으세요. 

그리고 위젯을 터치하면 세부 설정을 할 수 있습니다.

Blynk Cloud에서 설정해 놓은 DataStrem이 자동으로 뜨는 것을 볼 수 있는데요, 나머지도 똑같은 방법으로 LED와 스위치를 영상을 따라 설정해 주세요. 

나머지도 똑같은 방법으로 LED와 스위치를 영상을 따라 설정해 주세요.

옵션 중에, 스위치 옵션에서 'Push'는 누르고 있는 동안만 On이 되는 방식이고,  'Switch'는 누를 때마다 On/Off가 토글 되는 방식입니다.  (여기서는 터치할 때마다 On/Off가 교대로 되는 Switch 방식으로 선택했습니다.)

(아래) 마지막으로 뒤로 가기(←)와 'X'표시를 눌러 설정 메뉴를 빠져나오면 이제 실행할 수 있는 모드가 됩니다.  

참고로, 스마트폰의 App과 웹에서는 동시에 연동이 됩니다.   

  ⑩  IoT Outlet 콘센트로 가전기기를 웹과 앱에서 제어해 보기

아래는 동작을 실행한 모습인데요, App과 웹에서 서로 연동되며 잘 작동합니다.

 

   ⑪  문제해결 

본 실습을 진행하면서, 동작이 안 되는 놓치기 쉬운 몇 가지 부분에 대해 짚어드리고자 합니다.  
가장 먼저, Blynk웹에서 esp32가 연동이 안 되는 Offline 상태가 되는 문제가 있습니다.

문제&해결법 1.  여러분의 esp32가 접속된 WiFi가 방화벽등 연결이 제한된 경우가 아닌지 확인해 보세요 (만약, 외부에서 집안에 있는(사설 IP) esp32 기기 제어는 WiFi 라우터의 포트-포워딩 또는 DMZ 설정을 해야 함)

문제&해결법 2.  점선 박스에 있는 TEMPLATE_ID 등의 내용이 코드와 일치하는지 확인해야 합니다. 

이 부분이 일치하지 않으면, 서로 연결이 되지 않습니다.   
또한, TEMPLATE_ID는 코드에서 제일 상단에 위치해 있어야 Blynk2.0 서비스로 제대로 인식하게 됩니다. 

해결법 3.  Templates 편집 메뉴가 아니라, Search 탭에 있는 Dashboard에서 실행하는 것입니다.

Templates 탭의 Web Dashboard는 편집 메뉴의 미리 보기 같은 것이기 때문에 실행하는 메뉴가 아닙니다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

이렇게 해서 esp32 모듈에 릴레이를 이용한 콘센트와 Blynk 서비스를 이용하여 멋진 IoT 작품을 만들어 보았습니다. 

WiFi에 접속만 가능하다면 실생활에 바로 응용할 수 있어 활용도가 높기 때문에 꼭 한 번 만들어 보세요.

감사합니다.

아래 링크는 유튜브 영상으로 쉽게 따라 할 수 있도록 하였으니 참고하세요~  (링크 준비 중)

 

 

 

 

 

 

 

반응형
반응형

『 매번 물주기 귀찮은 화분!  말라죽는 우리집 화분을 구해주세요!   
아두이노 활용 프로젝트 콘텐츠 소개! 』

 

《 기존 프로젝트 '아두이노 Uno에 LCD와 FND를 붙여 제작한 기본 버전 :  rasino.tistory.com/217 》 참고

 

IoT를 접목하여 더욱 작고 스마트하게 업그레이드 된 스마트 화분 』을 만들어 보세요~!
수분 공급을 자동으로 해주고 ThingSpeak 앱과 웹에서 접속하여 화분의 상태를 확인하고 데이터를 엑셀 등의 파일로 관리할 수 있는 IoT 스마트 화분입니다!

 

1. 학습 영상에서 다루는 내용 :

2. 영상에 사용되는 D1 mini 의  제원 소개 :

 

3.  수분 자동 공급 IoT 스마트 구성 개념도 (상세한 연결 도면은 영상을 통해 다운받으실 수 있습니다.)

 

4. ThingSpeak 클라우드 서버 활용 모습:

 


5. 영상 마지막에 기본 모듈의 단점을 보완한 업그레이드 버전까지 포함되어 있습니다.

단점을 보완한 업그레이드 버전 제공!

 

 

6. 콘텐츠 영상 보는 방법 :

매번 말라죽는 화분이 나오는 우리 집! 이제 화분 관리로부터 해방시켜 주세요~!

아두이노 프로젝트 : ESP8266칩셋의 D1 mini 를 활용하여 물을 자동으로 공급할 수 있는 스마트 화분입니다.

프로젝트 수준 : 아두이노 기초를 조금이라도 해보신 분 또는 간단한 아두이노 프로젝트를 해보신 분은 영상을 따라 충분히 하실 수 있습니다.

콘텐츠 영상 보기 : https://www.udemy.com/courses/search/?src=ukw&q=%EC%8A%A4%EB%A7%88%ED%8A%B8+%ED%99%94%EB%B6%84

 

온라인 강좌 - 자신의 일정에 맞춰 뭐든지 배워 보세요 | Udemy

Udemy는 130,000개 이상의 강좌와 35백만 명 이상의 수강생이 있는 온라인 학습 및 교수 마켓플레이스입니다. 프로그래밍, 마케팅, 데이터 과학 및 그 밖의 분야에 대해 배워 보세요.

www.udemy.com

시청 방법 : 위 링크를 따라 Udemy.com 에 접속하여 회원가입 하고, 검색창에 "스마트 화분" 검색 후 위 영상을 구매 후 이용하시면 됩니다.

(구입 특징 : 영상의 유통기한 없이 계속 시청가능하며, PC뿐 아니라 스마트폰으로도 학습이 가능합니다. 현재, 할인 행사 중에 있으며, 만약 할인 행사가 종료 되었을 경우 댓글로 남겨주시면 본 영상의 할인 쿠폰을 발행해 드립니다 )

책 한권 사셨다 생각하시고 활용하기 좋은 교육 콘텐츠 구매해서 멋진 프로젝트에 도전해 보세요~ ^^

 

 

반응형
반응형

【 아두이노Proj#4 아두이노 스마트 화분 만들기 Ver2 with FND

 

 지난시간 아두이노를 이용해 기본적인 스마트 화분을 만들어 보았다. 

이제 여기에 화분의 수분 상태를 한 눈에 알아 볼 수 있도록 디스플레이 장치를 하나 추가하려고 한다.

다만 저전력으로 돌아가도록 하기 위해 FND를 사용하여 심플하게 표시해보려고 한다.
토양습도센서 모듈에서 나오는 아날로그 출력 단자(AO) 값(0V~5V)을 아두이노의 아날로그 입력(A0~A6)단자 중 하나로 받게 되면 0~1023 사이값으로 입력 받게 될 것이다. (보드에서 10bit A/D변환 처리) 

 그럼 이 값을 FND로 표현하고자 하는데, 0~9 사이의 숫자 값으로 맵핑 시켜서 나타내면 될 것이다. 

그리고 통상적으로 숫자 0을 매우 건조,  9를 매우 습함으로 생각하고 맵핑 시키면 될 것이다.

  ex)  map(sensorVal, 0, 1023, 9, 0); 

 

그럼 지난 시간에 배운 스마트 화분 1편을 참고하여 아래 내용을 본다면 어렵지 않게 완성시켜 볼 수 있을 것이다.

 

▶ 선수 학습 :

   1. [아두이노 센서#34]  토양 센서( YL-38) Sensor 다루기  ☜ (클릭)

   2. [아두이노 기초#11] FND 구동실습 II (숫자 카운트하기)  ☜ (클릭) 

   2. [아두이노 프로젝트#1] 아두이노 스마트화분 만들기Ver1 ☜ (클릭) 

 

 토양습도센서 (YL-38 , YL-69) 세부 스팩

< 센서모듈과 수분탐침을 연결한 모습 >

 

 

 

 

 

 시중에 YL-38, YL-69 두 종류가 있다, 기능상의 차이는 없으며 핀배열이 조금 상이할 뿐이다. 여기서는 YL-38을 가지고 제작 하려고 한다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 워터 펌프 스팩

 

 

 

 

 

 

 

 

 

 

 

 

< 워터펌프용 튜브 : 지름 6mm, (외경6mm, 내경4mm) >

※ 위에 사용된 호수는 외경이 6 mm 이고 내경이 4mm 입니다. 그리고 펌프 출수구에 호수를 끼울때 호수를 출수구 바같으로 감싸듯 끼우게 되는데요, 펌프출수구의 외경이 7.4mm 됩니다. 이렇게 어느정도 역으로 크기 차이가 나야 호수가 수압에 의해 쉽게 빠지지 않습니다. 다만, 지금 정도의 차이에서, 끼워보니 상당히 빡빡했어요. 이럴때는 호수 내부에 물기를 살짝 묻혀서 끼워보면 조금 쉽게 끼워집니다.  ^^

 

▶ 실습 목표 :  

  1. [ 토양습도 센서에 대해 이해 할 수 있다. 

 2. [ 워터펌프에 대해 이해 할 수 있다. ]

 3. [ 토양 센서 값에 따라 펌프를 작동시켜 물공급 조절을 할 수 있다.]

 4. [ FND에 숫자를 표현 할 수 있다 ]

 5. [ FND에 습도 data를 숫자 0~9 값으로 맵핑해 출력 할 수 있다 ]

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

 

 

※ 위 회로에 대해 모터 작동이 원활 하지 않을 수 있고, 장시간 사용시 아두이노 보드에 무리가 갈 수 있어 아래 처럼 NPN타입의 TR과 저항을 추가하여 보강하였다.  가급적이면 아래 회로를 참조하여 구성해주면 좋을 것이다.

(TR은 NPN 타입의 ' 2SC 9013 '을 사용하였으나,   TR 타입이 NPN타입 이면 어떤 것이든 동일하게 사용 가능하다. ) 

[ 위 회로에서 주의 하셔야 할 것은  아두이노 회로에서 주로 사용되는 TR의 경우(2SA, 2SC타입)  NPN형 타입은 PNP형 타입과 마찬가지로 핀의 순서가 있으니 주의 하셔야 합니다. 

우선, 도면에 사용된 NPN형 TR은 2SC9011 이며, 라벨이 적인 면의 왼쪽을 기준으로 핀 이름이 
1.   2SC9011 :  - E B C -  순서로 되어 있고, 

2.   2SC1815 :  - E C B - 순서로 되어 있으니 반드시 확인 후 연결하세요. 

또한, 이외의 TR을 사용할 경우 미니 테스터기 혹은 인터넷 검색으로 핀 순서를 확인하여 도면대로 연결하시면 문제 없이 동작 할 거예요. ]

 

[ 추가로 위 회로의 모터 연결 방식은 장시간 사용하기에는 좀 무리가 따르며, 전원을 별도로 넣어 줄 수 있는 릴레이 모듈이나, L298 모터 드라이버 모듈을 연결해서 사용하시는 걸 권장합니다. 조만간 보강된 회로의 업로드 버전도 올려 볼게요. ^^; ]   

 

 

▶ 실습 절차  : 

1.   부품을 준비하여 위와 같은 회로를 구성한다. 

2.   물펌프는 물통 속에 담겨진다. 따라서 물펌프의 전선이 빠져나오는 부분은 필요한 경우 글루건 등으로 보강처리 할 필요가 있다. 

3.  우선 본 실험처럼 작은 물통을 준비하고, 간이 화분을 준비해서 실험을 해 본 후 실제 화분에 설치해보면 좋을 것이다. 또한 필요한 경우 센서를 두 개 이상 설치할 수도 있고, 두개의 화분을 하나의 보드로 연결하여 관리 해 볼 수 있을 것이다.

4.  선수학습을 참고하여 FND를 다루는 법을 먼저 익혀보고, 아래 코드에서 처럼, 배열과 for 구문을 이용하여 FND를 좀더 세련되게 코딩하는 법에 대해 숙지 하면 좋다. 

5. 건조,습함의 정도를 FND로 0~9 사이 10단계 값으로 나타 내었으나, 좀더 정밀하게 0~F 사이값인 16단계로 표시해 볼 수 있다. 이를 개인연습 차원에서 해본다면 코딩능력 향상에 많이 도움이 될 것이다.

 

▶ 프로그램 코드 및 설명 : 

/* Auto Water Pot - 자동 물공급 화분 with FND */

#define A0Pin 0

int sensorVal = 0;

int pump = 13;

byte digits[10][7] = {

//  {a,b,c,d,e,f,g}   FND 핀 배열

    {1,1,1,1,1,1,0},      // 0을 출력

    {0,1,1,0,0,0,0},      // 1을 출력

    {1,1,0,1,1,0,1},      // 2를 출력

    {1,1,1,1,0,0,1},      // 3을 출력

    {0,1,1,0,0,1,1},      // 4를 출력

    {1,0,1,1,0,1,1},      // 5를 출력

    {0,0,1,1,1,1,1},      // 6을 출력

    {1,1,1,0,0,1,0},      // 7을 출력

    {1,1,1,1,1,1,1},      // 8을 출력

    {1,1,1,1,0,1,1},      // 9를 출력

};
void setup ( ) {
 Serial.begin(9600);
 
pinMode(pump, OUTPUT); 

 for (int i=2; i<9; i++) {

      pinMode(i,OUTPUT);    // 2~8번 포트 모두 출력 설정 

  }
}

 

void displayDigit(int num)   {    // FND 숫자표시 함수

  int pin = 2;
 
for (int i=0; i<7; i++)     {      
   
digitalWrite(pin+i, digits[num][i]);   

  }
}
void loop ( ) { 
 
int FNDVal=0;
 
sensorVal = analogRead(A0Pin);        // 토양센서값 읽어 저장

  Serial.print("Asensor = ");
 
Serial.println(sensorVal);                  // 0(습함) ~ 1023(건조)값 출력

  FNDVal = map(sensorVal,0,1023,9,0); // 습도값을 FND 출력값으로 맵핑
  // 매우습함 : 9,  매우건조 : 0

  displayDigit(FNDVal);                       // FND에 숫자를 표시한다.
 
// 습도 값에 따라 출력 처리 다르게 해줌

  Serial.print("FND Val =");

  Serial.println(FNDVal);

  if ( FNDVal >= 3) {   

    Serial.println(" Very Wet ! ");       

    digitalWrite(pump, LOW);      }

  //만약 건조하면 1초동안 펌프작동
  else if ( FNDVal < 3)  {

    Serial.println(" Very Dry ! ");   

    Serial.println("Pumping for 1 Second!");   

    digitalWrite(pump, HIGH);

    delay(1000);
 
}   
 
delay(3000);      //정보수집 시간(간격) 설정

}                             

 

▶ 실행 모니터링 영상 :  (시리얼 모니터)

(전체화면 보기로 보세요)

 

▶ 실행영상 :  

(전체화면 보기로 보세요)

아두이노로 스마트화분 만들기 with FND 디스플레이

(아래는 유튜브로 시청하기)

https://youtu.be/-kT_9XRJnxw

▶ 아두이노 파일다운 :

(다운받아서 압축을 풀어 사용하세요)

RasINO_AutoPotFND.zip
0.00MB

반응형
반응형

【 아두이노Proj#3아두이노 스마트 화분 만들기 Ver1

 

 아두이노를 이용해 스마트 화분을 만들어 보자~!

우선 핵심기능으로 토양습도센서로 흙의 습도 값을 측정하여 일정 수치이하로 떨어지면(수분이 마르면) 워터펌프를 작동하여 물을 공급해주는 기능을 구현해 보려 한다. 

 아울러 !

 [ FND를 부착하여 수분정도를 알려주는 스마트화분 버전(Ver. 2)여기를 참고  ]

 [ FND와 LCD를 함께 부착하여 수분정도를 알려주는 스마트화분 버전(Ver. 3)여기를 참고  ]

 

▶ 선수 학습 :

   1. [아두이노 센서#34]  토양 센서( YL-38) Sensor 다루기  ☜ (클릭)

 

토양습도센서 (YL-38 , YL-69) 세부 스팩

< 센서모듈과 수분탐침을 연결한 모습 >

 

 

 

 

 

 시중에 YL-38, YL-69 두 종류가 있다, 기능상의 차이는 없으며 핀배열이 조금 상이할 뿐이다. 여기서는 YL-38을 가지고 제작 하려고 한다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 워터 펌프 스팩

 

 

 

 

 

 

 

 

 

 

 

 

< 워터펌프용 튜브 : 지름 6mm (외경:6mm, 내경:4mm) >

※ 위에 사용된 호수는 외경이 6 mm 이고 내경이 4mm 입니다. 그리고 펌프 출수구에 호수를 끼울때 호수를 출수구 바같으로 감싸듯 끼우게 되는데요, 펌프출수구의 외경이 7.4mm 됩니다. 이렇게 어느정도 역으로 크기 차이가 나야 호수가 수압에 의해 쉽게 빠지지 않습니다. 다만, 지금 정도의 차이에서, 끼워보니 상당히 빡빡했어요. 이럴때는 호수 내부에 물기를 살짝 묻혀서 끼워보면 조금 쉽게 끼워집니다.  ^^

 

▶ 실습 목표 :  

  1. [ 토양습도 센서에 대해 이해 할 수 있다. 

 2. [ 워터펌프에 대해 이해 할 수 있다. ]

 3. [ 토양 센서 값에 따라 펌프를 작동시켜 물공급 조절을 할 수 있다.]

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

< 스마트 화분 연결 구성도 >

※ 위 회로에 대해 모터 작동이 원활 하지 않을 수 있고, 장시간 사용시 아두이노 보드에 무리가 갈 수 있어 아래 처럼 NPN타입의 TR과 저항을 추가하여 보강하였다.  가급적이면 아래 회로를 참조하여 구성해주면 좋을 것이다.

(TR은 NPN 타입의 ' 2SC 9013 '을 사용하였으나,   TR 타입이 NPN타입 이면 어떤 것이든 동일하게 사용 가능하다. ) 

- C9011과 C9012, C9013은 모두 핀 배열이 동일함( E B C)

- C1815는 핀배열이 E C B 임

[ 위 회로에서 주의 하셔야 할 것은  아두이노 회로에서 주로 사용되는 TR의 경우(2SA, 2SC타입)  NPN형 타입은 PNP형 타입과 마찬가지로 핀의 순서가 있으니 주의 하셔야 합니다. 

우선, 도면에 사용된 NPN형 TR은 2SC9011 이며, 라벨이 적인 면의 왼쪽을 기준으로 핀 이름이 
1.   2SC9011 :  - E B C -  순서로 되어 있고, 

2.   2SC1815 :  - E C B - 순서로 되어 있으니 반드시 확인 후 연결하세요. 

또한, 이외의 TR을 사용할 경우 미니 테스터기 혹은 인터넷 검색으로 핀 순서를 확인하여 도면대로 연결하시면 문제 없이 동작 할 거예요. ]

 

[ 추가로 위 회로의 모터 연결 방식은 장시간 사용하기에는 좀 무리가 따르며, 전원을 별도로 넣어 줄 수 있는 릴레이 모듈이나, L298 모터 드라이버 모듈을 연결해서 사용하시는 걸 권장합니다. 조만간 보강된 회로의 업로드 버전도 올려 볼게요. ^^; ]   

 

▶ 실습 절차  : 

1.   부품을 준비하여 위와 같은 회로를 구성한다. 

2.   물펌프는 물통 속에 담겨진다. 따라서 물펌프의 전선이 빠져나오는 부분은 필요한 경우 글루건 등으로 보강처리 할 필요가 있다. 

3.  우선 본 실험처럼 작은 물통을 준비하고, 간이 화분을 준비해서 실험을 해 본 후 실제 화분에 설치해보면 좋을 것이다. 또한 필요한 경우 센서를 두 개 이상 설치할 수도 있고, 두개의 화분을 하나의 보드로 연결하여 관리 해 볼 수 있을 것이다.

4.  다음 버전에서는 수분 값 등을 FND 혹은 LED, LCD 등을 부착하여 표시해보려고 한다. 

 

 

▶ 프로그램 코드 및 설명 : 

 

/* 스마트 화분 만들기 [코딩]  */

#define A0Pin 0

int sensorVal = 0;

int pump = 13;

void setup ( ) {
 Serial.begin(9600);

 pinMode(pump, OUTPUT);

 }

void loop ( ) { 

  sensorVal = analogRead(A0Pin);    //토양센서 센서 값 읽어 저장

  delay(1000);

  Serial.print("Asensor = ");

  Serial.println(sensorVal);  // 0(습함) ~ 1023(건조)값 출력

  // 습도 값에 따라 출력 처리 다르게 해줌

  if ( sensorVal <= 900) {   

    Serial.println(" Very Wet ! ");       

    digitalWrite(pump, LOW);   

  }

 else if ( sensorVal > 900){

    Serial.println(" Very Dry ! ");   

    digitalWrite(pump, HIGH);

    Serial.println(" Pump On for 1 Second!");   

    delay(1000);

  }   

  delay(3000);   // 정보수집 시간(간격) 설정

}

▶ 실행영상 :  

(전체화면 보기로 보세요)

 

(아래는 유튜브로 시청하기)

https://youtu.be/GlYIry2jga8

▶ 아두이노 파일다운 :

(다운받아서 압축을 풀어 사용하세요)

AutoWaterPot.zip
0.00MB

 

반응형