下面是上一章的具体代码
我们这一章是修改其中的代码,使系统能通过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控制下一闪一闪啦
有什么问题可以留言,会及时回复的哈~