WiFi 를 통한 아두이노 활용(2) : 보드 테스트

2017. 7. 14. 08:50

Arduino/Wireless

Adafruit Feather M0 WiFi - ATSAMD21 + ATWINC1500

기본 예제 및 간단한 WiFi 모듈 테스트

이전 글에서 이 보드를 사용하기 위한 Arduino IDE 세팅을 완료하였으므로, Blink 예제 등 몇가지 예제를 통해서 보드와 WiFi 모듈의 작동 여부를 확인해 보겠습니다.

Arduino의 Hello, world!, Blink example

이전 글에서 보드 패키지 설치 관련 설정과 윈도우용 드라이버 설치가 잘 됐는지 예제를 통해서 확인해 보겠습니다. C언어에 "Hello, world!"가 있다면, arduino는 blink 예제 겠죠?^^ 아두이노를 실행한 후, File -> Examples에서 상단에 Built-in Examples 섹션이 있고 그 중 01.Basics에 가면 Blink 예제가 있습니다.

실행하기에 앞서 Tools 메뉴에서 보드 이름과 포트가 제대로 선택되어 있는지 꼭 확인하세요! 외장 USB 허브에 꽂을 경우 포트가 불안정 할 수 있으니 주의 하시기 바랍니다.

아무런 수정 없이 그냥 업로드 하시면 됩니다. 툴박스에서 오른쪽 화살표 아시죠? 아니면 Ctrl + U 하셔도 됩니다. 설정이나 포트 등에 문제가 없다면 당연히 업로드 완료(노란색 화살표) 뜨고 보드의 USB 포트 옆 빨간색 LED가 1초 마다 깜박이게 됩니다. 컴파일 및 업로드 수행중에 아래쪽 콘솔창을 보면 붉은 색 메시지들이 잔뜩 떠서 처음엔 에러가 많이 뜬 줄 알고 괜히 놀랐었네요!^^

소스는 워낙 간단해서 주석 및 delay 함수 제외 하면 아래 3줄이 끝입니다. delay() 함수는 괄호안의 인수(숫자) 만큼 밀리초 단위로 진행하지 않고 대기하는 함수입니다. delay(1) 은 1/1000 초, delay(1000)은 1000/1000초 즉 1초입니다. 따라서, 천단위씩 가감하시면 초단위로 제어가 가능합니다.

pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_BUILTIN, LOW);
    

나머지 3줄은 위와 같습니다. 공통으로 들어가는 LED_BUILTIN은 내장(빌트인)된 LED가 할당된 디지털 핀 번호를 나타냅니다. 대부분의 아두이노 보드처럼 Adafruit Feather M0 WiFi도 Digital 13번에 연결되어 있습니다. 즉, 위 명령은 아래와 동일합니다.

pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
    

위와 같이 바꿔서 업로드 해도 결과는 동일한 것을 확인 하실 수 있습니다. 정확한 숫자값이 아닌 위와 같은 이름값으로 대신 하면 보드 마다 핀번호가 달라도 소스 수정 없이 실행이 가능하겠죠!

WiFi 관련 예제 첫번째, 펌웨어 버전 확인

WiFi 관련 예제를 사용하려면 WiFi101 라이브러리를 설치해야 합니다. 아두이노 레퍼런스 쉴드인 Arduino WiFi 101 Shield(현재 품절)를 위한 라이브러리인데, 이 쉴드는 ATMEL사의 WINC1500 wifi 모듈을 사용하고 아두이노 보드와 SPI를 통해 연결합니다. 아두이노 레퍼런스 보드중 하나인 MKR1000 보드도 아두이노 ZERO 보드에 WINC1500 모듈을 SPI로 통합한 형태라서 WiFi 연결이 가능하고 WiFi101 라이브러리를 수정없이 사용할 수 있습니다. 마찬가지로 Adafruit Feather M0 WiFi보드도 MKR1000보드와 모듈 구성이 같아서 같은 라이브러리를 사용할 수 있는데, 단지, SPI 핀 연결이 달라서 핀설정을 위한 소스 한 줄만 추가해주면 됩니다.

라이브러리를 추가하기 위해서 Sketch메뉴의 Include Library에서 Manage Libraries... 항목을 클릭합니다.

위 Library Manager 화면이 나타나면 첫번째 화살표처럼 검색창에 wifi101를 입력해서 쉽게 찾을 수 있고, 해당 라이브러리를 Install 하시면 두 번째 화살표 처럼 INSTALLED 표시가 나타날 겁니다. 그럼 사용할 준비 끝.

라이브러리 설치를 마치고 File 메뉴의 Examples 항목에 가보면 Examples for any board 섹션에서 WiFi101 라이브러리를 확인하실 수 있습니다. 화살표가 가리키는 CheckWifi101FirmwareVersion 예제를 선택합니다.

WiFi101 라이브러리의 예제들은 불러와서 바로 사용할 수 없습니다. 꼭 아래와 같이 SPI 핀 설정 명령을 삽입해야 합니다.

//Configure pins for Adafruit ATWINC1500 Feather
WiFi.setPins(8,7,4,2);

위 핀 설정은 실행시 한번만 해주면 되니, setup() 함수에 넣어야 하고, 또 다른 WiFi 관련 명령들보다 먼저 실행되어야 하니, 되도록 setup() 함수 내에 가장 윗 부분에 넣어 주시면 될 듯 합니다.

화살표가 가리키는 곳 처럼 넣었으면 바로 컴파일 및 업로드 합니다.

위와 같이 시리얼(Serial) 창을 열어서 정상적으로 수행됐음을 확인 할 수 있습니다. 다행히 최신 버전이라서 펌웨어 업데이트는 생략해도 되겠습니다. 만약, 업데이트가 필요할 경우에는, 아래 링크를 따라가셔서 참고하세요!

Updating Firmware

Scan Networks 예제를 통해 연결 가능한 네트워크 찾기

휴대폰에서 와이파이 접속 시 연결 가능한 네트워크 이름들(SSID)을 보여주는 것처럼 ScanNetworks 예제를 통해 SSID 리스트를 스캔해서 출력할 수 있습니다. 아래와 같이 예제를 찾아 불러 옵니다.

위 그림에서 WiFi101 관련 모든 예제를 확인할 수 있습니다.

//Configure pins for Adafruit ATWINC1500 Feather
WiFi.setPins(8,7,4,2);

소스를 불러 왔으면 우선 잊지말고 위 SPI 핀 설정 명령을 넣어줍니다. 그런 후 바로 실행하면 역시 결과물을 쉽게 볼 수 있습니다.

결과 화면입니다. 이 보드의 MAC 주소가 먼저 나오고, 스캔된 네트워크 갯수에 이어, 검색된 SSID와 각각의 신호 강도, 암호화방식이 표시됩니다. 보드 설정만 잘 되었다면, 여기까지 아무런 문제 없이 올 수 있을 겁니다. 소스에 대한 자세한 설명은 생략하겠습니다. 다음 글에서 클라이언트, 서버 설정 등을 다룰 때 WiFi관련 소스에 대해 설명하겠습니다.

Comments