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则无法设置成功。