准备工作

1:搭建web服务器 nginx + php + sqlite

参考链接:http://blog.csdn/xdw1985829/article/details/38919495

注意事项:

配置nginx与php链接的时候

        location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
                include fastcgi_params;
        }

其中 /usr/share/nginx/html/ 为nginx 默认路径


2:编写php页面 以及python脚本

树莓派官方镜像自带python 以及Python GPIO 库

此处需要注意权限问题,大部分问题都是权限引起的

参考链接1:http://zpblog/raspi/raspberry-pi-8-php-python-gpio.html

参考链接2:http://blog.csdn/u012782626/article/details/42344265

参考链接3:http://www.2cto/kf/201704/622873.html


3:程序源码

调用关系  index.php->led.php->led_on(off).py

文件存放路径 /usr/share/nginx/html

3.1 编写 index.php

<html>
<head><title>Control System</title></head>
<body>

<h2 align="center">Welcome to control system!</h2>
<h3 align="center">Here is to control</h3>
<hr/>
<form action="led.php" method="post">
<input name="led" type="hidden" value="1"/>
<input type="submit"  value="ON">
</form>

<form action="led.php" method="post">
<input name="led" type="hidden" value="0"/>
<input type="submit"  value="OFF">
</form>


</body>
</html>


3.2 编写led.php

<html>
<body>

<?php

if($_POST["led"]){
    echo("led on</br>");
    system("sudo nohup /usr/bin/python /usr/share/nginx/html/led_on.py",$ret);
}else{
    echo("led off</br>");
    system("sudo nohup /usr/bin/python /usr/share/nginx/html/led_off.py",$ret);   
}

if($ret){
    echo("ret is $ret,error!</br>");
}else{
    echo("ret is $ret,success!</br>");
}

?>

</body>
</html>



3.3 编写 led_on.py,编写led_off.py

led_on.py

#!/usr/bin/env python
 
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11,GPIO.OUT)

GPIO.output(11,True)


led_off.py

#!/usr/bin/env python
 
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11,GPIO.OUT)

GPIO.output(11,False)


以上网页可以访问树莓派并控制GPIO


更多推荐

树莓派搭建nginx服务器实现PHP web控制树莓派GPIO