network

    该模块用于初始化各种网卡驱动,网卡具有连接路由,断开路由,查看网卡连接信息,检查是否连接等功能。

    使用WiFi请确保已经接上了天线

    esp8285

    在部分开发板上带了 一个 使用AT方式交互的网卡模块,比如esp8285,与k210通过串口连接

    引脚8是使能脚,可以创建一个GPIO对象来控制它的高低电平来实现使能和失能,也可以用它复位(先低后高),复位后需要等待一小段时间才能操作,
    可以查看例程network_espat.py

    esp32

    目前在MaixDuino开发板中有一个 esp32 模块通过 spik210相连
    同时也有单独的TF插卡式模块

    network.ESP8285(uart)

    构造一个ESP8285网卡对象,使用该方法需要传入一个uart对象,在MaixPy目前支持的dockGO上,是使用AT指令模块作为WiFi。所以该uart对象是与AT模块通信的对象,可以查看uart模块例程

    调用此方法会初始化ESP8285, 如果失败会抛出异常

    参数

    • uart: 与AT模块通信的UART对象

    返回值

    • ESP8285: 网卡对象

    ESP8285

    connect(ssid, key)

    连接热点(AP/路由器)

    参数

    • ssid: 热点的SSID
    • key: 热点的密码

    返回值

    无, 如果发生错误会抛出异常

    2.2. ifconfig

    查看wifi连接信息,目前network不支持设置网卡配置

    nic.ifconfig()
    

    参数

    返回值

    tuple 类型, 元素都是字符串:(ip, netmask, gateway, dns_server, dhcp_server, mac, ssid), 如果没有查询到或者无效,值为"0"

    isconnected

    查看wifi是否连接

    nic.isconnected()
    

    参数

    返回值

    True: 已经连接
    False: 断开连接

    disconnect

    断开 wifi 连接

    参数

    返回值

    scan

    扫描周围的热点信息

    参数

    返回值

    一个 list对象, 每个元素包含了一个字符串, 字符串来自AT模块的响应,内容和esp8285AT指令文档所描述的相同,如下:
    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 使能

    比如:

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

    这看起来可能会比较奇怪,因为每个AP的信息都是一串字符,信息里面还有整型和字符串,字符串用双引号括起来的,所以拿到这个字符串后需要再次处理后再使用,比如:

    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]] 
    

    然后比如我们需要获得所有APSSID只需要使用

    for ap_info in info:
        print(ap_info[1])
    

    enable_ap(ssid, key, chl=5, ecn=3)

    • 警告:截止 2020年11月26日前, MaixPy 的 socket 还未实现 listen / bind / accpet 等函数操作。

    打开热点

    参数

    • ssid: SSID
    • key: 密码
    • chl: WiFi信号的通道号
    • ecn: 加密方法, 有OPEN``WPA2_PSK等,参考本页ESP8285的常量部分, 默认值是3, 也就是ESP8285.WPA2_PSK,比如
    nic = network.ESP8285(uart)
    nic.enable_ap("maixpy", "12345678", 5, nic.OPEN)
    

    或者

    nic.enable_ap("maixpy", "12345678", 5, network.ESP8285.OPEN)
    

    disable_ap()

    关闭热点

    常量

    OPEN

    热点的加密方式为不需要密码

    WPA_PSK

    热点的加密方式为 WPA_PSK

    WPA2_PSK

    热点的加密方式为 WPA2_PSK

    WPA_WPA2_PSK

    热点的加密方式为 WPA_WPA2_PSK

    例程

    参考network目录下的例程

    network.ESP32_SPI(cs,rst,rdy,mosi,miso,sclk)

    构造一个ESP32_SPI网卡对象,需要传入对应的GPIOHS FUNC

    如果传入参数数量不对,会返回错误

    注意 想要在 maixduino 上 SPI 和 SD 不冲突,需要设置 ESP32_SPI 为硬件 SPI 配置。

    参数

    • 对应引脚功能的 fpioa_func

    返回值

    • ESP32_SPI 网卡对象

    ESP32_SPI

    adc

    读取esp32模块的adc

    参数

    返回值

    tunple,5个通道的adc
    顺序是"PIN36", "PIN39", "PIN34", "PIN35", "PIN32"

    例程

    demo_esp32_read_adc.py

    network.WIZNET5K(spi, cs)

    构造一个WIZNET5K网卡对象,使用该方法需要传入一个spi对象, 一个cs pin 脚.

    调用此方法会初始化WIZNET5K, 如果失败会抛出异常

    参数

    • spi: 负责与 WIZNET5K 模块通信
    • cs: spi 通信片选脚

    返回值

    • WIZNET5K: 网卡对象

    WIZNET5K

    dhclient

    DHCP 动态获取 IP

    nic.dhclient()
    

    参数

    返回值

    • True: 获取成功
    • False: 获取失败

    ifconfig

    nic.ifconfig()
    

    参数

    • 不传参: 查询网卡信息
    • 传入(ip, netmask, gateway, dns_server)字符串元组: 配置网卡, ip ip 地址, netmask子网掩码, gateway网关 IP 地址, dns_server DNS 服务 IP 地址.

    返回值

    • 不传参: 返回tuple,元素都是字符串, (ip, netmask, gateway, dns_server), 如果没有查询到或者无效,值为"0"
    • 传参: 返回None

    isconnected

    查看网络是否连接

    nic.isconnected()
    

    参数

    返回值

    • True: 已经连接
    • False: 断开连接

    例程

    network_wiznet5k.py