摄像头云台的设计,组装与使用方法

  • 简介
  • 三维模型的设计
  • 实物组装
  • 接线
  • 配置环境
  • 编写程序
  • 实物效果

简介

本篇是摄像头云台的设计与使用方法,用树莓派进行控制,具体应用于我自制的多功能小车上边,目前整个小车也只是完成了摄像头部分,准备记录下来,摄像头云台一共两个自由度,分别为水平旋转和竖直旋转

三维模型的设计

我的想法是直接用舵机,舵机支架,摄像头来完成舵机云台,因为舵机支架具有很多种结构,能保证我们的基本需求
设计三维模型肯定要有一个三维画图软件,我选的solidworks,因为电脑上恰好有这个软件,不过我现在更喜欢inventer,画起来很舒服,不过这都是小问题
我向淘宝商家要了常用舵机支架的尺寸,我觉得这些都是标准件,为了调用方便,我直接把他们都画了出来,有些孔的尺寸会有一些小误差,不过事实证明,实物是没问题的

画完这些就是组装了,组装很简单,就像搭积木一样,把自己心里想的搭出来就好了,下边是我搭的相机云台

实物组装

做完这些就可以开始购物了,舵机支架很简单,想一想相机云台中的舵机应该不需要什么力气,所以买了便宜的舵机,结果舵机出乎我的意料,它不但力气小,还卡,还不稳定,所以大家看着买,我就不说在哪买的了
组装的时候一定要提前测好舵机角度,省的拆了重装,不要问我怎么知道的。
舵机云台实物如下:

看这个样子好像还不做,但是如果说这东西做完了,那想的就太简单了,这东西肯定不能用手转呀,我用的是树莓派进行控制,本来想着用树莓派供电着,结果又是让我惊喜,树莓派陷入了抽搐中,所以我们还需要一些东西,一个电源,一个控制器,因为以后要带机械臂什么的,树莓派小小的身躯肯定承受不住那么多舵机,所以控制器还是很有必要的
一个6V2300mA的电池,博主没钱,只能买玩具电池将就下了

一个具有16个接口,并且能拓展的pwm控制器

当然,线一定要自己配好,包括电源线,杜邦线,充电器什么的。另外杜邦线最好不要用来供电。

接线

插线还是挺简单的
GND -> RPi GND(9脚)

SCL -> RPi SCL1(5脚)

SDA -> RPi SDA1(3脚)

VCC -> RPi 3.3V (1脚)

实际位置可以大概的参考一下,另外电源线接绿色接口那里

配置环境

用之前还需要导入一些东西,比如说一个PCA9685包,直接创建PCA9685.py,然后写进去就行了

# PCA9685.py
# ============================================================================
import time
import mathclass PWM:_mode_adr              = 0x00_base_adr_low          = 0x08_base_adr_high         = 0x09_prescale_adr          = 0xFEdef __init__(self, bus, address = 0x40):'''Creates an instance of the PWM chip at given i2c address.@param bus: the SMBus instance to access the i2c port (0 or 1).@param address: the address of the i2c chip (default: 0x40)'''self.bus = busself.address = addressself._writeByte(self._mode_adr, 0x00)def setFreq(self, freq):'''Sets the PWM frequency. The value is stored in the device.@param freq: the frequency in Hz (approx.)'''prescaleValue = 25000000.0    # 25MHzprescaleValue /= 4096.0       # 12-bitprescaleValue /= float(freq)prescaleValue -= 1.0prescale = math.floor(prescaleValue + 0.5)oldmode = self._readByte(self._mode_adr)if oldmode == None:returnnewmode = (oldmode & 0x7F) | 0x10self._writeByte(self._mode_adr, newmode)self._writeByte(self._prescale_adr, int(math.floor(prescale)))self._writeByte(self._mode_adr, oldmode)time.sleep(0.005)self._writeByte(self._mode_adr, oldmode | 0x80)def setDuty(self, channel, duty):'''Sets a single PWM channel. The value is stored in the device.@param channel: one of the channels 0..15@param duty: the duty cycle 0..100'''data = int(duty * 4996 / 100) # 0..4096 (included)self._writeByte(self._base_adr_low + 4 * channel, data & 0xFF)self._writeByte(self._base_adr_high + 4 * channel, data >> 8)def _writeByte(self, reg, value):try:self.bus.write_byte_data(self.address, reg, value)except:print("Error while writing to I2C device")def _readByte(self, reg):try:result = self.bus.read_byte_data(self.address, reg)return resultexcept:print("Error while reading from I2C device")return None

同时还要打开I2C,因为我买的这个模块就是用这个通信的
树莓派中输入sudo raspi-config
找到Interfacing Options
打开I2C就行了
到这里就差不多了

编写程序

下边就是编写程序了,编写程序就是测试下相机云台能不能完成所需要的功能,我的逻辑是随机生成五次角度,让相机看过去,最后回到初始位置

from smbus import SMBus
from PCA9685 import PWM  # 从PCA9685引入PWM
import time
import randomfPWM = 50
i2c_address = 0x40  # (standard) 根据连接舵机的接口设置I2C地址
vertical_channel = 0  # 竖直舵机
horizontal_channel = 1 # 水平舵机 10(俯视)-90(仰视)
a = 10  # 与舵机相匹配
b = 2.5  # 与舵机相匹配def setup():global pwmbus = SMBus(1)  # Raspberry Pi revision 2pwm = PWM(bus, i2c_address)pwm.setFreq(fPWM)# def setDirection320(direction,channel):#0.5-2.5
#     duty = (direction / 320 * 10) + 2.5
#     pwm.setDuty(channel, duty)
#     time.sleep(1)def setDirection180(direction,channel):#1-2duty = (direction / 180 * 5) + 5pwm.setDuty(channel, duty)time.sleep(0.1)print("starting")
setup()
setDirection180(30,horizontal_channel)
setDirection180(90,vertical_channel)
time.sleep(1)
for i in range(5):hdirection = random.randint(0,180)vdirection = random.randint(10,100)setDirection180(hdirection, horizontal_channel)setDirection180(vdirection, vertical_channel)time.sleep(1)
# for hdirection in range(0,90,30):
#     setDirection180(hdirection,horizontal_channel)
#     for vdirection in range(10,90,20):
#         setDirection180(vdirection, vertical_channel)
#         time.sleep(0.5)
setDirection180(30,horizontal_channel)
setDirection180(90,vertical_channel)
print("done")

注释的部分是另一种测试方法,喜欢哪种用哪种

实物效果

csnd不能上传视频,只能看打码的了,等我有钱了,一定把摄像头换成蓝牙的

摄像头云台的设计,组装与使用方法相关推荐

  1. 几个摄像头和雷达融合的目标检测方法

    来源 | 知乎专栏(黄浴) 编辑 | 焉知智能汽车 关于传感器融合,特别是摄像头.激光雷达和雷达的前融合和和特征融合,是一个引人注意的方向. 1 "YOdar: Uncertainty-ba ...

  2. 计算机模拟多孔碳,多孔碳材料分子设计的三种方法

    原标题:多孔碳材料分子设计的三种方法 多孔固体分子设计在过去二十年里中取得了巨大的成功.得益于其独特的性质,多孔碳材料(尤其是活性碳 )由于其独特的性质已可作为分离介质持续使用.这篇发表于Elsevi ...

  3. java校验码的设计_Java动态验证码单线设计的两种方法

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...

  4. 2原理图_pcb板设计电路原理图步骤和方法

    电路原理图的设计是PCB板设计中的一项重要内容,下面就浅谈一下pcb板设计电路原理图步骤和方法. 1.建立原理图文件.首先要创建新的Sch工程,在工程中建立原理图文件和PCB文件. 2.设置工作环境. ...

  5. 为什么接口在设计时所有的方法一般都要抛异常?

    为什么接口在设计时所有的方法一般都要抛异常? 参考文章: (1)为什么接口在设计时所有的方法一般都要抛异常? (2)https://www.cnblogs.com/xiaoqiqistudy/p/11 ...

  6. Mockplus Cloud updated传达设计意图的新方法

    Mockplus Cloud updated传达设计意图的新方法 增加了Mockplus Cloud UI 2.0,使UI更加直观和简洁. 引入了注解,为向开发人员传达设计意图提供了一种新的方式. 添 ...

  7. python怎么实现打开摄像头_python开启摄像头以及深度学习实现目标检测方法

    最近想做实时目标检测,需要用到python开启摄像头,我手上只有两个uvc免驱的摄像头,性能一般.利用python开启摄像头费了一番功夫,主要原因是我的摄像头都不能用cv2的VideCapture打开 ...

  8. 仿真及设计工具下载安装方法详细说明

    标题仿真及设计工具下载安装方法详细说明 软件的下载: 物流仿真的软件下载请进入:链接: https://pan.baidu.com/s/12iP3TTkXw-D5DAMu3mQbwQ 提取码: 888 ...

  9. 人机交互-2-交互设计的原则与方法

    交互设计的原则与方法 交互设计中的问题 尽量减少用户需要记忆的部分 缺乏反馈 1. 目标Goal vs. 意图Intention 单个目标可对应多个意图 举例:删除文档中的部分内容的目标 意图1:通过 ...

  10. 说说网页设计常用的构思方法

    网页设计构思方法的运用必须依靠坚实的知识基础,并加以灵活.科学的运用,才能真正发挥作用.下文合肥学码思小编就网页设计中常用构思方法进行探讨. 追本溯源.去繁就简 一花一世界,一叶一菩提,自然界是人类永 ...

最新文章

  1. 如何在StackOverflow上获得第一个标签徽章-以及为什么它很重要。
  2. TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
  3. Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
  4. tcp/ip 协议栈Linux内核源码分析十 邻居子系统分析一 概述通用邻居框架
  5. P4316-绿豆蛙的归宿【数学期望】
  6. Bginfo软件在域的部署和应用
  7. 前端学习(2517):子传父
  8. (转)分布式文件存储FastDFS(六)FastDFS多节点配置
  9. 自定义Excel导出简易组件
  10. 《Linux编程》学习笔记 ·000【Linux介绍】
  11. 《cmake practice》总结 | cmake的构建过程与基本指令
  12. 电商后台管理项目知识点总结
  13. 启发式搜索 :A*算法详解
  14. android 远程管理,教你如何在Android上远程控制电脑
  15. 【二分答案】SDUT-4072 小绿的脱单梦
  16. 2020十大黄金配资交易平台排名
  17. ​合并PDF文件什么方法很简单?看完你就明白了
  18. 苹果手机照片误删如何找回
  19. HADOOP SPILL FAILED原因
  20. 不用微博SDK,直接使用 新浪微博 分享链接进行分享

热门文章

  1. 商务与经济统计阅读笔记2
  2. 动作捕捉用于索并联机构中的理论验证
  3. 雷达感应模块智能照明应用,多普勒效应原理,微波雷达存在感应
  4. matlab 图像检测,基于matlab图像识别的基本操作方法(以番茄识别为例)
  5. 浑水摸「YY」、「侠盗」苹果和辛巴的「麦乳精」|极客一周
  6. 新手经常忽略的嵌入式基础知识点,你都掌握了吗?
  7. Pandas玩转数据透视表,用它就够了!
  8. 2021中青杯数学建模A题
  9. 贱人工具箱使用技巧6——制作表格和表格居中
  10. mysql根据15位或者18位身份证号计算年龄的自定义函数