MicroPython:Платы/WiPy/Руководства и примеры для работы с WiPy/WLAN шаг за шагом: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" enclose="div">...»)
 
Нет описания правки
 
(не показана 1 промежуточная версия 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=WLAN шаг за шагом<ref>[http://docs.micropython.org/en/latest/wipy/tutorial/wlan.html docs.micropython.org -  WLAN step by step]</ref>=


[[WLAN]] – это системная функция [[WiPy]] и потому всегда включена (даже, когда [[WiPy]] находится в режиме machine.SLEEP), за исключением режима глубокого сна.


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


<syntaxhighlight lang="python">
>>> from network import WLAN
>>> wlan = WLAN() # вызываем конструктор без аргументов
</syntaxhighlight>


Чтобы узнать режим, в котором в данный момент работает [[WLAN]] (после включения это всегда WLAN.AP), выполните следующее:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
>>> wlan.mode()
</syntaxhighlight>
 
{{Спойлер|'''Внимание!''' При смене [[WLAN]]-режима согласно инструкциям ниже [[WLAN]]-соединение с [[WiPy]] будет разорвано. Это значит, что вы не сможете интерактивно запускать эти команды через [[WLAN]].
Обойти это ограничение можно двумя способами:
* Поместите код с настройками в файл [http://docs.micropython.org/en/latest/wipy/general.html#wipy-filesystem «boot.py»], чтобы он выполнялся автоматически gосле сброса.
* [http://docs.micropython.org/en/latest/wipy/tutorial/repl.html#wipy-uart Включите дупликацию REPL на UART], чтобы иметь возможность запускать команды по [[USB]].}}
 
==Подключение к домашнему роутеру==
 
Сетевая [[WLAN]]-карта всегда загружается в режиме ''WLAN.AP'', поэтому нам надо сначала настроить ее как станцию:
 
<syntaxhighlight lang="python">
from network import WLAN
wlan = WLAN(mode=WLAN.STA)
</syntaxhighlight>
 
Теперь можно приступить к сканированию сетей:
 
<syntaxhighlight lang="python">
nets = wlan.scan()
for net in nets:
    if net.ssid == 'mywifi':
        print('Сеть найдена!')
        wlan.connect(net.ssid, auth=(net.sec, 'mywifikey'), timeout=5000)
        while not wlan.isconnected():
            machine.idle() # снижаем энергопотребление
                          # во время ожидания
        print('WLAN-подключение установлено!')
        break
</syntaxhighlight>
 
==Присвоение статического IP-адреса при загрузке==
 
Если вы хотите, чтобы [[WiPy]] после загрузки подключалась к вашему домашнему [[роутер]]у при помощи фиксированного [[IP-адрес]]а, чтобы вы потом могли получить к ней доступ при помощи [[Telnet]] или [[FTP]], используйте следующий скрипт как ''«/flash/boot.py»'':
 
<syntaxhighlight lang="python">
import machine
from network import WLAN
wlan = WLAN() # считываем текущий объект без изменения режима
 
if machine.reset_cause() != machine.SOFT_RESET:
    wlan.init(WLAN.STA)
    # настройки ниже ДОЛЖНЫ соответствовать
    # настройкам вашего домашнего роутера!
    wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8'))
 
if not wlan.isconnected():
    # отредактируйте строчку ниже,
    # чтобы настройки в ней соответствовали,
    # SSID, типу защиты и паролю вашей сети:
    wlan.connect('mywifi', auth=(WLAN.WPA2, 'mywifikey'), timeout=5000)
    while not wlan.isconnected():
        machine.idle() # снижаем энергопотребление
                      # во время ожидания
</syntaxhighlight>
 
'''Примечание:''' В коде выше проверяется причина сброса и статус соединения – это важно для того, чтобы у вас была возможность выполнить программный сброс [[WiPy]] в течение [[Telnet]]-сессии без разрыва соединения.


=См.также=
=См.также=

Текущая версия от 20:05, 23 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


WLAN шаг за шагом[1]

WLAN – это системная функция WiPy и потому всегда включена (даже, когда WiPy находится в режиме machine.SLEEP), за исключением режима глубокого сна.

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

>>> from network import WLAN
>>> wlan = WLAN() # вызываем конструктор без аргументов

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

>>> wlan.mode()
Внимание! При смене WLAN-режима согласно инструкциям ниже WLAN-соединение с WiPy будет разорвано. Это значит, что вы не сможете интерактивно запускать эти команды через WLAN.

Обойти это ограничение можно двумя способами:


Подключение к домашнему роутеру

Сетевая WLAN-карта всегда загружается в режиме WLAN.AP, поэтому нам надо сначала настроить ее как станцию:

from network import WLAN
wlan = WLAN(mode=WLAN.STA)

Теперь можно приступить к сканированию сетей:

nets = wlan.scan()
for net in nets:
    if net.ssid == 'mywifi':
        print('Сеть найдена!')
        wlan.connect(net.ssid, auth=(net.sec, 'mywifikey'), timeout=5000)
        while not wlan.isconnected():
            machine.idle() # снижаем энергопотребление
                           # во время ожидания
        print('WLAN-подключение установлено!')
        break

Присвоение статического IP-адреса при загрузке

Если вы хотите, чтобы WiPy после загрузки подключалась к вашему домашнему роутеру при помощи фиксированного IP-адреса, чтобы вы потом могли получить к ней доступ при помощи Telnet или FTP, используйте следующий скрипт как «/flash/boot.py»:

import machine
from network import WLAN
wlan = WLAN() # считываем текущий объект без изменения режима

if machine.reset_cause() != machine.SOFT_RESET:
    wlan.init(WLAN.STA)
    # настройки ниже ДОЛЖНЫ соответствовать 
    # настройкам вашего домашнего роутера!
    wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8'))

if not wlan.isconnected():
    # отредактируйте строчку ниже,
    # чтобы настройки в ней соответствовали,
    # SSID, типу защиты и паролю вашей сети:
    wlan.connect('mywifi', auth=(WLAN.WPA2, 'mywifikey'), timeout=5000)
    while not wlan.isconnected():
        machine.idle() # снижаем энергопотребление
                       # во время ожидания

Примечание: В коде выше проверяется причина сброса и статус соединения – это важно для того, чтобы у вас была возможность выполнить программный сброс WiPy в течение Telnet-сессии без разрыва соединения.

См.также

Внешние ссылки