智能家居软硬件结合之手机控制电器(Python控制单片机)(转载)

2019-04-15 16:28发布

转载自 作者 ze奇   https://blog.csdn.net/qq_33759448/article/details/62037237

 

 

智能家居----单片机程序(Python控制单片机)

上一篇博客介绍了树莓派的装机,这篇博客为大家介绍一下如何在树莓派中导入Python程序来控制单片机。 由于树莓派中的系统为linux系统,并且自带Python的软件。所以我们的单片机中就用Python来写控制单片机,Python控制单片机也是简单方便的。 首先让大家看一下树莓派的引脚。将继电器扩展板安装到树莓派上。  

Python的程序

控制单片机无非两种形式(高电平--关闭,低电平--开启),废话不多说,直接站代码: import time
import SimpleHTTPServer
import SocketServer
import RPi.GPIO as GPIO


PIN_CH1=37  #CH1
PIN_CH2=38  #CH2
PIN_CH3=40  #CH3
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_CH1, GPIO.OUT)
GPIO.setup(PIN_CH2, GPIO.OUT)
GPIO.setup(PIN_CH3, GPIO.OUT)
class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_POST(self):
        length = self.headers.getheader('content-length')
        try:
            nbytes = int(length)
        except (TypeError, ValueError):
            nbytes = 0
        if self.command.lower() == "post" and nbytes > 0:
            data = self.rfile.read(nbytes)
            print "--------------------------------------------------------------------------------"
            print data
            print "================================================================================"
        else:
            data = None
    def do_GET(self):
       
        DUMMY_RESPONSE = """success"""
        # http://localhost:8000?abc=100&hello=world  => 
        # self.path = "/?abc=100&hello=world"
        print self.path  
        
        if self.path == "/?on1":
            GPIO.output(PIN_CH1,GPIO.LOW)
            print "PIN_NO,GPIO.HIGH"  
        elif self.path == "/?off1":
            GPIO.output(PIN_CH1,GPIO.HIGH)
            print "PIN_NO,GPIO.LOW"  
        elif self.path == "/?on2":
            GPIO.output(PIN_CH2,GPIO.LOW)
            print "PIN_NO,GPIO.LOW"
        elif self.path == "/?off2":
            GPIO.output(PIN_CH2,GPIO.HIGH)
            print "PIN_NO,GPIO.LOW"
        elif self.path == "/?on3":
            GPIO.output(PIN_CH3,GPIO.LOW)
            print "PIN_NO,GPIO.LOW"
        elif self.path == "/?off3":
            GPIO.output(PIN_CH3,GPIO.HIGH)
            print "PIN_NO,GPIO.LOW"
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.send_header("Content-length", len(DUMMY_RESPONSE))
        self.end_headers()
        self.wfile.write(DUMMY_RESPONSE)       


myhttpd=SocketServer.TCPServer(("",8000),MyHTTPRequestHandler)
myhttpd.serve_forever()


#GPIO.cleanup() 这段代码使用Python写的简单的服务器,其中报刊post请求及get请求,将该.py文件,复制到装好系统的内存卡上,用树莓派上的python工具打开该程序并运行,获取到树莓派的ip,打开终端,输入“ifconfig -a”回车后回去ip地址。 为了验证服务器是否搭建成功,你可以用与树莓派连接一个局域网的电脑打开获取到的地址,看是否有返回数据,如果有返回数据,返回的数据为“success”。说明书武器搭建成功,通过手机去访问就可以啦。 其实现在你就可以控制单片机了,连接继电器,打开电脑浏览器,输入“‘’你的树莓派ip‘’”+“/?on3”为打开第三个口的继电器。获取输入“‘’你的树莓派ip‘’”+“/?off3”为关闭第三个扣的继电器。 (注:Python用的SockServer搭建的后台)