智能家居----单片机程序(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搭建的后台)