Ir al contenido principal

Programando los servos de la cámara

Después de muchas pruebas y puntos de desesperación y a punto de abandonar el proyecto, creo que he conseguido una solución.

Desde la interfase Web de Octoprint no pude controlar los servos, o no supe cómo hacerlo.

Primeras pruebas manipulando con python y ssh de linux


Desde la consola linux vía ssh, pude lograrlo, pero era un coñazo tener que entrar por allí para mover los servos de la cámara. Luego pensé si utilizó los bot sde telegram, esta fué una solución interesante y más cómodo a cara del usuario.

Manipulando con python y telegram




1) Escribí varios programas en python sencillos para mover los servos usando el dutycycle en diferente puntos del salón-comedor-despacho de mi casa. Los edite en nano (editor de texto de linux en consola) y los guarde todos en un mismo directorio. Aquí solo les coloco uno a manera de ejemplo. Los otros serían parecidos pero lo que cambia son los dutycycle según la posición deseada.

Si quieres saber que es eso del DutyCycle puedes mirar la teoría en: Calculando el movimiento del servo

Código del script python "comedor.py"

<br />
<pre style="background-color: black;"><span style="color: white;">
colocar texto aquí para el código
</span></pre>
<br />


#comedor.py
#Programa para posicionar la camara en el comedor

# Los valores teoricos son (cada servo puede ser distinto)

# DC= 5 % Grados=0
# DC= 7.5 % Grados= 90
# DC=10 % Grados=180


######## Sustituir (introducir coordenadas de posicion) #######

dcPan=3 #variable dcPan
dcTilt=9 #variable dcTilt


######## Librerias y configuraciones iniciales ################

import RPi.GPIO as GPIO # cargar libreria que maneja los pines
import time # cargar la libreria que maneja el tiempo
GPIO.setmode(GPIO.BOARD)# establece la numeracion de los pines tipo fisico


###### Configurando el servo Tilt

servoPinTilt=8 #concetado al pin 8 de la raspberry
GPIO.setup(servoPinTilt,GPIO.OUT) # establece que el pin sera de salida
pwmTilt=GPIO.PWM(servoPinTilt,50)
time.sleep(.2)


######Configurando el servo Pan

servoPinPan=10 #concetado al pin 10 de la raspberry
GPIO.setup(servoPinPan,GPIO.OUT) # establece que el pin sera de salida
pwmPan=GPIO.PWM(servoPinPan,50)
time.sleep(.2)


#######Activando los servos, generando una frec de 50 Hz

pwmTilt=GPIO.PWM(servoPinTilt,50)
pwmPan=GPIO.PWM(servoPinPan,50)

####### cambiando a la posicion deseada

pwmTilt.ChangeDutyCycle(dcTilt)
time.sleep(.1)
pwmPan.ChangeDutyCycle(dcPan)

#### apagado y salida del programa, evita que tiemble la camara

pwmTilt.stop()
GPIO.cleanup()
exit()





2) Me decanté por la versión de Raspbian que viene con Octoprint todo preconfigurado. Es más rápida, pero es menos potente. Si es para usar con la impresora creo que está es la mejor opción.

3) Instalé telegram en mi dispositivo (puede ser móvil, tablet, otro ordenador)

4) Cree un programa en Python en mi Raspberry Pi, para establecer la comunicación Telegran- Raspberry Pi, usando la función bot de telegram: debes utilizar el API token y tú ID de usuario para algunas funciones (por seguridad, solo tú tendrás acceso a esas funciones).
Debes desde ssh arrancar este script o podrías hacerlo de forma automática con crontap.

Código del script python "conexión con telegram"


En desarrollo







Comentarios

Publicar un comentario