树莓派Wifi小车(一)


到年末了,最近也有了一些自己的时间。回到了原来的技术处,晚上终于不用疯狂加班了,下班回家也终于有功夫折腾自己以前想玩的玩具了: )

树莓派刚发布的时候就一直想搞一台,但是淘宝上面的价格也是一直居高不下,想想家里已经N多PC,NAS和笔记本了,一直找不到入手的理由。圣诞节附近随便一刷淘宝,发现新版本B+ 已经降到了170块,果断买下。

回家折腾了几天,性能果然弱的跟价格成正比。。。百兆的小网卡实在看不上眼。算了,从小玩意玩起吧,先装一个wifi小车。

有了想法,开始组装! 由于之前折腾了几天Arduino对于各种驱动板已经基本熟悉,所以接线非常简单。底盘随便找了块塑料板,轮子直接双面胶+热熔胶固定,总之是很丑,好吧。。。



不怕见笑,Beta版完成图如下:



 

驱动板有两种,一种是L298N

主控芯片

L298N

包装形式

盒装出货

逻辑电压

5V

驱动电压

5V-35V

逻辑电流

0mA-36mA

驱动电流

2A(MAX单桥)

存储温度

-20℃ 到 +135℃

最大功率

25W


另一种是L9110S芯片的驱动板,参数如下: 模块供电电压:2.5-12V

电机工作电压2.5v-12V之间,

最大工作电流0.8A

考虑到我们的小车不需那么大功率,直接用一个L9110S驱动板,单侧的轮子并联为一组,这样相当于驱动板驱动两路直流电机组。

代码部分,小车的server端用python写的,用了个把小时(网页css多年没写过了,折腾死)。网页版控制页面如下:


刚开始用的图标太丑,在同事的提醒下,改了个按钮图标现在看起来顺眼多了,感谢@Jane同学。

运行效果:



核心代码:
'''
#=============================================================================
# FileName: views.py
# Desc:
# Author: wangheng
# Email: wujiwh@gmail.com
# HomePage: http://wangheng.org
# Version: 0.0.1
# LastChange: 2015-01-14 13:46:29
# History:
#=============================================================================
'''
from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
from contextlib import closing
from pi_car import app
import re
import RPi.GPIO as GPIO
@app.route('/')
def show_index():
return render_template('home.html')

@app.route("/login", methods=["GET", "POST"])
def login():
if request.method=="GET":
return "get"+request.form["user"]
elif request.method=="POST":
return "post"

@app.route('/ctl',methods=['GET','POST'])
def ctrl_id():
if request.method == 'POST':
id=request.form['id']
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(12,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)
GPIO.setup(16,GPIO.OUT)

if id == 't_left':
t_left()
return "left"
elif id == 't_right':
t_right()
return "right"
elif id == 't_up':
t_up()
return "up"
elif id == 't_down':
t_down()
return "down"
elif id == 't_stop':
t_stop()
return "stop"

return redirect(url_for('show_index'))

def t_stop():
GPIO.output(11, False)
GPIO.output(12, False)
GPIO.output(15, False)
GPIO.output(16, False)

def t_up():
GPIO.output(11, True)
GPIO.output(12, False)
GPIO.output(15, True)
GPIO.output(16, False)

def t_down():
GPIO.output(11, False)
GPIO.output(12, True)
GPIO.output(15, False)
GPIO.output(16, True)

def t_left():
GPIO.output(11, False)
GPIO.output(12, True)
GPIO.output(15, True)
GPIO.output(16, False)

def t_right():
GPIO.output(11, True)
GPIO.output(12, False)
GPIO.output(15, False)
GPIO.output(16, True)
启动网页服务:

使用root用户ssh登陆到树莓派,切换到piCar的目录,执行python server.py 打开你的浏览器,输入树莓派IP:2000 就能看到你的控制页面了。 :)

程序的完整源码放到了 https://github.com/wujiwh/piCar/tree/master/server 需要的朋友可以参考一下。
  • 本文作者: 王恒
  • 本文链接: raspberry-wifi-car-1.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。转载请注明出处!