
ESP8266은 상하이에 본사를 둔 에스프레시프 시스템즈(Espressif SystemS)사에서 개발한 와이파이 통신 기능을 포함한 마이크로 컨트롤러(또는 SoC - System On Chip라 불려짐)입니다. 2014년 첫 선을 보인 이래로 현재까지 wifi통신 모듈 시장을 평정한 것으로 평가되고 있는 만큼 인기가 높습니다.
이 칩셋을 가지고 Ai-Thinker라는 회사에서 아두이노 보드처럼 코드를 올리고 혼자 동작이 가능하도록 플래시 메모리 등을 탑재한 첫 보드가 바로 ESP-01 모듈입니다.
이는 여러 가지 시리즈로 제작되었는데, ESP-01 , ESP-02, ... ESP-12, ESP-13, ESP-14, ESP... 모듈까지 플래시 메모리와 제어 포트 증가 등 성능을 향상해 출시하였습니다. 현재는 저렴한 비용과 저전력, 순수한 WiFi 기능의 단순한 동작을 요구하는 곳에는 ESP-01 보드가 많이 사용되고 있고, 좀 더 고성능과 확장성이 요구되는 곳에는 ESP012 모듈(ESP-12, ESP-12E, ESP12F)이 가장 많이 애용되고 있다고 볼 수 있습니다.
즉, ESP8266-01~14 보드 시리즈는 단순한 wifi 어댑터 역할뿐 아니라, 아두이노 보드 없이 아두이노처럼 프로그램을 올려 독자적으로 동작 가능한 보드인데요,
"아두이노+wifi 실드"를 저렴하고 작고 심플하게 합쳐 놓은 것과 같은 기능으로 인해 인기가 매우 높다고 보시면 됩니다.
그래서, IoT 사물인터넷 시스템 구축과 같은 하드웨어 적인 부분을 생각하신다면, 꼭 활용해 보시길 권해드립니다.
《 ESP-01의 사용법 》
기본적으로, ESP8266 모듈은 크게 두 가지 형태로 작동시킬 수 있습니다.
① 아두이노와 같은 마이크로 프로세서 보드에 연결시켜 wifi 기능을 해주는 어댑터로써의 역할이 가능합니다.
② 마치 아두이노를 사용하는 것처럼 ESP8266 모듈의 플래시 메모리에 코드를 올리고 동작시키는 컨트롤러 보드 형태로 사용 가능합니다. (물론 wifi기능도 사용 가능), 단, ESP-01 모듈의 경우 일반적인 아두이노 보드에 비해 코드를 올릴 수 있는 메모리 용량이 적으며, 활용 가능한 입출력 포트가 최대 2개뿐으로 확장성은 떨어지지만, 프로젝트를 구현할 때 사이즈가 작아지고 제어할 포트 수가 적은 곳에는 활용하기 좋습니다.
《 ESP-01의 통신 방법 》
- esp-01 모듈은 PC와 연결하여 코드를 올리려고 할 때 UART라는 통신방식을 사용하며, ①번과 같이 wifi 어댑터기로서의 동작을 위해서도 아두이노 같은 장치와의 연결에 UART라는 통신 방식을 사용합니다.
UART(Universal asynchronous receiver/transmitter)는 비동기 시리얼통신을 뜻하며 병렬 데이터의 형태를 직렬(시리얼) 방식으로 전환하여 전송하는 통신방법으로, 병렬 통신에 비해 적은 수의 케이블로 다소 긴 거리에도 에러 없이(보정) 통신이 가능한 장점이 있습니다.
PC와 ↔ 폰, PC와 ↔ 아두이노 사이에 사용되는 USB 케이블 통신이 대표적입니다. 그리고 esp-01 모듈과도 이런 UART 방식의 시리얼 통신을 이용합니다.
1. 펌웨어 업뎃(교체)을 하는 이유?
- 펌웨어 업데이트를 해야 하는 이유는 몇 가지가 있습니다.
시리얼 통신에서 데이터의 전송 속도를 나타낼 때 보-레이트(Baud Rate)라는 것을 사용합니다.
보-레이트의 속도 값을 나타내는 단위로는 bps(Bit per second)라 하여, 1초 동안 전송할 수 있는 비트(bit)의 수를 의미합니다. bps 속도는 보통 아래와 같은 값으로 약속하여 구분해 놓았고, 이 속도 중 하나로 선택하여 통신하게 됩니다.
1200bps, 2400bps, 4800bps, 9600bps, 19200bps, 38400bps, 57600bps, 74880bps, 115200bps,
230400bps, 250000bps, 500000bps, 1000000bps, 2000000bps
이때, 통신하는 기기는 서로 같은 속도로 설정을 해야 데어터를 정확하게 주고받을 수 있게 됩니다.
즉, PC와 ESP-01 모듈의 보-레이트 설정이 서로 같아야 하고, 아두이노와 ESP-01 모듈의 보-레이트 설정이 동일해야 제대로 통신이 된다는 이야기입니다.
그런데, esp-01은 생산되는 모듈의 제조시기나 업체(카피 제품 등)에 따라 내장된 펌웨어가 다르고, 펌웨어에 설정된 디폴트 보-레이트(Baud Rate)를 보통은 바로 알기 어렵습니다.
따라서 알고 있는(원하는) 속도의 펌웨어로 교체하기 위함이 있습니다.
그리고 esp8266은 AI-Thinker사의 AT-커맨드, 즉 명령어 기반의 AT 명령어를 수신하고 해당 명령어를 실행할 수 있는데, 이를 사용하기 위한 버전의 펌웨어로 업데이트(교체) 하게 됩니다.
AT-명령(커맨드) 펌웨어는 여러 가지 시리얼 통신프로그램이나 아두이노 IDE의 시리얼 모니터를 통해서 사용할 수 있으며, 문자열 기반의 AT통신 명령어를 사용하여 esp-01 모듈의 설정을 바꾸거나 하는 등의 명령을 보내어 실행(통신)시킬 수 있게 됩니다.
그리고 아울러 하드웨어 시리얼 통신 단자가 하나뿐인 아두이노 우노(나노)를 PC와 같이 사용하기 위해서는 펌웨어 업데이트(esp통신속도를 9600 bps로 낮춤)가 필요하기도 합니다.
(PC ↔ 아두이노 우노 ↔ esp-01 )
그런데 ESP-01 모듈의 펌웨어 업뎃을 반드시 해야 하는 건 아닙니다.
구매 모듈마다 다른 것 같은데요, 대개의 경우 구매한 모듈은 보통 ESP-01 모듈의 기본 펌웨어가 AT-커맨드(명령어)로 바로 통신이 되지 않는 펌웨어인 경우가 많은 것 같습니다. 이런 이유로 펌웨어를 바꾸게 되며, AT-커맨드 펌웨어 버전이나 종류에 따라 AT통신 명령어 지원 가짓수도 조금씩 다릅니다.
따라서, 작성하려는 코드와 통신속도가 일치하거나 하여, 디폴트 펌웨어 버전에 따라 필요 없을 수 있으며, 또한 esp8266을 wifi 어뎁터가 아니라 플래시 메모리에 아두이노처럼 코드를 올려 사용하고자 할 경우에는 펌웨어 업뎃 없이 바로 사용할 수 있습니다.
다만, 본 실습의 원활한 진행을 위해서는 안내해 드리는 펌웨어 버전으로 업데이트를 해주세요.
1. 실습 준비 : ① 실습 재료 준비 ② ESP-01 Adapter 및 주요 부품 소개
2. 펌웨어 업뎃 : ESP-01 모듈의 펌웨어 업뎃 ( 방법 ① 아두이노 나노보드 이용 / 방법 ② CP2102 USBtoTTL 이용)
3. Blynk 소개 & App 설치 (이후, 실습부터는 Blynk 앱을 설치한 스마트폰에서 wifi통신으로 제어하게 됩니다)
4. 《 하드웨어 제어 실습 with WiFi 》
- (실습 1) LED ON/OFF 제어하기
- (실습 2) 파워 TR을 이용한 미니 드론 모터 구동
- (실습 2) L9110S 모터 드라이버 모듈 이용한 DC 모터 구동
- (실습 3) 서보모터 구동 (실습 3-1) 서보모터 1개 각도 제어 / (실습 3-2) 서보모터 2개 구동하여 틸트 브래킷 제어)
- (실습 4) 릴레이 사용하여 220V 전등(전기제품) ON/ OFF 제어
- (실습 5) 온습도 센서 값 실시간으로 스마트폰에 표시하기(Blynk App 사용)
《 펌웨어 업뎃 실습 》
AT-커맨드 통신이 가능한 펌웨어를 업뎃하는 실습을 진행합니다.
ESP-01 모듈의 펌웨어 업뎃은 ①아두이노 우노(나노)와 같은 보드를 USB to TTL 어댑터처럼 사용하여 업뎃하는 방법이 있고 위에서 소개한 ② USB to TTL 변환 모듈을 이용한 방법이 가장 대표적입니다.
①번의 아두이노를 이용한 방법에서는 펌웨어 업로드(다운로드) 실패 시 리셋을 눌러보거나, 아두이노 보드를 PC USB에서 분리 후 다시 연결 시도해 보거나 하는 등의 조치가 필요할 수 있습니다.
개인적으로는 원샷 원킬로 바로바로 잘 되는 ②번 USB to TTL(CP2102) 모듈을 이용한 방법을 추천드립니다.
하지만 학습 차원에서 실습은 ①번과 ②번 모두 진행해 보는 것을 추천합니다.
펌웨어 업뎃을 위해서는 아래의 esp8266 flasher(플래셔) 프로그램이 필요합니다. 물론 다른 프로그램을 이용한 방법도 있지만, 여기서는 제일 심플하고 업뎃하기 간편한 아래 프로그램으로 진행하겠습니다.
첨부해드리는 압축 파일을 다운로드하여 풀면 3 개의 파일이 나옵니다.
"esp8266_flasher.exe" 파일이 펌웨어 업뎃을 해주는 프로그램이며, "v0.9.2.2 AT Firmware.bin" 파일이 이번 실습에서 업로드시킬 펌웨어 소스 파일입니다.
<펌웨어를 업데이트 하는 방법에는 대표적으로 다음 2가지 방법이 있습니다>
① 아두이노를 USB to TTL 어댑터처럼 사용하여 펌웨어 업데이트 하기.
② USB to TTL 전용 어댑터를 사용한 방법.
<※ 주의 사항~! >
flasher 파일을 실행시키기 위해서는 한글 이름으로 된 폴더 아래에서는 실행하지 마세요!
① 만약 한글 폴더 아래에서 프로그램을 실행시킬 경우 대표적인 증상으로, 'xxx.bin'파일을 연결시켜도 선택한 'xxx.bin'파일의 이름과 경로가 표시되지 않는 증상이 나타납니다. ( 상위 폴더 중에 하나라도 한글 폴더가 있으면 안 됩니다)
그리고, esp8266 관련된 다수의 펌웨어 파일이 존재하는데, 여기서 소개하는 방법을 실행하기 위해서는 여기서 소개해드린 "v0.9.2.2 AT Firmware.bin" 파일을 선택하세요. 물론, 다른 펌웨어 파일도 가능하지만, 통신 속도가 다르거나, AT-커맨드가 전혀 먹히지 않는 다른 용도의 펌웨어가 있으니 주의해야 합니다.
② 펌웨어 업데이트 회로를 구성할 때 영상에서 안내하는 것처럼, esp-01 모듈의 Rx수신 단자로 5V 신호 전압을 그대로 넣어서는 안 되며, 반드시 1㏀, 2㏀ 저항 분배 연결을 사용하여 3.3v로 다운된 전압을 넣어야 합니다.
<펌웨어 업데이트 실패시 체크사항>
1. 만약 아래와 같은 fail to connect라는 문자가 뜨면서 업데이트 진행이 되지 않는다면, 아래 사항들을 점검해 보세요.
1. 전원을 연결한 선을 뺐다가 다시 꽂아 본다.
(브레드 보드에 선을 연결할 경우 선의 접촉이 잘 안 될 수 있으니 접촉이 잘 되도록 확인)
2. TX와 RX 선이 제대로 연결되었는지 확인한다.
(아두이노의 Tx와 esp-01의 Rx와 연결하고, 아두이노의 Rx와 esp-01의 Tx와 교차로 연결하여야 통신이 됨)
3. ESP8266에 빨간 불이 들어왔는지 확인한다.
( ESP-01 모듈에 빨간불은 전원이 연결된 표시 이므로, 불이 들어오지 않는다면 ESP-01 모듈의 전원 연결 선을 체크)
4. 아두이노 USB 포트를 다시 뺐다가 연결한다.
(USB 포트 인식이 안 되거나, 잘 못된 USB 포트 번호를 넣어 진행할 경우 , USB를 다시 꽂아 보고, 정확한 포트번호 기입)
5. 'CH_PD단자'와 'GPIO 0 단자'를 확인한다.
(펌웨어 업로드 시에는 esp-01 모듈을 운용할 때와는 달리 CH_PD단자는 플러스(+3.3V)에 연결하고, GPIO 0 단자는 GND(0V)에 연결하여야 펌웨어 업로드가 제대로 진행이 된다.)
6. 전원을 5.0V로 잠시 바꾸어 연결하거나, 저항의 1:2 분배 연결을 통해 연결해준다.
( 아두이노 호환 보드를 사용하거나 할 경우 3.3V의 출력이 낮아 제대로 진행이 안 될 경우가 있으니, 짧은 시간 동안 아두이노의 5V 전원을 이용해 보거나, 5V단자로 바꾼 상태에서 1K 옴 저항과 2K 옴 저항의 분배 방법을 이용하여 높은 전류의 3.3V 전원을 넣어 본다. )
2. 만약 아래와 같은 'Invalid head of packet'이라는 에러 증상이 나타난다면, 아래 사항들을 점검해 보세요.
아두이노 코드를 Blink 예제 코드와 같은 기본 코드 혹은 내용을 모두 지우고 업로드 한 아두이노로 펌웨어 업데이트를 진행해본다. 아두이노에 Serial 통신을 사용하거나 하는 등의 기존 코드가 들어 있을 경우 이런 에러가 나타나기도 한다.
《 AT 통신 하기 》
AT 통신 관련해서는 아래 이전 게시글에 상세히 안내하였으니, AT통신 명령어의 종류나 기본 사용법 등을 참고하려면 아래 링크를 참고해 보세요.
① https://rasino.tistory.com/297
② AT-커맨드 통신 명령어 요약집(PDF) 파일을 첨부하였습니다.
여기서는 AT-통신이 되는 과정과 결과 위주로 설명드리고 있으니, AT-명령어/통신 관련된 기초 내용이 필요하신 분은 꼭 위 링크를 함께 참조해 보세요.
③ AT 통신을 위해서는 첨부해 드리는 아두이노 파일을 아두이노(우노 또는 나노 보드 등) 보드에 업로드 하세요.
《 1-1. 브레이크 아웃(BreakOut) 소켓 활용하여 AT-명령어/통신 테스트하기 》
먼저, BreakOut 소켓을 가지고 AT통신 테스트 및 동작을 시키기 위해서는 아래와 같은 연결로 바꾸어야 합니다. 그럼 아래 이미지는 앞서 소개한 breakOut 소켓과 나노보드를 기본적으로 연결한 회로입니다.
아래 수정된 회로를 참고하여 회로 연결을 펌웨어 업데이트용 연결 → AT통신 및 동작회로용 연결로 바꾸세요.
주의~! : 바로 아래 회로는 모듈 손상이 예상될 수 있는 연결이어서 연결을 삼가고 레벨 변환 저항을 사용한 회로로 연결해야 합니다~!
② USB to TTL 전용 어댑터를 사용한 방법.
CP2102 어댑터와 같은 USB to TTL 전용 어댑터를 사용하면, 업데이트 작업이 편리하고 업데이트 성공률이 개인적 기준으로 거의 90% 이상 나올 정도로 잘됩니다. 그리고 아래 이미지 나와 있는, esp-01 breakout 소켓이 있으면 좀 더 편하게 작업이 가능하지만, 만약 없다면, 점퍼선으로 바로 연결하면 됩니다. esp-01 보드는 핀 구조가 2줄로 좁게 배열되어 있기 때문에, 브레드보드에 직접 꽂아서 연결할 수 있는데요, breakout 소켓을 사용하면, 브레드보드에 꽂을 수 있고 부가적인 부품과 함께 회로 연결을 할 수 있어 편리합니다.
첨부해드리는 연결도와 같이 연결하고, 앞서 자료 링크한 esp8266 플래셔(flasher) 프로그램을 다운로드하여 사용하는 방법을 똑같이 진행하면 됩니다. 단, 이때 포트번호는 장치 관리자에서 CP2102 USB to TTL 모듈의 COM 포트 번호로 입력하여 Download 진행하면 됩니다.
<펌웨어 업데이트 실패시 체크사항>
1. 만약 아래와 같은 fail to connect라는 문자가 뜨면서 업데이트 진행이 되지 않는다면, 아래 사항들을 점검해 보세요.
1. 전원을 연결한 선을 뺐다가 다시 꽂아 본다.
(브레드 보드에 선을 연결할 경우 선의 접촉이 잘 안 될 수 있으니 접촉이 잘 되도록 확인)
2. TX와 RX 선이 제대로 연결되었는지 확인한다.
(아두이노의 Tx와 esp-01의 Rx와 연결하고, 아두이노의 Rx와 esp-01의 Tx와 교차로 연결하여야 통신이 됨)
3. ESP8266에 빨간 불이 들어왔는지 확인한다.
( ESP-01 모듈에 빨간불은 전원이 연결된 표시 이므로, 불이 들어오지 않는다면 ESP-01 모듈의 전원 연결 선을 체크)
4. 아두이노 USB 포트를 다시 뺐다가 연결한다.
(USB 포트 인식이 안 되거나, 잘 못된 USB 포트 번호를 넣어 진행할 경우 , USB를 다시 꽂아 보고, 정확한 포트번호 기입)
5. 'CH_PD단자'와 'GPIO 0 단자'를 확인한다.
(펌웨어 업로드 시에는 esp-01 모듈을 운용할 때와는 달리 CH_PD단자는 플러스(+3.3V)에 연결하고, GPIO 0 단자는 GND(0V)에 연결하여야 펌웨어 업로드가 제대로 진행이 된다.)
6. 전원을 5.0V로 잠시 바꾸어 연결하거나, 저항의 1:2 분배 연결을 통해 연결해준다.
( 아두이노 호환 보드를 사용하거나 할 경우 3.3V의 출력이 낮아 제대로 진행이 안 될 경우가 있으니, 짧은 시간 동안 아두이노의 5V 전원을 이용해 보거나, 5V단자로 바꾼 상태에서 1K 옴 저항과 2K 옴 저항의 분배 방법을 이용하여 높은 전류의 3.3V 전원을 넣어 본다. )
2. 만약 아래와 같은 'Invalid head of packet'이라는 에러 증상이 나타난다면, 아래 사항들을 점검해 보세요.
아두이노 코드를 Blink 예제 코드와 같은 기본 코드 혹은 내용을 모두 지우고 업로드 한 아두이노로 펌웨어 업데이트를 진행해본다. 아두이노에 Serial 통신을 사용하거나 하는 등의 기존 코드가 들어 있을 경우 이런 에러가 나타나기도 한다.
이번 실습에서는 Blynk(블링크)라는 서비스와 앱을 사용하여 진행합니다.
일반적으로 집안에서는 wifi를 통해 내부 네트워크(사설 IP)에 연결된 IoT 작품들을 스마트폰으로 컨트롤 하기는 쉽습니다. 하지만, 집 밖 외부에서 컨트롤하려면 "wifi 라우터"의 공인 IP를 IoT 기기가 할당받은 IP로 포트 포워딩 설정을 해야 하는 등의 까다로움이 있습니다. 그리고 스마트폰에서 제어할 목적으로 앱 같은 것을 만들 때, 앱인벤터를 사용하면 전문적인 앱 개발 프로그램에 비해 제작이 쉽긴 하지만, 앱인벤터 사용법이나 코딩 관련 학습이 부족하면 역시 접근에 어려움이 있는 것이 사실입니다.
이에 블링크(Blynk)라는 서비스는 공개 사이트처럼 작동되는 서버를 이용하기에 라우터의 포트 포워딩 조치 필요 없이 접근이 가능하며, 직관적인 앱 작성과 강력한 Blynk 자체 라이브러리 제공으로 인해 몇 분 안 걸려 뚝딱하고 앱을 만들 수 있는 서비스입니다. 아두이노 코드에서도 센서의 신호에 일일이 대응하는 코드 작성의 어려움 없이, Blynk 라이브러리와 서버에서 모두 처리를 해주기 때문 몇 가지 함수 선언과 약간의 코드 설정만으로도 코드가 완성되어 코드 작성이 쉬워, IoT 서비스를 쉽게 구현할 수 있는 장점이 있습니다.
이번 실습에서 블링크를 활용하려는 목적은 외부에서도 쉽게 집안에 있는 네트워크에 연결된 IoT 작품들을 컨트롤하기 위함이 가장 큽니다.
집안에서 같은 WiFi 네트워크에 접속된 esp8266wifi 모듈을 제어하기는 쉽지만, 외부(네트워크)에서 집에 설치해 놓은 'esp8266+프로젝트'를 컨트롤 하기는 쉽지 않습니다.
이에, 공인 서버의 역할을 할 수 있는 Blynk Server 클라우드로 이런 문제를 해결하고 서비스를 제공하고 있습니다.
게다가, 안드로이드와 애플 IOS에서 각각 사용할 수 있는 Blynk App을 이용하면, 복잡한 코딩 작성 없이 아주 쉽게 IOT 시스템을 제어할 수 있는 앱을 만들 수 있어서, 현재 많은 인기를 얻고 있습니다.
기본적인 사용은 무료이며 energe라는 시스템을 사용합니다. 처음 시작할 때 2000 energy가 무료로 주어집니다.
앱을 제작할 때 버튼 같은 구성요소를 위젯이라 부르는데, 제일 작은 버튼 같은 경우 200 energy가 소요되며, 구성요소 모두 해서 2000 energy까지는 무료로 이용할 수 있습니다. 만약 더 많은 버튼이나 구성요소를 추가 사용하고 싶을 때는 소정의 결제로 에너지를 키울 수 있습니다. 또한 본인이 만든 앱을 타인에게도 이용하게 할 경우에도 소정의 비용 결제가 필요한 것으로 보입니다.
접속 서버는 블링크에서 제공하는 블링크 클라우드 서버를 이용할 수 있으며, 다른 공개 서버를 선택해 이용할 수도 있습니다. 학습 목적으로 또는 본인이 이용하기 위한 간단한 시스템 정도는 거의 비용들이지 않고 앱을 만들어 활용할 수 있습니다. 블링크는 Arduiono 시리즈, ESP8266 시리즈, Raspberry Pi 시리즈 등 거의 대부분의 마이크로 프로세서 보드를 지원하고 있습니다.
[ 블링크 앱 설치 & 계정(회원) 등록 ]
먼저 https://blynk.cc (또는, blynk.io ) 사이트로 접속합니다. 여기서 자신의 이메일 주소 하나를 아이디로 선택하고 회원가입을 할 수 있으며, Blynk앱에서도 회원가입이 됩니다. 구글 앱과 애플의 IOS용 앱 모두 동일하게 서비스됩니다.
어차피 Blynk 앱을 설치해야 하니, 플레이스토어(앱 스토어)에서 앱을 다운로드하여 설치하세요.
[ Blynk 라이브러리 설치 ]
아두이노 IDE에서 Blynk 관련 라이브러리를 이용하기 위해서는 관련 라이브러리를 설치해야 합니다.
이 Blynk 라이브러리로 인해, 아두이노 코드가 매우 간단해져 코드 작성이 쉬워집니다.
링크를 통해 다운로드 받거나 첨부해드리는 라이브러리를 다운로드 하여 설치하세요.
이번 실습들은 전부 V0.61 버전으로 진행하였기에, V0.61 버전을 설치하세요. (V0.6.1 클릭)
최신 버전이라고 무조건 좋다고 말할 수 없으며, 버전에 따라 라이브러리 사용법이 달라질 수 있기 때문에 작업에 문제없는 버전으로 선택하는 것입니다. ( 만약, 버전을 바꿀 경우, 코드를 변경해야 할 수도 있습니다.)
만약, 'V0.61'버전으로 실습이 성공하였다면, 다른 버전으로 테스트를 해보는 것도 좋습니다
클릭 후, 나오는 화면 아래쪽으로 스크롤해보면, 아래처럼 다운로드할 수 있습니다.
다운로드한 압축파일을 풀고 C:\Document\Arduino\libraries\ 아래에 붙여 넣기 하거나,
아두이노 IDE 메뉴에서 ". ZIP 파일로 라이브러리 등록하기"를 이용할 수 있습니다.
만약, .ZIP파일 등록하기를 할 경우, 현재의 압축상태로는 추가되지 않는데요,
압축을 풀고 압축파일 속, libraries 아래 Blynk 폴더만 따로 다시 압축하여 등록하면 추가됩니다.
또한 아두이노 IDE의 라이브러리 매니저 검색창에서 "Blynk"로 검색하여 추가해 주면 됩니다.
Blynk 서비스가 2.0으로 업데이트 되었습니다.
현재 이 강의를 듣는 시점에 Blynk에 회원가입이 되어 있지 않는 신규 가입 유저의 경우 무조건 Blynk2.0서비스로 이용하도록 되어 있습니다. 따라서 Blynk.2.0 서비스 사용법을 추가로 제공하고 있으니 본 영상을 꼭 참고하셔서 나머지 섹션의 강의 실습에 적용해 보세요.
첨부파일에(또는 영상) 있는 연결도를 참고하여 회로를 조립해 주세요.
이번 실습부터는 가장 활용하기 편한 ESP-01 어댑터 모듈을 사용하여 실습을 진행합니다.
만약, 어댑터가 없더라도, 위에서 소개한 BreakOut 소켓이나 다른 종류의 어댑터를 사용해도 좋지만, 가급적 위 이미지에 있는 어댑터를 준비해 주시면 훨씬 작업이 간단하고 편해집니다.(레벨 변환 저항이 어댑터에 내장되어 있어 연결이 간단해집니다)
아래는 어댑터가 없을 경우 BreakOut 소켓을 이용한 연결이니 참고해 주세요. 아래와 같이 연결 후 D2, D3에 LED와 저항을 추가로 연결하면 위와 같은 회로가 됩니다. 이어지는 다른 실습들도 이와 같이 연결하면 됩니다.(따라서, 이후로는 esp-01 어댑터를 이용한 연결도만 보여드립니다)
그럼, 이와 같이 연결된 회로(Nano)에 아두이노 코드를 넣어야 하는데요, 조금 전에 라이브러리 설치와 함께 Blynk관련 예제 파일도 설치가 되는데요, 이 예제 파일을 베이스로 코드 작성을 쉽게 할 수 있습니다.
그리고, 각각의 예제를 열어 참고해 보면, Blynk 서비스 적용을 위한 코드 파악에도 도움이 됩니다.
이런 예제 파일에는 Blynk 서비스를 사용할 수 있는 예시 코드들이 있기 때문에 수정이 필요한 항목만 채워주면 매우 쉽게 여러분의 응용 작품에 적용시킬 수 있습니다.
아두이노 실습 코드 파일은 별도로 첨부했으니 그 것을 사용하면 간편히 업로드 할 수 있으며, 아래와 같이 예제 파일을 열어서 수정 사용해도 됩니다.
아두이노 IDE의 예제 파일을 열어서 기본으로 사용할텐데요, 예제 파일은 Blynk 》 Boards_WiFi 》'ESP8266_Shield' 예제를 여세요.
(아래 내용은 영사에 자세히 설명되어 나오니 영상을 참고해 주세요)
auth [ ] = 이 부분의 인증 토큰은 Blynk 앱에서 프로젝트를 만들 때(Create Project), 프로젝트마다 발급됩니다.
그리고, esp-8266 모듈이 접속할 WiFi 이름(SSID)과 비번(PASS)을 입력해 주세요.
자신의 집이나 회사에서 실습을 한다면 해당 WiFi 공유기의 주소와 비번으로 적으면 되고, 만약, 주변 WiFi 공유기를 연결할 수 있는 상황이 아니라면, 핸드폰의 핫스팟을 이용하면 됩니다.
그럼, 블링크 앱을 열고 가입한 E-mail ID와 비번으로 로그인을 합니다.
New Project를 클릭하세요. 프로젝트 이름에는 'LED On/Off' 등 적당히 입력하고, CHOOSE DEVICE 디바이스 선택에서는 반드시 ③번처럼, Arduino Nano를 선택해야 합니다.
왜냐하면, 여기서 esp8266-01 보드는 단순히 WiFi 어댑터 기능만 하기 때문에, 프로그램을 올리고 실행시켜주는 보드로 나노(우노)를 사용하고 있기 때문이죠. 따라서 앱인벤터를 통해 아두이노 Nano(우노) 보드를 제어하는 것으로 이해해야 합니다.
접속 타입은 WiFi를 선택하고 Create Project를 누르세요.
그럼, 곧바로 이메일로 방금 만든 프로젝트와 관련된 토큰이 전송됩니다.
그럼 E-mail을 열어서 보내준 토큰을 복사 후 위 코드 auth [ ] = 에 '붙여 넣기' 하면 됩니다.
※ 중요! ESP8266의 통신 속도는 9600 bps로 합니다!
(esp-01 모듈의 펌웨어가 9600 bps로 되어 있기 때문입니다!)
모터 같은 종류는 아두이노 포트의 작은 출력(약, 40mA)으로는 직접적으로 돌리기 힘듭니다.
따라서 모터를 움직여줄 전력을 배터리로 따로 공급하게 되며, 아두이노 포트의 출력은 On/Off 신호로 활용하게 됩니다. 전자적인 스위치 작용을 하는 TR(파워 TR)을 이용해서 위 도면처럼 구성하면 모터를 제어할 수 있습니다.
즉, 아두이노 포트 출력이 있을 때(High, 1)는 TR이 On 되어, 모터와 배터리 회로가 완전히 연결되어 모터가 동작되며, 아두이노 포트에서 출력이 없을 때(Low, 0)는 TR이 Off 되어, 모터와 배터리 연결이 차단되어 모터가 정지하게 됩니다.
뒤에 나오는 (실습 3)에서는 TR 대신, IC를 사용한 모터 드라이버 모듈을 사용하게 되는데요, 연결과 사용이 간편하고, 정·역 방향 제어까지 쉽게 할 수 있습니다.
모터는 내부가 코일 형태로 되어 있어, 동작시킬 때 반대 방향으로, 역기전력이 발생하게 되는데요, 이로 인해 주변 회로(부품)가 손상을 입을 수 있는데, 이를 방지하기 위해, 다이오드를 모터 가까이 화면과 같은 방향으로 연결하면 역기전력(역전류)으로부터 보호할 수 있습니다. 만약 단순히 테스트로 끝낸다면 다이오드를 생략할 수 있습니다.
이번 실습에서는 모터 드라이버 모듈 활용법과 DC 모터의 정역 제어까지 다루어 보겠습니다.
아래, 이미지가 이번 실습에 사용될 L9110S IC를 사용해서 만든 모터 드라이버 모듈입니다.
모터 드라이버 모듈에는 여러 종류가 있으며, 모터 용량이나 기타 상황에 맞게 선택하면 됩니다.
사용하려는 모터와 이를 돌려줄 전원과 드라이버 모듈의 스펙이 서로 맞아야 합니다.
공급 전원(배터리)은 반드시 모터와 모듈의 입력 전압 범위 내에 있어야 합니다.
용량이 다소 큰 모터를 사용하거나, 또는 현재 모터가 돌아가는 힘이 약하다면,
배터리의 전력(전압보다는 전류가 중요)을 높여주세요
(ex, 9V 사각 배터리는 전압은 높지만 출력 전류가 낮아 모터용 전원으로는 부적합)
필요할 경우, L9110S 모듈의 출력 전류보다 높은 모듈을 사용하세요.
영상이나 첨부 파일에 있는 도면을 보고 회로를 연결하세요.
만약 모터가 용량이 적더라도 고속으로 회전하는 모터라면, 작동 시 제어력을 잃을 수 있습니다.
이럴 때는 저속 모터나, 회전 기어가 들어간 모터를 사용해 보세요.
만약, 나노에 연결된 PC USB의 전원만으로도 모터가 힘겹게 돌아간다면, 모터용으로 적합한 보조 전원을 위 연결도처럼 연결해 주세요.
서보모터를 구동하기 위해서는 PWM이라는 신호가 필요합니다.
[ PWM 개념도 ]
디지털 보드인 아두이노에서는 아날로그 신호(전압)를 출력할 수 없는데요,
아래와 같이 PWM 방식을 이용하여 아날로그 출력을 보내어 LED 밝기 조절과 같은 할 수 있게 됩니다.
마찬가지로 일정한 간격의 PWM 신호를 출력하여 서보모터의 제어신호를 입력해 줄 수 있습니다.
이번 실습에서는 서보 모터를 WiFi를 통해 핸드폰으로 제어해 볼게요.
가격이 저렴하고 많이 사용되는 180˚회전용 SG90을 사용해 보겠습니다.
서보(모터)의 각도 제어 방법은 모터 구동을 위한 전원을 두 가닥의 전선으로 공급합니다.
그리고 주황색의 선으로 모터의 회전각을 결정해 줄 신호를 입력하면, 원하는 각도로 움직이게 할 수 있습니다.
그럼, 어떤 신호를 넣어야 하는지 살펴보겠습니다
서보는 20ms 주기의 신호에서 1~2ms사이의 펄스 신호로 동작하도록 되어 있습니다.
이때, 이 펄스 신호가 1ms이면, 0˚의 위치로 회전합니다.
마찬가지로, 1.5ms 이면 90˚ , 2ms이면 180˚도로 회전하게 됩니다.
즉, 1~2ms 사이의 펄스로, 0˚~180˚의 각도를 움직이게 합니다.
그런데, 아두이노에서 단순히 PWM 출력 포트로 analogWrite( ) 함수를 사용해서는, 1~2ms의 펄스를 출력하더라도 20ms의 파형 주기를 맞추기 어렵기 때문에, 직접적으로 서보를 돌리기는 어렵습니다.
그래서 대부분의 경우, 아두이노 IDE 설치 때 포함되는 <Servo.h> 헤더 파일을 이용해서 제어합니다.
(단, 주의! <Servo.h>를 사용하면, 메가를 제외한 아두이노 보드류에서는 9번, 10번에서 PWM 출력 안 됨)
아두이노에서는 <Servo.h> 헤더에 포함된 servo.write(각도) 함수를 이용해서 직접 제어할 수 있고,
(아래) Blynk에서는 이런 형태로 함수를 사용해서 ,
Blynk앱의 가상 포트(V0)로 입력되는 값을 WiFi로 전달 받아 서보의 각도를 제어하게 됩니다.
이번 실습은 전등을 WiFi로 제어해 보는 실습입니다.
LED를 WiFi로 제어할 수 있다면, 220V 높은 전압의 전등이라도 제어가 가능합니다.
바로, 릴레이라는 모듈을 사용하면 되는데요,
220V의 높은 전압으로 돌아가는 회로와 5V의 아두이노 회로를 분리해서 동작시킬 수 있어 회로를 보호하면서 낮은 전압으로 높은 전압을 제어할 수 있게 해 줍니다.
그럼, 전등 연결 부분을 자세히 설명드립니다.
전등에 불이 들어오게 하는 구조는 매우 단순한데요, 화면처럼 단순히 220V 코드선을 연결해 주면 됩니다.
그런데 전등과 코드선을 좀 더 쉽게 연결시키기 위해서는 리셉터클이라 불리는 전등 소켓을 이용하면 전선과 쉽게 연결할 수 있습니다.
소켓의 캡을 돌려 열면 나사로 된 전선을 연결할 수 있는 부분이 나오는데요.
소켓 아래쪽 구멍으로 전선을 넣어 빼내고 나사를 살짝 풀어 그 부분에 전선을 감으면 됩니다. (첨부 파일 중, 조립 이미지 참조)
220V 코드선을 연결하고 램프를 돌려 끼워주면 됩니다.
만약 접지선이 있는 3가닥 코드선이라면 접지선(노란색 바탕의 녹색띠)을 제외하고 연결하면 됩니다.
그리고 릴레이를 두 선 중 아무 선이나 화면처럼 중간에 연결하여 릴레이를 통해 전선을 연결하거나 끊는 스위치로 작동시켜 전등을 On/Off 하게 됩니다.
VCC-GND에는 5V 가량의 전기를 공급하여 릴레이가 동작할 수 있게 하는 것이며, 아두이노를 통해 IN 핀으로 Low신호(Low level trigger 릴레이 사용 시)가 입력된다면 평상시 릴레이의 공통 단자인 COM 단자가 ↔ NC와 연결되어있던 것이 해제되면서 COM ↔ NO 단자로 연결이 바뀌게 됩니다.
코일을 이용한 전자석의 원리로 작동시키기 때문에 NC , NO , COM 단자 쪽에 220V 전기가 흘러도 아두이노 쪽에는 전혀 문제가 되지 않습니다.
만약, 하나 이상의 기기를 각각 제어하고 싶다면 릴레이 모듈 수를 늘리면 되는데요, 릴레이 두 개를 합쳐 놓은 2 채널 및 4 채널, 8 채널, 16 채널 등의 모듈 제품을 활용할 수 있습니다.
220V 가전제품도 WiFi로 제어가 가능한데요,
이런 전기류에 대한 경험이 부족한 경우 참고용으로 봐주세요.
제품의 전원코드에 손을 대지 않고 편하게 활용할 수 있는 방법을 설명드립니다.
또한, 접지를 사용할 수 있도록 해주는 것이 전자제품도 보호할 수 있고 전기 감전이 되지 않도록 해주는데요,
예를 들어, 믹서기를 사용하고서 플러그 부분을 만지다 감전되어 깜짝 놀라는 경우도 접지를 통해 믹서기 내부에 저장된 전기를 흘려보내지 못했기 때문에 발생합니다.
아래 전원 코드를 잘라 보면 3색의 전선이 나오는데요, 갈색, 파란색 선이 실제 전기가 흐르는 선이며 노란색과 녹색 줄이 함께 있는 선이 접지와 연결된 접지선입니다.
220V 라인에 직접 손이 닿아 감전이 되지 않도록 마감(절연) 처리를 잘해주어야 하며, 전원 코드 줄이 당겨졌을 때, 합선이 되지 않도록 고정에도 신경을 써주어야 합니다.
이번 실습에는 DHT11 온도/습도 겸용 센서 모듈을 사용합니다.
가격이 저렴하고 온도와 습도까지 측정할 수 있어 많이 활용되는 센서입니다.
특징으로, 데이터 출력(측정) 주기가 최소 2초 이상이기 때문에 코드를 작성할 때 데이터 샘플링 주기를 2초 이상으로 해주면 좋습니다.
4핀의 DHT11 센서에 데이터 출력을 위한 저항이 연결된 3핀의 모듈을 사용하는 것이 훨씬 편리합니다.
여기서는 DHT11 센서 사용을 위해 DHT.h 라이브러리를 사용합니다. (첨부해드리는 DHT.ZIP 파일을 다운로드하여 설치하면 편리합니다)
만약, 소수 첫자리까지 출력되는 좀 더 정밀한 센서가 필요하다면, 지금 소개하는 DHT22 센서를 사용하세요.
DHT22 센서는 0.1℃ 단위로 표시되며, 온도/습도 측정 범위도 DHT11보다 넓습니다. (단, 코드부분의 라이브러리를 , DHT22용으로 변경해야 합니다)
다만, DHT22센서 가격이 DHT11보다 두 배 정도 비싸고 DHT11 센서만으로도 충분히 활용하기 좋기에 DHT11 센서가 대체적으로 많이 사용되고 있습니다.
# ESP-01 + 아두이노 나노 + Blynk의 최적의 갓성비 조합을 이용해서 스마트폰 WiFi를 통한 IoT 제어 장치를 만들어 보는 학습 시리즈를 준비했습니다. ESP8266 중 베스트 모듈인 esp-01 모듈의 기본 사용법(펌웨어 업데이트 포함)과 어려운 앱 코딩이 전혀 필요 없는 Blynk 앱 사용법을 포함하였습니다.
본 영상 강좌를 통해, WiFi 모듈의 대명사인 ESP8266 ESP-01 모듈의 사용법을 익힐 수 있으며, 아두이노와 함께 Blynk 서비스를 활용하는 방법에 대해 학습하실 수 있습니다.
하드웨어와 연동할 수 있는 앱 개발을 위해 어려운, 자바, 코틀린, Swift와 같은 코딩 언어를 힘들게 학습하지 않아도 쉽게 앱을 개발할 수 있는 Blynk 서비스를 활용(무료로 이용 가능) 하는 방법에 대해 익힐 수 있습니다. ( 안드로이드 폰의 Android OS와 애플의 IOS 모두 대응 가능)
이와 함께 실제 활용 가능한 생활 속의 IoT 기기들을 직접 만들어 볼 수 있도록 활용성 좋은 6가지의 예제를 준비했습니다.
이 번 풀코스 학습 과정 하나로 여러분의 IoT 관련 지식이 더욱 풍성해질 것으로 기대됩니다.
그럼, 여러분만의 IoT 기기를 만들어 멋지게 활용해 보세요.
현재 : Blynk 서비스가 2.0으로 업데이트 되었습니다.
현재 이 강의를 듣는 시점에 Blynk에 회원가입이 되어 있지 않는 신규 가입 유저의 경우 무조건 Blynk2.0서비스로 이용하도록 되어 있습니다. 따라서 Blynk.2.0 서비스 사용법을 추가로 제공하고 있으니 본 영상과 함께 아래 Blynk2.0 사용에 관한 예시 영상을 수강신청시 메시지로 보내드립니다. 참고해 보세요.