Parce que le Dofbot-pi est installé avec Ubuntu mate au lieu du système raspian, il est impossible d'ouvrir le port série avec raspi config pour modifier les paramètres du port série.
Il y a deux ports série à l'intérieur du CPU Raspberry Pi, l'un est le port série matériel (/dev/ttyama0), et l'autre est le port série mini (/dev/ttys0).
Le port série matériel a une source d'horloge de baud rate séparée, qui offre de bonnes performances et une grande stabilité ; Le port série mini a une fonction simple et une stabilité médiocre. Le baud rate est fourni par l'horloge du cœur du CPU et est affecté par l'horloge du cœur.
Le port série que nous utilisons pour la communication série nécessite une grande stabilité et performance, donc le port série matériel est devenu notre premier choix.
Puisque le port série matériel par défaut est attribué au module Bluetooth, nous devons attribuer le port série matériel au port série GPIO. Les opérations spécifiques sont les suivantes.
1. Ouvrez le terminal et entrez la commande sudo ls -l /dev
Entrez le mot de passe yahboom
Nous pouvons voir que la configuration du port série dans l'état initial, comme indiqué ci-dessous.
2. Définissez le port série matériel sur le port série GPIO
2.1 Modifiez le fichier /boot/firmware/config.txt pour définir enable_uart=1 Si enable_uart = 0, le port série minicom est activé au lieu de ce port série matériel.
Entrer la commande suivante :
sudo nano /boot/firmware/config.txt
2.2 Ajoutez dtoverlay=miniuart-bt à la fin, puis cliquez sur Ctrl + X et entrez y, et enfin appuyez sur entrer pour enregistrer et quitter.
3. Modifiez le /boot/firmware/cmdline.txt et supprimez tout le contenu concernant la console.
Entrer la commande suivante :
sudo nano /boot/firmware/cmdline.txt
Ouvrir comme
Supprimer le contenu concernant la console
Cliquez sur Ctrl + X et entrez y, puis appuyez sur entrer pour enregistrer et quitter
4. Désactivez le Bluetooth
Entrer la commande suivante :
sudo systemctl désactiver hciuart
5. Éteignez l'interrupteur d'alimentation du Dofbot-pi et redémarrez-le.
Entrez la commande suivante dans cvérifiez si la modification est réussie
sudo ls -l /dev
À ce moment, la figure suivante montre que la modification est réussie.
6. Connectez le Raspberry Pi à l'ordinateur avec le câble micro USB, et ouvrez l'assistant de débogage du port série (l'affichage ch340 indique que l'ordinateur a été connecté au port série du bras robotique).
Cliquez sur le bouton d'ouverture du port série, ouvrez le port série, comme indiqué ci-dessous.
7. Écrire un programme de test de port série serial_test.py
Entrer la commande suivante :
nano serial_test.py
8. À propos du code
#Importer les bibliothèques nécessaires
import RPi.GPIO as GPIO
importer le temps
importer chaîne
import serial
from Arm_Lib import Arm_Device
Arm = Arm_Device() #créer un objet
#Définir le port GPIO en mode de codage BCM
GPIO.setmode(GPIO.BCM)
#Ignorer les messages d'avertissement
GPIO.setwarnings(False)
uart = serial.Serial("/dev/ttyAMA0", 115200, timeout=0.001)
if uart.isOpen == False:
uart.open()
uart.write('Le Raspberry Pi est prêt'.encode())
essayer :
while True:
size = uart.inWaiting() # Obtenir les caractères du tampon
si taille != 0 :
response = uart.read(size) # Lire le contenu et afficher
#print(response)
m=str(réponse, encodage = "utf-8")
uart.flushInput() # Vider le tampon de réception
time.sleep(0.1) # Délai logiciel
si m == '3':
Arm.Arm_serial_servo_write6(90, 120, 90, 90, 120, 90, 500) #Contrôler le mouvement du Dofbot
uart.write('Exécuter 9 complet '.encode())
print ('ok')
si m == '4':
Arm.Arm_serial_servo_write6(90, 40, 90, 60, 120, 80, 500)
uart.write('Exécution 0 complète '.encode())
print ('ok')
si m == '1':
Arm.Arm_serial_servo_write6(90, 90, 90, 90, 90, 0, 500)
uart.write('Exécution 1 complète '.encode())
print ('ok')
si m == '2':
Arm.Arm_serial_servo_write6(120, 60, 90, 90, 90, 90, 500)
uart.write('Exécuter 2 complet '.encode())
print ('ok')
si m == '0':
Arm.Arm_serial_servo_write6(180, 60, 90, 60, 90, 180, 500)
uart.write('Exécution 0 terminée '.encode())
print ('ok')
si m == '5':
Arm.Arm_serial_servo_write6(90, 90, 90, 90, 90, 180, 500)
uart.write('Exécution 0 complète '.encode())
print ('ok')
except KeyboardInterrupt:
uart.close()
9. Saisissez le contenu ci-dessus et enregistrez ce fichier.
Vous pouvez également mettre le fichier serial_test.py au répertoire principal
10. Fermez le grand programme et exécutez le fichier python3 serial_test.py.
Entrer la commande suivante :
sh ~/Dofbot/kill_YahboomArm.sh
Entrer la commande suivante :
python3 serial_test.py
11. Cette invite indique que le port ne peut pas être ouvert /dev/ttyAMA0 Modifions simplement les permissions.
Entrer la commande suivante :
sudo chmod 777 /dev/ttyAMA0
Entrer la commande suivante :
python3 serial_test.py
12. Entrez le numéro 0-5 et le Dofbot effectue certaines actions. Par exemple, envoyez le numéro 0. Le terminal et l'assistant de débogage du port série, comme indiqué ci-dessous.
Ce code est uniquement destiné à des fins de test et peut être amélioré et modifié par vous-même.