首先需要android客户端与树莓派进行连接,树莓派与android客户端利用wifi连接并进行socket通信请参考我的另一片文章:https://mp.csdn.net/postedit/79911322 。树莓派与Android客户端连接成功后就可以开始让android客户端给树莓派发送指令控制树莓派GPIO口的电平输出
首先需要搞清楚树莓派的GPIO引脚,这里我用的树莓派3B,其引脚图参数如下:
上图中左右依次对应,而我这里利用的是23、24(GPIO.4、GPIO.5)两个引脚分别来点亮2个LED灯。
先贴上跑在树莓派上的python代码(代码很简单我就不写注释了,有问题可以留言):
import socket
import time
import sys
import RPi.GPIO as GPIO
import time
GPIO_PIN = 23
HOST_IP = "192.168.12.1"
HOST_PORT = 7654
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT) #用到的引脚必须要先setup
GPIO.setup(24, GPIO.OUT)
print("Starting socket: TCP...")
socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("TCP server listen @ %s:%d!" %(HOST_IP, HOST_PORT) )
host_addr = (HOST_IP, HOST_PORT)
socket_tcp.bind(host_addr)
socket_tcp.listen(1)
while True:
print ('waiting for connection...')
socket_con, (client_ip, client_port) = socket_tcp.accept()
print("Connection accepted from %s." %client_ip)
socket_con.send("Welcome to RPi TCP server!")
while True:
data=socket_con.recv(1024)
if data:
print(data)
while True:
ctlmsg=socket_con.recv(1024)
if ctlmsg=="device1":
GPIO_PIN=23
if ctlmsg=="device2":
GPIO_PIN=24
if ctlmsg=="turn_on":
print("************turn on********")
GPIO.output(GPIO_PIN,GPIO.HIGH)
if ctlmsg=="turn_off":
print("***********