Table des matières:
- Étape 1: Ce dont vous avez besoin…
- Étape 2: Souder la carte
- Étape 3: Configuration de l'Arduino
- Étape 4: Configuration de Python
- Étape 5: Où la magie opère
Vidéo: Carte servodriver avec Python-GUI et Arduino : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Lors du prototypage ou de la construction de modèles d'avions, vous rencontrez souvent le problème de devoir vérifier la course des servos ou de régler les servos en position médiane.
Au cas où vous ne voudriez pas construire tout votre système RC ou tester, jusqu'où vous pouvez pousser le servo ou où se trouve la position médiane, alors cette carte est faite pour vous ! Il vous permet de déplacer le servo vers des positions spécifiées ou de faire des allers-retours.
Cela fonctionne étonnamment bien, même avec 6 servos qui courent d'une position à l'autre dans la boucle.
En outre, c'est un bon projet pour en savoir plus sur la communication entre Python-GUI et Arduino à l'aide de Serial.
Étape 1: Ce dont vous avez besoin…
Pour ce projet, vous aurez besoin des éléments suivants:
Matériel
- Arduino nano avec câble. J'ai utilisé un clone, et le code Python attend en fait une puce CH340 d'un clone
- Une planche de prototypage. 7x5cm suffit
- Quelques en-têtes et broches de 2, 54 mm
- 1-6 servos
- Alimentation pour les servos (j'ai utilisé un pack batterie avec 4 batteries)
Logiciel
- Python 3:
- Un pilote USB pour les puces CH340: il suffit de google pour les pilotes pour les pilotes CH340
- IDE Arduino:
Étape 2: Souder la carte
La soudure est en fait simple selon Fritzing sur la photo. Assurez-vous simplement que vous pouvez facilement connecter les servos aux rangées à 3 broches.
- Les rangées de 3 broches sont attachées aux broches numériques 3, 5, 6, 9, 10 et 11 de l'Arduino nano.
- Le fil rouge est attaché à la broche 5V de l'Arduino
- Le fil noir est connecté à la broche GND de l'Arduino
- La paire de broches sous les rangées de 3 broches est destinée à connecter une alimentation de récepteur RC typique, vous pouvez ajouter des connecteurs comme vous le souhaitez, comme des bornes à vis, des connecteurs XT, JST ou… ou…
Personnellement, j'aime les rangées d'en-têtes femelles pour mettre l'Arduino, mais c'est à vous de décider.
Veuillez noter que les embases femelles en court-circuit sont un cavalier, qui vous permet d'alimenter le servo en utilisant la source 5V de l'Arduino à des fins de test. Si vous le forcez trop, l'Arduino se réinitialisera et perdra le bon rythme. Ils DOIVENT être retirés avant de brancher une autre alimentation.
Étape 3: Configuration de l'Arduino
Installez l'IDE Arduino et flashez l'Arduino nano avec le croquis ci-joint.
Étape 4: Configuration de Python
Installez Python 3 après l'avoir téléchargé. Assurez-vous de cocher l'option pour créer une variable "PATH".
Vous devez installer deux autres packages à l'aide de pip. Pour cela, appuyez sur la touche "Windows", tapez "cmd" et appuyez sur "enter". Dans l'invite de commande, tapez les commandes suivantes:
- pip installer la série
- piip installer pyserial
- pip installer tkinter
Comme vous pouvez le voir, j'ai besoin des modules serial ainsi que pyserial, ce qui n'est probablement pas le plus efficace, puisque pyserial devrait remplacer serial. Néanmoins ça marche et je commence tout juste à apprendre;).
Ouvrez le script Python dans l'IDE et exécutez-le, ou exécutez-le directement depuis le terminal.
Dans le menu déroulant, vous pouvez choisir entre deux modes, "Go Straight" et "Ping Pong":
- Allez tout droit: entrez une position de servo en microsecondes dans la première colonne et appuyez sur "Démarrer" pour que le servo se déplace vers la position spécifiée.
- Ping Pong: saisissez une limite inférieure et une limite supérieure dans les deuxième et troisième colonnes. Ce sont les positions inférieure et supérieure, entre lesquelles le servo va aller et venir. Dans la colonne "Ping Pong Time", vous pouvez spécifier un temps en millisecondes pendant lequel le servo attendra lorsqu'il aura atteint la position supérieure ou inférieure. Appuyez sur "Démarrer" et le servo commencera à se déplacer d'avant en arrière, appuyez sur "Stop" et le servo s'arrêtera.
Étape 5: Où la magie opère
Enfin, je tiens à souligner certains des détails du code pour ceux qui souhaitent se lancer un peu dans la communication série entre Python et Arduino.
Maintenant, que se passe-t-il dans le programme Python ?
Tout d'abord, le programme vérifie ce qui est attaché aux ports COM dans cette ligne et l'enregistre dans une liste:
self. COMPortsList = liste(serial.tools.list_ports.comports())
Ensuite, il parcourt la liste jusqu'à ce qu'il trouve une puce CH340 notoire, l'enregistre, puis établit une connexion série après la boucle for. Notez que la boucle for s'interrompt dès que le premier CH340 est trouvé.
for p in self. COMPortsList: if "CH340" in p[1]: # Recherche d'un clone Arduino self. COMPort = p[0] break else: pass self. Ser = serial. Serial(self. COMPort, 57600)
La connexion série est établie avec le port COM avec une vitesse de transmission de 57600.
Et que fait le code Arduino ? Eh bien, puisque l'Arduino n'a qu'un seul port COM, la connexion série n'est qu'une ligne:
Serial.begin (57600);
Maintenant, nous pouvons utiliser les deux ports pour communiquer. Dans ce cas précis, seuls les messages du Python vers l'Arduino. Les messages sont envoyés ici depuis Python. La connexion série transmet des octets par défaut. C'est aussi le moyen le plus rapide d'envoyer des données et, pour autant que je sache, il est encore assez répandu. Ainsi, les entiers pour le numéro du servo (afin que l'Arduino sache quel servo déplacer) et la position en microsecondes sont transformés en un octet.
Command = struct.pack('>B', self. Place) # La variable int "self. Place" est transformée en octet
self. Ser.write(Command) # Ecriture de l'octet sur le port série Command = int(self. ServoPos.get())//10 # Lecture de l'entrée du champ et retourne int Command = struct.pack(' >B', Command) # Transformer l'int en octet self. Ser.write(Command) # Ecrire l'octet sur le port série
De plus, l'analyse des données prend du temps (par exemple, interpréter quatre octets "1", "2", "3" et "0" comme l'int 1230, pas comme quatre caractères différents) et il est préférable de ne pas le faire sur l'Arduino.
Côté Arduino, les informations envoyées sont récupérées comme suit:
if(Serial.available()>1){ // Si des données série sont disponibles, la boucle est saisie c = Serial.read(); // Le premier octet (numéro de servo) est enregistré dans une variable Micros = Serial.read(); // La position du servo est enregistrée ici Micros = Micros * 10; }
Conseillé:
Installation De La Carte TagTagTag Pour Nabaztag / Installer la carte TagTagTag sur votre Nabaztag : 15 étapes
Installation De La Carte TagTagTag Pour Nabaztag / Installation du TagTagTag Board on Your Nabaztag : (voir ci-dessous pour la version anglaise)La carte TagTagTag a été créée en 2018 lors de Maker Faire Paris pour faire renaitre les Nabaztag et les Nabaztag:tag. Elle a fait l'objet ensuite d'un financement participatif sur Ulule en juin 2019, si vous souhaitez
Lecteur audio utilisant Arduino avec carte Micro SD : 7 étapes (avec photos)
Lecteur audio utilisant Arduino avec une carte Micro SD : veuillez vous abonner à ma chaîne pour plus de projets………. Beaucoup de gens veulent interfacer la carte SD avec arduino ou souhaitez une sortie audio via arduino. Voici donc le moyen le plus simple et le moins cher d'interfacer une carte SD avec arduino. vous pouvez nous
Carte intelligente de l'Idaho avec données LED + art : 8 étapes (avec photos)
Carte intelligente de l'Idaho avec données LED + art : j'ai toujours voulu un moyen d'afficher de manière artistique et dynamique des données géographiques en "peinture" une carte avec de la lumière. Je vis dans l'Idaho et j'adore mon état, alors j'ai pensé que ce serait un bon endroit pour commencer ! En plus d'être une œuvre d'art
Comment programmer une carte AVR à l'aide d'une carte Arduino : 6 étapes
Comment programmer une carte AVR à l'aide d'une carte Arduino : Avez-vous une carte de microcontrôleur AVR qui traîne ? Est-ce compliqué de le programmer ? Eh bien, vous êtes au bon endroit. Ici, je vais vous montrer comment programmer une carte de microcontrôleur Atmega8a en utilisant une carte Arduino Uno en tant que programmeur. Alors sans plus
Comment utiliser la carte radio FM Si4703 avec RDS - Tutoriel Arduino : 5 étapes (avec photos)
Comment utiliser la carte radio FM Si4703 avec RDS - Tutoriel Arduino : il s'agit d'une carte d'évaluation pour la puce tuner FM Si4703 de Silicon Laboratories. Au-delà d'être une simple radio FM, le Si4703 est également capable de détecter et de traiter à la fois les informations du service de données radio (RDS) et du service de données de diffusion radio (RBDS).T