행복한 하루

아두이노 나노(Arduino Nano) 33 IoT 고정 아이피(Static IP) 설정 방법 본문

Embedded/Arduino

아두이노 나노(Arduino Nano) 33 IoT 고정 아이피(Static IP) 설정 방법

변화의 물결 2021. 8. 13. 00:05

 

안녕하세요.

 

  단순하게 SimpleWebServerWiFi 샘플 소스를 실행시키면 내부 공유기의 DHCP에서 할당해주는 내부 네트워크 아이피(IP) 주소를 할당받게 됩니다. 그래서 시리얼 모니터로 할당된 주소를 확인한 후 아두이노 웹서버로 접속을 해야 합니다.

  이렇게 하면 IP 주소를 매번 확인해야 하는 불편한 점이 있습니다.  아니면 DDNS를 사용해서 도메인(DNS)으로 접속할 수도 있습니다.

 

  그렇게 하는 것 보다 비용도 절감하고 내부 고정 아이피로 사용한다면 위의 불편한 점은 개선할 수 있을 것으로 생각되어 고정으로 하면 좋겠다 생각하게 되어 찾아보게 되었습니다.


1.  고정아이피 할당 예제

1) 예제 소스 불러오기

  - 할당하는 방법에 대해서 간단한 샘플 예제로 하는 방법을 확인해보도록 하겠습니다. (만약, 아래의 예제가 나타나지 않는다면, WiFiNINA 라이브러리 검색해서 설치해야 합니다.)

     "Files → Examples → WiFiNINA and click on SimpleWebServerWiFi"

 

  

2) arduino_secrets.h 수정

 - 예제 파일을 불러오면 헤더 파일 하나가 더 나타나는데 여기서 접속할 무선 공유기의 SSID와 PASSWORD를 입력해줍니다.

 

 

 - 아이피(IP) 주소를 입력받을 수 있는 형태의 변수를 선언해줍니다. 고정하고자 하는 주소를 , (Comma)로 인자를 구분하여 입력합니다. 단, 입력한 주소는 고정아이피로 사용하는 것이기 때문에 이미 할당되어 있는 주소가 없는지 ping으로 확인해 보시고 정하는 것을 추천드립니다.

 

3) SimpleWebServerWIFI 수정

  - setup() 함수로 이동해서 설정한 아이피가 적용되도록 코드를 추가해 줍니다.

  - WiFi.begin(ssid, pass)가 실행되기 전에 

   WiFi.config(ip);

를 추가해줍니다. 그리고 추가로 샘플 코드상 웹서버에서 LED 제어를 할 수 있게 9핀을 설정되어 있는데, 간편하게 확인할 수 있도록 부착된 LED로 확인할 수 있도록 코드를 추가해봅니다.

 

 - setup() 함수에 pinMode(9, OUTPUT);  아래에 코드 추가

pinMode(LED_BUILTIN, OUTPUT);

 

 - loop() 함수에 digitalWrite(9, HIGH); 아래에 코드 추가 

digitalWrite(LED_BUILTIN, HIGH);

 

 - loop() 함수에 digitalWrite(9, LOW); 아래에 코드 추가

digitalWrite(LED_BUILTIN, LOW);

 

 - 다운로드하고 웹서버 작동을 확인합니다.

2. 작동 확인하기

 - 소스코드가 오류 없이 다운로드를 되었다면 설정한 고정 아이피로 주소가 할당되었을 겁니다. 우선 ping으로 확인해봅니다.

 

 - ping에서 응답확인 했다면, 웹 브라우저에 고정한 아이피 주소를 입력합니다. 그러면 사진과 같이 웹페이지가 나오는 것을 확인할 수 있습니다.

 

 - Click here이라는 on/off링크를 클릭하면 아두이노 나노에 장착된 LED가 켜졌다가 꺼지는 것을 확인할 수 있습니다.

 

감사합니다.

 

 

<참고사이트>

1. How to Create a simple web server with static IP and control builtinLED using WiFiNINA library

https://support.arduino.cc/hc/en-us/articles/360014905179-How-to-Create-a-simple-web-server-with-static-IP-and-control-builtinLED-using-WiFiNINA-library

2. Ethernet : IPAddress class

https://www.arduino.cc/en/Reference/EthernetIPAddress   

 

 

Comments