아두이노 “초보자를 위한 ⚫⚫⚫ 코딩” 예제를 하다보면 저절로 무선 와이파이 코딩에 도전하고파 지게 된다. 많은 무선 와이파이 코딩이 있을 수 있으나 대부분 아두이노와 호환되는 하드웨어와 깊은 연관이 있다. 아두이노 와이파이 쉴드라든지, 아두이노 윤 또는 MKR1000을 비롯해서 여러 가지 대안이 있을 수 있지만 가성비 까지 생각한다면 앞서 거론된 제품들이 적어도 5만원에서 10만원대 가격임에 비해 현재 시중 가격이 1만원 이하이며 성능이 만족스러운 NodeMCU가 으뜸일 것이다.
여기서는 아두이노 편집기에서 NodeMCU 코딩 시에 항상 수반되는 무선 와이파이 지원 라이브러리 ESP8266WiFi.h 에 관해서 알아보기로 한다.
아두이노 NodeMCU 코딩 시작 때 반드시 아래와 같이 라이브러리를 불러들이게 되어 있다.
#include <ESP8266WiFi.h>
NodeMCU 보드에서 사용되고 있는 ESP8266 12E 칩 모듈은 아두이노사의 와이파이 쉴드나 아두이노 윤같은 빌트인 와이파이 보드에서 사용하는 와이파이 칩과는 다르며 일종의 Third Party 그룹에서 만든 아두이노 보드 호환 칩 모듈로 보면 된다. 따라서 라이브러리도 어느 정도 다를 수밖에 없다.
와이파이 라이브러리는 사용자가 사용하게 되는 다수의 클라스들로 구성되는데 각 클라스 별로 특화된 기능들을 제공하게 된다. 예를 들면
WiFi class, IP address class, Server class, Client class 및 UDP class가 대표적이다.
우선 WiFi class 에 관해서 세부적인 기능들을 알아보자.
WiFi.begin(ssid,password): 그 모양에 있어서 setup()문에서 사용하는 Serial.begin()과 유사한데 두 개의 문자열 데이터 즉 사용자 ID 와 패스워드를 요구한다. 이 두 정보는 사용자가 연결하고자 하는 공유기(Access Point)에 제공된다.
되돌려 받을 수 있는 정보는 다음과 같다.
WL_CONNECTED: 공유기에 성공적으로 연결이 된 후
WL_IDLE_STATUS: WiFi 상태가 변동되는 중간 과정
WL_NO_SSID_AVAIL: 사용자명 SSID 에 연결 될 수 없을 때
WL_CONNECT_FAILED: 패스워드가 부정확할 경우
WL_DISCONNECTED: 와이파이 모듈이 스테이션 모드로 배열되지 못한 경우
WiFi.begin(ssid,password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(“.”); }
대개는 처음에 사용자가 WiFi.begin()을 실행시키면 네트워크와 연결 설정을 위해서 SSID 와 패스워드를 넘겨주게 된다. 그리고 난 다음에 사용자는 WiFi.status 가 WL_CONNECTED라는 값을 돌려 줄 때까지 루프를 돌면서 기다려야 한다.
WiFi.SSID()는 패스시킬 파라메터(arguments)가 없는 형태로 사용된다. 하지만 사용자가 연결하게 되는 SSID 값을 돌려 준다.
WiFi.RSSI()는 현재 공유기의 무선 강도를 dBM 단위로 돌려준다.
WiFi.scanNetworks(): 공유기에서 체크한 네트워크의 수 값만을 되돌려 주며 네트워크의 이름을 리스팅 해 주는 것은 아니다.
WiFi.macAddress(): ESP 디바이스의 MAC 주소를 돌려준다. MAC 주소는 이더넷 응용에서 중요하게 사용된다.
WiFi.printDiag(Serial); 이 특수한 기능은 핵심적인 와이파이 진단정보를 출력하는데 이용 가능하다.
WiFi 라이브러리 사용법을 보여 주는 아래의 아두이노 스케치 코드 예를 참조하기 바란다.
이 코드는 아두이노 편집기 예제의 WiFiScan.ino 과 매우 유사하나 한가지 차이점은 일단 MAC address를 추가로 출력해 준다는 점이다. 아울러 자신이 사용할 공유기 ID와 password를 사용하여 WiFi.begin(“ID”,“password”) 명령을 실행하고 WiFi 연결을 시켜 준다는 점이다. 사용자로서는 자신이 WiFi에 실어 보낼 코드를 추가하면 되는 일종의 템플레이트 코드이다.
WiFi_Scan_01
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
Serial.println();
WiFi.disconnect();
delay(1000);
//scan for number of nearby networks & print SSIDs
Serial.print("Nearby networks found ");
Serial.println(WiFi.scanNetworks());
delay(500);
Serial.println("List of surrounding Network SSIDs…:");
int n = WiFi.scanNetworks();
for (int i = 0; i < n; i++) {
Serial.println(WiFi.SSID(i));
}
Serial.println();
//connect to preferred SSID
WiFi.begin("android1234", "dddddddddd");
Serial.println("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
// print SSID name,local IP allotted ,MAC address & signal strength
Serial.println();
Serial.print("Connected to SSID : ");
Serial.println(WiFi.SSID());
Serial.print("IP address allotted to ESP : ");
Serial.println(WiFi.localIP());
Serial.print("MAC Address of ESP : ");
Serial.println(WiFi.macAddress());
Serial.print("Signal strength is : ");
Serial.println(WiFi.RSSI());
}
void loop() {
}//프로그램 끝
이 예제 코드를 사용자 자신의 무선 와이 공유기 환경에 맞춰 사용자 명과 패스워드를 부여한 후에 아두이노 편집기에서 실행 시키면 그림과 같이 출력 된다.
WiFi.begin() 클라스에 이어서 Client() 클라스의 다음 라이브러리들에 대해 알아보자.
connected(),connect(),write(),print(),println(),available(),read(),flush(),stop()
Client 클라스의 대표적인 코딩 사례로서 Thingspeak에 센서 데이터를 올려 놓는 코딩
예제들을 참고함과 동시에 다음과 같은 사용법을 참고하여라.
client.connect(host,80);
if(client.available()) {
⚫⚫⚫;
}
clent.stop();
client.println();
Server() 클라스의 다음 라이브러리들에 대해 알아보자.
begin(),available(),write(),print(),println()
Server 클라스의 대표적인 코딩 사례로서 웹서버 프로그램 즉 IOT 사물인터넷 코딩 예제들을
참고함과 동시에 다음과 같은 사용법을 참고하여라.
server.begin()
WiFiClient client = server.available();
<끝>
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
아두이노 온습도, 미세먼지 측정 및 ESP8266 NodeMCU WiFi 코딩 요약 (0) | 2017.05.16 |
---|---|
초보자를 위한 라즈베리 파이3 파이선 LED ON OFF 코딩 (0) | 2017.05.13 |
Firmata 프로세싱 프로그램에 의한 아두이노 bar_Graph LED 제어 (0) | 2017.05.08 |
초보자를 위한 “아두이노 코딩에 의한 움직이는 3개의 LED 예제” (0) | 2017.05.08 |
초보자를 위한 “프로세싱과 아두이노의 통신에 의한 LED bar graph 제어 예제” (0) | 2017.05.06 |