树莓派远程4G遥控车教程(二)-相机云台舵机初步调试

树莓派远程4G遥控车教程(二)-相机云台舵机初步调试

树莓派远程4G遥控车教程(一)-准备工作
树莓派远程4G遥控车教程(三)-摄像头安装及实现局域网实时监控
树莓派远程4G遥控车教程(四)-实时监控内网穿透及集成舵机控制功能

准备工作

出现问题欢迎私信我,大家一起讨论
  1. 树莓派4B+内存卡(已烧录系统)
  2. 舵机云台(已组装,包含两个9g舵机)(需要链接可以私信)
  3. 杜邦线若干
  4. 电脑ssh控制树莓派

运行环境配置

  1. 本文中使用python3进行舵机的控制,自行查找python3安装教程。
  2. 因为这里使用了python3,所以需要手动安装Python v3版本的RPi.GPIO模块。

安装RPi.GPIO模块

  1. 在ssh终端中先运行python3查看当前版本
pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

  1. 安装模块
sudo apt-get -y install python3-rpi.gpio
sudo pip3 install --upgrade RPI.GPIO
  1. 测试是否安装完成(在输入python3后引用模块,查看是否报错)
pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO
>>>

云台舵机接线

注:接线时务必保持树莓派断电状态
  1. 首先从商家到舵机数据,我这里是接入电压5V,工作频率:50Hz(周期:20 ms)
  2. 红色为正极,橙色为负极,其中黄色为控制线。
  3. 由舵机数据得,舵机接入5V电压。正极接入5V接口,负极接入GND接口,控制线接入任意支持GPIO功能接口。(GPIO接口支持pwm信号)
  4. 树莓派4B针脚图

单独舵机控制测试

  1. 这里只接入单个舵机进行测试
  2. 我将舵机的PWM控制线接入了GPIO.1接口
  3. 如上图树莓派针脚图得,树莓派针脚的编码方式有两种,分别是BCM和wiringPi。这里我使用了BCM的编码方式。
  4. 舵机控制线插在BCM编码为18的GPIO.1接口上。
开始测试
  1. 首先打开ssh终端输入python3,启动python编辑器
pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
  1. 导入 RPi.GPIO模块
>>> import RPi.GPIO as GPIO
>>>
  1. 定义使用BCM引脚方案。并定义你使用的针脚(我这里控制线接在了编码为18的接口上)
>>> import RPi.GPIO as GPIO
......
>>> GPIO.setmode(GPIO.BCM)
>>> level = 18
  1. 将该针脚定义为输出模式
>>> import RPi.GPIO as GPIO
>>> GPIO.setmode(GPIO.BCM)
>>> level = 18
......
>>> GPIO.setup(level, GPIO.OUT)
  1. 前面的到数据,舵机频率为50HZ,这里设置为50HZ
>>> import RPi.GPIO as GPIO
>>> GPIO.setmode(GPIO.BCM)
>>> level = 18
>>> GPIO.setup(level, GPIO.OUT)
......
>>> frequency = GPIO.PWM(level, 50)
  1. 测试不同占空比舵机的运动情况,先定义占空比为0,依次增加,查看舵机运动情况。
>>> frequency.start(0)
>>> frequency.ChangeDutyCycle(2)
>>> frequency.ChangeDutyCycle(4)
>>> frequency.ChangeDutyCycle(6)
>>> frequency.ChangeDutyCycle(8)
>>> frequency.ChangeDutyCycle(10)
>>> frequency.ChangeDutyCycle(12)
>>> frequency.stop()
  1. 在这里我观察舵机运动得到,舵机可以再2和12之间运动。最大占空比为12。占空比为12时,舵机达到运行最大角度。
  • 0 -角度为0
  • 6 -角度为90
  • 12 - 角度为180

编写舵机运动程序

from time import sleep
# 引入时间模块
import RPi.GPIO as GPIO
# 引入驱动模块
GPIO.setmode(GPIO.BCM)
# 定义针脚编码格式使用BCM格式
GPIO.setwarnings(False)
 # 定义针脚编码
def settransrotation(trans,rotation):
    pwm = GPIO.PWM(trans,50)
    # 定义频率
    pwm.start(8)
    # 定义初始占空比
    DutyCycle = rotation /18 + 2
    # 角度转换
    pwm.ChangeDutyCycle(DutyCycle)
    sleep(0.3)
    pwm.stop()
    # 结束针脚控制
if __name__ == "__main__": 
    import sys
    trans = int(sys.argv[1])
    GPIO.setup(trans,GPIO.OUT)
    # 将输入针脚 改为输出模式
    settransrotation(trans,int(sys.argv[2]))
    GPIO.cleanup()
  1. 编写完毕
  2. 将其另存为py文件steering.py
  3. 将其通过ssh放入树莓派中,/home/pi/steering.py
  4. 在终端中运行
>>> python3 steering.py 18 60
----- 18 为针脚号  60 是角度
  1. 观察舵机动作,是否运动

驱动完成

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arongwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值