Raspberry Pi Pico W: установка статического IP-адреса (MicroPython)

Узнайте, как установить статический / фиксированный IP-адрес для вашего Raspberry Pi Pico W. Когда ваш Pico подключается к сети, некоторые маршрутизаторы могут назначать ему новый IP-адрес при каждой перезагрузке. Это может быть неудобно, если вам нужно обращаться к плате или взаимодействовать с ней по IP-адресу. В этом руководстве мы покажем, как назначить статический IP-адрес вашему Raspberry Pi Pico W.

Raspberry Pi Pico W — установка статического / фиксированного IP-адреса MicroPython

Рекомендуемое чтение: Raspberry Pi Pico W: начало работы с Wi-Fi (MicroPython)

Необходимые компоненты

Для выполнения этого руководства вам понадобятся:

1) Плата Raspberry Pi Pico W или Raspberry Pi Pico 2W (эти модели поддерживают Wi-Fi).

2) Прошивка MicroPython, установленная на вашу плату Raspberry Pi Pico, и IDE для написания и загрузки кода. Следуйте этому руководству: ../../getting-started-raspberry-pi-pico-w/index.

Установка статического/фиксированного IP-адреса на Raspberry Pi Pico

В моей сети, даже если я перезапущу Raspberry Pi Pico несколько раз, маршрутизатор всегда назначает ему один и тот же IP-адрес. Однако в некоторых других сетях это не так. В таком случае удобно иметь возможность установить статический IP-адрес для вашей платы, чтобы он не менялся при каждом сбросе.

Кроме того, установка статического IP-адреса также полезна для проектов, которые не подключены к вашему компьютеру или не имеют возможности отобразить IP-адрес.

Вы можете использовать метод ifconfig объекта network.WLAN для установки статического IP-адреса. Например, используйте следующую строку после подключения к сети.

wlan.ifconfig((static_ip, subnet_mask, gateway_ip, dns_server))

Следующий пример подключает вашу плату к сети, а затем устанавливает статический IP-адрес.

import network
import time

# Учетные данные Wi-Fi
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'

# Конфигурация статического IP
static_ip = '192.168.1.100'  # Замените на желаемый статический IP
subnet_mask = '255.255.255.0'
gateway_ip = '192.168.1.254'
dns_server = '8.8.8.8'

# Инициализация Wi-Fi интерфейса
wlan = network.WLAN(network.STA_IF)
wlan.active(True)

# Подключение к сети
wlan.connect(ssid, password)

# Ожидание подключения к Wi-Fi
connection_timeout = 10
while connection_timeout > 0:
    if wlan.status() >= 3:
        break
    connection_timeout -= 1
    print('Waiting for Wi-Fi connection...')
    time.sleep(1)

# Установка статического IP-адреса
wlan.ifconfig((static_ip, subnet_mask, gateway_ip, dns_server))

# Проверка успешности подключения
if wlan.status() != 3:
    raise RuntimeError('Failed to establish a network connection')
else:
    print('Connection successful!')
    network_info = wlan.ifconfig()
    print('IP address:', network_info[0])

Конфигурация статического IP

Замените значения в переменных static_ip, subnet_mask, gateway_ip и dns_server на соответствующие значения для вашей сети.

# Конфигурация статического IP
static_ip = '192.168.1.100'  # Замените на желаемый статический IP
subnet_mask = '255.255.255.0'
gateway_ip = '192.168.1.254'
dns_server = '8.8.8.8'

Как узнать эти значения?

Существуют различные способы получить информацию о маске подсети и IP-адресе шлюза. Самый простой способ — открыть окно терминала на вашем компьютере и выполнить следующую команду:

В Windows:

ipconfig

В MacOS или Linux:

ifconfig
Команда ipconfig в терминале

Эта команда вернет нужную вам информацию: IP-адрес шлюза (IP-адрес вашего маршрутизатора) и маску подсети.

Детали WLAN — маска подсети и IP-адрес шлюза

В моем случае маска подсети равна 255.255.255.0, а IP-адрес шлюза — 192.168.1.254.

Для DNS-сервера вы всегда можете использовать 8.8.8.8 — это публичный DNS-сервер Google.

При выборе статического IP-адреса для вашего Raspberry Pi Pico убедитесь, что этот адрес еще не используется другим устройством. Для этого вы можете использовать программу, такую как Angry IP Scanner (совместима с Windows и Mac OS). Или вы можете войти в панель управления вашего маршрутизатора и проверить, какие IP-адреса уже назначены.

Установка статического IP-адреса

После присвоения правильных значений переменным конфигурации мы можем просто использовать метод ifconfig() и передать в качестве аргументов статический IP, маску подсети, IP-адрес шлюза и DNS-сервер, именно в таком порядке.

wlan.ifconfig((static_ip, subnet_mask, gateway_ip, dns_server))

Ввод учетных данных сети

Чтобы протестировать этот код, не забудьте вставить учетные данные вашей сети в следующие строки, чтобы ваша плата могла подключиться к маршрутизатору:

ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'

Тестирование кода

После ввода учетных данных сети и желаемых настроек IP-адреса вы можете запустить код на вашем Raspberry Pi Pico.

Обратите внимание, что плата получит IP-адрес, который вы определили в коде. В нашем случае — 192.168.1.100.

Raspberry Pi Pico — установка статического IP-адреса

Вы также можете проверить панель управления маршрутизатора или Angry IP Scanner, чтобы убедиться, что вашему RPi Pico был назначен выбранный вами IP-адрес.

Raspberry Pi Pico со статическим IP-адресом в Angry IP Scanner

Перезагрузите плату и убедитесь, что IP-адрес остался прежним.

Заключение

Это было краткое руководство, показывающее, как вы можете модифицировать ваши скрипты MicroPython для установки статического/фиксированного IP-адреса для вашего Raspberry Pi Pico. У нас есть другие руководства по Wi-Fi и сетям для Raspberry Pi Pico, которые могут вам понравиться: