做这个实验的初衷是因为在外面的时候想要远程看家里的情况,但是树莓派摄像头固定的话就只能看到一个视角,我想让摄像头左右转动,方便我观察屋子里的情况。
硬件准备:
树莓派3B+,SG90舵机(7.5元),杜邦线三根,500W像素CSI接口摄像头(20元左右),及透明塑料支架(4.5元),坏掉的门锁,扎带一根。
实验环境:
32位raspbian系统,已经安装好CSI摄像头并且可以拍照。
1 硬件连接
先把摄像头模块安装好,接着用luvcview 命令测试,如果显示正常,就成功了。
接着就是把摄像头模块固定到坏掉的门锁上,其实是门锁的锁芯,这东西是纯金属,很重,体积也不大。如下图
由于摄像头支架底部是自带胶水的,可以直接粘在舵机顶部,舵机的操纵杆就选择哪个十字的就好了接触面积最大,比较稳固。这个门锁的锁芯把两颗螺丝拧上去,然后把舵机放在中间,用轧带捆住,固定好就OK了。如下图
舵机有三根线,黄色是信号控制线,红色跟灰色是VCC+和GND,对应接到树莓派5V和GND就好了,黄色线接到12号引脚(BCM)。
2 代码控制
网上借鉴人家的python代码都是转180度然后复位,循环着转
#!/usr/bin/env python # coding: utf-8 import RPi.GPIO as GPIO import time import signal import atexit atexit.register(GPIO.cleanup) servopin = 12 GPIO.setmode(GPIO.BCM) GPIO.setup(servopin, GPIO.OUT, initial=False) p = GPIO.PWM(servopin,50) #50HZ p.start(0) time.sleep(2) while(True): for i in range(0,181,10): p.ChangeDutyCycle(2.5 + 10 * i / 180) #设置转动角度 time.sleep(0.02) #等该20ms周期结束 p.ChangeDutyCycle(0) #归零信号 time.sleep(0.5)
这显然不符合我的要求,加以改进,实现转动60度然后复位的效果,如下
#!/usr/bin/env python # coding: utf-8 import RPi.GPIO as GPIO import time pin = 12 GPIO.setmode(GPIO.BCM) GPIO.setup(pin, GPIO.OUT) pwm = GPIO.PWM(pin,50) #50HZ pwm.start(0) pwm.ChangeDutyCycle(2.5) time.sleep(1) i = 60 duty = 2.5 + 10.*i/180. pwm.ChangeDutyCycle(duty) print(duty) print('jiaodu',(i)) print time.sleep(0.3) pwm.ChangeDutyCycle(2.5) time.sleep(1) GPIO.cleanup()
接着实现旋转135度,并且不要复位的效果。废话,复位了我要他干嘛,我不是白转了
#!/usr/bin/env python # coding: utf-8 import RPi.GPIO as GPIO import time pin = 12 #舵机的黄色的控制线接到GPIO 12号引脚 GPIO.setmode(GPIO.BCM) #GPIO采用BCM编号 GPIO.setup(pin, GPIO.OUT) #设置12号引脚为输出模式 pwm = GPIO.PWM(pin,50) #pwm为50HZ,pwm是树莓派的模拟信号,具体参考百度 pwm.start(0) #开始 pwm.ChangeDutyCycle(2.5) #改变工作周期为2.5,意思就是复位到舵机的默认0度 time.sleep(1) #暂停程序执行1秒钟 i = 135 #设置角度 duty = 2.5 + 10.*i/180. #个人理解是由于改变工作周期不能输小数点,就用这个代替 pwm.ChangeDutyCycle(duty) #执行上一行改变工作周期计算出来的值 print(duty) #把这个值输出到屏幕上方便我们观察 print('jiaodu',(i)) #把角度输出到屏幕上 print #打印一个空行,让输出的结果不要混在一起 time.sleep(0.3) #暂停0.3秒,数值越大转动的越慢 #pwm.ChangeDutyCycle(2.5) #这个是让舵机复位的,被我注释掉了 #time.sleep(1) #这个时间不知道干嘛的,懒得管 GPIO.cleanup() #这个很重要,必须要有,程序跑完了释放引脚,保护树莓派
还不是很完美,后面有空继续探索,附上小视频
发表评论