实现功能
基于树莓派3B+的视频车:可遥控,显示小车两自由度舵机支架上的摄像头视频。
- 启动小车程序
- 小车控制线程和摄像头线程运行
- 使用遥控器可遥控小车行走,并控制两自由度的摄像头舵机支架调整摄像头视野
- 树莓派的初次使用、opencv安装及远程连接等可以参考另一篇文章:
链接: 树莓派的使用网线及无线连接方法及手机连接树莓派_opencv镜像.

硬件材料
- 树莓派3B+
- 32G及以上TF卡
- PS2手柄
- 12V(或其他)电池
- L298N电机驱动模块
- 稳压模块(12V/或其他 转 5V)用于树莓派供电及舵机供电
- 小车底盘(带舵机、电机的方便些)
- 树莓派CSI摄像头
- 其他(舵机支架、开关等)
控制程序
PS2手柄驱动程序
PS2手柄实现功能如图:

import RPi.GPIO as GPIO
import time
import spidev#linux环境下用于spi通讯
import io
import cv2
import os
os.environ['SDL_VIDEODRIVE'] = 'x11'
from time import ctime,sleep,time
#手柄按键定义
PSB_SELECT = 1
PSB_L3 = 2
PSB_R3 = 3
PSB_START = 4
PSB_PAD_UP = 5
PSB_PAD_RIGHT = 6
PSB_PAD_DOWN = 7
PSB_PAD_LEFT = 8
PSB_L2 = 9
PSB_R2 = 10
PSB_L1 = 11
PSB_R1 = 12
PSB_TRIANGLE = 13
PSB_CIRCLE = 14
PSB_CROSS = 15
PSB_SQUARE = 16
#摇杆的数据
PSS_RX = 5 #右边摇杆X轴数据
PSS_RY = 6 #右边摇杆Y轴数据
PSS_LX = 7 #左边摇杆X轴数据
PSS_LY = 8 #右边摇杆Y轴数据
#PS2引脚设置,接树莓派引脚
PS2_DAT_PIN = 10 #接DAT
PS2_CMD_PIN = 9 #接CMD
PS2_SEL_PIN = 25 #接CS
PS2_CLK_PIN = 11 #接CLK
global Handkey
scan=[0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
Data=[0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
MASK = [PSB_SELECT,PSB_L3,PSB_R3,PSB_START,PSB_PAD_UP,PSB_PAD_RIGHT,PSB_PAD_DOWN,PSB_PAD_LEFT,PSB_L2,PSB_R2,PSB_L1,PSB_R1,PSB_TRIANGLE,PSB_CIRCLE,PSB_CROSS,PSB_SQUARE]
#设置GPIO口为BCM编码方式
GPIO.setmode(GPIO.BCM)
#忽略警告信息
GPIO.setwarnings(False)
#spi初始化
def spi_init():
spi = spidev.SpiDev()
spi.open(0,0)
GPIO.setup(PS2_CMD_PIN,GPIO.OUT,initial=GPIO.HIGH)
GPIO.setup(PS2_CLK_PIN,GPIO.OUT,initial=GPIO.HIGH)
GPIO.setup(PS2_DAT_PIN, GPIO.IN)
GPIO.setup(PS2_SEL_PIN,GPIO.OUT,initial=GPIO.HIGH)
#读取PS2摇杆的模拟值
def PS2_AnologaData(button):
return Data[button

本文介绍了如何利用树莓派3B+、PS2手柄、摄像头和电机驱动,实现视频小车的遥控行驶,以及通过舵机调整摄像头视角。详细讲解了PS2手柄驱动和运动控制程序的编写,以及扩展的深度学习巡线应用示例。
262

被折叠的 条评论
为什么被折叠?



