智能家居软硬件结合之手机控制电器(Python控制单片机)
来源:互联网 发布:召唤师捏脸数据 编辑:程序博客网 时间:2024/06/10 05:08
智能家居----单片机程序(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()
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搭建的后台)
1 0
- 智能家居软硬件结合之手机控制电器(Python控制单片机)
- 智能家居软硬件结合之手机控制电器(树莓派)
- 智能家居软硬件结合之手机控制电器(手机与Python后台交互)
- 智能家居之语音控制家电
- 基于android手机的智能家居控制
- HI3518E网络摄像机烟雾探测报警智能家居的使用(手机APP,RF,红外,家电控制)
- 手机与单片机通过蓝牙通信----手机控制灯
- 51单片机结合NRF24L01对舵机进行无线控制
- PLC从入门到精通(三)电器控制线路的控制方法
- 生活之手机控制电脑
- 智能家居项目进度控制表
- python 之版本控制
- Python之‘’控制流‘’
- Python之‘’控制流‘’
- Python之‘’控制流‘’
- PIC单片机之I/O控制
- 单片机控制NOKIA5110液晶屏之模块化编程
- 51单片机之蓝牙控制风扇
- 优秀的程序员
- 二叉树遍历
- 移动端点击穿透遮罩层场景
- Andriod二维码的生成和保存
- JZOJ5001. Trie树
- 智能家居软硬件结合之手机控制电器(Python控制单片机)
- iOS推送
- 各种网站导航
- android ART编译预优化
- 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样,则继续 判断第二个字母。
- Javaxcms
- centos 下git 访问github 的配置
- activiti自动建立数据库失败
- Spring 配置文件xml文档的schema约束