TA的每日心情 | 开心 2018-9-6 15:08 |
---|
签到天数: 11 天 连续签到: 1 天 [LV.3]偶尔看看II
|
本帖最后由 ky123 于 2018-1-31 14:10 编辑
感谢E络盟提供的助赛基金。 年底项目比较忙,没有能安装计划进行,大赛会截止了才发现很多东西没有完成,赶了几个通宵完成了部分功能,就这部分功能与大家分享下,期间也趟过好几个坑,也借鉴了很多大神的代码和思想。一直觉得有句话很有道理“不要认为自己是软件工程师,其实我们是技术的搬运工,我们是应用工程师”,linux的世界是开放的世界,他的好处就是不重复造轮子!
切入正题,本章讲解项目中小车的遥控的实现过程;
硬件部分:
亚克力板搭建小车框架,左边的两个电机由一个L298N控制,右边的两个电机由一个L298N控制,由于同侧的两个轮子运动方向相同,因此单侧的两个电机工用一组GPIO,小车运动控制部分共用4个GPIO口!分别为使用了物理GPIO 19/21/22/24,wringpi GPIO12/13/6/10;
电机使用的GPIO
电机驱动逻辑
软件部分:
操作系统:raspbian jessie
编程语音:Python
1.电机驱动部分(参考了王恒的博客)
主要根据实际需求修改GPIO即可!- vim ~/car/piCar/server/pi_car/view.py
复制代码- def 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.py
复制代码- class 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 python /home/pi/car/piCar/server/server.py
复制代码 重启后即可实现开机自启动小车远程控制! |
|