【进阶三】家庭陪伴小机器人遥控小车功能实现
本帖最后由 ky123 于 2018-1-31 14:10 编辑感谢E络盟提供的助赛基金。年底项目比较忙,没有能安装计划进行,大赛会截止了才发现很多东西没有完成,赶了几个通宵完成了部分功能,就这部分功能与大家分享下,期间也趟过好几个坑,也借鉴了很多大神的代码和思想。一直觉得有句话很有道理“不要认为自己是软件工程师,其实我们是技术的搬运工,我们是应用工程师”,linux的世界是开放的世界,他的好处就是不重复造轮子!
切入正题,本章讲解项目中小车的遥控的实现过程;
硬件部分:
亚克力板搭建小车框架,左边的两个电机由一个L298N控制,右边的两个电机由一个L298N控制,由于同侧的两个轮子运动方向相同,因此单侧的两个电机工用一组GPIO,小车运动控制部分共用4个GPIO口!分别为使用了物理GPIO 19/21/22/24,wringpi GPIO12/13/6/10;
软件部分:
操作系统:raspbian jessie
编程语音:Python
1.电机驱动部分(参考了王恒的博客)
主要根据实际需求修改GPIO即可!vim ~/car/piCar/server/pi_car/view.pydef ctrl_id():
if request.method == 'POST':
id=request.form['id']
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(19,GPIO.OUT)
GPIO.setup(21,GPIO.OUT)
GPIO.setup(22,GPIO.OUT)
GPIO.setup(24,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(19, False)
GPIO.output(21, False)
GPIO.output(22, False)
GPIO.output(24, False)
#os.system(/usr/local/bin/mjpg_streamer -i "input_uvc.so -y -f 5 -r 640x480" -o "output_http.so -w /usr/local/www"z)
def t_up():
GPIO.output(19, True)
GPIO.output(21, False)
GPIO.output(22, True)
GPIO.output(24, False)
def t_down():
GPIO.output(19, False)
GPIO.output(21, True)
GPIO.output(22, False)
GPIO.output(24, True)
def t_left():
GPIO.output(19, False)
GPIO.output(21, True)
GPIO.output(22, True)
GPIO.output(24, False)
def t_right():
GPIO.output(19, True)
GPIO.output(21, False)
GPIO.output(22, False)
GPIO.output(24, True)2.web版http server程序
根据需求修改为个人实际IP地址~/car/piCar/server/pi_car/config.pyclass Config(object):
BASEDIR = os.path.abspath(os.path.dirname(__file__))
DATABASE = BASEDIR+'/var/pi.db'
SECRET_KEY = os.urandom(24)
USERNAME = 'admin'
PASSWORD = 'default'
DEBUG = True
HOST = '192.168.1.105'
PORT = 2000
class Development(Config):
pass
class Production(Config):
DEBUG = False
HOST = '192.168.1.105'
PORT = 8080
完成以上步骤,执行sudo python server.py,然后输入树莓派IP:2000即可实现对小车的控制!
3.添加开机自启动配置
完成以上步骤还不够,为保证小车开机就可以控制,还需要添加自启动!
添加过程如下:sudo vim /etc/rc.local添加以下代码:sudo python /home/pi/car/piCar/server/server.py
重启后即可实现开机自启动小车远程控制! 我也喜欢这玩意 树莓派再加上Python语言是真的简单易用~再加上模块化的电机控制板,打造一个小车也是简简单单充满了乐趣~
页:
[1]