# 整体流程
# 1. 连接wifi
# 2. 启动网络功能(UDP)
# 3. 接收网络数据
# 4. 处理接收的数据
import socket
from time import sleep
import network
import machine
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
while True:
status=wlan.ifconfig() #查看当前的网络连接信息,未连接成功时,ip、网关、dns皆为0.0.0.0
if status[0]=='0.0.0.0': #若本机IP地址为0.0.0.0表示未连接
print("开始连接WiFi……")
wlan.connect("402", "Syhzs402") # 连接到指定的WiFi
sleep(5) #延时函数,建立连接需要时间
print("WiFi连接状态",wlan.isconnected()) # 检查WLAN的连接状态
else:
print(f"连接WiFi成功,网络信息{status}")
break #连接成功后结束循环
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.创建数据接收对象
rec_ip="192.168.50.244"
rec_port=7070
rec_addr=(rec_ip,rec_port)
# 5. 接收网络数据
while True:
recv_data, sender_info = udp_socket.recvfrom(1024)
try:
recv_data_str = recv_data.decode("utf-8")
print(recv_data_str)
except Exception as ret:
recv_data_str='error'
print("error:", ret)
# 6. 处理接收的数据
if recv_data_str == "light on":
print("这里是要灯亮的代码...")
led.value(1)
message = "已开灯"
elif recv_data_str == "light off":
print("这里是要灯灭的代码...")
led.value(0)
message = "已关灯"
#给发送者发送消息处理结果
udp_socket.sendto(message.encode('utf-8'),rec_addr)
if __name__ == "__main__":
main()
HC-SR04超声波测距模块是一种基于超声波测距原理的传感器。测量范围在2cm-400cm,测量精度3mm,可以通过发送超声波脉冲并接收其回波来计算目标与传感器之间的距离。它通常被应用于机器人、智能小车、智能家居等领域,可以用于测量墙壁距离、障碍物距离、物品距离等。
什么是超声波:超声波是频率高于人类听觉极限(约20hz-20000hz)的高音调声波。

HC-SR04超声波测距模块一般包括四个引脚:VCC、Trig、Echo、GND。其中,VCC和GND分别为正负电源引脚,Trig为触发引脚,Echo为回波引脚。具体连接方式如下:
HC-SR04超声波测距模块的工作原理是利用超声波在空气中传播的速度来计算距离。当触发引脚Trig接收到高电平信号时,模块会向目标物体发送一个8个周期的40kHz的超声波脉冲。当超声波射向目标物体后,它会被反射回来,并被模块的回波引脚Echo接收到。在接收到回波信号后,模块会将Echo引脚的电平置高,表示回波信号已经接收到。此时,开发板开始计时,直到回波信号全部被传回模块,模块将Echo引脚的电平置低,表示回波信号已经结束。开发板计算回波所需时间,并根据公式计算出目标与传感器之间的距离。
