Contrôle servo Solo Drone avec Arduino : configuration facile et tutoriel balayage
Composants et fournitures
| Arduino UNO | ×1 |
| 3DR Solo | ×1 |
| Servomoteurs (Tower Pro MG996R) | ×1 |
| Carte d'extension Solo (Solo Breakout Board) | ×1 |
À propos du projet
Introduction
Le drone Solo offre un excellent environnement de développement mais manque d'entrées/sorties. Actuellement, le port accessoire expose : bus CAN, liaison série MAVLink vers le Pixhawk, et USB vers le SoloLink (i.MX6). En utilisant un Arduino avec Firmata, on peut ajouter capteurs personnalisés, contrôler des servos, faire clignoter des LED, ou toute autre fonction Arduino.
Ce tutoriel explique pas à pas l'utilisation d'un Arduino avec le Solo pour contrôler un servo.
Prérequis logiciels :
- Mise à jour Solo 1.2.0 ou supérieure
- Arduino IDE
- FileZilla
- PuTTY ou tout client SSH
Étape 1 : Téléverser Firmata Host sur l'Arduino Uno


Ouvrir StandardFirmata depuis les exemples. Sélectionner la carte et le port. Téléverser !
Étape 2 : Configuration matérielle
Pièces




Note : La carte d'extension n'est pas vendue pour l'instant. Se référer ici
Assemblage





Mise sous tension

Étape 2 (bis) : Télécharger pyMata et le code
pyMata
SoloServoSweep.py
Étape 3 : Transférer les fichiers vers le Solo
- Se connecter au réseau WiFi du Solo !


Étape 4 : Connexion SSH au Solo
Se connecter en SSH au Solo avec votre client SSH. Pour Windows : PuTTY.



Vérifiez que vous êtes toujours connecté au WiFi du Solo !
Voir les légendes des photos pour plus de détails
Étape 5 : Installer pyMata
Exécuter cette commande dans votre session SSH :
pip install pymata
Résultat attendu :

Étape 7 : Exécuter l'exemple
Tant que la session SSH est ouverte, lancer :
python SoloServoSweep.py

Code
SoloServoSweep.py (Python)
Piloter un servo en Python depuis le Solo
from PyMata.pymata import PyMata
import time
import sys
SERVO_MOTOR = 9 # servo connecté sur cette broche
END = 170 # Course max du servo
# Créer une instance PyMata
board = PyMata("/dev/ttyACM0")
# Configurer la broche en mode servo
board.servo_config(SERVO_MOTOR)
try:
while True:
for i in range(0, END): # Balayage montant
board.analog_write(SERVO_MOTOR, i)
time.sleep(.015)
for i in range(END, 0, -1): # Balayage descendant
board.analog_write(SERVO_MOTOR, i)
time.sleep(.015)
except KeyboardInterrupt:
board.close()
sys.exit()
Pièces personnalisées et boîtiers
Carte d'extension Solo
Carte d'extension pour port accessoire 3DR Solo
https://github.com/3drobotics/Pixhawk_OS_Hardware/tree/master/Accessory_Breakout_X1
Schémas

Processus de fabrication
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Robot Évitement d'Obstacles Piloté par Servomoteur : Construction avec Arduino et HC-SR04
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Solutions d'alimentation optimisées pour projets Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Construire un robot quadrupède Arduino intelligent : guide étape par étape