waffle nano自带了WiFi模块,因此可以很容易的让waffle nano接入网络。
在MicroPython下,使用 network
模块来配置waffle nano的网络模式:
STA
作为站点接入WiFi网络AP
作为热点,允许其他设备接入waffle nanoWLAN 包括如下能力:建立/关闭WLAN热点、扫描、关联WLAN热点等。
WLAN模块框架图如下:
WLAN模块有三部分对外开放的API接口,如下图所示:
热点模式允许用户将自己的waffle nano配置为热点,这让多个waffle nano芯片之间的无线连接在不借助外部路由器网络的情况下成为可能。
热点模式通过把本机设备创建成一个热点,在激活热点和为热点配置热点名称后,使本机成为一个开放的AP热点,其他设备在WiFi列表中找到它,连接此热点实现无线连接。
更多的情况下,会将waffle nano连接到WiFi网络。
站点模式通过创建一个Wifi站点,在激活该站点和扫描周围的可用网络后,本机在WiFi列表中找到可用网络名,输入正确密码实现无线连接。连接成功后还可以获取当前WiFi连接的IP、子网掩码、网关、DNS等信息
有1个引脚可以用作WLAN
引脚 | 功能 |
---|---|
pin 8 | WLAN ACTIVE |
使用import network
导入network
模块
再使用TAB
按键来查看network
中所包含的内容:
>>>import network
>>>network.
__name__ AP_IF AUTH_OPEN AUTH_PSK
AUTH_SAE AUTH_WEP BAND_2G BAND_5G
STA_IF WLAN
下面的宏定义用于配置network,设置对应网络模式。
宏定义 | 含义 |
---|---|
network.AP_IF | 热点模式 |
network.AUTH_OPEN | 完全不认证也不加密 |
network.AUTH_PSK | 预共享密钥,为每个客户分配唯一的密钥而工作,比WEP难被破解,更加安全 |
network.AUTH_SAE | 对等实体同时验证,通过证实密码信息,用密码进行身份验证,而不是进行密钥导出 |
network.AUTH_WEP | 有线等效加密,拥有相同的网络金钥,才能解读互相传递的数据 |
network.BAND_2G | 2G频段 |
network.STA_IF | 站点模式 |
network.WLAN | WLAN类 |
class network.WLAN(mode)
mode
:模式
network.STA_IF
— 站点模式,连接到上游WiFi接入点network.AP_IF
—— 热点模式,允许其他WiFi客户端连接用WLAN对象的构造器函数
示例:
>>> import network
>>> sta_wlan = network.WLAN(network.STA_IF)#创建一个站点模式的WLAN对象
>>> ap_wlan = network.WLAN(network.AP_IF)#创建一个热点模式的WLAN对象
wlan.active(is_active)
函数说明:带有参数时,为是否激活WiFi,不带参数为查询当前状态。
is_active
:是否激活
Pin(8)
激活网络接口True
激活网络接口False
停用网络接口示例:
>>> import network
>>> sta_wlan = network.WLAN(network.STA_IF)#创建一个站点模式的WLAN对象
>>>sta_wlan.active(True)#激活网络
RegisterWifiEvent: Success
EnableWifi: Success
True
wlan.scan()
函数说明:扫描可用的无线网络(仅在STA接口上进行扫描),必须先激活WiFi,返回有关WiFi接入点信息的元组列表。
示例:
>>> import network
>>> sta_wlan = network.WLAN(network.STA_IF)#创建一个站点模式的WLAN对象
>>> ap_wlan = network.WLAN(network.AP_IF)#创建一个热点模式的WLAN对象
>>> ap_wlan.scan()#AP模式扫描不了无线网络
Traceback (most recent call last):
File "<stdin>", in <module>
OSError: STA required
>>> sta_wlan.scan()#STA模式,未激活网络,依旧无法扫描无线网络
Traceback (most recent call last):
File "<stdin>", in <module>
OSError: STA must be active
>>>sta_wlan.active(True)#激活网络
RegisterWifiEvent: Success
EnableWifi: Success
True
>>> sta_wlan.scan()#扫描网络
OnWifiScanStateChanged: state = 0, size = 0
OnWifiScanStateChanged: state = 1, size = 10
WaitSacnResult:wait success[1]s
[('Noah-BlackWalnut', b'<|?W\x84h', -1, -5600, 2452), ('tingchechang', b'\x0c\xd8lLL\xb0', 2, -6300, 2467), ('sunking', b'\xacau\xe2\xa1\x80', 2, -6800, 2437), ('GU', b'\x80\x8f\x1d9\x1c\xfa', 2, -7200, 2412), ('zykj', b'l\xe8s\xafq\xcc', 2, -7400, 2437), ('ZYKJ_202012', b'dn\x97\xdf\xce\xfe', 2, -7600, 2462), ('zykj_sw', b'D\x97Z\x90\xe0\xae', 2, -7600, 2412), ('zykj_28', b'\xd4\xf7\x86\x82P\xdd', -1, -7700, 2472), ('ChinaNet-QufH', b'\xa8\xad=\xb1\xdax', -1, -7900, 2462), ('zykj2020', b'`\x14f\xbb\x90(', -1, -8300, 2442)]
wlan.config('ssid'[,password=[,security=])
函数说明:设置热点(仅在AP接口上进行设置),必须先停用创建的热点对象,设置完成后再激活热点对象,就能在网络列表中找到设置的热点。
ssid
:WiFi名称
password
:WiFi密码
security
:WiFi安全类型
示例:
>>> import network
>>> ap_wlan = network.WLAN(network.AP_IF)#创建一个热点模式的WLAN对象
>>> ap.config('abc')#热点在使用,无法修改配置
RegisterWifiEvent: Invalid parameters
SetHotspotConfig: Success
>>> ap_wlan.active(False)#停用热点
netifapi_dhcps_stop: success
UnRegisterWifiEvent: Success
EnableHotspot: Success
False
>>> ap_wlan.config("waffle_nano", password="waffle_nano", security=network.AUTH_PSK)
RegisterWifiEvent: Success
SetHotspotConfig: Success
>>> ap_wlan.active(True)#激活热点
HotspotState: Active.
Active AP...
Enable: success
netifapi_netif_set_addr: success
netifapi_dhcp_start: success
True
wlan.connect('ssid'[,'password'[,security=]])
函数说明:连接到无线网络(仅在STA接口上进行扫描),必须先激活站点网络才能连接
ssid
:WiFi名称
password
:WiFi密码
security
:WiFi安全类型
示例:
>>> import network
>>> sta_wlan = network.WLAN(network.STA_IF)#创建一个热点模式的WLAN对象
>>> sta_wlan.active(True)#激活站点模式的WLAN对象
RegisterWifiEvent: Success
EnableWifi: Success
True
>>> sta_wlan.scan()#扫描可用的WIFI网络
OnWifiScanStateChanged: state = 0, size = 0
OnWifiScanStateChanged: state = 1, size = 12
WaitSacnResult:wait success[1]s
[('Noah-BlackWalnut', b'<|?W\x84h', -1, -4800, 2427), ('tingchechang', b'\x0c\xd8lLL\xb0', 2, -6600, 2467), ('sunking', b'\xacau\xe2\xa1\x80', 2, -6600, 2437), ('yzk5T', b'\xa6\x02\xb9\xb0\x90}', -1, -6800, 2437), ('GU', b'\x80\x8f\x1d9\x1c\xfa', 2, -6900, 2412), ('ZYKJ_202012', b'dn\x97\xdf\xce\xfe', 2, -7100, 2462), ('zykj_28', b'\xd4\xf7\x86\x82P\xdd', -1, -7200, 2472), ('zykj2020', b'`\x14f\xbb\x90(', -1, -7900, 2442), ('ChinaNet-QufH', b'\xa8\xad=\xb1\xdax', -1, -8100, 2462), ('zykj', b'l\xe8s\xafq\xcc', 2, -8100, 2437), ('Redmi', b'\x8a7!&\x83\x85', 0, -3200, 2412), ('', b'\x9aP\xe9(Q\xae', 0, -8700, 2437)]
>>> sta_wlan.connect('sunking','sunking100',security=network.AUTH_PSK)
Connecting............OnWifiConnectionChanged: state = 1, info =
bssid: B8:F8:83:07:A1:F0, rssi: 0, connState: 0, reason: 0, ssid: sunking
connect: success
netifapi_dhcp_start: success
netifapi_netif_common: success
True
wlan.disconnect()
函数说明:断开与当前连接的无线网络的连接,没有网络连接时会报错
示例:
>>> import network
>>> sta_wlan = network.WLAN(network.STA_IF)#创建一个站点模式的WLAN对象
>>> sta_wlan.active(True)#激活网络
RegisterWifiEvent: Success
EnableWifi: Success
True
>>>sta_wlan.disconnect()#断开网络连接
netifapi_dhcp_stop: success
Disconnect: Success
RemoveDevice: Success
对waffle nano创建Wifi热点。
import network
ap_wlan = network.WLAN(network.AP_IF)
ap_wlan.active(False)
ap.config('WIFI-AP')
ap_wlan.active(True)
第一行导入machine
模块的类network
第二行创建热点
第三行停用创建的热点
第四行修改热点名字
第五行重新激活该热点,此时可在WIFI列表中通过热点名找到创建的热点
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )