下面是上一章的具體代碼
我們這一章是修改其中的代碼,使系統能通過wifi控制樹莓派亮燈
import socket as s
import _thread
def tcplink(conn,addr):
print(conn,addr)
while 1:
data = conn.recv(1024)
if not data:
break
print(str(data,"utf-8"))
s_tcp = s.sock(s.AF_INET,s.SOCK_STREAM)
s_tcp.bind(("0.0.0.0",60000))
s_tcp.listen(100)
while 1:
print("start")
conn,addr = s_tcp.accept()
_thread.start_new_thread(tcplink,(conn,addr))
先接線
弄個led燈模塊,GND接負極,R/VCC接GPIO11口(BCM模式下的17)
然後分兩步走
1-改寫樹莓派的代碼
2-改寫電腦端的代碼
1-改寫樹莓派的代碼
#在樹莓派的程序里加入這些
import RPi.GPIO as r#導入模塊
r.setmode(r.BCM)#設置GPIO口模式
led = 17#燈是連接到GPIO11口,11口在BCM模式下是17,所以我們賦值爲17
r.setup(led,r.OUT)#將led的信號端口設定爲OUT,意思是信號從樹莓派傳向led燈
#修改tcplink函數
def tcplink(conn,addr):
print(conn,addr)
while 1:
data = conn.recv(1024)
#####從下面開始修改####
if not data:
break
data = str(data,"utf-8")#將接受的信息通過str函數,使用utf-8編碼轉回字符串
if data == "1":
r.output(led,r.HIGH)
#如果data是1的字符串,那麼就開燈,下面同理,是0的話就亮燈
if data == "0":
r.output(led,r.LOW)
2-改寫電腦端的代碼
import socket as s
import time#加入時間模塊
s_tcp = s.socket(s.AF_INET,s.SOCK_STREAM)
s_tcp.connect(("192.168.2.3",60000))#同樣這裏按照你自己樹莓派的端口重新設置ip
while True:
for i in range(1,6):#以下代碼自動重複5次
s_tcp.sendall(bytes("1","utf-8"))
time.sleep(1)#停止1秒後再運行下面的程序
s_tcp.sendall(bytes("0","utf-8"))
time.sleep(1)#停止1秒後再繼續運行
break
通過這個代碼,每1秒向樹莓派發送一個信息,達到燈一閃一滅的效果
然後先運行樹莓派端的程序,再運行電腦端的程序,就可以看到燈在wifi控制下一閃一閃啦
有什麼問題可以留言,會及時回覆的哈~