와이파이에 의한 아두이노 사물인터넷 IOT 코딩에의 초대

in #kr7 years ago (edited)

초보 수준에서의 아두이노 배선과 코딩을 충분히 경험하였기 때문에 이제는 사물인터넷 즉 IOT 코딩으로 넘어갈 단계이지만 아두이노 코딩 시리즈는 계속 넘버링을 추가하면서 계속 될 예정입니다. 특히 사물인터넷 코딩에서도 IOT 코딩-# 형식으로 시리즈를 올릴 계획이니 검색에 참조하시기 바랍니다. 한가지 우려겠지만 사물인터넷 코딩에서 부터는 시리즈 번호 5번정도까지는 순차적으로 따라 오는 것이 좋을 듯합니다.

아무래도 진짜 초보자는 아두이노 코딩을 먼저 경험해 보는 것이 좋을듯합니다.

아두이노의 배선(Wiring) 문제
초보자를 위한 아두이노 소개 과정에서 다루었던 모든 코딩들은 코드 내에 필요한 모든 명령들이 포함되어 있어서 아두이노 CPU 에 USB 케이블을 통해 업로딩되어 직접 실행된다. 아두이노 시계 코드에서는 좀 특이하게 실행 시작 시점에서 시리얼 모니터를 통하여 아두이노 시작 시각을 입력했었다.

아두이노는 자체에 OS 가 있는 컴퓨터로서가 아니라 업로딩 된 코드를 실행만 하는 마이크로 콘트롤러 역할을 주로 하기에 별도의 키보드라든지 디스플레이가 없는 업로딩을 위한 최소한의 입출력 디바이스 장치만 갖추고 있다.

과연 아두이노는 자체 키보드나 디스플레이를 갖출 수 없는 것일까? 그렇지는 않다. 아래의 배선 사례에서도 참고해 볼 수 있지만 입출력 디바이스 문제 해결을 위해서라면 와이어링 문제가 필연적으로 발생한다, 즉 배보다 배꼽이 더 커지는 문제가 내재 되어 있다. 물론 PCB 디자인을 하게 되면 다 해결되는 문제이긴하다. 어쨋든 아두이노는 100% 점퍼선을 사용하는 프로토타입 방식을 지원하므로 그러한 한도 내에서 아두이노를 사용해야 한다는 점을 명심하자.

noname01.png

그헣다면 과연 해결책은 과연 없는 것일까? 무선 와이파이와 블루투스가 그 해답이다.
아두이노가 무선공유기나 스마트폰의 테더링 기능을 사용하여 외부와 연결이 된다면 많은 문제가 해결이 될 가능성이 있을 것이다. 아두이노 보드의 크기가 작은 탓에 유선 이더넷은 그리 바람직하지 않은듯하다.

아두이노보다는 좀 규모가 있지만 리눅스 OS를 사용하는 컴퓨터급 라즈베리 파이 보드에서는 보드 크기는 아두이노와 비슷하지만 이미 디스플레이 인터페이스와 블루투스 키보드와 와이파이 기능을 제공하고 있다.

noname02.png

와이파이가 가능한 아두이노 호환 보드
가장 보편적으로 사용되는 아두이노 표준 보드는 Uno 보드이다. 우노 외에도 Mega2560, 프로마이크로, 나노를 비롯하여 많은 호환 보드가 있다. 이들 보드로 무선 와이파이 제어가 가능할까?
답은 No 이다. 무선 와이파이 방식으로 코딩하여 제어하려면 아두이노 호환 보드들 중에 와이파이 기능이 가능한 보드를 찾아야 한다.

첫 번째 방법은 아두이노 와이파이 쉴드 보드를 사용해야 한다. 쉴드라는 것은 표준 규격의 아두이노 우노 보드에 끼워서 사용할 수 있는 보드를 의미한다. 아래의 사진은 Adafruit 사에서 발매하고 있는 아두이노 우노용 와파이 쉴드 보드로서 가격이 50 달러대이다.

앞서 사진으로 소개한 라즈베리 파이 3 보드의 가격이 50 달러대이므로 와이파이 쉴드의 가격이 50달러 수준이라는 것은 상당히 부담스러울 수 있다.

noname03.png

두 번째 방법으로서 와이파이 통신이 가능한 아두이노 호환 보드들이 있다. 물론 가성비도 중요하므로 그 가격이 아두이노 우노 본체의 가격과 비슷한 수준이라야 하비(Hobby)용으로 제격일 듯하다. 아래의 두 모델은 그 가격이 10,000원 안팎으로 그 성능이 만족 스럽다. 모습은 크게 다르지만 무선 와이파이를 가능하게 하는 동일한 라이브러리 즉 ESP8266.h를 사용한다는 공통점이 있다.
구매 시에 반드시 커넥터 납땜이 되어 있는 모델을 구매하면 좋을 듯하다.

다음 단계에서 부터는 내용이 그다지 어려운 것은 아니나 반드시 실물이 있어야 한다. 가상 시뮬레이터로 시뮬레이션이 안 된다는 점도 유념하자. 즉 10,000원 안팎의 실물 투자가 필요한 지점이다.

noname04.png

와이파이에 의한 IOT 코딩

그 외에도 와이파이가 가능한 아두이노 호환 모델이 있을 수 있으나 여기에서는 이 두 모델에 집중해서 와이파이에 의한 IOT 코딩을 진행하기로 한다.

와이파이가 가능한 아두이노 코딩 영역으로 넘어오면 IOT(Internet of Thing)라는 용어가 항상 따라 다닌다. IOT는 무엇을 의미하는가? Thing 이란 사물을 뜻하며 쉬운 예로서 냉장고, 세탁기, MP3 플레이어 와 같은 가전제품과 스마트 폰을 들 수 있을 것이다. 즉 이들 상호간에 인터넷이 가능해진다는 의미이다.

과연 냉장고와 인터넷을 통해서 무엇을 할 수 있을까? 수준 높은 대화??? 냉장고의 온도, 습도 및 냉장고에 보관 중인 음식료 리스트 정도를 주고받는 수준이 아닐까? 아니면 스마트 폰에서 아두이노의 LED를 무선으로 끄고 켠다든지, 또는 아두이노에서 필요로 하는 데이터를 스마트 폰으로 입력해서 보내는 작업도 가능할 것이다. 더 나아가서 Matlab 사가 제공하는 Thingspeak 에 아두이노에서 측정한 온습도 데이터를 송신하여 그래프 작업도 가능해질 것이다.

수많은 응용이 있을 수 있으므로 앞으로 코딩을 통해서 직접 살펴보도록 한다.

noname00.png

WeMos D1(Retired) 버전의 선택과 보드 매니저에 의한 설치 작업
WeMos D1 은 모양에서 볼 수 있듯이 아두이노 우노와 거의 동일한 구조를 보여준다. 물론 WeMos 보드가 아두이노 우노처럼 Atmel CPU를 사용하지는 않으나, 그 대신에 WiFi를 지원하는 ESP8266 12E 칩이 장착되어 있으며 거의 아두이노와 유사한 수준의 코딩이 가능하다.
디지털 핀 배치도 아두이노 우노와 거의 같다. 크게 다른 점은 아날로그 채널 핀이 A0 하나인 점을 지적해 두자.

아두이노 우노와 규격 치수가 동일하기 때문에 아크릴 박스에 집어넣을 수 있는 이점도 있다.

noname05.png

WeMos 버전 선택에 따른 Arduino IDE 다운로드 및 설치과정에서의 변경 사항은 없는가?
다운로드 설치가 되어 있다면 변경 사항은 전혀 없으며 보드 매니져에서 weMos 보드 업데이트가 필요하다. 툴->보드->보드 매니저 를 선택하자.

noname06.png

박스에 wemos를 입력하면 esp8266 by ESP8266 Community 버전 2.3.0 INSTALLED 라는 메시지가 뜨는데 이미 설치되어 있다는 의미이다. 만약 설치가 되지 않았다면 install 버튼을 누르도록 한다.

noname07.png

설치 작업이 완료되었으면 다시 보드를 눌러 길게 늘어진 메뉴를 따라 내려가 WeMos D1(Retired) 와 NodeMCU 1.0(ESP-12E Module) 이 나타나는지 확인한다.

noname08.png

CH340G 장치드리이버가 설치되었는가?
아두이노 코딩 연재 초기부터 설치과정에서 미리 Ch340G 장치드라이버 설치를 권고했는바 그 목적이 바로 IOT 코딩 즉 사물인터넷 코딩으로 넘어가기 위한 포석이었다는 점을 밝혀 둔다.
설치하면 될 일이지만 초기부터 장치 드라이버 문제가 해결되어 있지 않으면 되니 안되니 하면서 재미로 시작한 아두이노 집어 치우게 될 공산이 크기 때문이다.

연관된 블로그를 참조하는 것도 도움이 될 것이다.

초보자를 위한 아두이노 코딩연재-6: CH340G 드러이버 설치, 아두이노 코딩에 의한 LED ON OFF
https://steemit.com/kr/@codingart/6-ch340g-led-on-off

초보자를 위한 아두이노 코딩 입문연재-10: USB 드라이버 CH340G 드러이버 설치 및 아두이노 호환 보드의 반응
https://steemit.com/kr/@codingart/10-usb-ch340g

일단 Ch340G 가 설치되었는지 여부는 WeMos 보드 USB 케이블을 COM 포트에 연결 후 장치 관리자를 체크하면 된다. 다음과 같이 WeMos 가 인식된 결과를 확인하자. NodeMCU 보드를 사용해도 마찬가지 일 것이다. 단 NodeMCU는 아두이노 호환 보드로 사용하기 위해서 별도의 Firmware 설치 작업이 선행 되어야 함을 지적한다. 차후에 블로그로 포스팅하도록 할 계획이다. 하지만 WeMos 는 Firmware 설치 없이 그냥 사용이 가능한 이점이 있다.

noname09.png

LED 설치 없이도 WeMos 보드의 붙박이 LED ON OFF 가 가능한가?

첫 시작에 LED를 ON OFF 해보는 과정이 가장 기본일 것이다. 물론 빵판에 LED를 설치하여 연결해서 시험해도 되지만 어떤 보드든 우노든 WeMos든 붙박이 LED 가 1개씩 보드 상에 설치되어 있음에 유의하자. 붙박이 LED 는 Built-in 라고도 한다. 아두이노 우노에서는 디지털 핀 13번이 붙박이 LED 가 설치되어 있다. 반면에 WeMos 에서는 핀 번호 14번이 붙박이 핀이다. 이 핀은 외부에 디지털 핀 배선을 위한 커넥터가 없기떄문에 코딩에 의해서만 작동이 가능하다.

noname10.png

아래의 간단한 코드를 사용하여 붙박이 LED를 점검하여 보자. 통신 속도는 115200 을 사용하지만 우노에서처럼 9600 도 사용이 가능하다.

//WeMos_LED_ON_OFF_001
int ledPin = 14;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin,LOW);
}
void loop() {
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}//끝

툴탭에서 다음과 같이 보드 지정 내용과 COM 포트를 확인한다.

noname11.png

컴파일 업로딩하면 콘솔 창에서 아두이노 우노와는 좀 다른 형태의 메시지를 볼 수 있다.

noname12.png

다음 동영상에서 붙박이 LED 의 블링킹(blinking)을 관찰해 보자.

WeMos에서 코딩과 함께 주의해야할 사항을 지적하도록 하자. 붙박이 핀의 번호는 int ledPin = 14 로 지정이 가능했지만 나머지 디지털 핀을 지정함에 있어서는 반드시 D1, D2, D3, ⚫⚫⚫ 와 같이 지정해야 한다는 점이다. 디지털 핀의 번호 자체는 아두이노 우노와 동일하다. 다음 동영상은 LED 양극을 WeMos D2 핀에 설치한 블링킹 결과 이다.

NodeMCU 의 핀 지정은 아두이노 우노나 WeMos 와 다르므로 NodeMCU 편에서 설명하도록 하겠다.

일단 와이파이가 가능한 아두이노 호환 보드로 넘어 왔으나 사물인터넷 와이파이 에 의한 사물인터넷 즉 IOT 코딩 이전에 아두이노 우노에서 했던 코딩 몇가지를 호환성 확인 차원에서 점검해 볼 계획이다.

Sort:  

Follow me, upvote and reply to this comment if you want me to upvote and resteem your post to my 36,500+ followers. https://steemit.com/@a-0-0

그러면 나노보드에는 블루투스나 와이파이모듈 연결 안 되는거에요??? ㅇ_ㅇ;;; 저 이번에 프로젝트가 아두이노 나노로 개발하는 거고, 통신을 해야되는데... 아 .... ㅋㅋㅋㅋㅋㅋ

쉴드 제품을 찾아 보셔야 할것 같군요. 저도 한번 찾아보죠. 나노 보드 크기가 작고 아마 레귤레이터도 없는 모델인듯한데. 차라리 비슷한 크기의 nodemcu 는 어떨까요?

nodemcu는 코딩방법이 다르죠? 하나 있는데 그걸로 어떻게 떼워봐야겠습니다. ㅋㅋㅋㅋ 아놔. 큰일... ㅋㅋㅋ

급하신대로 blog.daum.net/ejleep1/319 블로그(제 블로그임)의 nodemcu 펌웨어 설치부터 공유기 스캔 예제 한번 가보시고 거기 이후로 검색해서 쭉 참고하세요. 아두이노 갖고 노는 정도는 충분해요.

Congratulations @codingart! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.20
TRX 0.20
JST 0.034
BTC 89969.67
ETH 3082.69
USDT 1.00
SBD 2.92