@2018年12月29日
-
一、背景
在之前两篇博客中,学习记录了python控制LED灯、套接字C/S通信。如
1.树莓派学习笔记1:python控制双色LED灯(https://blog.youkuaiyun.com/weixin_44230447/article/details/85223640)
2.Python学习笔记1:套接字编程-服务和客户端(https://blog.youkuaiyun.com/weixin_44230447/article/details/85267244)
基本原理和简单程序实现后,元旦期间对程序又进行了修改,主要是服务端程序修改较多。 -
二、基本原理和实验环境
1.硬件:树莓派及LED,参考树莓派学习笔记1
2.软件: -
服务端程序,部署在树莓派上,host 如192.168.1.107;
-
客户端程序,本地pc上,可以是一python程序,也可是telnet工具。
-
树莓派和客户端终端,都接入一个局域网。跨域的还没试过。
在客户端通过 socket与远端建立TCP连接,发送指令字符到树莓派上服务端程序,按指令调用GPIO语句,控制电平高低,最终控制红绿LED的开关。
- 三、python+树莓派实现
(一)服务端程序
# -*- coding:utf-8 -*-
# Socket Server example in python 3.6
# 文件名:Socket_server_test.py
import socket
import sys
import RPi.GPIO as GPIO
import time
# ------------------------------------------------------------------
HOST = '' # Symbolic name meaning all available interfaces
PORT = 8888 # Arbitrary non-privileged port
timeout_limit=120 # unit-sec,建立连接后如果超过xx 秒,将断开连接
connect_times_limit=5 # unit-times,连接中断次数达到xx 次,将关闭socket和中止服务端程序。
#------------------------------------------------------------------
pins = {
'pin_R':11, 'pin_G':12} # pins is a dict
sleep_time = 5
GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location
for i in pins:
GPIO.setup(pins[i], GPIO.OUT) # Set pins' mode is output
GPIO.output(pins[i], GPIO.LOW) # Set pins to low(0V) to off led
print("i is ",i,pins[i])
def Let_Led_on(pin):
print('The pin is',pin)
if pin=='pin_R' :
other_pin='pin_G'
elif pin=='pin_G' :
other_pin='pin_R'
else :
print('Input error.\r\n')
GPIO.output