前面我們已經學習了,如何操作開發闆的LED燈,那麼可以遠端控制開發闆的LED嗎?答案是:當然可以的。
一、目的
通過電腦遠端控制開發闆上藍色的LED燈的亮滅
二、思路
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5MzMhN2YjNWYhVzNjNjN5U2MwQDZxYTO5Q2YlFTM5E2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
三、實作代碼
# 整體流程
# 1. 連結wifi
# 2. 啟動網絡功能(UDP)
# 3. 接收網絡資料
# 4. 處理接收的資料
import socket
import time
import network
import machine
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('TP-LINK_33E4', '2019AP3029')
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()
你可以複制以上代碼到Thonny中運作,如下:
當你停止後,在此運作會出現如下資訊,說明開發闆已經連上無線
隻有你通過API去關閉開發闆的無線連接配接或者掉電才會重新連接配接,下面我們把開發闆掉電然後重新上電試一下(開發闆重新上電,最好重新啟動下thonny):
這裡可以看到跟我們開始第一次連接配接是一樣的。
四、調試
打開序列槽調試助手,按如下進行設定:
我們發送資訊試一下:
開發闆終端接收到資訊:
在序列槽調試助手我們發送“light on”,會看到開發闆藍色LED亮。
在序列槽調試助手我們發送“light off”,會看到開發闆藍色LED滅。
設定序列槽調試助手的字元格式,可以解碼中文字元:
是不是很有趣,快來試一試吧!!