树莓派就相当于一个简单的带GPIO口的Linux电脑,他的拓展性非常的强。我们可以用它来实现很多功能,特别是将树莓派当做是一个服务器,通过网页与树莓派进行交互。这个是一个用网页控制树莓派小车的程序。

今天的内容非常的少,所以很快就可以看完。

网页内容

我们首先要在网页上绘制一些按键,通过按键来控制树莓派。绘制方法比较简单,建议自学。将一下代码保存并命名为index.html

index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>遥控树莓派智能小车</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="http://code.jquery.com/jquery.js"></script>
<style type="text/css">
#front {
margin-left: 55px;
margin-bottom: 3px;
}
#w{
margin-bottom: 3px;
margin-left: 55px;
}
#s{
margin-top: 3px;
margin-left: 55px;
}
.btn{
background: #62559f;
}
</style>
<script>
$(function(){
$("button").click(function(){
$.post("/cmd",this.id,function(data,status){});
});
});

</script>
</head>
<body>
<div id="container" class="container">

<div>
<button id='w' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-up"></button>
<div>
<button id='a' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-left"></button>
<button id='z' class="btn btn-lg btn-primary glyphicon glyphicon-stop"></button>
<button id='d' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-right"></button>
</div>
<div>
<button id='s' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-down"></button>
</div>
<div>
<button id='q' class="btn btn-lg btn-primary glyphicon"> 加速 </button>
<button id='e' class="btn btn-lg btn-primary glyphicon"> 减速 </button>
<button id='z' class="btn btn-lg btn-primary glyphicon"> 退出 </button>
<div>
</div>

<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

效果如图所示:
20200703224721-2020-07-03

然后就是写一个python程序来驱动这个网页,并且监控按键的状态。

Python代码

Bottle框架介绍

Bottle是一个快速小巧,轻量级的 WSGI 微型 web 框架。同时Bottle也是一个简单高效的遵循WSGI的微型python Web框架。

说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

URL映射(Routing):将 URL 请求映射到 Python 函数,使 URL 更简洁。

模板(Templates):快速且 pythonic 的内置模板引擎 ,同时支持 mako, jinja2 和 cheetah 等模板。

基础功能(Utilities):方便地访问表单数据,上传文件,使用 cookie,查看 HTTP 元数据。

开发服务器(Server):内置了开发服务器,且支持 paste, fapws3 , bjoern, Google App Engine,cherrypy 等符合 WSGI 标准的 HTTP 服务器。

官网地址为: http://www.bottlepy.org/docs/dev/index.html

官网教程: http://www.bottlepy.org/docs/dev/tutorial.html

代码

1
2
3
4
5
6
7
8
9
10
11
from bottle import get,post,run,request,template

@get("/")
def index():
return template("index")
@post("/cmd")
def cmd():
adss=request.body.read().decode()
print("按下了按钮:"+adss)
return "OK"
run(host="0.0.0.0",port=8080)

要实现具体的控制方法,只需要读取按键的ID,然后判断就行了,使用Python加Bottle可以实现非常多的功能。

就是这样了,具体的使用方法查询bottle的教程。例如:http://www.cppcns.com/jiaoben/python/319364.html等等。

如果有其他疑问请百度