Enkla självbalanserande Robot med Galileo Gen 2 (4 / 6 steg)
Steg 4: Android App
Från början av detta projekt var ett av mina mål att utveckla en kamrat Android app för att möjliggöra kontroll av roboten. Som min SW färdigheter är fortfarande "under utveckling", jag var glad att snubbla över utvecklingsmiljön MIT AI2 Android app - det visade sig vara perfekt för vad jag ville göra.
Jag tillbringade tid med ett antal tutorials att få en känsla för hur saker var setup, och med Whatakuais och Pura Vida Apps på hur du kan utnyttja i BT-gränssnittet. Men hellre än att spendera tid med att förklara MIT AI2, kommer jag att beskriva hur app är tänkt att användas och hur block struktur.
App är en enkel samling av knappar och reglage till tillåta förbrukaren till konfigurera och styra roboten. Nedan följer en beskrivning av de olika app kontrollerna.
· BT modul: varje gång programmet startas, eller robot makten cyklat, måste användaren att ansluta till robot BT modul. Detta är den knapp som underlättar att åtgärder.
· Standby: När roboten är ansluten till BT, och Galileo styrelsen har startat, roboten startar i beredskapsläge. Denna knapp används för att instruera roboten att ange den aktiva, balansera staten. Observera att roboten endast kommer att försöka balansera om det är inom 2deg för vertikal, så även om denna knapp rapporterar "Aktiv", måste du placera roboten nära vertikalt att börja balansera. Denna knapp kan användas för att växla mellan "Standby" och "Aktiv" som önskas.
· PID: Denna knapp används för att tillåta användaren att ändra "P", "I" och "D" värden för PID-regulator i roboten när roboten är i drift. När du trycker på, det kommer att hämta PID värden från roboten och visa dem under respektive "+" och "-" knappar. Öka eller minska värdet för varje parameter är svåra inkodat i robot skissen.
· FW Ver: Detta är robot skissen Firmware version. Jag gick igenom många versioner av skisser och flera SD-kort, så jag fann det mycket bra att veta vilken version var igång på roboten. Detta värde är svårt inkodat i skissen med en #define uttalande, och skickas till Android App när roboten går från viloläge.
· Vbat: Batterispänningen från roboten, skickas varje sekund
· HB: Hjärtslag indikator. Texten ändras en gång per sekund, vilket betyder skissen är fortfarande kör på roboten.
· Rulle kalibrera: baserat på den modul du har och hur den är monterad på roboten, kan vertikal inte läsa som 0deg. Detta gör att du "kalibrera" vad den MPU läser när roboten är lodrät. Den "+" och "-" knappar delas mellan rulla kalibrera och Motor Slack, så enda kan ändras vid varje given tidpunkt. Det aktuella rulla kalibrera värdet hämtas från roboten när knappen markeras.
· Motoriska Slack: De inriktade DC motorer jag använde hade en zon i de lägre PWM värden som inte resulterar i någon motoraxeln rörelse. Detta resulterar i en icke-linjär kontroll för PID-utgång. Jag tyckte att genom att "hoppa" över dessa lågt PWM-värde (motor slack) i PID utdata, kan du bättre balans roboten. Denna knapp kan du hämta det aktuella värdet på roboten och storleken på de "hoppet"
· Hastighet: Detta tillåter användaren att styra roboten hastighet. På grund av en begränsning i MIT AI kompilera miljön tillåter app inte multi-touch, så du inte kan ändra skjutreglagen hastighet och riktning samtidigt. En sökning på internet på ämnet visar det en verk runt omkring att tillåta multi-touch operation, men jag har ännu inte bedrivit det.
· Riktning: Detta tillåter användaren att styra roboten riktningen.
· Avsluta: avslutar Android App
Jag hittade den visuell metod används av MIT AI2 för att utveckla app detaljer på avsnittet "Block" att vara lite besvärligt - men jag kommer att låta dig dra dina egna slutsatser. Jag lyckades inte ta en skärmdump av block layouten, men de är ordnade i tre kolumner. Du bör kunna i importera .iai fil till MIT AI2 och Visa de för dig själv.
Den första kolumnen implementerar knapparna Quit, BT modul, Standby, Data Log, hastighet, riktning, rulla fel och Motor Slack.
Den andra kolumn genomför PID aktiverar knappen, och P, jag och D "+" och "-" knappar. Den implementerar också rulla felet och Motor Slack "+" och "-" knappar.
Den tredje kolumnen implementerar Bluetooth timern, används för att kontrollera gränssnittet för mottagna information och block för att extrahera och genomföra kommandon från roboten. Det tog några försök och misstag att få Bluetooth-data mottagning och kommandot utvinning arbetar, och resultatet är lite brute force-ish, men till slut fungerade det ganska bra.