Pan-Tilt HAT

Pan-Tilt HAT
Pan-Tilt HAT
{{{name2}}}
{{{name3}}}
基本信息
分类: 树莓派扩展板
功能: 云台转动\环境光
{{{userDefinedInfo1}}}: {{{userdefinedvalue1}}}
{{{userDefinedInfo2}}}: {{{userdefinedvalue2}}}
{{{userDefinedInfo3}}}: {{{userdefinedvalue3}}}
{{{userDefinedInfo4}}}: {{{userdefinedvalue4}}}
{{{userDefinedInfo5}}}: {{{userdefinedvalue5}}}
{{{userDefinedInfo6}}}: {{{userdefinedvalue6}}}
品牌: Waveshare
板载接口
RPi
相关产品
♦ {{{Product1}}}
♦ {{{Product2}}}
♦ {{{Product3}}}
♦ {{{Product4}}}
套餐模块

提供树莓派和Jetson nano使用例程

目录

产品概述

产品参数

  • 工作电压: 3.3V/5V
  • 控制芯片 PCA9685
  • 逻辑电压: 3.3V
  • 通信接口: I2C
  • 产品尺寸: 56.6X65(mm)

控制器

本产品控制器为PCA9685,是一款基于IIC总线通信的12位精度16通道PWM波输出的芯片。并且板载TSL2581环境光传感器,通过检测光强辅助摄像头工作,同样通过 I2C 接口控制,不会占用太多接口引脚资源。

通信协议

从上的得知使用的是I2C通信,I2C 通信,一条数据线,一条时钟线。 I2C 总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。
Pan-tilt hat i2c.png
开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。

  • I2C写数据时序

Pan-tilt hat i2cwrite.png
首先主机(即树莓派,后面统称为主机)会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机(即 TSL2581 传感器模块,后面统称为从机),从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机发送命令寄存的值,从机回应一个响应信号,直到主机发送一个停止信号,此次 I2C 写数据操作结束

  • I2C读数据时序

Pan-tilt hat i2cread.png
首先主机会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机,从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机重新发送一个开始信号,并且将其 7 位地址和读操作位组合成 8 位的数据发送给从机,从机接收到信号后发送响应信号,再将其寄存器中的值发送给主机,主机端给予响应信号,直到主机端发送停止信号,此次通信结束

I2C地址

从上面的通信可知,PCA9685和TSL2581两个都是使用I2C通信,那么需要设置不同的I2C地址,地址不一样,就不会影响通信

  • PCA9685

Pan-tilt hat i2caddr.png
详细见PCA9685数据手册第7页

  • TSL2581

Pan-tilt hat i2caddr2.png
详细见TSL2581数据手册第13页
注:我们模块默认PCA9685的I2C地址引脚A5=A4=A3=A2=A1=A0=0,PCA9685的I2C地址为0x40,TSL2581 的I2C 地址引脚浮空(Float),TSL2581 的I2C 地址为0x39。如果用户不使用树莓派驱动时候,例如使用STM32的时候需要在低位补上R/W位。

树莓派使用

先不要组装,舵机初始角度不是在起始位置,舵机旋转时可能会卡死,所以建议在第一次使用时先不要组装云台,先单独测试舵机转的角度,防止舵机意外损坏。请按照教程依次操作

树莓派使用

打开I2C接口

在终端执行:

sudo raspi-config 
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

RPI open i2c.png
然后重启树莓派:

sudo reboot

下载程序

sudo git clone https://github.com/waveshare/Pan-Tilt-HAT
cd Pan-Tilt-HAT/Raspberry\ Pi/

调试

连接:
Pan-tilt hat i2connet.png
注意连线:

棕色线 GND
红色线 5V
橙色线 S1/S0

运行测试代码前一定注意倾斜舵机安装位置,安装位置不好可能会导致舵机发热烧毁,先不组装舵机,保证舵机可以旋转360不会有障碍,连接硬件,平移舵机连接S1,倾斜舵机连接S0。然后打开程序文件夹中test文件夹

cd Pan-Tilt-HAT/Raspberry\ Pi/test
make clean
make
sudo ./main

运行后面,舵机全部旋转到0度(舵机旋转角度为0到180,也就是旋转到初始位置),然后切断电源组装,注意不要旋转倾斜舵机,然后倾斜舵机安装位置如下
组装视频参考1分19秒:http://www.waveshare.net/wiki/AlphaBot2-PiZero-Video
Pan-tilt hat servoAB.png
A: 平移舵机
B: 倾斜舵机

演示例程

基础演示

#如果使用环境光,就执行这个
cd Pan-Tilt-HAT/Raspberry\ Pi/Light_Sensor/
#如果使用云台,就执行这个
cd Pan-Tilt-HAT/Raspberry\ Pi/Servo_Driver/
  • BCM2835例程
cd bcm2835
make clean
make
sudo ./main
  • wiringpi例程
cd wiringpi
make clean
make
sudo ./main
  • python例程
cd python
sudo python main.py

MJPG-STREAMER 软件实时监控

"MJPG-streamer",是用于从摄像头采集图像,把他们以流的形式通过基于 ip 的网络传输到浏览器。

  • 使用摄像头前必须运行 raspi-config 命令启用摄像头:
sudo raspi-config
选择 Enable Camera,选择 YES

Rpi Enable Camera.png

  • 如果是使用 CSI 接口的摄像头,那么系统找不到/dev/video0 的设备节点。需要在/etc/modules 文件中添加一行 bcm2835-v4l2:
sudo nano /etc/modules

加上:

bcm2835-v4l2 

Pan-tilt hat addmodules.png
那么系统启动之后,系统会加载这个文件中的模块名,重启系统:

sudo reboot
ls /dev/video*

下面发现 video0 设备节点。
Pan-tilt hat addmodules1.png
说明:如果执行前几步之后,且确认操作和指令正确的情况下,仍无法在/dev 下面 发现 video0 设备,可以执行:rpi-update

  • 运行如下命令:
sudo apt-get update
sudo apt-get install libjpeg8-dev cmake
cd mjpg-streamer-master
sudo make clean all
sudo ./start.sh

在谷歌浏览器(其他浏览器可能会无法显示)地址栏内输入树莓派 ip 地址,端口号 8080,点击 Stream 会实时显示摄像头拍摄的内容。
如果你需要了解更多可以查看:https://github.com/jacksonliam/mjpg-streamer
Pan-tilt hat cam.png

通过 BOTTLE 实现远程遥控

Bottle 是一个简单高效的遵循 WSGI 的微型 python Web 框架.通过 Bottle 可以快速实现 web控制
安装库:

sudo apt-get install python-bottle
cd Pan-Tilt-HAT/Raspberry Pi/web_Python/
sudo python main.py

在谷歌浏览器(其他浏览器可能会异常)地址栏内输入树莓派 ip 地址,端口号 8001,会显示如下页面,点击按键可以遥控
Pan-tilt hat ip.png
支持手机和电脑控制,无需APP
手机控制:
Pan-tilt hat phonecontrol.png
电脑控制:
Pan-tilt hat PCcontrol.png

Jetson nano

安装库

安装函数库

  • 打开终端界面,输入以下指令安装相应的函数库
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install Jetson.GPIO
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

【注意】your_user_name 是你使用的用户名,比如说 waveshare

  • 安装I2C
sudo apt-get install python-smbus
  • 安装图像处理库:
sudo apt-get install python3-pil
sudo apt-get install python3-numpy

下载程序

sudo git clone https://github.com/waveshare/Pan-Tilt-HAT
cd Pan-Tilt-HAT/Jetson\ Nano/

基础演示

#如果使用环境光,就执行这个
cd 1_Light_Sensor/
#如果使用云台,就执行这个
cd 2_Servo_Driver/
  • python例程
#python2
cd python2
sudo python main.py
#python3
cd python3
sudo python3 main.py

手机控制摄像头

测试摄像头

DISPLAY=:0.0 gst-launch-1.0 nvarguscamerasrc ! \'video/x-raw(memory:NVMM), width=1920, height=1080, format=(string)NV12, framerate=(fraction)30/1\' ! nvoverlaysink -e

正常摄像头拍到的数据会显示在屏幕上。按Ctrl + c结束

下载APP

下载安卓端手机APP: http://www.waveshare.net/w/upload/8/8f/AlphaBot_LITE.apk

控制云台

在终端运行:

cd 3_Pan-Tilt+CAM
sudo python main.py

Pan-tilt hat appcontrol.png
一开始的会获取到Jetson的IP地址,这个在后面的APP会用到
后面的是摄像头工作了,并显示在了屏幕上。

手机端APP控制,打开App,点击Wifi控制:
输入IP地址:192.168.6.14
进入控制界面,只有右边的4个键可以用。
Pan-tilt hat appcontrol1.png
转动摄像头,屏幕实时显示摄像头数据
Pan-tilt hat appcontrol2.png

文档

程序

数据手册


批量下载教程——请戳Download-icon.png


问题: 能否精密控制转动角度?
答复:
  • 无法做到精密控制,这个只是入门级的。


问题: 为什么抖动?
答复:
  • 轻微的抖动是正常的,由于舵机转动的实际角度小于舵机转动的最小物理角度,此时会有电流维持他的角度,就会引起抖动。


问题:舵机吱吱吱响,并伴随发热?
答复:
  • SG90是入门级别舵机,主要是里面的电位器不准的原因,使用一段时间就发生了松动,于是就导致了齿轮与理论上转的角度不一致,导致响声并发热。




QQ:3004637648 2853908288(已加满)
EMAIL:2853908288@qq.com
电话:0755-83040712

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证。
Call-of-duty-V2.jpg       Join-us-V2.jpg