您的位置:首页 > 其它

树莓派-改造插线板,支持手机平板控制开关

2017-09-11 10:59 253 查看
改造原理图:



第1步:搭建Apache+PHP环境

具体步骤可以在网上搜索,此处只描述程序编写部分。

第2步:编写PHP网页端

一共2个页面,1个手机访问页面index.php,1个ajax请求响应页面ajax.php,代码如下:

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="jquery-3.2.1.min.js"></script>
<title>树莓派网页开关</title>
<style type="text/css">
.main { text-align: center; }
#btnSwitch { padding: 2em; width: 80%; background: gray; color: white; border: 0; font-weight: bold; font-size: 1em; border-radius: 1em; display: block; margin: 2em auto; }
.on { background: red !important; }
</style>
<script type="text/javascript">
var _status = false;
var url = "ajax.php";
$(function () {
initStatus();
$.ajax({
type: "POST",
url: url,
data: {
action: "get-status"
},
success: function (result) {
_status = (result == "true");
initStatus();
}
});

$("#btnSwitch").click(function () {
_status = (!_status);
$.ajax({
type: "POST",
url: url,
data: {
action: "set-status",
status: _status
},
success: function (result) {
initStatus();
}
});
});
})
function initStatus() {
if (_status) {
$("#btnSwitch").text("点击关闭").addClass("on");
} else {
$("#btnSwitch").text("点击开启").removeClass("on")
}
}
</script>
</head>
<body>
<div class="main">
<h3>
树莓派网页开关</h3>
<span id="btnSwitch"></span>
</div>
</body>
</html>
ajax.php

<?php
$action=$_POST[action];
$status=$_POST[status];
if($action=="get-status"){
$str=file_get_contents("flag.txt");
echo($str);
}else{
$myfile=fopen("flag.txt","w") or die("unable to open file!");
fwrite($myfile,$status);
$str=file_get_contents("flag.txt");
echo($str);
}
?>
第3步:Python读取配置文件

import RPi.GPIO as GPIO
from gpiozero import Buzzer
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(25,GPIO.OUT)

#for i in range(1,101):
while True:
file=open("/var/www/html/discuz/pi/flag.txt")
text=file.read()
file.close()
if(text=="true"):
#print(text)
GPIO.output(17,GPIO.HIGH)
GPIO.output(25,GPIO.HIGH)

else:
GPIO.output(17,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
#print(text)
#time.sleep(.2)


这里接了一个二极管灯和继电器,所以用了2个GPIO接口,可以根据实际情况自行调整。

第4步:连接电路

可以参考原理示意图,注意继电器的入口电压接口和出口电压接口。

第5步:测试电路

上一张完成了的图,继电器被放在了插座内部。






由于涉及220V高压,操作前请务必检查电路并做好安全防护,注意用电安全!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: