Embedded/Arduino

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

변화의 물결1 2024. 6. 28. 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   

반응형