* Este blog de Muquan Zhu.
Hola a todos. Soy Muquan Zhu y me gusta programar robots.
El mes pasado compré el robot YahbomJetbot-mini.
Después de un mes de conocer a fondo todas las características de este coche, me apetece hacer algunas mejoras. Hoy os voy a compartir mis proyectos.
Fondo
El ángulo de la cámara original para automóvil Jetbotmini solo se puede ajustar manualmente, lo que limita su uso por parte de otros usuarios. La placa de expansión proporciona dos puertos servo, que se pueden utilizar de manera efectiva. Haga que la cámara sea PTZ que se pueda programar.
Lista de preparación
Coche robot Yaboom Jetbot 2GB AI * 1
Pasos
1) Ensamble el servo PTZ, inicialice el servo a 90° antes de la instalación.
2) Fije el servo PTZ ensamblado en el chasis del carro atornillando la columna de cobre.
3) Fije la cámara Jetson NANO en el PTZ . (Solo se necesita un tornillo, se ve un poco extraño, pero apenas se puede usar).
Programación
Aquí, estoy usando el servo SDG90, que necesita ser controlado por PWM.
Dado que los pines del jetson NANO no pueden generar PWM directamente, el mcu stm8 está integrado en la placa de expansión jetbotmini como un coprocesador para generar PWM y luego controlar el servo.
Envía datos al IIC según el protocolo de comunicación. Los parámetros de la función write_i2c_block_data son (dirección del coprocesador, dirección del registro del servo, [número de mecanismo de dirección, ángulo del servo]), de los cuales la dirección del coprocesador y la dirección del registro del servo son valores fijos.
El número 1 corresponde al servo conectado al puerto S1 de la placa de expansión.
El número 2 corresponde al servo conectado al puerto S2 de la placa de expansión.
El ángulo del servo se establece entre 0 y 180.
A continuación, podemos comenzar a utilizar la función write_i2c_block_data para controlar la rotación del servo PTZ en el laboratorio Jupyter.
Vídeo de efectos
(Por favor ignoren mi mesa de laboratorio desordenada, jajaja...)
Código
importar smbus
tiempo de importación
autobús = smbus.SMBus(1)
Servo_ADD = 0x1B
bus.write_i2c_block_data(Servo_ADD,3,[1,90])
tiempo.sueño(0.1)
bus.write_i2c_block_data(Servo_ADD,3,[2,90])
tiempo.dormir(1)
bus.write_i2c_block_data(Servo_ADD,3,[1,90])
tiempo.sueño(0.1)
bus.write_i2c_block_data(Servo_ADD,3,[2,115])