라즈베리 파이 피코 W: 네트워크 자격 증명을 별도 파일에 저장하기
이 간단한 Raspberry Pi Pico W 가이드에서는 네트워크 자격 증명을 Pico의 파일 시스템에 별도의 파일( main.py 스크립트 외에 )에 저장하는 방법을 설명합니다.
네트워크 프로젝트를 개발할 때, SSID와 비밀번호 같은 설정값을 Pico의 파일 시스템에 별도의 파일로 저장해 두는 것이 유용할 수 있습니다. 이렇게 하면 메인 코드에서 해당 파일을 참조하여 필요한 자격 증명을 쉽게 사용할 수 있습니다. 이는 실용적일 뿐만 아니라, 코드를 친구나 온라인에서 공유할 때 네트워크 자격 증명이나 민감한 정보를 실수로 유출하는 것을 방지해 줍니다.

Raspberry Pi Pico W에서 네트워크 자격 증명을 별도 파일에 저장하는 방법 (MicroPython 사용)
라즈베리 파이 피코를 처음 사용하시나요? 여기에서 시작하세요: 라즈베리 파이 피코 2 및 피코 2 W 시작하기
필수 조건
이 튜토리얼을 따라하려면 다음이 필요합니다.
1) 라즈베리 파이 피코 W 또는 라즈베리 파이 피코 2W 보드 (이 모델들은 Wi-Fi를 지원합니다).
2) 라즈베리 파이 피코 보드에 MicroPython 펌웨어가 설치되어 있어야 하고, 코드를 작성하고 업로드할 수 있는 IDE가 필요합니다. 다음 튜토리얼을 참조하세요: MicroPython을 사용한 라즈베리 파이 피코 프로그래밍 .
구성 파일 생성
1. Thonny IDE를 열고 Raspberry Pi Pico W와 연결을 설정하세요.
2. 새 파일을 생성합니다.
3. 해당 파일 안에 다음 내용을 작성하되, 네트워크 자격 증명으로 바꿔주세요.
wifi_ssid = 'REPLACE_WITH_YOUR_SSID'
wifi_password = 'REPLACE_WITH_YOUR_PASSWORD'
4. 파일을 Raspberry Pi Pico 파일 시스템에 저장합니다. Thonny IDE에서 파일 > 다른 이름으로 저장... > Raspberry Pi Pico로 이동한 후 config.py라는 이름으로 파일을 저장합니다.

Raspberry Pi Pico에 파일 저장 - Thonny IDE

Thonny IDE에서 Pico의 파일 시스템에 config.py 파일을 저장하세요.
네트워크 자격 증명 가져오기
네트워크 자격 증명이 포함된 파일을 생성한 후에는 다음과 같이 메인 코드에 쉽게 가져올 수 있습니다.
from config import wifi_ssid, wifi_password
그런 다음, 사용할 수 있습니다.wifi_ssid, 그리고와이파이 비밀번호Wi-Fi를 초기화할 때 사용할 변수입니다.wlan.connect()기능.
wlan.connect(wifi_ssid, wifi_password)
config.py 파일을 사용하는 웹 서버
이를 실제 적용하는 방법을 보여드리기 위해, 외부 파일에서 SSID와 암호 자격 증명을 가져와 인터넷에 연결하는 간단한 "Hello, World" 웹 서버 스크립트를 소개합니다.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details: https://RandomNerdTutorials.com/raspberry-pi-pico-w-save-network-credentials/
import network
import socket
import time
import random
# Import SSID and password from the config.py file
from config import wifi_ssid, wifi_password
# HTML template for the webpage
webpage = """
<!DOCTYPE html>
<html>
<head>
<title>Pico Web Server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Raspberry Pi Pico Web Server</h1>
<p>Hello, World!</p>
</body>
</html>
"""
# Init Wi-Fi Interface
def init_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Connect to your network
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
time.sleep(1)
# Check if connection is successful
if wlan.status() != 3:
return False
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
return True
if init_wifi(wifi_ssid, wifi_password):
# Set up socket and start listening
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(addr)
s.listen()
print('Listening on', addr)
# Main loop to listen for connections
while True:
try:
conn, addr = s.accept()
print('Got a connection from', addr)
# Receive and parse the request
request = conn.recv(1024)
request_str = request.decode('utf-8')
print('Request content:')
# Split headers and body
headers, body = request_str.split('\r\n\r\n', 1)
print('Headers:\n', headers)
print('Body:\n', body)
# Generate HTML response
response = webpage
# Send the HTTP response and close the connection
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
conn.send(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
이 코드를 라즈베리 파이 피코에서 실행하세요.

토니 IDE 그린 런 버튼
잠시 후 네트워크에 연결되어 IP 주소를 표시할 것입니다.

라즈베리 파이 피코가 Wi-Fi 네트워크에 성공적으로 연결되었으며 IP 주소를 출력하고 있습니다.
웹 브라우저에 IP 주소를 입력하면 웹 서버에 접속할 수 있습니다.

라즈베리 파이 피코 헬로 월드 웹 서버
보시다시피, 자격 증명을 Pico 파일 시스템에 저장된 외부 파일에 저장하고 메인 코드에서 참조하는 경우 메인 코드에 자격 증명을 직접 삽입할 필요가 없습니다.
여러 네트워크 자격 증명 저장
하나의 SSID와 비밀번호 조합만 저장하는 대신 여러 조합을 사용하는 것이 더 효율적일 수 있습니다. 이를 위해 여러 SSID와 비밀번호 조합이 포함된 JSON 파일을 생성할 수 있습니다.
JSON 파일 생성
Thonny IDE에서 다음 내용으로 새 파일을 생성하세요.
[
{"ssid": "your_ssid_1", "password": "your_password_1"},
{"ssid": "your_ssid_2", "password": "your_password_2"},
{"ssid": "your_ssid_3", "password": "your_password_3"}
]
your_ssid1과 your_password_1을 첫 번째 SSID와 비밀번호 조합으로 대체하고, 이와 같은 방식으로 계속 추가하세요. 필요한 만큼 조합을 추가하거나, 하나 또는 두 개만 설정해도 됩니다.
이 파일을 라즈베리 파이 피코에 wifi_credentials.json이라는 이름으로 저장하세요. Thonny IDE에서 파일 > 다른 이름으로 저장… > 라즈베리 파이 피코로 이동한 후 wifi_credentials.json으로 저장하세요.

라즈베리 파이 피코에 Wi-Fi 자격 증명을 JSON 파일에 저장하는 방법
JSON 파일을 사용하여 네트워크에 연결하기
이전 예제를 약간만 수정하면 해당 JSON 파일을 사용하여 다양한 SSID와 비밀번호 조합을 시도해 볼 수 있습니다. 수정된 코드는 다음과 같습니다.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details: https://RandomNerdTutorials.com/raspberry-pi-pico-w-save-network-credentials/
import network
import socket
import time
import json
# HTML template for the webpage
webpage = """
<!DOCTYPE html>
<html>
<head>
<title>Pico Web Server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Raspberry Pi Pico Web Server</h1>
<p>Hello, World!</p>
</body>
</html>
"""
def init_wifi_from_file(file_path='wifi_credentials.json'):
try:
with open(file_path, 'r') as file:
credentials = json.load(file)
except OSError:
print(f"Error: Unable to read {file_path}. Make sure the file exists and is properly formatted.")
return False
for cred in credentials:
ssid = cred.get('ssid')
password = cred.get('password')
if ssid and password:
if init_wifi(ssid, password):
return True
print("Unable to connect to any Wi-Fi network.")
return False
# Init Wi-Fi Interface
def init_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.disconnect()
print(f"Trying to connect to Wi-Fi network with SSID: {ssid}")
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.isconnected():
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
return True
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
time.sleep(1)
print(f"Failed to connect to Wi-Fi network with SSID: {ssid}")
return False
# Set up Wi-Fi
if not init_wifi_from_file():
print("Exiting program.")
else:
try:
# Set up socket and start listening
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(addr)
s.listen()
print('Listening on', addr)
# Main loop to listen for connections
while True:
try:
conn, addr = s.accept()
print('Got a connection from', addr)
# Receive and parse the request
request = conn.recv(1024)
request_str = request.decode('utf-8')
print('Request content:')
# Split headers and body
headers, body = request_str.split('\r\n\r\n', 1)
print('Headers:\n', headers)
print('Body:\n', body)
# Generate HTML response
response = webpage
# Send the HTTP response and close the connection
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
conn.send(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
except KeyboardInterrupt:
print('Server stopped by user.')
코드 작동 방식
이 예시와 관련된 부분을 간단히 살펴보겠습니다.
JSON 파일에 저장된 자격 증명을 사용하여 Wi-Fi를 초기화하는 새로운 함수를 생성합니다.
def init_wifi_from_file(file_path='wifi_credentials.json'):
try:
with open(file_path, 'r') as file:
credentials = json.load(file)
except OSError:
print(f"Error: Unable to read {file_path}. Make sure the file exists
and is properly formatted.")
return False
for cred in credentials:
ssid = cred.get('ssid')
password = cred.get('password')
if ssid and password:
if init_wifi(ssid, password):
return True
print("Unable to connect to any Wi-Fi network.")
return False
파일을 열고 JSON 내용을 자격 증명 변수에 저장합니다.
with open(file_path, 'r') as file:
credentials = json.load(file)
그런 다음 모든 JSON 요소를 살펴보고 각 SSID/비밀번호 조합에 대해 Wi-Fi 연결을 시도합니다.
for cred in credentials:
ssid = cred.get('ssid')
password = cred.get('password')
if ssid and password:
if init_wifi(ssid, password):
return True
그런 다음 웹 서버에 접속하기 전에 Wi-Fi 네트워크에 연결할 수 있는지 확인합니다. 연결할 수 없으면 프로그램을 종료합니다.
# Set up Wi-Fi
if not init_wifi_from_file():
print("Exiting program.")
그렇지 않으면 웹 서버를 생성하기 위한 나머지 코드가 실행됩니다.
예제 테스트
이전 예제를 보드에서 실행해 보세요. 연결이 될 때까지 각 SSID와 비밀번호 조합을 사용하여 네트워크에 연결을 시도합니다.
제 경우에는 이 예시를 테스트하기 위해 일부러 두 번째 옵션에만 올바른 자격 증명을 입력했습니다. 첫 번째 SSID/비밀번호 쌍을 사용하여 여러 번 연결을 시도하는 것을 볼 수 있습니다. 첫 번째 시도가 실패하면 두 번째 옵션을 시도합니다.

라즈베리 파이 피코가 여러 네트워크에 연결을 시도하고 있습니다.
두 번째 옵션을 사용하면 네트워크에 성공적으로 연결됩니다. 이 방법은 서로 다른 네트워크를 사용하는 여러 장소에서 프로젝트 작업을 할 때 유용할 수 있습니다.
마무리
이 간단한 예제에서는 별도의 파일에서 Wi-Fi 자격 증명을 불러오는 방법을 보여드렸습니다. 이렇게 하면 테스트하려는 코드마다 자격 증명을 입력할 필요가 없고, 네트워크 자격 증명을 실수로 공유하는 것을 방지할 수 있어 유용합니다.
라즈베리 파이 피코에서 여러 SSID/비밀번호 조합을 시도하도록 하려면 여러 조합이 포함된 JSON 파일을 만들 수 있습니다.
웹 서버 프로젝트나 기타 네트워킹 프로젝트를 개발할 때는 애플리케이션에 가장 적합한 방법을 선택하십시오.
이 간단한 가이드가 유용하셨기를 바랍니다. 원문은 다음 링크를 참고하세요. 원문 제공자에게 감사합니다.
- Raspberry Pi Pico W: Wi-Fi 시작하기 (MicroPython)
- Raspberry Pi Pico W: HTTP GET 요청 시작하기 (MicroPython)
- 라즈베리 파이 피코: 웹 서버 (MicroPython)
저희가 제공하는 자료를 통해 라즈베리 파이 피코에 대해 자세히 알아보세요.
'개발자 > Raspberry Pi' 카테고리의 다른 글
| Pimoroni Tiny 2350 - RP2350 미니 개발 보드 (0) | 2026.01.30 |
|---|---|
| 라즈베리파이 삼바서버 접속과 설치 방법 - 원격 연결 (2) | 2025.09.03 |
| 정해진 시간마다 실행하게 하는 crontab 사용하기 (0) | 2022.12.30 |
| 라즈베리 파이 카메라 사용법과 mjpg 동영상 스트리밍 서버를 구현하기 (52) | 2019.10.11 |
| 모든 라즈베리 파이 기구 도면 정리 Raspberry Pi Dimension (0) | 2018.10.15 |
| 아두이노 메가 기구도면, 아두이노 기구도면, 아두이노 홀사이즈 (0) | 2018.06.01 |
| 강력한 시리얼 통신 프로그램 UART, Serial to USB 코드 (2) | 2018.02.09 |
| libpam-chksshpwd:armhf 에러 메시지 raspberry pi3 (1) | 2017.03.27 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩