所用工具:
樹莓派+python+django+pyserial+STC89C52單片機
樹莓派通過串口與單片機通訊,網頁與后台使用django驅動,然后通過django調用pyserial庫向單片機發送命令。
很多童鞋選擇用web.py來做前端,但是考慮到以后開發的便捷性和健壯性,我還是堅持選擇用django來做。
基於這種原型,可以很方便的利用手機瀏覽器控制各種外圍電器,好好利用django的賬戶安全功能,又可以做到遠程控制需要的安全保密性!
樹莓派+python+django+pyserial這個方案,是我認為在學習成本、搭建速度、開發速度、安全性、易用度、客戶端無關性方面比較完美的集合。
視頻里使用的手機QQ瀏覽器,由於手機網絡不給力,並且又通過qq服務器壓縮轉發,所以能看出延遲,如果用電腦操作效果更好。
1、這個方案其實完全可以拿掉單片機,直接將python+django+rpi.gpio結合可以做同樣的事,一個樹莓派結合繼電器就可以做遠程網頁控制了。然而單片機有很多現成外設驅動可用,如果用Python來實現驅動,可能會降低可靠性,同時也會提高外圍擴展的復雜性。
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代碼:
#!/usr/bin/env python import serial class Control(): def __init__(self,device='/dev/ttyUSB0',BAUD=4800): self.client = serial.Serial(device,BAUD,timeout=1) def command(self,CMD): try: self.client.write(CMD) self.client.close() except: pass views.py: from django.shortcuts import render_to_response from django.template import RequestContext from django.http import HttpResponse,HttpResponseRedirect, Http404 from control import Control def control(request): DEMO=None if request.method == 'POST': if 'CMD' in request.POST: CON = Control() CMD = request.POST['CMD'] CON.command(CMD) return render_to_response('controller.html',{'demo':DEMO},context_instance=RequestContext(request))
再貼上有點偏離主題的視頻里示范網頁的html模板代碼:
<form action="" method="post">{% csrf_token %} <p><button type="submit" name='CMD' title='開' accesskey="k" value="01">開</button></p> <p><button type="submit" name='CMD' title='關' accesskey="g" value="00">關</button></p> <p><button type="submit" name='CMD' title='閃' accesskey="s" value="88">閃</button></p> </form>
單片機代碼,如果有興趣的童鞋可以自己去寫,寫這篇文章的主要目的是幫助大家給現成的單片機控制系統添加網頁控制功能。對於單片機不太了解的人,抱歉,代碼這里欠奉了。