【01Studio MaixPy AI K210】17.ESP8266连接WiFi

目录

导包:

network库

注册引脚:

构造GPIO口的对象:

例程:

例程思路

注意事项

导包:

import network, time
from machine import UART
from Maix import GPIO
from fpioa_manager import fm

network库

'''
构建 WIFI 模块连接对象。ESP8285 表示模块型号。
参数:
	【uart】串口的对象
返回值:
	网卡对象。
'''
wlan = network.ESP8285(uart)

'''
连接热点(AP/路由器)
参数:
	【ssid】: 热点的账号
	【key】: 热点的密码
返回值:
	无, 如果发生错误会抛出异常。
'''
wlan.connect(ssid, key)

'''
查看wifi连接信息,目前network不支持设置网卡配置
参数:
	无
返回值:
	tuple 类型, 元素都是字符串:(ip, netmask, gateway, dns_server, dhcp_server, mac, ssid), 如果没有查询到或者无效,值为"0"
'''
wlan.ifconfig()

'''
查看wifi是否连接
参数:
	无
返回值:
	True: 已经连接
	False: 断开连接
'''
wlan.isconnected()

'''
断开 wifi 连接
参数:
	无
返回值:
	无
'''
wlan.disconnected()

'''
扫描周围的热点信息
参数:
	无
返回值:
	一个 list对象, 每个元素包含了一个字符串, 字符串来自AT模块的响应,内容和esp8285的AT指令文档所描述的相同,如下:ecn, ssid, rssi,mac, channel, freq offset, freq cali, pairwise_cipher, group_cipher, bgn, wps。
	ecn:加密⽅式
        0:OPEN
        1:WEP
        2:WPA_PSK
        3:WPA2_PSK
        4:WPA_WPA2_PSK
        5:WPA2_Enterprise(⽬前 AT 不⽀持连接这种加密 AP)
    ssid:字符串参数,AP 的 SSID
    rssi:信号强度
    mac:字符串参数,AP 的 MAC 地址
    channel:信道号
    freq offset:AP 频偏,单位:kHz。此数值除以 2.4,可得到 ppm 值
    freq cali:频偏校准值
    pairwise_cipher:
        0:CIPHER_NONE
        1:CIPHER_WEP40
        2:CIPHER_WEP104
        3:CIPHER_TKIP
        4:CIPHER_CCMP
        5:CIPHER_TKIP_CCMP
        6:CIPHER_UNKNOWN
    group_cipher: 定义与 pairwise_cipher 相同
    bgn: bit0 代表 b 模式; bit1 代表 g 模式; bit2 代表 n 模式;若对应 bit 为 1,表示该模式使能;若对应 bit 为 0,则该模式未使能。
    wps:0,WPS 未使能;1,WPS 使能
'''
wlan.scan ()

'''
打开热点。
警告:截止 2020年11月26日前, MaixPy 的 socket 还未实现 listen / bind / accpet 等函数操作。
参数:
    【ssid】: SSID
    【key】: 密码
    【chl】: WiFi信号的通道号
    【ecn】: 加密方法, 有OPEN``WPA2_PSK等,参考本页ESP8285的常量部分, 默认值是3, 也就是ESP8285.WPA2_PSK
'''
wlan.enable_ap(ssid,key,chl=5,ecn=3) # 1
nic = network.ESP8285(uart) # 2
nic.enable_ap("maixpy", "12345678", 5, nic.OPEN)
nic.enable_ap("maixpy", "12345678", 5, network.ESP8285.OPEN) # 3

'''
关闭热点
'''
wlan.disable_ap()
'''
wlan.scan ()的返回值
'''
info_strs = ['4,"ChinaNet-lot0",-79,"c8:50:e9:e8:21:3e",1,-42,0,4,3,7,1',
             '4,"TOPSTEP2G4",-70,"f8:e7:1e:0d:0d:f8",1,-57,0,4,4,7,0']

#需要对返回值进行处理才能使用
def wifi_deal_ap_info(info):
    res = []
    for ap_str in info:
        ap_str = ap_str.split(",")
        info_one = []
        for node in ap_str:
            if node.startswith('"'):
                info_one.append(node[1:-1])
            else:
                info_one.append(int(node))
        res.append(info_one)
    return res

info_strs = ['4,"ChinaNet-lot0",-79,"c8:50:e9:e8:21:3e",1,-42,0,4,3,7,1',
             '4,"TOPSTEP2G4",-70,"f8:e7:1e:0d:0d:f8",1,-57,0,4,4,7,0']

info = wifi_deal_ap_info(info_strs)
print(info)

#输出是:
[[4, 'ChinaNet-lot0', -79, 'c8:50:e9:e8:21:3e', 1, -42, 0, 4, 3, 7, 1], 
 [4, 'TOPSTEP2G4', -70, 'f8:e7:1e:0d:0d:f8', 1, -57, 0, 4, 4, 7, 0]]

#需要获得所有AP的SSID只需要使用:
for ap_info in info:
    print(ap_info[1])

注册引脚:

'''
【pin】芯片外部 IO 
【function】芯片功能
【force】=True 则强制注册,清除之前的注册记录
'''
fm.register(pin,function,force=False)
fm.register(8, fm.fpioa.GPIOHS0, force=True)#IO8连接着ESP8266的EN引脚(官方安装)
fm.register(7, fm.fpioa.UART2_TX, force=True)#IO7连接着ESP8266的RX0引脚(官方安装)
fm.register(6, fm.fpioa.UART2_RX, force=True)#IO6连接着ESP8266的TX0引脚(官方安装)

构造GPIO口的对象:

'''
【ID】内部 GPIO 编号
【MODE】 GPIO 模式;
	    GPIO.IN :输入模式
	    GPIO.OUT :输出模式
【PULL】 GPIO.PULL_UP :上拉
		GPIO.PULL_DOWN :下拉
		GPIO.PULL_NONE :无
【value】GPIO 初始化电平
		1:高电平
		0:低电平
'''
GPIO(ID,MODE,PULL,VALUE)
wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)
uart = UART(UART.UART2,115200, read_buf_len=4096)

例程:

例程思路

注意事项

连接上板子,再插ESP8266WiFi模块!!!

'''
main.py
官方例程

通过ESP8266WiFi模块连接无线路由器
''' 
import network, time
from machine import UART
from Maix import GPIO
from fpioa_manager import fm
SSID='*******' # WiFi 账号
KEY='********' # WiFi 密码

###### WiFi 模块初始化 ######
#使能引脚初始化
fm.register(8, fm.fpioa.GPIOHS0, force=True)
wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)

#串口初始化
fm.register(7, fm.fpioa.UART2_TX, force=True)
fm.register(6, fm.fpioa.UART2_RX, force=True)
uart = UART(UART.UART2,115200, read_buf_len=4096)

#使能函数
def wifi_enable(en):
    global wifi_en
    wifi_en.value(en)

#使能 wifi 模块
wifi_enable(1)
time.sleep(1)

#构建 WiFi 对象
wlan = network.ESP8285(uart)

#正在连接印提示
print("Trying to connect... (may take a while)...")

#连接网络
wlan.connect(SSID,KEY)

#打印 IP 相关信息
print(wlan.ifconfig())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值