树莓派Wifi小车(一)
树莓派刚发布的时候就一直想搞一台,但是淘宝上面的价格也是一直居高不下,想想家里已经N多PC,NAS和笔记本了,一直找不到入手的理由。圣诞节附近随便一刷淘宝,发现新版本B+ 已经降到了170块,果断买下。
回家折腾了几天,性能果然弱的跟价格成正比。。。百兆的小网卡实在看不上眼。算了,从小玩意玩起吧,先装一个wifi小车。
有了想法,开始组装! 由于之前折腾了几天Arduino对于各种驱动板已经基本熟悉,所以接线非常简单。底盘随便找了块塑料板,轮子直接双面胶+热熔胶固定,总之是很丑,好吧。。。
不怕见笑,Beta版完成图如下:
驱动板有两种,一种是L298N
主控芯片 | L298N | 包装形式 | 盒装出货 |
逻辑电压 | 5V | 驱动电压 | 5V-35V |
逻辑电流 | 0mA-36mA | 驱动电流 | 2A(MAX单桥) |
存储温度 | -20℃ 到 +135℃ | 最大功率 | 25W |
电机工作电压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 需要的朋友可以参考一下。