Debido a que Dofbot-pi se instala con Ubuntu mate en lugar del sistema raspian, es imposible abrir el puerto serie con raspi config para modificar la configuración del puerto serie.
Hay dos puertos seriales dentro de la CPU Raspberry Pi, uno es el puerto serial de hardware (/dev/ttyama0) y el otro es el mini puerto serial (/dev/ttys0).
El puerto serie de hardware tiene una fuente de reloj de velocidad en baudios independiente, que tiene un buen rendimiento y una gran estabilidad; el puerto serie mini tiene una función simple y una estabilidad deficiente. La velocidad en baudios la proporciona el reloj del núcleo de la CPU y se ve afectada por el reloj del núcleo.
El puerto serie que utilizamos para la comunicación serie necesita alta estabilidad y rendimiento, por lo que el puerto serie de hardware se ha convertido en nuestra primera opción.
Dado que el puerto serial de hardware predeterminado está asignado al módulo Bluetooth, debemos asignar el puerto serial de hardware al puerto serial GPIO. Las operaciones específicas son las siguientes.
1. Abra la terminal e ingrese el comando sudo ls -l /dev
Introducir contraseña yahboom
Podemos ver la configuración del puerto serie en el estado inicial, como se muestra a continuación.
2. Configure el puerto serie del hardware como puerto serie GPIO
2.1 Modificar el archivo /boot/firmware/config.txt y establecer enable_uart=1 Si enable_uart = 0, se habilita el puerto serie minicom en lugar de este puerto serie de hardware.
Ingrese el siguiente comando:
sudo nano /boot/firmware/config.txt
2.2 Agregue dtoverlay=miniuart-bt al final, luego haga clic en Ctrl + X e ingrese y, y finalmente presione Enter para guardar y salir.
3. Modifique el archivo /boot/firmware/cmdline.txt y elimine todo el contenido de la consola.
Ingrese el siguiente comando:
sudo nano /boot/firmware/cmdline.txt
Abierto como
Eliminar contenido sobre la consola
Haga clic en Ctrl + X e ingrese y, luego presione Enter para guardar y salir
4. Desactivar Bluetooth
Ingrese el siguiente comando:
sudo systemctl deshabilitar hciuart
5. Apague el interruptor de encendido del Dofbot-pi y reinícielo.
Ingrese el siguiente comando para verificar si la modificación fue exitosa
sudo ls -l /dev
En este momento, la siguiente figura muestra que la modificación es exitosa.
6. Conecte la Raspberry Pi al ordenador con el cable micro USB y abra el asistente de depuración del puerto serie (el display ch340 indica que el ordenador se ha conectado al puerto serie del brazo robótico).
Haga clic en el botón Abrir puerto serie para abrir el puerto serie, como se muestra a continuación.
7. Escriba el programa de prueba del puerto serie serial_test.py
Ingrese el siguiente comando:
nano serial_test.py
8. Acerca del código
#Importar las librerías necesarias
importar RPi.GPIO como GPIO
tiempo de importación
cadena de importación
Importar serie
desde Arm_Lib importar Arm_Device
Brazo = Arm_Device() #crear objeto
#Establecer el puerto GPIO como modo de codificación BCM
Modo de configuración GPIO (GPIO.BCM)
#Ignorar mensajes de advertencia
GPIO.setwarnings(Falso)
uart = serial.Serial("/dev/ttyAMA0", 115200, tiempo de espera=0.001)
si uart.isOpen == Falso:
uart.open()
uart.write('Raspberry pi está lista'.encode())
intentar:
mientras sea verdadero:
tamaño = uart.inWaiting() # Obtener caracteres del buffer
si tamaño != 0:
respuesta = uart.read(size) # Leer contenido y mostrar
#imprimir(respuesta)
m=str(respuesta, codificación = "utf-8")
uart.flushInput() # Vaciar el búfer de recepción
time.sleep(0.1) # Retraso del software
si m == '3':
Arm.Arm_serial_servo_write6(90, 120, 90, 90, 120, 90, 500) #Controla el movimiento del Dofbot
uart.write('Ejecutar 9 completo '.encode())
imprimir ('ok')
si m == '4':
Brazo.Arm_serial_servo_write6(90, 40, 90, 60, 120, 80, 500)
uart.write('Ejecutar 0 completo '.encode())
imprimir ('ok')
si m == '1':
Brazo.Arm_serial_servo_write6(90, 90, 90, 90, 90, 0, 500)
uart.write('Ejecutar 1 '.encode())
imprimir ('ok')
si m == '2':
Brazo.Arm_serial_servo_write6(120, 60, 90, 90, 90, 90, 500)
uart.write('Ejecutar 2 completo '.encode())
imprimir ('ok')
si m == '0':
Brazo.Arm_serial_servo_write6(180, 60, 90, 60, 90, 180, 500)
uart.write('Ejecutar 0 completo '.encode())
imprimir ('ok')
si m == '5':
Brazo.Arm_serial_servo_write6(90, 90, 90, 90, 90, 180, 500)
uart.write('Ejecutar 0 completo '.encode())
imprimir ('ok')
excepto KeyboardInterrupt:
uart.cerrar()
9. Ingrese el contenido anterior y guarde este archivo.
También puedes poner el archivo serial_test.py en el directorio principal
10. Cierre el programa grande y ejecute el archivo python3 serial _ test.py.
Ingrese el siguiente comando:
sh ~/Dofbot/matar_YahboomArm.sh
Ingrese el siguiente comando:
prueba_serie_python3.py
11. Este mensaje indica que no se puede abrir el puerto /dev/ttyAMA0 Modifiquemos los permisos.
Ingrese el siguiente comando:
sudo chmod 777 /dev/ttyAMA0
Ingrese el siguiente comando:
prueba_serie_python3.py
12. Introduzca el número 0-5 y Dofbot realizará algunas acciones. Por ejemplo, envíe el número 0. El asistente de depuración de terminales y puertos serie, como se muestra a continuación.
Este código es solo para pruebas y puede ser mejorado y modificado por usted mismo.