基于flask通过web浏览器控制树莓派raspberry的GPIO

之前介绍了在树莓派上使用flask web 开发框架,这个框架是基于python的,而树莓派可以很容易的通过python来操作gpio,所有顺其自然的想到通过web来控制树莓派的gpio,可以通过浏览器访问web页面,直接操作raspberry的gpio底层,或者也可以通过手机app发送post或者get等请求,来控制树莓派的gpio,这样岂不是很妙!

个人原创,版权,转载请注明出处,并保留原文链接:

https://www.embbnux.com/2014/10/07/user_flask_to_control_raspberry_gpio_on_web/

   一 首先是树莓派上flask和gpio python环境的搭建

这部分在之前的博客都介绍过了,这里就不再介绍了,详见下面两篇博文:

树莓派raspberry使用python实现GPIO输入输出-按键LED

在树莓派Raspberry上使用flask进行python web开发

  二 处理web请求

使用flask进行web开发很方便,这里使用post来处理gpio操作请求:

@app.route('/gpio/<int:id>',methods=['POST'])
def gpio_led(id):
   if request.method == 'POST':
     GPIO.setmode(GPIO.BOARD)
     if id<100:
       GPIO.setup(id,GPIO.OUT)
       GPIO.setmode(GPIO.BOARD)
       GPIO.setup(id,GPIO.OUT)
       GPIO.output(id,False)
    else:
       GPIO.setup(id-100,GPIO.OUT)
       GPIO.output(id-100,True)
 return redirect(url_for('show_index'))
      

需要引入树莓派的gpio python库


import RPi.GPIO as GPIO

三 网页控制按钮

有了web请求处理,还需要写一个view用来显示操作按钮给用户:


<form action="/gpio/11" method=post>
<input type=submit value="led on" />
</form>
<form action="/gpio/111" method=post>
<input type=submit value="led off"/>
</form>

 

四 运行web程序

web工程代码我已经上传到github上了,需要的同学可以clone下来,运行测试


git clone [email protected]:embbnux/RpiCloudManager.git

cd RpiCloudManager

sudo python runserver.py

通过浏览器访问http://your_raspberry_ip:2000就可以了,效果见下图:

树莓派web

树莓派web控制

非常欢迎有兴趣的同学一起合作开发这个树莓派web平台,可以通过git合作开发。

 

 

《基于flask通过web浏览器控制树莓派raspberry的GPIO》上有6条评论

  1. 博主你好,我最近也在使用python玩玩树莓派的一些东西,希望回访,我的博客是urlteam.org。。我希望来尝试开发这个web平台。。做为一种智能家具的控制器。

  2. 你好,博主,我是一名web前端开发者,最近老是想捣鼓一个门禁系统,因为一些特殊原因导致开门很麻烦。我以前就在想如果能使用WEB网页控制就好了,看了你的这篇文章,很有启发,如果我这边逻辑层通过前台js实现,通过ajax的post来联系基于flask的服务器,硬件控制通过flask来引导的Py框架来控制这样是否可行呢?期待你的回复。

  3. 博主,为什么你的代码在我运行的时候,点击led on\led off时,就会出现:
    请确保你已获取正确的网址: file:///C:/gpio/11
    这样的错误?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据