La Programmation
La programmation du robot s’est faite sous PlatformIO, une extension de VSCode qui permet de faire de la programmation embarquée. Cette extension offre plus de liberté que l’IDE Arduino, en profitant notamment du système de visualisation d’arborescence de VSCode.
Intialisation
Le démarrage du robot se passe comme suit :
- Initialisation du port série.
- Initialisation du protocole LIDAR.
- Initialisation du protocole I²C.
- Initialisation des pinces.
- Initialisation des modes de fonctionnement des GPIOs.
- Mise à zéro des différentes variables de position.
- Attente de la pose de la tirette et choix de la zone de travail.
- Attente de l’enlèvement de la tirette.
- Démarrage.
déroulée après départ
le code étant de consequent, nous allons proceder avec une diagramme d’état simplifiée pour comprendre le fonctionnement du code.
stateDiagram-v2
[*] --> Initialisation
Initialisation --> AttenteTiretteNonPosee
state AttenteTiretteNonPosee {
[*] --> VerifierBouton
VerifierBouton --> CalibrationBarillet : Bouton appuyé
CalibrationBarillet --> VerifierBouton : calibrerBarillet()
VerifierBouton --> DefinirStrategie : Définir la stratégie
DefinirStrategie --> VerifierBouton
VerifierBouton --> TirettePosee : Tirette posée
}
TirettePosee --> EnAttenteEnlevementTirette
EnAttenteEnlevementTirette --> Execution : Tirette enlevée
state Execution {
[*] --> VerifierArmé
VerifierArmé --> VerifierObstacle : Armé == vrai
VerifierArmé --> PasExecution : Armé == faux
state VerifierObstacle {
[*] --> ObstacleDétecté
ObstacleDétecté --> AgirObstacle : Obstacle détecté
AgirObstacle --> ArreterRobot
ArreterRobot -->VerifierArmé
ObstacleDétecté --> PasObstacle : Pas d'obstacle détecté
PasObstacle --> VerifierEvenement
}
VerifierEvenement --> VerifierTimer
VerifierTimer --> FaireDesPas
FaireDesPas --> VerifierArmé
}
Execution --> [*] : Fin du programme
Outils logiciels
- Visual Studio Code : Un riche éditeur de texte performant où nous venons greffer des extensions afin d’obtenir l’IDE qui nous correspond.
- PlatformIO : Une plateforme de développement, utilisée pour notre ESP32, offrant une gestion simplifiée des bibliothèques et des outils de compilation. Cela vient sous la forme d’une extension ajoutée à VSCode.
Bibliothèques
- AccelStepper : Contrôle des moteurs pas à pas avec des fonctionnalités avancées comme l’accélération et la décélération. Nous l’utilisons pour la partie steppers.
- Adafruit_PWMServoDriver : Pour controler les servo via le PCA
- RPLIDAE : Pour la lecture du LIDAR