라즈베리파이 5

라즈베리파이 Pico W 내장 와이파이 시작하기

지구빵집 2024. 2. 21. 08:00
반응형

 

라즈베리파이 Pico W 내장 와이파이 시작하기

목차

  1. 소개
  2. 소개: 아마존 링크:
  3. 라즈베리 파이 피코 W:
  4. 라즈베리 파이 Pico W 사양:
  5. 라즈베리 파이 Pico와 Pico W 구별하기
  6. Pico W 전원 공급 및 프로그래밍
  7. 프로그램:
  8. 실습 데모:
  9. 코드 설명:
  10. 결론

 

소개:

라즈베리파이 파이 파이 파이 W 내장 와이파이 시작하기 이 글에서는 라즈베리파이 파이 파이 파이 와이파이의 설정부터 기능 탐색, 와이파이 연결에 이르기까지 와이파이를 시작하는 과정을 안내해드립니다.

 

이 프로젝트의 기본 작동은 라즈베리파이 Pico W가 자동으로 WiFi에 연결되는 것입니다. Pico W가 WiFi에 연결되지 않은 경우, 라즈베리파이 Pico W의 온보드 LED가 깜박입니다. WiFi에 연결되면 LED가 깜박임을 멈춥니다. 이 과정은 상태 메시지와 함께 콘솔에 표시됩니다. 이 글에서는 WiFi 연결을 활성화하는 데 필요한 초기 구성을 포함하여 라즈베리 파이 Pico W를 설정하는 기본 단계를 소개합니다.

 

또한 안정적인 무선 연결을 설정하고 유지하는 데 필요한 프로그래밍 측면도 다룹니다. 이 글을 마치면 라즈베리 파이 파이 파이 W의 WiFi 기능을 활용하는 방법을 완전히 이해하게 되어 무선 기술의 힘을 활용하는 혁신적이고 흥미로운 다양한 프로젝트를 시작할 수 있을 것입니다. 이 프로젝트에서는 라즈베리 파이 파이 파이 W의 내장 Wi-Fi 연결 기능만 활용하지만, 앞으로 많은 프로젝트에서 라즈베리 파이 파이 파이 W의 내장 Wi-Fi를 사용할 것이므로 다음 글에서 도움이 될 것입니다.

 

다음 프로젝트는 웹 서버를 통해 라즈베리 파이 파이 파이 W의 온보드 LED를 제어하는 것입니다.

 

라즈베리 파이 Pico W 핀 아웃 다이어그

RP2040 칩

라즈베리 파이 파이 파이 W의 핵심은 라즈베리 재단에서 자체 개발한 ARM 칩인 RP2040입니다. 핵심인 듀얼 코어 ARM Cortex M0+ 프로세서는 유연하고 강력하며 클럭 속도가 최대 133MHz에 달합니다. 따라서 Pico W는 다양한 애플리케이션을 위한 견고하고 다재다능한 제품입니다.

무선 연결

Pico W의 핵심적인 발전은 Infineon CYW43439 무선 칩을 통해 구현된 무선 기능입니다. 이 부품은 IEEE 802.11 b/g/n 무선 LAN 및 Bluetooth 5.2를 보드에 구현하여 커넥티드 및 IoT 애플리케이션의 가능성을 열어줍니다.

GPIO 및 핀아웃:

라즈베리 파이 Pico W는 26개의 다목적 GPIO를 포함한 40개의 핀을 자랑하며, 모두 3.3V 로직 레벨에서 작동합니다. 이 보드는 구형 Pico 보드와 핀 투 핀 호환이 가능하도록 설계되어 기존 프로젝트의 연속성을 유지하고 쉽게 업그레이드할 수 있습니다. 또한 디버그 인터페이스를 위한 3핀 헤더가 RP2040 칩 근처에 전략적으로 배치되어 있습니다.

라즈베리 파이 Pico W 사양:

Raspberry Pi Pico W Specifications:

Specification
Detail
Microcontroller Chip
RP2040 (by Raspberry Pi)
Processor
Dual-core ARM Cortex M0+
Clock Speed
Up to 133 MHz
SRAM
264kB
Flash Memory
2MB onboard
Wireless Interfaces
Single-band 2.4GHz (802.11n)
Bluetooth
Bluetooth 5.2
Wireless Chip
Infineon CYW43439
GPIO Pins
26 multi-function GPIO pins
Interfaces
2×SPI, 2×I2C, 2×UART
Analog-to-Digital Converters
3×12-bit ADC
PWM Channels
16×controllable
USB Support
USB 1.1 Host and Device
Power Modes
Low-power sleep and dormant modes
Additional Features
Temperature sensor, floating-point libraries
Programmable IO
8×Programmable IO (PIO) state machines
PCB Dimensions
51mm x 21mm x 1mm
Power Input
USB port or VSYS pin
Programming Languages
C/C++ and MicroPython
IDE Support
Thonny IDE, Arduino IDE

 

사양 상세 정보

 

마이크로컨트롤러 칩 RP2040(라즈베리 파이 제공)

프로세서 듀얼 코어 ARM 코어텍스 M0+

클럭 속도 최대 133MHz

SRAM 264kB

플래시 메모리 2MB 온보드

무선 인터페이스 단일 대역 2.4GHz(802.11n)

블루투스 블루투스 5.2

무선 칩 인피니언 CYW43439

GPIO 핀 26개 다기능 GPIO 핀

인터페이스 2×SPI, 2×I2C, 2×UART

아날로그-디지털 컨버터 3×12비트 ADC

PWM 채널 16×제어 가능

USB 지원 USB 1.1 호스트 및 장치

전원 모드 저전력 절전 및 휴면 모드

추가 기능 온도 센서, 부동 소수점 라이브러리

프로그래머블 IO 8×프로그래머블 IO(PIO) 상태 머신

PCB 크기 51mm x 21mm x 1mm

전원 입력 USB 포트 또는 VSYS 핀

프로그래밍 언어 C/C++ 및 MicroPython

IDE 지원 토니 IDE, 아두이노 IDE

라즈베리 파이 피코와 Pico W의 차이점

라즈베리 파이 Pico W는 CYW43439 Wi-Fi 칩과 업데이트된 전원 섹션(Richtek의 RT6154A)을 통해 이전 모델과 차별화됩니다. 이러한 변화는 연결성과 전력 효율성을 모두 해결하여 Pico W를 다양한 애플리케이션에 더욱 적합하게 만듭니다.

Pico W 전원 공급 및 프로그래밍

 

Pico W는 USB 포트 또는 VSYS 핀을 통해 전원을 공급받을 수 있습니다. 프로그래밍을 위해 사용자는 C/C++ 및 MicroPython을 유연하게 사용할 수 있으며, 다양한 개발자를 위해 Thonny IDE 및 Arduino IDE를 지원합니다.

프로그램:

 

프로그램을 저장하려면 Thonny IDE 또는 원하는 다른 IDE를 열고 아래에 제공된 프로그램을 복사하여 붙여넣습니다. 그런 다음 라즈베리파이 Pico W에 'main.py'라는 이름으로 저장합니다.

 

import network
import time
import machine

ssid = 'Fawad'
password = 'computer006'

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

# Setup onboard LED
onboard_led = machine.Pin('LED', machine.Pin.OUT)  # Adjust the pin number if necessary

# Initial connection attempt
max_attempts = 10
attempts = 0
connected = False  # Flag to track connection status

while not wlan.isconnected() and attempts < max_attempts:
    onboard_led.toggle()  # Blink LED while trying to connect
    time.sleep(1)
    attempts += 1

if wlan.isconnected():
    print(f"Connected to {ssid} successfully!")
    print("Network Config:", wlan.ifconfig())
    onboard_led.value(1)  # Keep LED on when connected
    connected = True
else:
    print("Failed to connect to WiFi.")
    onboard_led.value(0)  # Turn off LED if initial connection fails

# Continuously check WiFi status
while True:
    if wlan.isconnected() and not connected:
        print("Reconnected to WiFi.")
        onboard_led.value(1)  # Keep LED on when connected
        print("Network Config:", wlan.ifconfig())
        connected = True
    elif not wlan.isconnected() and connected:
        print("Disconnected from WiFi.")
        connected = False

    if not connected:
        onboard_led.toggle()  # Blink LED if disconnected

    time.sleep(1)

 

 

실제 데모:

프로그램이 저장되면 '실행' 버튼을 누르거나 키보드의 'F5' 키를 누르기만 하면 됩니다.

프로그램이 실행되면 Thonny IDE 콘솔에 다음과 같은 출력이 표시되고 Raspberry Pi Pico W의 온보드 LED가 깜박임을 멈춥니다.

그리고 Wi-Fi를 끄면 콘솔에 다음과 같은 메시지가 표시됩니다. 그리고 라즈베리파이 Pico W의 온보드 LED가 다시 깜박이기 시작합니다.

그리고 Wi-Fi를 켜면 이 메시지가 표시됩니다.

코드 설명:

 

 

import network

import time

import machine

 

 

스크립트에서는 서로 다른 용도로 세 가지 라이브러리를 사용합니다. 네트워크 라이브러리는 마이크로컨트롤러를 WiFi 네트워크에 연결하는 데 도움이 됩니다. 시간 라이브러리는 스크립트에 일시 중지를 추가하는 데 사용되며, 이는 타이밍을 맞추는 데 필요할 수 있습니다. 마지막으로 머신 라이브러리는 스크립트가 조명을 켜고 끄거나 센서 데이터를 읽는 등 마이크로컨트롤러의 하드웨어와 함께 작동할 수 있도록 합니다. 이러한 라이브러리를 함께 사용하면 마이크로컨트롤러가 인터넷에 연결하고, 필요할 때 대기하며, 물리적 장치를 제어할 수 있습니다.

 

 

ssid = 'your_network_name'

password = ''your_network_password'

 

 

무선 네트워크에 연결할 수 있도록 특정 WiFi 자격 증명을 정의합니다. SSID는 디바이스가 연결하려는 WiFi 네트워크의 이름을 나타냅니다. 이는 한 네트워크를 다른 네트워크와 구별하는 고유 식별자입니다. 마찬가지로 비밀번호는 지정된 WiFi 네트워크에 액세스하는 데 필요한 보안 키를 제공하는 중요한 구성 요소입니다.

 

 

wlan = network.WLAN(network.STA_IF)

wlan.active(True)

wlan.connect(ssid, password)

 

 

이 줄은 와이파이 활성화에 사용되며, 스테이션 모드에서 무선랜 인터페이스 초기화부터 시작되며, 이는 wlan=network.WLAN(network.STA_IF) 명령을 통해 이루어집니다. 이 모드는 장치가 WiFi 네트워크에 연결할 수 있도록 하는 데 필수적입니다. WLAN 인터페이스가 초기화되면 wlan.active(True) 명령을 사용하여 활성화합니다. 활성화는 인터페이스가 작동을 시작하고 네트워크에 연결하는 프로세스를 시작하기 위해 필요합니다.

 

마지막으로 장치는 wlan.connect(ssid, password)를 사용하여 지정된 WiFi 네트워크에 연결을 시도합니다. 이 명령은 이전에 정의한 WiFi 자격증명(네트워크의 SSID 및 비밀번호)을 사용하여 보안 연결을 설정합니다. 이 설정은 디바이스가 WiFi 네트워크와 통신할 수 있도록 하는 데 중요한 역할을 하며, 네트워크 연결의 기초를 형성합니다.

 

 

onboard_led = machine.Pin('LED', machine.Pin.OUT)

 

 

시각적 표시기 역할을 하는 온보드 LED를 구성합니다. 이 작업은 onboard_led = machine.Pin('LED', machine.Pin.OUT) 명령을 통해 수행되며, 이 명령은 LED를 출력 장치로 설정합니다. 여기서 machine.Pin은 LED가 연결되는 핀을 지정하는 데 사용되는데, 라즈베리파이 파이 피코에서는 온보드 LED가 GPIO 25에 연결되지만 라즈베리파이 피코 W에서는 이 LED가 RP2040 칩이 아닌 무선 칩의 GPIO에 연결됩니다. 그렇기 때문에 GPIO 핀 대신 'LED'가 사용됩니다.

 

 

if wlan.isconnected():

    print(f"Connected to {ssid} successfully!")

    print("Network Config:", wlan.ifconfig())

    onboard_led.value(1)  # Keep LED on when connected

    connected = True

else:

    print("Failed to connect to WiFi.")

    onboard_led.value(0)

 

 

스크립트에서 WiFi 네트워크에 연결을 시도하는 초기 단계는 루프를 통해 관리됩니다. 이 루프는 최대_시도로 지정된 미리 정의된 횟수까지 연결을 계속 시도하도록 설계되었습니다. 이 특별한 경우 스크립트는 최대 10회까지 연결을 시도합니다. 이러한 시도가 진행되는 동안 온보드 LED의 상태는 onboard_led.toggle()을 사용하여 토글됩니다. 이 동작은 LED를 깜박이게 하여 각 연결 시도가 이루어지고 있음을 시각적으로 표시합니다. 각 시도 사이의 타이밍을 관리하기 위해 time.sleep(1)을 사용하여 1초의 지연이 도입됩니다. 이 일시 중지는 연결 시도가 너무 빠르게 이루어지지 않도록 하여 네트워크가 응답할 수 있는 시간을 확보합니다. 또한 각 시도 후 시도 카운터는 시도 횟수 += 1로 증가합니다. 이 카운터는 시도 횟수를 추적하여 최대 시도 횟수에 도달한 후 프로세스가 중지되도록 합니다. 스크립트의 이러한 구조화된 접근 방식은 시각적 피드백과 제어된 타이밍을 제공하여 WiFi 네트워크에 연결하려는 초기 시도를 효율적으로 관리합니다.

 

 

while True:

    if wlan.isconnected() and not connected:

        print("Reconnected to WiFi.")

        onboard_led.value(1)  # Keep LED on when connected

        print("Network Config:", wlan.ifconfig())

        connected = True

    elif not wlan.isconnected() and connected:

        print("Disconnected from WiFi.")

        connected = False

    if not connected:

        onboard_led.toggle()  # Blink LED if disconnected

    time.sleep(1)

 

 

스크립트에서는 조건문을 통해 WiFi 연결의 성공 또는 실패를 확인하는 프로세스를 처리합니다. if wlan.isconnected(): 조건이 충족되면 WLAN(WiFi) 인터페이스가 네트워크에 성공적으로 연결되었음을 나타냅니다. 그런 다음 스크립트는 이 성공적인 연결을 반영하기 위해 몇 가지 작업을 실행합니다. 먼저 장치가 ssid로 식별되는 지정된 WiFi 네트워크에 성공적으로 연결되었음을 알리는 확인 메시지를 인쇄합니다. 그런 다음 wlan.ifconfig()를 통해 얻은 디바이스의 IP 주소, 서브넷 마스크, 게이트웨이 및 DNS 서버를 포함한 네트워크 구성 세부 정보를 표시합니다. 또한 온보드 LED의 값이 일반적으로 켜지는 1로 설정되어 WiFi 연결이 설정되었다는 시각적 신호로 사용됩니다. 연결된 변수 역시 연결 성공을 나타내는 True로 설정됩니다.

반대로 연결 시도가 실패하면(else: 조건의 일부에 포함됨) wlan.isconnected()가 False를 반환한다는 것을 나타냅니다. 이 시나리오에서 스크립트는 WiFi 연결에 실패했음을 알리는 메시지를 인쇄하여 응답합니다. 또한 온보드 LED의 값을 0으로 설정하여 일반적으로 꺼집니다. 이 동작은 디바이스가 WiFi 네트워크에 연결하지 못했음을 나타내는 역할을 합니다. 이러한 스크립트의 분기점을 통해 WiFi 연결의 성공 또는 실패 여부에 대한 명확한 커뮤니케이션을 보장하고 LED를 통해 적절한 시각적 피드백을 제공합니다.

무한 루프로 정의된 동안 True: 로 묶인 코드가 중단 없이 연속적으로 실행되도록 합니다. 이 루프 내에서 WiFi 연결 상태와 관련된 몇 가지 확인 및 작업을 수행합니다.

먼저, if wlan.isconnected() 및 not connected: 를 사용하여 WiFi 네트워크에 다시 연결되었는지 확인합니다. 이 조건은 연결된 변수가 이전에 연결이 끊어졌음을 나타내는 False인 상태에서 WiFi가 연결되어 있는지 확인합니다. 재연결이 감지되면 "WiFi에 재연결되었습니다." 메시지를 출력하고, 온보드 LED를 켜서(onboard_led.value(1) 사용) 연결에 대한 시각적 신호로 사용하고, wlan.ifconfig()에서 검색된 네트워크 구성 세부 정보를 출력하고, 연결된 상태를 반영하여 연결된 변수를 True로 설정하는 등 여러 작업이 이어집니다.

이 스크립트는 또한 elif not wlan.isconnected() 및 connected: 를 사용하여 WiFi 연결이 끊어졌는지 확인합니다. 이 조건은 연결된 변수가 True인 동안 WiFi가 연결되지 않았는지 확인하여 이전에 연결되었음을 나타냅니다. 연결이 끊어지면 "WiFi에서 연결이 끊어졌습니다."를 출력하고 연결된 변수를 연결이 끊어진 상태를 나타내는 False로 설정합니다.

또한 스크립트는 연결되지 않은 상태를 평가하여 연결이 끊어진 상태를 관리합니다. 이 시나리오에서는 WiFi 연결이 끊어지면 온보드 LED를 토글(onboard_led.toggle())하여 일반적으로 LED가 깜박이게 됩니다. 이 깜박임은 연결이 끊어진 상태를 시각적으로 표시하는 역할을 합니다.

마지막으로 스크립트에는 time.sleep(1)을 통해 구현된 각 루프 반복 사이에 1초의 지연이 포함되어 있습니다. 이 일시 정지는 프로세서가 지속적인 검사로 인해 과부하가 걸리는 것을 방지하고 토글 상태인 경우 LED가 깜박이는 것을 눈에 띄게 하기 위해 필수적입니다. 이러한 지속적인 모니터링, 시각적 피드백, 체계적인 점검의 조합으로 WiFi 연결 상태를 효과적으로 관리할 수 있습니다.

결론

라즈베리 파이 Pico W에 내장된 Wi-Fi 기능을 사용하면 프로젝트를 인터넷에 쉽게 연결하고 흥미로운 IoT 애플리케이션을 만들 수 있습니다. 이 글에 설명된 단계를 따라 라즈베리 파이 파이 파이 W를 시작하고 Wi-Fi 기능을 탐색하는 데 아무런 문제가 없을 것입니다.

 

즐겁게 실험하고 만들어 보세요!

 

반응형