2回答

1收藏

[大赛作品提交] 【进阶三】家庭陪伴小机器人遥控小车功能实现

Raspberry Pi Raspberry Pi 5264 人阅读 | 2 人回复 | 2018-01-03

本帖最后由 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即可!
  1. vim ~/car/piCar/server/pi_car/view.py
复制代码
  1. def ctrl_id():
  2.         if request.method == 'POST':
  3.                 id=request.form['id']
  4.                 GPIO.setmode(GPIO.BOARD)
  5.                 GPIO.setwarnings(False)
  6.                 GPIO.setup(19,GPIO.OUT)
  7.                 GPIO.setup(21,GPIO.OUT)
  8.                 GPIO.setup(22,GPIO.OUT)
  9.                 GPIO.setup(24,GPIO.OUT)

  10.                 if id == 't_left':
  11.                         t_left()
  12.                         return "left"
  13.                 elif id == 't_right':
  14.                         t_right()
  15.                         return "right"
  16.                 elif id == 't_up':
  17.                         t_up()
  18.                         return "up"
  19.                 elif id == 't_down':
  20.                         t_down()
  21.                         return "down"
  22.                 elif id == 't_stop':
  23.                         t_stop()
  24.                         return "stop"

  25.         return redirect(url_for('show_index'))

  26. def t_stop():
  27.         GPIO.output(19, False)
  28.         GPIO.output(21, False)
  29.         GPIO.output(22, False)
  30.         GPIO.output(24, False)
  31.         #  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)

  32. def t_up():
  33.         GPIO.output(19, True)
  34.         GPIO.output(21, False)
  35.         GPIO.output(22, True)
  36.         GPIO.output(24, False)

  37. def t_down():
  38.         GPIO.output(19, False)
  39.         GPIO.output(21, True)
  40.         GPIO.output(22, False)
  41.         GPIO.output(24, True)

  42. def t_left():
  43.         GPIO.output(19, False)
  44.         GPIO.output(21, True)
  45.         GPIO.output(22, True)
  46.         GPIO.output(24, False)

  47. def t_right():
  48.         GPIO.output(19, True)
  49.         GPIO.output(21, False)
  50.         GPIO.output(22, False)
  51.         GPIO.output(24, True)
复制代码
2.web版http server程序
根据需求修改为个人实际IP地址
  1. ~/car/piCar/server/pi_car/config.py
复制代码
  1. class Config(object):
  2.   BASEDIR = os.path.abspath(os.path.dirname(__file__))
  3.   DATABASE = BASEDIR+'/var/pi.db'
  4.   SECRET_KEY = os.urandom(24)
  5.   USERNAME = 'admin'
  6.   PASSWORD = 'default'
  7.   DEBUG = True
  8.   HOST = '192.168.1.105'
  9.   PORT = 2000
  10. class Development(Config):
  11.   pass
  12. class Production(Config):
  13.   DEBUG = False
  14.   HOST = '192.168.1.105'
  15.   PORT = 8080
复制代码
完成以上步骤,执行sudo python server.py,然后输入树莓派IP:2000即可实现对小车的控制!

3.添加开机自启动配置
完成以上步骤还不够,为保证小车开机就可以控制,还需要添加自启动!
添加过程如下:
  1. sudo vim /etc/rc.local
复制代码
添加以下代码:
  1. sudo python /home/pi/car/piCar/server/server.py
复制代码
重启后即可实现开机自启动小车远程控制!
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

风之山谷

发表于 2018-1-3 17:14:21 | 只看该作者

树莓派再加上Python语言是真的简单易用~再加上模块化的电机控制板,打造一个小车也是简简单单充满了乐趣~
板凳

feixiang20

发表于 2018-1-3 22:00:18 | 只看该作者

我也喜欢这玩意
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条