Raspbian安装云台
- 1. 源由
- 2. 选型
- 3. 组装
- 4. 调试
- 4.1 python3-print问题
- 4.2 python函数入参类型错误
- 4.3 缺少mjpg-streamer可执行文件
- 4.4 缺失编译头文件和库
- 4.5 python库缺失
- 4.6 图像无法显示,但libcamera-jpeg测试正常
- 4.7 异常IOCTL报错
- 4.8 Git问题
- 5. 效果
- 5.1 WEB页面效果
- 5.2 视频效果
- 5.3 外观效果
- 5.4 起飞前效果
- 6. 参考资料
- 7. 后续思考
1. 源由
既然安装了摄像头(《Raspbian安装摄像头》),那安装个简易云台也不过分。
注:看看后续能否配合ArduPilot开源代码之CompanionComputer上天计划。
2. 选型
基本上没什么可选的,找个市面上最通用的,且相对配套比较完善的。
-【Wiki】www.waveshare.net/wiki/Pan-Tilt_HAT
-【Github】https://github.com/waveshare/Pan-Tilt-HAT
3. 组装
4. 调试
调试才是最为麻烦的,因为得益于各位硬件、软件环境的差异性,会遇到各种不同的问题。以下是基于笔者发稿日的一个调试情况。
笔者测试环境:
- 硬件:Raspberry Pi3B+
- 系统:2022-09-22-raspios-bullseye-arm64-lite.img.xz
- 软件:Pan-Tilt_HAT_code.7z
4.1 python3-print问题
无论是官网或者git获取的代码,都存在python3-print问题,估计写这个python代码的作者用的是pythron2。
原因:python3 print作为函数使用,需要增加括号。
diff --git a/RaspberryPi/web_Python/main.py b/RaspberryPi/web_Python/main.py
index 9986a42..daffeea 100644
--- a/RaspberryPi/web_Python/main.py
+++ b/RaspberryPi/web_Python/main.py
@@ -37,7 +37,7 @@ def server_fonts(filename):
def cmd():
global HStep,VStep
code = request.body.read().decode()
- print "code ",code
+ print( "code ",code)
# speed = request.POST.get('speed')
# print(code)
# if(speed != None):
@@ -120,5 +120,5 @@ try:
run(host=localhost, port="8001")
except:
pwm.exit_PCA9685()
- print "\nProgram end"
- exit()
\ No newline at end of file
+ print( "\nProgram end")
+ exit()
4.2 python函数入参类型错误
原因:python编程人员对变量的使用相对随意,这个是之前的一个隐患,python3当前环境进行更加严格的检查,发现了问题。
diff --git a/RaspberryPi/web_Python/PCA9685.py b/RaspberryPi/web_Python/PCA9685.py
index b596863..2cdc45c 100644
--- a/RaspberryPi/web_Python/PCA9685.py
+++ b/RaspberryPi/web_Python/PCA9685.py
@@ -80,7 +80,7 @@ class PCA9685:
def setServoPulse(self, channel, pulse):
"Sets the Servo Pulse,The PWM frequency must be 50HZ"
pulse = pulse*4096/20000 #PWM frequency is 50HZ,the period is 20000us
- self.setPWM(channel, 0, pulse)
+ self.setPWM(channel, 0, int(pulse))
def start_PCA9685(self):
self.write(self.__MODE2, 0x04)
4.3 缺少mjpg-streamer可执行文件
从7zip包里面,实际上该二进制是存在的,但是就是出毛病,无法执行。
原因:该代码包中,mjpg-streamer已经编译过了,且路径和测试路径不一致。导致无法clean,也无法编译成功。最后删除_build
目录后,重新编译,现象消失。
4.4 缺失编译头文件和库
原因:该mjpg-streamer代码包编译需要WiringPi
和相关库支持。
$ sudo apt-get install libjpeg62-turbo-dev cmake
$ git clone https://github.com/WiringPi/WiringPi
$ ./build
$ gpio -v
gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 3B+, Revision: 03, Memory: 1024MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 3 Model B Plus Rev 1.3
* This Raspberry Pi supports user-level GPIO access.
4.5 python库缺失
原因:真正这个代码跑起来,缺少python3的一些组件,请务必安装。
$ sudo apt-get install python3-bottle python3-smbus
4.6 图像无法显示,但libcamera-jpeg测试正常
原因:mjpg-streamer仅支持legacy Camera。需要将下面配置修改为【YES】,重启树莓派。
4.7 异常IOCTL报错
最后确认,就是这个鸟样,直接可以忽略不管。
4.8 Git问题
如果想用最新的Git代码,需要提前处理git网络问题,详见:Github操作网络异常笔记
$ git clone https://github.com/waveshare/Pan-Tilt-HAT.git
$ cd Pan-Tilt-HAT/RaspberryPi/web_Python
$ git clone https://github.com/jacksonliam/mjpg-streamer
5. 效果
5.1 WEB页面效果
5.2 视频效果
PAN Tilt HAT for Camera 2D Control
5.3 外观效果
5.4 起飞前效果
6. 参考资料
【1】Raspbian安装摄像头
【2】Raspbian镜像无头烧录
7. 后续思考
【1】 Feature Request: pan-tilt gimbal controls #196