Étape 4: Préparer le Code
Pour pouvoir utiliser ce code, vous aurez besoin de quelques bibliothèques pour l’IDE Arduino. Vous devrez les bibliothèques PID, I2CDev et MPU6050. Ces bibliothèques ont été créées par des gens intelligents, donc n’oubliez pas de les remercier. Jeff Rowberg créé des bibliothèques pour les MPU6050 et les I2CDev. Brett Beauregard a créé la bibliothèque de PID. J’ai pris le temps de passer par l’exemple et fichiers d’entête pour bien comprendre le code et à comprendre comment tout cela fonctionne.
- Pour commencer, téléchargez ces bibliothèques dans votre IDE Arduino.
- Démarrer avec le MPU6050, nous aurons besoin tester et calibrer ce dispositif avant l’opération.
- Pour le tester, utilisez l’exemple de code dans le dossier MPU6050 par exemple >> MPU6050_DMP6. Ce code vous permettra de tester l’appareil et vérifier le bon fonctionnement. Le code est programmé pour afficher le lacet, tangage et rouler les données pour vous via le port série sur l’Arduino.
- Une fois que le test est terminée et réussie, ouvrez le dossier de calibrage MPU6050 et ouvrez le fichier de l’Arduino. Ce fichier va calibrer la MPU6050 à sa position donnée, donc n’oubliez pas de le placer sur une surface plane. Le temps d’étalonnage peut prendre quelques minutes, si il gèle il juste redémarrer. Il donnera vous offset de valeurs qui vont régler votre MPU6050 fermer à zéro l’origine, la seule valeur qui est grande est la valeur d’accéléromètre axe z en raison de la gravité. Prenez ces valeurs et les brancher sur le code du test brut MPU6050_DMP6. Vos lectures doivent être beaucoup plus précis.
- Le dispositif de HC-06 peut être configuré pour afficher un nom désiré, avoir un mot de passe désiré et exploité à une vitesse de transmission désiré. Pour changer cela, utilisez le fichier BlueTooth_Example_Code. Jetez un oeil à la PDF fourni, ce qui inclut les commandes qui vous permettra de modifier le taux de baud et de nom de l’appareil. Changer le nom du périphérique est facultative, mais je vous recommandons de modifier le débit en bauds à 57600. Toutes les commandes seront envoyés via le port série sur l’IDE Arduino lorsque le HC-06 est branché et le code est téléchargé et exécuté.
- Le soft que j’ai utilisé pour ce projet est appelé le "Joystick Bluetooth commandant". Ce soft est disponible sur l’app store de Google. Si vous décidez d’utiliser n’importe quelle autre application bluetooth, vous devrez utiliser le code différent.
- Utilisez le fichier BlueTooth_Joystick_App_Code pour vérifier que vous êtes obtenir les données de l’app. Vous devez jumeler l’appareil HC-06 avec votre téléphone avant le test. Le code pour le HC-06 sera très probablement 1234 ou 0000 par défaut
- Pour tester les moteurs, utilisez le fichier Motor_Code_Example. Ce fichier vous permettra de lancer les moteurs et déterminer le plus petit signal PWM qui va les amener à commencer à tourner. Tuning moteurs est nécessaire parce que pas tous les moteurs commencent ou tourner au même rythme.
Une fois l’essai initial terminé, vous pouvez passer au fichier New_BB8_Code. Vous devrez vérifier les connexions des broches, MPU6050 décalages et HC-06 en bauds. Une fois cela fait, vous pouvez télécharger le code et tester le tout dehors. Le code est conçu pour permettre à l’utilisateur de contrôler la direction que BB8 sera rôle tout en gardant la tête en position verticale. Le PID devront être à l’écoute, mais ne peut être jusqu'à ce que le noyau est assemblé.
Je vais vous expliquer les fonctions du code ci-dessous :
- init_imu() ; -C’est utilisé pour lancer le MPU6050 et définir les paramètres optimaux. Cela provient de l’exemple de code MPU6050.
- motorSetup() ; -C’est utilisée pour définir toutes les quilles du pilote automobile aux sorties.
- getValues() ; -C’est utilisée pour obtenir les lectures pour le mouvement de lacet, tangage et rouler de la MPU6050.
- blueTooth() ; -Cela sert à configurer le HC-06 et recevoir les données de l’application sur le téléphone.
- pidCompute() ; -C’est utilisé pour exécuter le contrôleur PID afin d’écouter le point de consigne et produisent un signal PWM pour les moteurs.
- motorControl() ; Cela sert à contrôler BB8 dans la direction souhaitée et aussi envoyer des signaux PWM pour garder la tête en position vers le haut.