ESP32开发 micropython常见问题记录

1.network

(1).sta模式设置–自动接入wifi设置静态ip地址

# 整体流程
# 1. 链接wifi
# 2. 启动网络功能(UDP)
# 3. 接收网络数据
# 4. 处理接收的数据


import socket
import time
import network
import machine




def do_connect():
    wlan = network.WLAN(network.STA_IF) # create station interface
    wlan.active(True)       # activate the interface
    wlan.scan()             # scan for access points
    wlan.isconnected()      # check if the station is connected to an AP
    wlan.ifconfig(('192.168.1.17', '255.255.255.0', '192.168.1.1', '192.168.1.1'))
    wlan.config('mac')      # get the interface's MAC address
    wlan.ifconfig()

 


    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('ChinaNet-tdS6', 'pjklx9cw')
        i = 1
        while not wlan.isconnected():
            print("正在链接...{}".format(i))
            i += 1
            time.sleep(1)
    print('network config:', wlan.ifconfig())


def start_udp():
    # 2. 启动网络功能(UDP)

    # 2.1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2.2. 绑定本地信息
    udp_socket.bind(('0.0.0.0', 7788))

    return udp_socket


def main():
    # 1. 链接wifi
    do_connect()
    # 2. 创建UDP
    udp_socket = start_udp()
    # 3. 创建灯对象
    led = machine.Pin(2, machine.Pin.OUT)
    # 4. 接收网络数据
    while True:
        recv_data, sender_info = udp_socket.recvfrom(1024)
        print("{}发送{}".format(sender_info, recv_data))
        recv_data_str = recv_data.decode("utf-8")
        try:
            print(recv_data_str)
        except Exception as ret:
            print("error:", ret)
        
        # 5. 处理接收的数据
        if recv_data_str == "light on":
            print("这里是要灯亮的代码...")
            led.value(1)
        elif recv_data_str == "light off":
            print("这里是要灯灭的代码...")
            led.value(0)


if __name__ == "__main__":
    main()

发送端

# 整体流程
# 1. 链接wifi
# 2. 启动网络功能(UDP)
# 3. 接收网络数据
# 4. 处理接收的数据


import socket
import time
import network
import machine
from socket import *





def do_connect():
    wlan = network.WLAN(network.STA_IF) # create station interface
    wlan.active(True)       # activate the interface
    wlan.scan()             # scan for access points
    wlan.isconnected()      # check if the station is connected to an AP
    wlan.ifconfig(('192.168.1.17', '255.255.255.0', '192.168.1.1', '192.168.1.1'))
    wlan.config('mac')      # get the interface's MAC address
    wlan.ifconfig()

 


    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('ChinaNet-tdS6', 'pjklx9cw')
        i = 1
        while not wlan.isconnected():
            print("正在链接...{}".format(i))
            i += 1
            time.sleep(1)
    print('network config:', wlan.ifconfig()) 


def send():
    
    # 1. 创建udp套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    # 2. 准备接收方的地址
    dest_addr = ('192.168.1.5', 8080)
    # 3. 从键盘获取数据
    send_data = "hello world"
    # 4. 发送数据到指定的电脑上
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    # 5. 关闭套接字
    udp_socket.close()
    print("send ok")





def main():
     do_connect()
     send()



if __name__ == "__main__":
    main()


注意事项:

wlan.ifconfig(('192.168.1.17', '255.255.255.0', '192.168.1.1', '192.168.1.1'))
用来设置静态ip地址,分别为 (ip, 子网掩码,网关,dns地址)

2.ap模式

import network
import utime
 
ap = network.WLAN(network.AP_IF)
 
ap.active(True)

ap.config(essid='My AP',password="12345678", authmode=network.AUTH_WPA_WPA2_PSK)

注意: ap.config(essid='My AP',password="12345678", authmode=network.AUTH_WPA_WPA2_PSK)
用来设置ap的工作模式与密码,缺少authmode则无法设置成功。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值