树莓派66/100 您所在的位置:网站首页 女生说我pua 树莓派66/100

树莓派66/100

2022-12-13 20:59| 来源: 网络整理| 查看: 265

扫描WIFI热点

树莓派Pico W的一个重要功能是可以连接WIFI,所以马上扫描一下附近的WIFI热点信号。

import network wlan = network.WLAN(network.STA_IF) wlan.active(True) access_points = wlan.scan() for ap in access_points: print(ap)

我的设备输出的信息如下:

(b'H***', b'\xfc`\x9b\xe4{\xe1', 1, -98, 7, 1) (b'TP-LINK***', b'\x14\xcf\x92\x91v\xbe', 8, -41, 7, 9) (b'TP-LINK***\xe5\xa4\xa7\xe7\xbd\x91', b'\xd0v\xe7\xb4\x07\xa6', 3, -72, 7, 1) (b'', b'\xfc`\x9b\xe4}\x0f', 1, -67, 0, 1) (b'TP-LINK***', b'0\xb4\x9e\xc7\xd1v', 4, -84, 7, 1) (b'', b'\xfc`\x9b\xda\xc0N', 1, -74, 0, 1) (b'H***', b'\xfc`\x9b\xe4}\r', 1, -62, 7, 1) (b'w***', b'\xcc4)\x96\x9d\x93', 8, -76, 7, 4) (b'ChinaNet-***', b'\xb8\xa1Jj\xf9E', 4, -83, 3, 1) (b'iTV-***', b'\xba\xa1JZ\xf9E', 4, -80, 3, 1)

访问点的信息由6段信息的无组构成,说明文档在这里。

6段信息为:(ssid, bssid, channel, RSSI, security, hidden)

ssid:服务集标识,Service Set Identifier的缩写,通俗地说,是无线网热点的名称。

bssid:48个二进制位,6个字节,可以理解为访问点的MAC地址。

channel:通道号

RSSI:信号强度(Received signal strength indicator),正常信号强度应为-40 dbm ~ -85 dbm之间,小于 -90 dbm 的信号则很糟糕,几乎无法连接。

security:安全连接方式,说明文档上写着这样几种: 0 – open 1 – WEP 2 – WPA-PSK 3 – WPA2-PSK 4 – WPA/WPA2-PSK

可见还是隐藏: 0 – visible 1 – hidden

下面的代码按信号强弱将连接点排序输出:

import network import binascii wlan = network.WLAN(network.STA_IF) wlan.active(True) access_points = wlan.scan() # 按信号强弱排序 access_points.sort(key=lambda x:x[3], reverse=True) for ssid, bssid, channel, RSSI, security, hidden in access_points: print(ssid, binascii.hexlify(bssid), channel, RSSI, security, hidden) 连接WIFI import network import time wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect('你的WIFI名称', '你的WIFI密码') while not wlan.isconnected() and wlan.status() >= 0: print("Waiting to connect:") time.sleep(1) print(wlan.ifconfig())

官方给出的更可靠的、考虑了一些异常情况的代码是:

import network import time ssid = 'XXXXXXXXX' password = 'PPPPPPPPPPPP' wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) # Wait for connect or fail max_wait = 10 while max_wait > 0: if wlan.status() = 3: break max_wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('network connection failed') else: print('connected') status = wlan.ifconfig() print( 'ip = ' + status[0] )

连接状态的对应表:

#define CYW43_LINK_DOWN (0) #define CYW43_LINK_JOIN (1) #define CYW43_LINK_NOIP (2) #define CYW43_LINK_UP (3) #define CYW43_LINK_FAIL (-1) #define CYW43_LINK_NONET (-2) #define CYW43_LINK_BADAUTH (-3)

有时,可能需要设置WIFI的国家代码,中国的代码是CN:

import rp2 rp2.country('CN') 查询网卡的MAC地址 import network import ubinascii wlan = network.WLAN(network.STA_IF) wlan.active(True) mac = ubinascii.hexlify(network.WLAN().config('mac'),':').decode() print(mac) # Other things you can query print(wlan.config('channel')) print(wlan.config('essid')) print(wlan.config('txpower')) 获取网页内容

获取网页内容也变得非常简单,下面的代码获取南京的天气情况:

import urequests r = urequests.get('http://api.seniverse.com/v3/weather/now.json?key=SwwwfskBjB6fHVRon&location=nanjing&language=en&unit=c') print(r.content) r.close()

注意连接使用完毕后要close()。

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有