반응형

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

이번 시간에는 Blynk2.0 업그레이드 강의 세 번째 시간으로 Nano 보드에 ESP01 WiFi 모듈을 연결하여 LED와 LED 전등 & 콘센트 제어를 통한 가전기기들을 제어해 보도록 하겠습니다. 
보드의 입출력 포트에 연결된 LED제어는 물론이고, 릴레이를 사용하면, 220V 전기를 사용하는 LED 전등 제어도 가능합니다. 뿐만 아니라, 릴레이 모듈을 Outlet 콘센트에 직접 연결해 놓으면 220V 전기를 사용하는 대부분의 가전제품을 On/Off 제어할 수 있습니다. 

그리고 더 놀라운 것은 스마트폰의 앱에서만 아니라 Blynk2.0으로 업그레이드되어 웹 접속이 되는 어느 곳이든 웹페이지에서도 실시간으로 제어하고 상태를 확인 할 수 있게 되었습니다. 
더구나, 블링크(Blynk)는 시스템을 구축하기 위해 어렵고 복잡한 코딩이 필요치 않기에 누구나 손 쉽고 빠르게,  자신이 원하는 IoT 시스템을 만들 수 있어 매우 좋습니다. 

그럼, 이번 영상을 통해 자신만의 IoT 시스템을 재미있게 만들어 보세요~!

참고로, 이 프로젝트를 위해서는 더보기에 링크해 드리는 두 개의 필수 영상을 함께 참고해야 합니다. 

 

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


① #1 실습1) 펌웨어업뎃 & Blynk실습,  LED On/Off  WiFi 제어하기! 1편
    - 유튜브 자료 : https://youtu.be/-NdOR-hsR_4
    - 블로그 자료 : https://rasino.tistory.com/335
② #5 실습5) ESP01WiFi로 '220V 전등/가전기기' 제어하기! 
   -  유튜브 자료 : https://youtu.be/JfF4oPhn_gA
    - 블로그 자료 : https://rasino.tistory.com/335

【 Blynk Cloud  Off Line & "Invalid auth token" error 에러 해결방법 】

  - https://rasino.tistory.com/350

 【  블링크2.0에서 기존 프로젝트(템플릿) 삭제하는 방법 /Delete Templates】

  - https://rasino.tistory.com/352   

 

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

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

 

【 ①  이 번 실습의 결과물 】

 

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

실습에 사용될 부품에 대한 자세한 내용은 아래 링크를 참고해 주세요
아래는 실습을 위한 연결 도면입니다. 

여기서는 ESP01-전용 어댑터를 이용해서 실습하게 되는데요,  만약, 이 어댑터가 없다면, 앞서 소개드린 영상이나,
아래  링크를 참고하면, 다른 방법으로도 해결할 수 있어요.
#Blynk+Nano+Esp-01 풀코스 학습자료 : https://rasino.tistory.com/335
어댑터 모듈뿐 아니라 릴레이 모듈이나 다른 부품에 대해서도 상세한 설명이 나와 있으니 꼭 참고해 보세요. 

 

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

아두이노 IDE의 "라이브러리 매니저"창에서 아래와 같이 'blynk'로 검색하여 라이브러리를 설치해 주세요.

 

【 ⑤  실습 예제 파일과 코드 해설 】

그럼, 나노 보드에 업로드할 코드에 대해 설명드릴게요.  먼저, Blynk 라이브러리를 설치하게 되면, Blynk 관련 예제 파일들이 설치되는데요, 화면에 보이는 ‘ESP8266_Shield’ 예제 파일을 열어서 약간만 수정하면 됩니다. 


코드의 크기가 한 페이지도 안 되는 코드로 IoT 작품을 만들 수 있다니 정말 놀랍습니다. 

중요한 점 몇 가지만 설명드릴 텐데요, 
뒤에 나오는 Blynk Cloud에서 설정을 통해 얻게 되는 TEMPLATE ID와 NAME, AUTH TOKEN 값들을 이 부분에 복사, 붙여 넣기 해야 합니다. 
그리고 이 값들은 Blynk 관련 라이브러리보다 위쪽에 배치해야 하는데요, 그렇지 않을 경우 Blynk2.0 서버가 아닌 이전(Legacy) 서버로 접속되어 제어되지 않게 됩니다. 하지만 그렇게 배치했음에도 불구하고 “Invalid auth token”에러를 계속 표시하며 서버로 접속되지 않을 때는 기존 예제 코드에서 이 부분, “blynk.cloud”, 80을 추가해 주면 해결됩니다.

이 부분에는 여러분이 접속 가능한 주변 WiFi 혹은 스마트폰의 핫스팟 ID와 패스워드를 입력하세요.

그리고,  SoftwareSerial EspSerial(7,6) 이 부분에는
나노에 연결된 ESP01 어댑터 모듈의 소프트웨어 시리얼 통신 핀 번호를 적어줍니다.
그리고, 여러분이 갖고 있는 esp01 모듈의 보-레이트(Boud-rate)를 정확히 적어주세요. 
#define ESP8266 BAUD 9600
이 보-레이트가 일치하지 않으면 WiFi 통신이 되지 않습니다. 
보-레이트를 알기 어렵다면, 9600 또는 115200 둘 중 하나로 해보세요. 
그럼 이제, 조립된 작품에 코드를 업로드하고,  Blynk.Cloud에서 웹 대시보드를 만들어 볼게요
코드는 앞서 안내해드린 것처럼, Blynk 라이브러리에 포함된 예제를 기본으로 조금 변경해 주면 되는데요,
아래가 편집된 코드 예시이니 참고하세요. 
우선 아래 코드를 다운로드하고 Template ID,  Auth Token , WiFi ID, 비번,  ESP01 보-레이트 등등을 수정하여 업로드하면 됩니다. 

//////////////////////////////////////////////////////////////////////////////////
// *** 라즈이노 IoT Blynk2.0 + Nano+ESP01 실습, 릴레이모듈+전등 제어하기 *** 
// 실습 : Blynk 2.0 시스템에 릴레이 모듈을 연결하고 LED 및 220V용 LED전등을 제어해 보기!
// 사용방법 및 추가 자료 다운로드 
// 게시글    :  https://rasino.tistory.com/  
// 유튜브영상 : https://www.youtube.com/channel/UClO79Cpq72VI63MwGi6VoQw
//////////////////////////////////////////////////////////////////////////////////
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLtjtKWif1"
#define BLYNK_DEVICE_NAME "Nano ESP01 LED Control"
#define BLYNK_AUTH_TOKEN "DamL2Z3CQqS4NbU0UAlxbk86uE5VjSlK"

#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "myGalaxy";
char pass[] = "12345678";    // 만약 패스워드 없는 WiFi라면,  ""로 입력하세요
#define EspSerial Serial1
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(7, 6); // RX, TX , 나노에 연결된 소프트웨어 시리얼 통신 단자.
// 중요! 여러분이 갖고 있는 ESP01 모듈의 펌웨어에 설정된 보드레이트에 맞추어야 합니다
// 보통의 경우는 9600 이며, 안 되면, 115200으로 해보세요.(esp01 펌웨어 버전에 따라 다름)
// esp01-펌웨어 업뎃 및 AT통신 설정 관련 된 사항 참고 : https://rasino.tistory.com/297
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

void setup()
{
// 아두이노 IDE의 시리얼 모니터와의 통신속도입니다. 아무속도나 상관 없음
  Serial.begin(9600);
  delay(10);
  EspSerial.begin(ESP8266_BAUD);
  delay(10);
  Blynk.begin(auth, wifi, ssid, pass, "blynk.cloud",80);
}

void loop()
{
  Blynk.run();
}

Blynk 2.0 서버로 접속되지 않는 에러를 방지하기 위해, “blynk.cloud”, 80을 추가해 주세요.

《 코드 다운로드 》

Blynk2_ESP01_Relay_LED_Lamp.zip
0.00MB

Blynk를 이용하면, 보이는 것처럼, 아두이노 코드가 복잡하지 않아 매우 쉽게 작품을 구현할 수 있습니다.

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

그럼, 가입된 Blynk.Cloud 사이트에 접속 후 로그인하세요. 
아래 이미지처럼, 화면 메뉴 좌측에 보이는 Templates 메뉴를 선택하세요.

중앙에 보이는  + New Template을 클릭하고, 이미지의 내용으로 입력해 주세요.

 입력 완료 후, Done을 클릭하면  기본 템플릿이 만들어지는데요, 상단에 보이는 메뉴 중에서 Data Streams과 Web Dashboard 만 작업해주면 됩니다. 
그럼 Data Streams 탭을 선택하고, +New Datastream에서  Digital 항목을 클릭하세요. 


그리고 아래 이미지를 참고하여 내용을 입력하세요. 

 

LED 2에 대해서도 같은 방법으로 만들어 주세요.

 

 

마지막으로 LAMP(전등)에 연결된 Relay 제어를 위해 Data Stream을 추가해 볼게요.

 

그럼, 이제 Web Dashboard로 가서 컨트롤 화면을 구성해 볼게요.

화면 구성은, LED 1, 2, LAMP에 대해 ON/OFF를 확인할 수 있는 LED 표시와 제어하는 스위치로 구성했습니다.
아래 이미지를 참고하여 설정해 보세요. 

 

LED2에 대해서는 복제(복사)를 해볼 텐데요, 유사한 패턴의 경우 복제 버튼을 이용하면, 좀 더 편하게 작업할 수 있습니다. 

그리고 복제된 위젯의 설정으로 들어가서 아래처럼 옵션을 선택, 입력해 주세요.

 

LED2의 스위치 세팅도 동일한 방법으로 해주시고, 

Relay에 연결된 Lamp에 대한 표시등도 LED 위젯을 이용해서 만들어 주세요. 
그리고 아래와 같이 Relay Lamp 켜고 끄기를 위한 스위치를 만들어 주세요. 

아래 이미지처럼 완성이 되었다면,  이제 Search 탭으로 가서, + New Device를 클릭하고, 조금 전에 만든 Template를 연결해 주세요. 

 

그럼, 이렇게  Autu Token 값 등이 만들어지고, 이 값들을 복사해서 아두이노 코드 상단에 붙여 넣기 합니다.

 

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

 이렇게 완성된 코드를 가지고  보드를 연결하고 코드를 업로드하세요. 

ESP01 모듈이 연결되어 있는 상태에서 코드를 업로드할 경우 업로드 에러가 종종 발생하니, 잠시 제거하고 업로드해보세요.

’Window’키 + ‘X’ 단축키로 장치 관리자를 열어  Nano보드가 연결된 포트를 정확히 확인해 보세요. 

네 26번 포트에 연결되어 있네요. 그럼, 업로드를 위해 보드와 포트를 정확히 선택해 주세요. 

대부분의 호환 Nano 보드의 경우 프로세서는 “ATmega128P (Old Bootloader)를 선택해야 업로드됩니다

그럼, 업로드해 보세요. 

 

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

이제, ESP-01 모듈을 연결해 주세요. 코드에 입력한 대로,  주변 WiFi 또는 핫스팟을 연결해 주세요.
Nano 보드의 리셋을 눌러주면, 핫스팟에 연결되고 시리얼 모니터를 통해 IP를 할당받는 것을 볼 수 있습니다. 
잘 안된다면, 시리얼 모니터를 새로 열거나 ESP01 모듈을 제거 후 다시 연결해 보세요(접촉 불량 가능성)
네, 보이는 것처럼 Ping 테스트까지 완료되어야 연결에 문제가 없습니다

그리고  Search 탭에서(중요!) 동작시켜 보면, 아래처럼, LED가 화면 클릭할 때마다 동작이 잘 되는 것을 볼 수 있습니다.

그럼, 220V LED 램프도 테스트해보기 위해,  220V 전원을 연결하고 테스트해 보세요. 

네, 위 이미지처럼, 동작은 잘하는데요,  다만, 스위치가 ON 신호에 램프가 꺼지고, 스위치 OFF 신호에 램프가 켜져서 반대로 동작합니다. 
그 이유는 Relay 모듈이 Low신호에 동작하는 Active-Low 모듈이어서 그렇습니다. 
이 문제는 DashBoard에서 On/Off 스위치 설정을 반대로 해놓으면 간단히 해결할 수 있습니다. 
그럼, Templates 탭의 편집(Edit)으로 들어가서 Lamp 버튼의 설정을 바꾸어 볼게요. 


ON과  OFF의  논리 값을 반대로 바꾸어 주세요 ( 1 -> 0 , 0 -> 1 )

컬러도 반대 효과를 주기 위해 검정식으로 바꾸어 볼게요 ( 검정 -> 꺼짐 , 흰색 -> 켜짐 ) 

저장하고 Search 메뉴에서 다시 실행해 볼게요.

네, 이제 ON OFF가 일치하며 잘 동작됩니다. 
그럼, 이제 PC 연결 없이 배터리로도  IP 할당받으며 잘 동작하는지 아래 이미지처럼, 확인해 보세요. 

그럼, 이제 앱 화면도 설정하여 제어해 볼게요.
Blynk ioT ( 2.0 버전에 해당되는 앱) 앱을 다운로드하고 로그인하세요. 
Blynk Cloud에서 템플릿을 만들면 자동으로 같은 이름의 빈 템플릿이 보이는데요, 터치하세요. 


개발자 모드로 진입하고,  바닥의 빈 공간 또는 + 키를 눌러 주세요.  


앞서 보았던 동일한 모양의 위젯들이 보입니다. 
LED 위젯을 터치하세요. 


위젯을 2~3초간 누르고 있으면 위치를 옮길 수 있고 사이즈 변경도 가능합니다. 


LED 1에 대한 설정을 영상처럼 해주세요. 

이어서, LED 2에 대한 설정도 동일하게 합니다. 

이제, LED 1에 대한 스위치를 만들어 볼게요

PUSH 옵션은 계속 누르고 있을 때만 On 되는 옵션이며, SWITCH는 터치할 때마다 번갈아 On/Off 됩니다.

마지막으로 LAMP는 스위치만 만들어 볼게요.

스위치 배치 완료된 모습

역시 여기서도 LAMP 스위치는 Low 신호에 On 표시되도록 1과 0의 위치를 바꾸어 줍니다.

이제 개발자(설정) 모드에서 빠저나가기를 누르면 실행 모드가 됩니다.

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

네, 아주 잘 작동되며, 웹과의 연동도 잘 됩니다.

 

【 ⑩  Outlet 콘센트로 가전기기(선풍기 예시) 제어해 보기】

그럼, 이전 영상에서 만들었던 Outlet 콘센트도 테스트해 보겠습니다.

Outlet 콘센트의 상세한 제작 영상은 더보기 링크를 참고해 주세요. 
여기에도 똑같은 코드를 올려주면 되는데요,   Esp01 모듈을 탈거하고 업로드해 볼게요.

ID와 Auth Token 값들이 일치하면 같은 화면에서 제어할 수 있습니다.

Outlet 작품도 배터리를 이용해서 동작시켜 볼게요.

현재 두 개의 WiFi 모듈이 접속(IP 할당) 되어 있는 것을 볼 수 있습니다.

그럼, Outlet에 대한 Data Stream을 템플릿 탭에서 추가해 볼게요.

Teamplate 탭에 있는 Edit(편집)를 누르고 영상을 따라 설정해 주세요.

Outlet에서도 켜고 끄는 스위치 버튼 하나만 추가해 볼게요.

네, 이제 모든 준비는 끝났고, 두 개의 다른 작품을 하나의 폰에서 제어해 볼게요.

 

미니 선풍기라 하더라도  220V 콘센트로 제어하기 때문에 220V 전기를 사용하는 거의 대부분의 가전기기도 제어된다고 보면 됩니다.

그럼, Outlet 콘센트 전원을 연결해 볼게요.

릴레이가 Low(꺼짐) 신호에 동작하니, Outlet 스위치 역시 반대로 설정해 볼게요.

네, 잘 동작되는데요,  폰에서도 스위치를 추가하여 제어해 볼게요.

여기서도 On / Off 설정을 반대로 바꾸어 놓을게요.

 

【 ⑪  최종 완성된 작품 두 가지를 하나의 앱과 웹에서 함께 동작시켜 보기 】

그럼 실행시켜 볼게요.

네, 이렇게 해서 Blynk2.0을 이용해서 웹과 폰에서 LED, 전등, 가전기기 등을 제어해 보았습니다.

릴레이를 이용하면 220V와 같은 가전기기들의 On/Off를 제어할 수 있어, 응용하기 매우 좋습니다.

그럼, 지금 나오는 관련 영상들을 함께 참고해서 활용하기 좋은 작품들을 만들어 보세요.

감사합니다~

【 모든 작업과정 동영상으로 보기 】

 

반응형
반응형

 ※ 본 게시물의 모든 이미지는 클릭하면 확대되어 선명하게 확인 가능합니다!

【 How to Display temperature& humidity of DHT11 on a smart phone! 】

# Blynk2.0 은 WiFi 컨트롤 기능을 App뿐 아니라, Blynk Cloud라 하여 웹에서도 제어할 수 있는 기능을 제공하고 있습니다. 
또한,  복잡하고 어려운 코딩이나 함수 사용 없이 매우 쉽게 IoT 시스템을 구축해 주는 멋진 시스템입니다. 

여기에서는 WiFi기능을 가진 나노 33 IoT 보드를 사용하고 있으며, ESP8266 보드류 혹은 ESP32 보드 등으로도 바로 적용 가능합니다. 

이 강의는 시리즈로 제작되며,  전체 학습 내용은 아래와 같습니다.
======================================================
시리즈 전체 실습 내용(예정)
1. Nano33 ioT & Blynk2.0으로 LED On/Off 하기. (업로드 완료)
2. Nano33 ioT & Blynk2.0 으로 DHT11 센서 온도/습도 출력하기.(본 게시글)
3. ESP01 & Blynk2.0 으로 LED와 LAMP(220V) 제어하기. (예정)
4. ESP8266 & Blynk2.0 으로 LED와 LAMP(220V) 제어하기.(예정)
5. ESP32 & Blynk2.0 으로 LED와 LAMP(220V) 제어하기.(예정)
======================================================

【 실습을 위한 사전 학습 자료 】
① Nano33 IoT 처음 사용설명서 1편
    - 유튜브 자료 : https://youtu.be/QwrgDjs4qBc
    - 블로그 자료 : https://rasino.tistory.com/301 
② Nano33 IoT 처음 사용설명서 2편
   -  유튜브 자료 : https://youtu.be/IODHpewucU4
    - 블로그 자료 : https://rasino.tistory.com/310
③ 【 Blynk 2.0 사용법 #1】 Nano33 ioT으로 LED On/Off  제어하기
   -  유튜브 자료 : https://youtu.be/4GZox37rXwg
    - 블로그 자료 : https://rasino.tistory.com/353

【 Blynk Cloud  Off Line & "Invalid auth token" error 에러 해결방법 】
  - https://rasino.tistory.com/350

 【  블링크 2.0에서 기존 프로젝트(템플릿) 삭제하는 방법 /Delete Templates】
  - https://rasino.tistory.com/352   

【 주요 목차 】
  ①  Blynk 2.0 서비스 소개 & 사용 이유
  ②  회로 연결 도면 및 실습 준비
  ③  실습을 위한 아두이노 IDE 필수 라이브러리 설치(4가지)
  ④  기존 템플릿(Templates) 삭제 방법
    데이터 스트림(Data Stream) 핀을 GPIO Pin으로 설정하기 설명

    Blynk Cloud (blynk.cc) 설정 & 웹 대시보드 만들기(Dash Board)
  ⑦  버추얼 핀(Virtual Pin) 개념 설명 & 온도/습도 가상 핀 설정하기
  ⑧  웹 대시보드(Web Dashboard) 핀 설정하기 설명
  ⑨  새 디바이스(New Device) 추가하기 설명
  ⑩  실습을 위한 Nano33 & DHT11용 Blynk 예제 파일 만들기
  ⑪  Nano33 ioT 보드에 코드 업로드 하기 & 핫 스팟 연결하기
  ⑫  동작 확인하기 (Arduino IDE Value & Web Dashboard)
  ⑬  Blynk IoT App에서 Dash Board(대시보드) 설정하기

 

【  ①  Blynk 2.0 서비스 소개 & 사용 이유


 최근 Blynk 서비스가 2.0으로 바뀜에 따라, 현재 가입하려는 분들은 반드시 2.0 시스템으로 사용법을 익히셔야 합니다.
기존에 사용하던 Blynk앱 시스템은 이용자의 폭주와 웹 연동 서비스를 제공하기 위해 Blynk 2.0 시스템을 오픈하였습니다.

물론 기존 Blynk 시스템도 유료 서비스를 이용하던 사용자가 있기 때문에 서비스가 유지되고 있지만,  Blynk 신규 가입자는 반드시 Blynk2.0을 이용해야 합니다. 
다만, Blynk2.0의 경우 국내 자료가 아직 부족하고 사용법이 기존과 달라 접근하기가 쉽지 않습니다.
그래서, 기본 사용법을 익히실 수 있도록 본 게시글을 준비했으니 차근차근 따라 해 보시기 바랍니다.
현재 Nano33 ioT 보드로 기본 실습들을 구성했지만, esp8266 보드나 esp32 보드 들도 이 글을 참고하면, 동일하게 활용 가능합니다.

Blynk 앱을 검색해 보면, 기존(legacy) 앱과 Blynk2.0인 Blynk IoT앱 두 가지를 볼 수 있습니다. 
Blynk 2.0에서는 Blynk Cloud라 하여 웹에서도 아래처럼 컨트롤 버튼을 만들어 제어할 수 있고, 

  Blynk의 가장 큰 장점은 어려운 앱 개발 코딩이 필요 없다는 것과 쉬운 클라우드 서버 툴을 제공하기 때문에 웹코딩이 필요 없으며, 센서 및 회로 제어에 필요한 복잡한 아두이노 함수들을 자체적으로 처리해 주기 때문에 매우 쉽고 빠르게 IoT 응용 작품들을 구축할 수 있습니다. 다만, 동시에 2개의 프로젝트(템플릿)까지만 무료로 제공되며, 추가적인 프로젝트나 고급 위젯 Box를 이용하고자 한다면, 일정 비용을 지불해야 합니다.              
단, 먼저 만들어진 프로젝트를 삭제하면 새 프로젝트를 계속 만들 수 있어요)   
물론, 월 이용료 등의 일정 비용을 지불하면 상업용으로도 손색없는 IoT 시스템을 구축할 수 있을 것으로 생각됩니다.

【 ②  회로 연결 도면 및 실습 준비 】

먼저, 화면과 같은 부품을 준비하여 회로를 연결해 주세요.

[ 연결도면 다운로드 ]

nanoIoT33_DHT11_Blynk2.0연결도.png
0.39MB

Nano33 ioT는 핀 배열이 Nano 보드와 거의 동일한데요, Nano 보드처럼 사용하기 쉽고 WiFi 모듈까지 내장되어 있어 활용하기 좋은 보드입니다.  Nano33 ioT 보드의 상세 설명과 사용법은 위에 링크해 드린, “처음 사용설명서 #1~#2”편을 참고해 보세요. 

   실습을 위한 아두이노 IDE 필수 라이브러리 설치(4가지) 】

그럼, 아두이노 IDE에 필요한 필수 라이브러리 3가지 및 DHT11 센서 사용을 위한 라이브러리 추가로 해서 4가지를 설치해 주세요.
1. ‘보드 매니저’에서 SAMD 또는 NANO 33으로 검색해서 보드 인식을 위한 라이브러리를 설치합니다.
nano 33으로 검색할 때는 중간에 공백을 주어야 합니다. 
그리고, 라이브러리 매니저가 아니라 보드 매니저입니다. Nano 33 ioT는 SAMD21G18A 칩을 MCU로 사용하고 있는 보드입니다. 

SAMD 또는 NANO 33 으로 검색 후 설치

 

2. ‘라이브러리 매니저’에서 NINA 또는 WIFININA로 검색하여 WiFi 통신을 위한 라이브러리를 설치합니다.

WiFi 통신을 위한 NINA 라이브러리

 

3. ‘라이브러리 매니저’에서 blynk로 검색하여 BLYNK 라이브러리를 설치합니다.

BLYNK 함수 사용을 위한 라이브러리 설치

 

4. ‘라이브러리 매니저’에서 'DHT'로 검색하여 Adafruit 사에서 제공하는 DHT 센서용 라이브러리를 설치합니다.

그럼, 이제 모든 준비 사항은 끝났으며, LED1과 2를 웹과 앱을 통해 직접 제어해 볼게요.

아래는 실제 연결된 회로 모습입니다.  점퍼선을 이용해도 좋지만,  이렇게 굵은 단선으로 길이에 맞추어 연결하면 훨씬 간결하고 튼튼하게 오랫동안 유지됩니다.

《 DHT11 센서 스펙 》

만약, 좀 더 정밀한 데이터를 원한다면, 아래 이미지와 같은 소수 첫 째 자리까지 출력되는 DHT22 센서를 사용하면 됩니다. 



【 ④ 기존 템플릿(Templates) 삭제 방법

Blynk 서비스는 템플릿(프로젝트) 2개까지는 무료로 이용할 수 있습니다.  따라서, 여러 가지 다양한 프로젝트 연습을 위해서는 기존 만들었던 템플릿을 삭제하면서 진행하면 되는데요,  삭제하는 방법에 대해 간단히 설명드립니다. 
만약 현재 만들어 놓은 템플릿이 없더라도, 추후에 삭제 과정이 필요하니 미리 봐 두면 도움 될 것입니다. 
 템플릿 삭제하는 내용은 아래 게시글에 별도로 올려놓았으니 참고해 보세요. 

▶ 템플릿 삭제하는 방법 :  https://rasino.tistory.com/352

 

⑤  Blynk Cloud (blynk.cc) 설정 & 웹 대시보드 만들기(Dash Board)

먼저, 아래 이미지처럼 좌측의 템플릿 탭을 클릭하고 이미지 우측 상단에 보이는 + New Template를 클릭하세요.

이어서 나타나는 아래 이미지처럼 각각의 항목을 선택하고, DESCRIPTION에는 간단한 설명을 입력하면 되는데요,  제목과 디스크립션에는 특수 문자나 기호는 입력하면 에러가 나고 다음으로 넘어가지 않으니 특수문자 및 기호는 입력하지 마세요. 

 

⑥  데이터 스트림(Data Stream) 핀을 GPIO Pin으로 설정하기 설명

이제, 데이터 스트림(DataStreams)과 웹 대시보드(Web Dashboard)만 설정해 주면 되는데요,   그전에 먼저, Digital 핀으로 로 사용 설정 시 선택해야 하는 핀 번호에 대해, 중요하니 짚고 넘어가 볼게요. 
아래 이미지에 보이는 Digital Pin과 Analog Pin의 경우는 아두이노 보드의 물리적인 핀을 그대로 연결 사용한다는 의미를 가지는 데요, 

직접 아두이노를 제어하듯 보드에 있는 핀 번호를 선택하면 블링크 서버(함수)를 통해 제어됩니다.
한 가지 주의해야 할 것은 DataStream의 Digital 핀 숫자는 보드 표면에 적힌 핀 번호가 아니라 GPIO 핀 번호와 일치되어 있습니다. 따라서 GPIO를 사용하는 nodeMCU와 같은 보드에서는 D0, D1, D2  등의 핀번호가 아니라, 입출력을 기준으로 매겨진 GPIO 핀 번호와 일치되어 있습니다. 
즉, D1핀에 연결된 LED 같은 것을 제어하려 한다면, DataStream에서 숫자 1을 선택하는 것이 아니라, GPIO 핀 번호인 숫자 5(GPIO5)를 선택해야 제어가 되니 주의하세요. 
( ※ 단, 우노와 나노 보드류는 GPIO 구분 없이  핀 번호 그대로 사용합니다 )

 

다음은 가상 핀(Virtual Pin)에 대한 설명입니다.

Virtual Pin의 경우 물리적 핀의 경우처럼 사용이 가능하지만, 주로 센서와 같은 값들을 WiFi를 통해 전달받아 앱 혹은 웹의 대시보드에서 쉽게 모니터링할 수 있도록 만든 가상 핀입니다. 
마치 아두이노 IDE의 시리얼 모니터에서 센서 값을 확인하는 것처럼, WiFi 무선을 통해 확인하기 편하도록 한 것입니다.
또한, 가상 핀을 최대 256개까지(V0~V255) 사용할 수 있도록 되어 있어 확장성이 좋습니다. 따라서, 이번 실습에서는 이 가상핀을 이용해 DHT11의 온도와 습도 데이터를 전달받아, 앱과 웹의 대시보드에서 확인할 수 있도록 실습을 진행합니다. 

【    Blynk Cloud (blynk.cc) 설정 & 웹 대시보드 만들기(Dash Board) 】

아래 이미지를 따라, 각각의 내용을 입력해 주세요.

ALIAS는 NAME을 영문으로만 입력하면 자동으로 입력됩니다.  한글과 혼용 입력 시는, 직접 영문으로 Temp라고 입력해주면 됩니다. 
가상 핀은 어떤 핀이든 사용하면 되고, Data type은 정수형(integer)을 선택하세요.
만약, DHT22와 같은 소수점 값 처리가 필요한 센서를 사용할 경우, Double을 선택하면 되고, 아두이노 코드에서는 Double 또는 float형을 사용하면 됩니다. 
단위는 섭씨온도일 경우 Celsius(℃) , 화씨는 Fahrenheit(℉)를 검색하세요. 
온도 값을 표시할 게이지의 전체 범위를 지정할 텐데요, 0℃ ~ 60℃의 범위로 지정해 볼게요. 

마지막으로  Create를 클릭하면 온도 값 처리를 위한 DataStream이 하나 만들어집니다.

그럼, 습도에 대한 DataStream을 생성하기 위해  +New Datastream을 클릭하세요.

아래 이미지를 참고하여 역시 동일한 방법으로 습도에 대해 입력해 주세요.

습도는 퍼센트(Percentage, %)로 표시하므로 Per...로 검색해 보세요. 
표시될 게이지의 범위는 0~100%로 합니다.

이렇게 해서 DataStream이 준비되었고, 아래처럼, 되어 있는지 보세요. 

 

  ⑧  웹 대시보드(Web Dashboard) 핀 설정하기 설명

그럼, 이제 웹 Dash Board를 만들어 볼게요. 
웹 Dashboard는 웹에서 컨트롤할 수 있는 제어 보드를 의미하고, 추가적으로 앱에서도 연동하여 제어할 수 있는 대시보드를 폰에서 만들 수 있습니다. 그럼, DHT11 센서의 온도와 습도를 표시해 줄 Gauge를 각각 만들어 볼게요. 
아래 이미지에서 1번, 2번, 3번 순서대로 클릭하여 진행합니다.

왼쪽 위젯 박스 메뉴에서 Guage를 끌어다 놓으세요. 

Guage의 제목은 ‘온도 Temp.’로 입력합니다.  그리고, Data Stream에서 설정해 놓았던 온도 Temp(V0) 항목을 선택하세요. 


그리고 같은 방법으로 Guage를 끌어다 놓고, 습도에 대한 Guage를 만들어 줍니다. 
 Guage의 제목은 ‘습도 Humi.’로 입력할게요.  그리고, Data Stream에서 설정해 놓았던 습도 Humi(V1) 항목을 선택하세요.

아래는 온도와 습도 게이지가 완성된 모습입니다.

 

그리고 위젯 박스에서 Label을 끌어다 놓고, 동일한 값을 Label로도 표시해 볼게요.

내용 입력과 선택은 Guage와 동일하게 해 볼게요(달라도 됨).

 

습도 Label도 아래처럼, 동일하게 만들어 주세요.

  아래처럼 되어 있으면 Dash board 설정은 끝났으며, 최종 Save 버튼을 클릭하면, 완료됩니다.


그리고 언제든 화면 우측 상단에 있는,  Edit를 눌러 Dash-Board나 Data-Stream을 다시 수정할 수 있습니다. 

【 ⑨  새 디바이스(New Device) 추가하기 설명 】 

 그럼, Search 탭을 눌러  +New Device를 추가해 볼게요.

화살표 순서에 따라 템플릿을 선택해 주세요.  이어서 나타나는 아래와 같은 창에서 위에서 만들어 놓은 'Nano33 ioT DHT11' 이름의 템플릿을 선택하고 Create를 클릭하세요. 

그럼, 아래처럼,  템플릿 ID와 Auth Token 값들이 생성됩니다 (클릭해서 복사하세요). 

 그리고 아두이노 코드의 이 부분에 붙여 넣기 하면 됩니다. 
코드의 이 세 가지 값이 blynk.cloud 값과 일치하지 않으면 에러가 나고 서버에 연결되지 않습니다. 
여기서 주의할 것은 BLYNK_TEMPLATE_ID는 BLYNK 2.0 Cloud 서비스를 위해 생긴 것으로 <Blynk...> 라이브러리보다 상위에 배치되어야 합니다. 

만약 그렇지 않을 경우 지금 보이는 것처럼 token 에러가 나며, Blynk2.0 서버로 접속되지 않아 제어할 수 없게 됩니다.

 이 에러 관련된 추가적인 해결 방법은 더보기에 있는 링크를 참고해 주세요~!

'Invalid auth token' 에러 해결 링크:  https://rasino.tistory.com350/ 

 

【 ⑩  실습을 위한 Nano33 & DHT11용 Blynk 예제 파일 만들기 】

이 아두이노 코드는 Blynk 라이브러리에서 제공하는 코드를 기본으로 하여 수정한 것인데요. 
코드의 위치는 ‘파일 》 예제 》 Blynk’ 메뉴에서 → ‘Boards_WiFi’ 항목으로 가서 Nano33 ioT의 경우 → ‘Arduino_MKR1010’ 예제를 열어 편집하여 사용하면 됩니다. 

편집한 코드는 아래와 같습니다.

//*** 라즈이노 IoT Blynk2.0 + Nano IoT33 실습 2 ,  DHT11 센서로 온도/습도 출력하기***
// 실습 : Blynk 2.0 시스템에 DHT11 센서 연결하여 온도와 습도 값 디스플레이 하기!

#define BLYNK_PRINT Serial

// Blynk.Cloud 사이트에서 Nano33 IoT + DHT11에 대한 템플릿을 만든 후 
// 나타나는 대시보드에서 아래 3줄의 내용을 복붙복 하세요 */
#define BLYNK_TEMPLATE_ID "TMPLMRt6yA8Z"
#define BLYNK_DEVICE_NAME "Nano33 ioT DHT11"
#define BLYNK_AUTH_TOKEN "ZM-i3ALE2fMFsUZ5V5kh2JZg_X4LDFVi"

#include <SPI.h>
#include <WiFiNINA.h>     // 라이브러리 매니저창에서 WiFiNINA로 검색 후 설치할 것
#include <BlynkSimpleWiFiNINA.h>  // 라이브러리 매니저창에서 blynk로 검색 후 설치할 것
#include <DHT.h>       // 라이브러리 매니저창에서 DHT로 검색 후 설치할 것(by Adafruit 버전)

char auth[] = BLYNK_AUTH_TOKEN;   
// 접속 가능한 WiFi ID와 패스워드를 입력하세요
char ssid[] = "myGalaxy";
char pass[] = "12345678";

BlynkTimer timer;
#define DHTPIN 13            //  DHT11 센서가 연결 된 핀 번호
#define DHTTYPE DHT11        //  DHT11 센서 사용   (DHT22 센서는 DHT22로 수정)
DHT dht(DHTPIN, DHTTYPE);

void sendSensor() {
  int t = dht.readTemperature(); // 섭씨 온도, 화씨는 readTemperature(true), 만약 DHT22센서 사용시 float형으로 바꿀 것
  int h = dht.readHumidity();  

  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Serial.print("Temp:");
  Serial.print(t);
  Serial.print("\t");
  Serial.print("Hum:");
  Serial.print(h);
  Serial.print("\n");
  delay(300);
  Blynk.virtualWrite(V0, t);  // 온도값 전달을 위한 V1 가상포트 지정
  Blynk.virtualWrite(V1, h);  // 습도값 전달을 위한 V2 가상포트 지정
}

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  // 일반적으로 Blynk에서 ESP32 보드(혹은 아두이노와 같은 보드)에게 매 1초마다 
  // 데이터를 요구하는 방식이지만, 아래와 같은 타이머(timer) 코드를 사용하면 
  // ESP32 보드에서 Blynk로 일방적으로 데이터를 보낼 수 있음.
  timer.setInterval(1000L, sendSensor);  
}

void loop()
{
  Blynk.run();
  sendSensor();
  timer.run();    
}


편집된 코드는 여기를 클릭하여 다운로드하세요. 

Nano33ioT_DHT11_ok.zip
0.00MB

 

링크해 드리는 코드에서, 여러분의 ID, NAME, Token값과, WiFi 정보만 교체하면 됩니다.

 

【 ⑪  Nano33 ioT 보드에 코드 업로드 하기 & 핫 스팟 연결하기 】

코드가 준비되면, Nano33 ioT가 연결된 포트를 확인하고 업로드하세요. 

아두이노 IDE에서 보드가 연결된 포트와 올바른 보드 종류가 선택되었는지? 확인하세요.

 그럼, 연결시킬 WiFi 핫스팟을 준비해 주세요. (주변 연결 가능한 WiFi 또는, 스마트폰 핫스팟 등등 가능)

핫스팟에 여러분의 Nano33 ioT 보드가 IP를 할당받고 연결 된 것을 볼 수 있으며, 만약 연결이 안 된다면,  리셋키를 한 두번 눌러주면, 이렇게 핫스팟에 연결되는 것을 볼 수 있습니다. 

 

【 ⑫  동작 확인하기 (Arduino IDE Value & Web Dashboard) 】

그리고 아래 이미지처럼 아두이노 IDE의 시리얼 모니터를 열어, 출력되는 데이터를 바로 확인할 수 있도록 하였습니다.

아래 이미지처럼, Blynk의 Search탭에 있는 Dash-Board에 가보면 동일한 데이터가 표시되는 것을 볼 수 있어요.

 

【 ⑬  Blynk IoT App에서 Dash Board(대시보드) 설정하기 】

그럼, Blynk ioT App에서도 Dash-Board를 만들어 볼게요. 
먼저 스마트폰에서 다운로드하고 설치한 Blynk ioT를 실행시키고 로그인합니다.
웹에서 Nano33 DHT11이라는 이름으로 대시보드를 이미 만들었기 때문에,  앱에서도 Nano33 DHT11라는 이름의 템플릿이 생성되어 있을 거예요( 내용은 비어 있으며, 위젯 배치는 폰에서 새로 만들어야 함)  그럼, 그 템플릿을 선택하세요.
아래 공구 모양의 이미지(개발 모드 전환)를 터치해서 위젯들을 배치해 볼게요. 

 

이어서 앱의 바닥 빈 곳을 터치하거나 화면 우측 상단에 있는 '+' 표시를 터치하면,
우측에 위젯 메뉴들이 나타나는데요,  Guage 위젯을 찾아 선택해 주세요.

 이번엔 습도용 게이지를 만들기 위해 Guange 위젯을 하나 더 선택하세요. 


먼저, 왼쪽 위젯을 선택해서 설정을 해 볼게요.   아래 이미지들을 참고하여,  온도와 습도에 대해 설정해 보세요.

그럼, 아래와 같은 형태가 되며,   아래 화살표를 터치하여 화면을 빠져나오면, 데이터가 연동되는 실행 모드가 됩니다.

 

현재,  Arduino IDE Serial Value = Web Cloud Value = App Value   값들이 모두 연동되어 일치되는 것을 볼 수 있습니다. 

그럼,  주변 온도 및 습도 변화에 제대로 반응하는지 빠르게 확인해 보기 위해,  아이스팩과 히터를 이용해 볼게요. 

 아이스팩을 센서 주변에 붙여보니, 온도가 상온보다 빠르게 떨어지고,  습도 또한 냉각으로 인하여 낮아지는 것을 볼 수 있습니다.

이번엔, 아래 이미지처럼, 미니 히터를 대어 보았는데요,  히터의 경우 온도가 빠르게 올라가며, 습도 또한 건조해져 떨어지는 것을 볼 수 있었습니다. 

네, 이렇게 아주 잘 작동하고 있습니다. 
오늘 이렇게 DHT11이라는 온습도 센서를 WiFi 기능이 기본 지원되는 나노ioT33 보드에 연결하고, Blynk 2.0(블링크) 서비스를 이용해서 웹과 앱에서 데이터를 실시간으로 확인(출력) 해보는 실습을 진행해 보았습니다. 
블링크 서비스의 장점은, 어렵고 복잡한 코딩 과정 없이 실생활에 바로 응용할 수 있는 ioT 작품들을 매우 쉽고 빠르게 구축해 주는 것이라 생각됩니다. 

그럼, 본 게시글이나 아래 링크해드리는 유튜브 영상을 함께 참고하여,  직접 여러 형태로 재미있게 활용해 보세요~  ^^&

위 동영상 이미지를 클릭하면 재생이 됩니다
반응형