MicroPython:Платы/WiPy/Руководства и примеры для работы с WiPy/WLAN шаг за шагом: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" enclose="div">...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 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" enclose="div"> | |||
>>> from network import WLAN | |||
>>> wlan = WLAN() # вызываем конструктор без аргументов | |||
</syntaxhighlight> | |||
Чтобы узнать режим, в котором в данный момент работает [[WLAN]] (после включения это всегда WLAN.AP), выполните следующее: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
>>> 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" enclose="div"> | |||
from network import WLAN | |||
wlan = WLAN(mode=WLAN.STA) | |||
</syntaxhighlight> | |||
Теперь можно приступить к сканированию сетей: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
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" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> | ||
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]]-сессии без разрыва соединения. | |||
=См.также= | =См.также= |
Версия от 21:47, 26 октября 2020
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-сессии без разрыва соединения.