Stap 4: Voorbereiding van de Code
Deze code wilt gebruiken, moet u een paar bibliotheken voor de Arduino IDE. U moet de PID, I2CDev en MPU6050 bibliotheken. Deze bibliotheken zijn gemaakt door een aantal slimme mensen, dus zorg ervoor om hen te danken. Jeff Rowberg gemaakt de bibliotheken voor het MPU6050 en de I2CDev. Brett Beauregard gemaakt de PID-bibliotheek. Ik nam de tijd om te gaan door middel van de voorbeeld en header bestanden naar de code volledig te begrijpen en erachter te komen hoe het allemaal werkt.
- Om te beginnen, door deze bibliotheken te uploaden naar uw Arduino IDE.
- Start met de MPU6050, zullen we om te testen en kalibreren van dit apparaat vóór bewerking.
- Om het te testen, gebruik de voorbeeldcode in de MPU6050 map onder voorbeeld >> MPU6050_DMP6. Deze code kunt u het apparaat testen en controleren van de werking. De code is ingesteld voor het weergeven van de yaw, worp, en roll gegevens aan u via de seriële poort op de Arduino.
- Zodra de test is voltooid en succesvolle, open de map MPU6050 kalibratie en open het bestand van de Arduino. Dit bestand zal de MPU6050 om een bepaalde positie te kalibreren, dus zorg ervoor om het te plaatsen op een plat oppervlak. De kalibratie-tijd kan een paar minuten duren, als het bevriest enkel opnieuw het. Het zal geven u verschuiving waarden die uw MPU6050 zal sluiten aan het nulpunt, de enige waarde die groot is de waarde van de z-as versnellingsmeter vanwege ernst. Neem deze waarden en steek ze in de code voor de ruwe test van MPU6050_DMP6. Uw lezingen moeten veel nauwkeuriger worden.
- Het HC-06-apparaat kan worden geconfigureerd in een gewenste weergavenaam, hebben een gewenst wachtwoord en werken op een gewenste baudrate. Om dit te wijzigen, door het BlueTooth_Example_Code-bestand te gebruiken. Neem een kijkje op de PDF mits, dit bevat opdrachten waarmee u de snelheid van het naam- en baudrate van het apparaat wijzigen. Wijzigen van de naam van het apparaat is optioneel, maar ik beveel de baud-rate omzetten in 57600. Alle opdrachten worden opgestuurd via de seriële poort van de Arduino IDE na de HC-06 is aangesloten en de code geladen en wordt uitgevoerd is.
- De app die ik voor dit project gebruikte heet de "Joystick Bluetooth Commander". Dit app is beschikbaar op de app store van Google. Als u gebruiken een andere bluetooth-toepassing wilt, moet u verschillende code te gebruiken.
- Het BlueTooth_Joystick_App_Code-bestand gebruiken om te testen dat u om gegevens te van de app verkrijgen zijn. Je moet koppelen van de HC-06-apparaat met uw telefoon vóór de test. De code voor de HC-06 zal hoogstwaarschijnlijk 1234 of 0000 standaard
- Om te testen van de motoren, het Motor_Code_Example-bestand te gebruiken. Dit bestand kan u uitvoeren van de motoren en het bepalen van de kleinste PWM-signaal dat krijgt ze beginnen draaien. Tuning van de motoren is nodig omdat niet alle motoren starten of draai aan het zelfde tarief.
Zodra alle de eerste testen is voltooid, kunt u op verplaatsen naar het New_BB8_Code bestand. U moet controleren of pin verbindingen, MPU6050 offsets en HC-06 baud-rate. Zodra dat is gebeurd, kunt u uploaden van de code en test alles uit. De code is ontworpen om de gebruiker om te bepalen van de richting dat BB8 zal rol terwijl het houden van het hoofd in de verticale positie. De PID zal moeten worden afgestemd, maar kan niet tot de kern is gemonteerd.
Ik zal het uitleggen van de functies van de onderstaande code:
- init_imu(); -Dit wordt gebruikt voor het initiëren van de MPU6050 en de ideale instellingen ingesteld. Dit is ontleend aan de MPU6050-voorbeeldcode.
- motorSetup(); -Dit wordt gebruikt om in te stellen van alle de pinnen voor de motor bestuurder uitgangen.
- getValues(); -Dit wordt gebruikt voor het verkrijgen van de lezingen voor de yaw, worp, en rollen van de MPU6050.
- blueTooth(); -Dit wordt gebruikt voor de opstelling van de HC-06 en de gegevens van de app op de telefoon ontvangen.
- pidCompute(); -Dit wordt gebruikt voor het uitvoeren van de PID-regelaar om af te stemmen op het setpoint en produceren een PWM-signaal voor de motoren.
- motorControl(); Dit wordt gebruikt om te controleren van BB8 in de gewenste richting en ook PWM signaal om te houden van het hoofd in de opwaartse positie.