您的位置:首页 > 编程语言 > Python开发

树莓派+python做的智能远程控制原型

2013-02-21 13:30 489 查看
使用的工具:
树莓派+python+django+pyserial+STC89C52单片机

树莓派通过usb转串口与单片机,linux上自带usb转串口芯片的驱动,真爽!

网页与后台使用django,通过django调用pyserial库向单片机发送命令。

基于这种原型,可以很方便的利用手机浏览器控制家里的电器,好好利用django的账户安全功能,又可以做到远程控制需要的安全保密性!

树莓派+python+django+pyserial这个方案,是我认为在学习成本、搭建速度、开发速度、安全性、易用度、客户端无关性方面比较完美的集合。

视频里使用的手机QQ浏览器,由于手机网络不给力,并且又通过qq服务器压缩转发,所以能看出延迟,如果用电脑操作效果更好。

1、这个方案其实完全可以拿掉单片机,直接将python+django+rpi.gpio结合可以做同样的事,一个树莓派结合继电器就可以做远程网页控制了。

2、但是直接通过单片机利用蓝牙芯片进行串口连接,可以降低无线控制系统的成本。

3、由于网页使用python语言编写,所以可以十分方便的进行本地操作,更有超多的现成库,可实现的功能远远比网页脚本语言强大得多。

4、估计没几个能有比django的admin模块更简单的健全的账户安全系统了。

5、其实整个系统的核心就在django上,所以这个系统运行在任何一个linux终端上上均可以,不单单是树莓派。

6、但是树莓派最大的优势就是低功耗,高度优化的系统和rpi.gpio,作为一个日常低负载的服务器没有人会不喜欢——如果CPU能再给力点的话。

 

1、django教程:http://djangobook.py3k.cn/2.0/ 如果碰到无法理解的问题,别急,去https://docs.djangoproject.com/en/1.4/找找答案。
2、51单片机的串口例程:http://www.elecfans.com/emb/danpianji/20110509197678.html
3、PySerial方面完全可以用这里的代码:http://www.shumeipai.net/read.php?tid=1118&ds=1#11689

4、下面贴一下django里的部分app代码:

 

1 control.py:
2
3 #!/usr/bin/env python
4 import serial
5
6 class Control():
7     def __init__(self,device='/dev/ttyUSB0',BAUD=4800):
8         self.client = serial.Serial(device,BAUD,timeout=1)
9     def command(self,CMD):
10         try:
11             self.client.write(CMD)
12             self.client.close()
13         except:
14             pass
15
16
17 views.py:
18
19 from django.shortcuts import render_to_response
20 from django.template import RequestContext
21 from django.http import HttpResponse,HttpResponseRedirect, Http404
22 from control import Control
23
24 def control(request):
25     DEMO=None
26     if request.method == 'POST':
27         if 'CMD' in request.POST:
28             CON = Control()
29             CMD = request.POST['CMD']
30             CON.command(CMD)
31         if 'demo' in request.POST:
32             DEMO=request.POST['demo']
33         if 'not_demo' in request.POST:
34             DEMO=None
35     return render_to_response('controller.html',{'demo':DEMO},context_instance=RequestContext(request))


再贴上有点偏离主题的视频里示范网页的html模板代码:

1 {% extends "basepage.html" %}
2
3 {% block title %}远程控制{% endblock %}
4 {% block content %}
5 {% if not demo %}
6 <form action="" method="post">{% csrf_token %}
7 <p><input type="submit" name='demo' title='视频演示' accesskey="y" value="视频演示"></button></p>
8 </form>
9 <form action="" method="post">{% csrf_token %}
10 <p><input type="submit" name='CMD' title='开' accesskey="k" value="01">开</button></p>
11 <p><input type="submit" name='CMD' title='关' accesskey="g" value="00">关</button></p>
12 <p><input type="submit" name='CMD' title='闪' accesskey="s" value="88">闪</button></p>
13 </form>
14 {% endif %}
15 {% if demo %}
16 <form action="" method="post">{% csrf_token %}
17 <p><input type="submit" name='not_demo' title='返回控制' accesskey="f" value="返回控制"></button></p>
18 </form>
19 <br>
20 <embed src="http://player.youku.com/player.php/sid/XNDY2Nzg2NjI0/v.swf" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>
21 {% endif %}
22 {% endblock%}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: