ESP32S用Micropython程式設計開發,TCP連線Tlink控制開關燈,可微信控制開關
阿新 • • 發佈:2019-05-12
Micropython燒錄,就不說了,此網站有很詳細的說明:http://www.1zlab.com
Micropython的開發資料網站可以參考:http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/pins.html
下面直接來個簡單的demo:
import socket addr_info = socket.getaddrinfo("tcp.tlink.io",8647) addr = addr_info[0][-1] s = socket.socket() s.connect(addr)#連線伺服器 s.send(b'FL03VD0S65PYX1MO')#傳送訊息,b是轉換成位元組型,裡面的內容是我裝置的序列號 print('connect....') while True: data = s.recv(500).decode('utf8')#接收後解碼,原始碼是位元組型 if data == '1': print('open LED') if data == '0': print('close') s.send('[H:1][S:2][D?3][T:d]')#隨便發點啥說明裝置線上
程式碼可以用貼上,就是1zlab的裡面網站裡面的IDE
然後再加io口的程式碼就是下面(我就用esp32s上面的自帶藍燈,GPIO2):
import socket,machine#匯入gpio操作庫 LED = machine.Pin(2, machine.Pin.OUT)#GPIO2輸出模式 addr_info = socket.getaddrinfo("tcp.tlink.io",8647) addr = addr_info[0][-1] s = socket.socket() s.connect(addr)#連線伺服器 s.send(b'FL03VD0S65PYX1MO')#傳送訊息 print('connect....') while True: data = s.recv(500).decode('utf8')#接收後解碼,原始碼是位元組型 if data == '1': LED.value(1) print('open LED') if data == '0': LED.value(0) print('close') s.send('[H:1][S:2][D?3][T:d]')#隨便發點啥說明裝置線上
這樣就可以在微信上面,控制開關了!
在優化一下,把心跳搞一下設定50秒傳送一次(隨便什麼資料那個 ,其實那個是上傳的資料,我這裡不需要上傳什麼,畢竟就是一個開關)
心跳程式碼:
import socket,machine,utime#匯入gpio操作庫 old_time=0 LED = machine.Pin(2, machine.Pin.OUT)#GPIO2輸出模式 addr_info = socket.getaddrinfo("tcp.tlink.io",8647) addr = addr_info[0][-1] s = socket.socket() s.connect(addr)#連線伺服器 s.send(b'FL03VD0S65PYX1MO')#傳送訊息 print('connect....') while True: data = s.recv(500).decode('utf8')#接收後解碼,原始碼是位元組型 if data == '1': LED.value(1) # print('open LED') if data == '0': LED.value(0) # print('close') run_time=utime.time() if run_time-old_time>=50: s.send('[H:%d][S:2][D?3][T:d]'%run_time)#50秒就發一次心跳 old_time=run_time print(data)
再接入5V繼電器,就可控制啦 ,當然還可以用控制更多開關,顯示資料啥的,
&n