阿莫斯 发表于 2018-1-3 00:06:25

【进阶三】家庭陪伴小机器人遥控小车功能实现

本帖最后由 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
重启后即可实现开机自启动小车远程控制!

feixiang20 发表于 2018-1-3 22:00:18

我也喜欢这玩意

风之山谷 发表于 2018-1-3 17:14:21

树莓派再加上Python语言是真的简单易用~再加上模块化的电机控制板,打造一个小车也是简简单单充满了乐趣~
页: [1]
查看完整版本: 【进阶三】家庭陪伴小机器人遥控小车功能实现

Baidu
map