Innholdsfortegnelse:

Kontroller RC -flyet ditt med telefonens akklerometer: 15 trinn (med bilder)
Kontroller RC -flyet ditt med telefonens akklerometer: 15 trinn (med bilder)

Video: Kontroller RC -flyet ditt med telefonens akklerometer: 15 trinn (med bilder)

Video: Kontroller RC -flyet ditt med telefonens akklerometer: 15 trinn (med bilder)
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Juli
Anonim
Image
Image
Kontroller RC -flyet ditt med telefonens akklerometer
Kontroller RC -flyet ditt med telefonens akklerometer

Har du noen gang ønsket å kontrollere RC -flyet ditt ved å vippe et objekt? Jeg har alltid hatt ideen i bakhodet, men jeg har aldri forfulgt den før den siste uken. Mine første tanker var å bruke et trippelakse -akselerometer, men da hadde jeg en idé…

De fleste av dere har vel smarttelefoner? Og et annet stort flertall av dere elektroniske gutter der ute bruker Androids på grunn av fleksibiliteten. Jeg mener jeg elsker iPhone, men den er ikke like allsidig når det gjelder å koble den via Bluetooth eller hardwire til en Arduino eller annen mikrokontroller. Så hvorfor ikke bare telefonens akselerometer? Så jeg tok ideen og løp med den. To uker senere presenterer jeg dette prosjektet!

Beklager IOS -brukere, dette prosjektet gjelder bare Android -brukere.

Nå har ikke dette prosjektet kontroll over ror eller gass. Hvis du vil legge merke til at jeg har lagt til kode for at du kan bruke et potensiometer på pinne A1 for å kontrollere gassen, selv om jeg ikke kommer til å bruke den. Jeg skal bare bruke senderens gass.

Hvis du vil fullføre dette prosjektet, foreslår jeg at du ser hele videoen før du begynner å jobbe. De elektroniske ferdighetene som kreves for dette prosjektet er minimale, men den vanskelige delen er å jobbe med koden. Så ta tak i loddejernet og Arduino og la oss komme i gang.

Prosjektkostnad: (gratis, lav, middels, der oppe, seriøst?)

Prosjektproblem: (Breezy, Easy, Medium, Hard, Expert, Master)

Prosjekttid: (Over en kopp kaffe, middels, over en kanne kaffe, flere dager)

Nedenfor er en rask flytur jeg hadde tidligere da det var litt vind!

Trinn 1: Se hele videoen

Image
Image

Videoen og teksten dekker stort sett de samme tingene bortsett fra at teksten ikke inkluderer trinnvis prosess for å bygge prosjektet og koble til alt. Teksten analfabeterer litt mer om noen av kodene som er involvert.

Trinn 2: VIKTIG OPPDATERING [16.7.18]

Jeg begynte faktisk å lage dette prosjektet noen år senere, og jeg måtte gå tilbake til dette for å få litt informasjon: D

Uansett oppdaget jeg at det er en liten feil med koden, og jeg skal vise deg fikse det på bare noen få sekunder. Hvis du laster ned koden, vil den ikke kompilere. Du må gå inn og endre en liten linje.

Når du kompilerer, gir linje 20 deg en feil.

int ppm [chanAmount];

Bare endre det til:

int ppm [2];

Og der går du! Nyt resten av opplæringen, og hvis du tilfeldigvis laget dette prosjektet, rull ned til bunnen av filen og klikk på "Jeg klarte det" -knappen og last opp et bilde!

Trinn 3: Ingredienser:

Nedlastinger
Nedlastinger

Hva trenger hver god oppskrift? Ingredienser. Dessverre må du kanskje gå et annet sted enn hjørnebutikken din for disse.

Ingredienser:

  • Android -telefon
  • Arduino (Uno, Nano, Micro, spiller egentlig ingen rolle)
  • Strømkilde for Arduino. Jeg skal bruke en liten 2 -cellers 500mAh LiPo.
  • HC - 05 eller HC -06 Bluetooth -modul
  • FTDI Breakout Board (kan gjøres med Arduino, men jeg vil ikke vise deg hvordan)
  • 3,5 mm mono mannlig lydplugg. En stereokontakt vil IKKE fungere! Jeg har prøvd!
  • 2x LED og tilsvarende motstander
  • Prosjektvedlegg
  • 2-kjernetråd (høyttalerkabel fungerer bra, eller en lang USB-kabel)
  • Varmekrymp eller elektrisk tape
  • Kvinnelige pinhoder (for Arduino -skjoldet hvis du velger å lage et)
  • Perf -brett (for Arduino Shield bør du velge å lage et.

Verktøy:

  • Loddejern
  • Wire strippere
  • Saks
  • Bor med forskjellige bor
  • Varm limpistol

Trinn 4: Nedlastinger

Hvis du vil laste ned en.zip -fil med alt du trenger for denne løsningen, kan du finne den her. Ellers les nedenfor.

Først må du laste ned Amarino -appen og Amarino Toolkit og få den til telefonen. Du kan gjøre dette med en micro SD eller bare bruke ditt favorittfilvert nettsted, for eksempel Google Drive.

For det andre må du laste ned MeetAndroid -biblioteket for Arduino IDE. Følg trinnene nøye for å installere biblioteket.

FOR PC:

  1. Lukk Arduino IDE.
  2. Pakk ut MeetAndroid -mappen. Du bør nå ha en utpakket MeetAndroid_4 -mappe. Åpne denne mappen og kutt mappen inne som heter MeetAndroid.
  3. Naviger til C: / Program Files (x86) Arduino / libraries og lim inn i MeetAndroid. Hvis du gjorde alt riktig, skulle det se ut som det første bildet.
  4. Åpne Arduino IDE igjen, og du bør se i bibliotekene under 'Bidraget' MeetAndroid lib.

FOR MAC

  1. Lukk Arduino IDE.
  2. Pakk ut MeetAndroid -mappen. Du bør nå pakke ut MeetAndroid_4 -mappen. Åpne denne mappen og kopier mappen inne som heter MeetAndroid.
  3. Naviger til Arduino -programmet, høyreklikk på Vis pakkeinnhold og deretter Innhold/Java/biblioteker og lim inn i MeetAndroid -mappen.
  4. Åpne Arduino IDE igjen, og du bør se i bibliotekene under 'Bidraget' MeetAndroid lib.

Last ned begge mine Arduino -skisser som er festet til bunnen av dette trinnet (inkludert i.zip).

Trinn 5: Konfigurering av HC-06

Konfigurering av HC-06
Konfigurering av HC-06
Konfigurering av HC-06
Konfigurering av HC-06
Konfigurering av HC-06
Konfigurering av HC-06

Din HC-06 Bluetooth-modul kommer ikke bare ut av esken, klar til bruk i dette prosjektet. Vi trenger bare å endre en enkel ting: baudhastigheten. Avhengig av hvem du kjøper din fra, kan den settes til forskjellige overføringshastigheter. Jeg fikk to HC-06 fra to forskjellige selgere, og hver kjørte med en annen overføringshastighet. Vi må endre den til 115200 bits per sekund. Gjør følgende tilkoblinger:

HC-06 ------- FTDI Breakout Board

| -------------- |

GND ----- GND

VCC ------ 3.3v

TX -------- RX (eller DRX)

RX -------- TX (eller DTX)

  1. Koble FTDI breakout -kortet til datamaskinen.
  2. Åpne Arduino IDE. Velg hvilken com -port som er tilgjengelig. (sørg for at det ikke er noen Arduino -er eller noe annet koblet til datamaskinen).
  3. Åpne Serial Monitor (trenger ikke kode!)
  4. Velg 9600 for overføringshastigheten nederst til høyre i com -vinduet. Skriv "AT" (det MÅ være caps) og trykk send. Hvis du ikke får noe tilbake er det greit. Dette betyr at enheten din er konfigurert med en annen overføringshastighet. Prøv en overføringshastighet på 115200 og skriv "AT". Hvis du fortsatt ikke får noe, kan du prøve hver baudhastighet og skrive "AT" på dem alle til du får svar. Hvis du ikke får svar, har du mest sannsynlig ikke koblet HC-06 riktig. Kontroller tilkoblinger.
  5. Hvis du får svaret "OK" så fantastisk! Hvis du får det svaret på en annen overføringshastighet enn 115200, må du endre den til 115200. For å gjøre denne typen "AT+BUAD8". Du får svaret "OK115200". Du må endre overføringshastigheten til 115200 for å fortsette å snakke med Bluetooth. Deretter kan du gjøre ting som å endre navnet ved å skrive inn "AT+NAMERANDOM" tilfeldig som navnet du vil ha. Du kan nå lukke den serielle skjermen.

Trinn 6: Den ufullstendige kretsen for testing

Denne kretsen er ganske enkel. Du må slå på Arduino (via USB siden vi må laste opp noen ting til den), og koble deretter HC-06. Bare koble til, følg tilkoblingene nedenfor.

HC-05/6 --------- Arduino

|=============|

GND ------------ GND

VCC ------------- 5v

TX -------------- RX

RX -------------- TX

Trinn 7: Installere Amarino og Amarino Toolkit

Installere Amarino og Amarino Toolkit
Installere Amarino og Amarino Toolkit
Installere Amarino og Amarino Toolkit
Installere Amarino og Amarino Toolkit
Installere Amarino og Amarino Toolkit
Installere Amarino og Amarino Toolkit

Du burde ha lastet ned og overført Amarino -appen og verktøykassen til telefonen nå. Men før du installerer det må du endre en innstilling på telefonen. Telefonen din lar deg ikke installere appen først fordi den ikke er en sertifisert applikasjon fra Android playstore. Så vi må la telefonen installere ikke-sertifiserte apper. Dette er ganske enkelt.

  1. Naviger til Innstillinger/Sikkerhet og rull ned. Du bør se en boks som sier Ukjente kilder og en liten boks ved siden av. Trykk på boksen og aktiver. Det vil ta opp en dialogboks som forteller deg hvor risikabelt dette er; høres bra ut? Så trykk på OK -knappen. Se bildene 1, 2 og 3.
  2. Nå kan du åpne din Amarino -app og følge instruksjonene på skjermen. Ikke så vanskelig bare slå ja.
  3. Installer Amarino Toolkit. Ikke for vanskelig heller.

Trinn 8: Konfigurere Bluetooth

Sette opp Bluetooth
Sette opp Bluetooth
Sette opp Bluetooth
Sette opp Bluetooth
Sette opp Bluetooth
Sette opp Bluetooth

Når prosjektet er drevet (Bluetooth -brikken er på) finner du telefonens Bluetooth -innstillinger. Du må koble telefonen til Bluetooth -brikken. Trykk på søk etter enheter, og enheten din skal vises som HC-05 eller HC-06 med mindre du navngav den tidligere. Det vil be om et PIN-nummer, og det vil være 1234. (Jeg vet at jeg er et geni for å hacke enheten og finne det uber-hemmelige passordet). Se bildene 1, 2 og 3. Kontroller at du er paret med enheten og at du er klar for neste trinn. MERK: Lyset på Bluetooth -enheten vil ikke lyse når du kobler til telefonen! Jeg fant ut at på telefonen min måtte jeg starte den på nytt etter denne prosessen for at den skulle vises i Amarino -appen, så fortsett og start telefonen på nytt.

Trinn 9: Amarino

Amarino
Amarino
Amarino
Amarino
Amarino
Amarino

På tide å åpne Amarino. Du vil bli presentert med utgivelsesnotatene og trykke på OK. Takk Bonifaz Kaufman for at du opprettet denne fantastiske appen. Tallene nedenfor samsvarer med bildetallet f.eks. trinn 1 = bilde 1.

  1. Velkomstskjerm. Trykk på "Legg til enhet".
  2. Enheten din skal nå være på listen; trykk på den. Prøv å starte telefonen på nytt hvis den ikke vises, og kontroller at Bluetooth -enheten er koblet til telefonen.
  3. Du bør nå komme til denne skjermen. Trykk på "Koble til". Dette kan ta noen sekunder.
  4. Hvis den kobles til, vil lyset på Bluetooth -enheten lyse fast, og du vil se øverst "Aktive tilkoblinger: 1. Trykk nå på enhetsnavnet og IKKE koble fra.
  5. Trykk på "Vis hendelser".
  6. Det skal ikke være arrangementer. Trykk på "Legg til hendelse".
  7. En liste vil dukke opp, og du vil velge akselerometer. Husk disse andre sensorene som er innebygd i telefonen. De kan komme godt med en dag for et senere prosjekt!
  8. Her er bare noen få innstillinger for akselerometeret. Sørg for at glidebryteren er på "veldig fort" og at datavisualisereren er på "Tekst". Trykk deretter på lagre.
  9. Hvis du ser tall til høyre for "Accelerometer Sensor", er du flink. Du kan la telefonen være i fred nå. Hvis du ikke ser tall, trykker du lenge på det grå området for å få frem en meny.
  10. Velg "Force Enable".
  11. Bingo! Tall! Vipp telefonen og få en følelse av hvordan tallene samsvarer med akselerometeret.
  12. Du kan nå plassere telefonen på en flat overflate og gjøre deg klar til å starte litt koding!

Trinn 10: Hoppe over koden

Hoppe over koden
Hoppe over koden

Så hvis du ikke vil gjøre hendene skitne med koden, og du bare vil laste opp og gå, kan du ha litt problemer. Jeg har bare brukt telefonen min så langt, så jeg vet ikke om andre menneskers telefoner er de samme. Hvis du laster ned appen SensoDuino og klikker på fanen "Innebygde sensorer", bør du kunne finne akselerometeret ditt. Hvis akselerometeret ditt er en MPU6050, er det den samme sensoren som jeg har, og du trenger sannsynligvis ikke å redigere noen kode. Hvis du har den samme sensoren, kan du bare prøve koden som er lastet opp til dette trinnet.

Hvis ikke, må du sannsynligvis følge de neste trinnene.

Trinn 11: Tilordne akselerometerdata

Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata
Tilordne akselerometerdata

Nå kommer vi til den morsomme delen og roter med Arduino -skissen! Hvis skissen din ikke kompilerer, kan du se det siste trinnet i denne instruksen.

På dette tidspunktet bør du nå ha Arduino koblet ordentlig til HC-06, og du bør få Amarino til å skyve tall ut til Arduino via Bluetooth. Dobbeltsjekk for å forsikre deg om at HC-06 fortsatt er bundet og last opp følgende skisse til Arduino. (Vedlagt dette trinnet).

MERK: Når du laster opp skisser til Arduino, må du koble TX og RX til HC-06 fra Arduino. Arduino kan ikke lastes opp til mens RX og TX er koblet til noe.

Etter å ha lastet opp denne skissen til Arduino, åpner du den serielle skjermen. Du bør se tre tall blandet sammen atskilt med en boks (□). Eksempel: [0.01 □ 0.02 □□ 9.21] De to første tallene er rulle og tonehøyde. Jeg prøvde ikke engang å finne ut hva den tredje var: D. Telefonen din kan være lik denne eller ikke. Følg disse trinnene for å finne ut hvilke tall som er rull og hvilke tall som er tonehøyde for telefonen.

  1. Sett telefonen på en flat overflate. Ret telefonen slik at kameraet/øretelefonen peker mot venstre og mikrofonen peker mot høyre. (bilde 2).
  2. Vipp venstre side av telefonen opp (bilde 3) (langs Z -aksen, se bilde 1 for aksen) til 45 grader. Legg merke til hvilket nummer som endres drastisk i den serielle skjermen. Dette nummeret blir rollen din.
  3. Vipp telefonen mot deg (bilde 4) (langs X -aksen, se bilde 1 for aksen) til 45 grader.. Uansett antall endringer drastisk er tonehøyde. Registrer dette.

Nå som vi vet hvilke to sett med tall som er rull og tonehøyde, kan vi gå og endre koden. Vi tar en titt på del 2.

tonehøyde = data [0];

roll = data [1];

Hvis du så tidligere i koden, vil du legge merke til at akselerometerdataene settes inn i en matrise. Matrisen "data" har tre "flekker" kalt "indekser" for tall, indeks 0, indeks 1 og indeks 2. Nå som du vet hvilke tall som representerer tonehøyde og rulle, kan du tilordne heltallet "tonehøyde" og "rulle" til de riktige tallene i matrisen. Eksempel: hvis det tredje settet med tall endret seg når du vippet telefonen til venstre/høyre, som er rull, så ville vi endre koden til dette:

roll = data [2];

Og det er så enkelt som det. Hvis telefonen ligner på meg, vil det første nummeret være tonehøyde, det andre nummeret vil være rulle, og det tredje nummeret er et annet aspekt av de tre dimensjonene.

Trinn 12: Kartlegging av akselerometerdata

Kartlegging av akselerometerdata
Kartlegging av akselerometerdata

Når du har "rull og" tonehøyde "tilordnet de riktige tallene i matrisedataene, kan vi gå videre. Se på bilde 1 helt til venstre. Dette er rådataene fra akselerometeret ditt. Men vi kan ikke bruke disse tallene direkte må vi omforme dem til en verdi mellom 1000 og 2000 med et midtpunkt på 1500. For å skalere tallene vil vi multiplisere "rull" og "tonehøyde" med 1000. Dette vil kvitte seg med alle desimalene og det vil gi oss en anstendig oppløsning. Hvis du ser på tallene i den andre kolonnen, kan du se de "nye" tallene. La oss sette noen inn og ut poeng!

  1. Vipp telefonen til venstre 45 grader (rull) og registrer dette nummeret.
  2. Vipp telefonen til høyre 45 grader (rull) og registrer dette nummeret.
  3. Vipp telefonen til fremover 45 grader (tonehøyde) og noter dette nummeret.
  4. Vipp telefonen bakover 45 grader (tonehøyde) og noter dette nummeret.

Hvis de to tallene er omtrent like for når du vippet telefonen 45 grader i begge retninger, kan du droppe det andre nummeret og bare bruke det første. Lag et andre tall ved å ta det negative av det første tallet.

Eksempel: Vipp telefonen 45 grader til høyre. Nummervisningen for rulle er 5500. For det andre nummeret bruker du bare -5500. Dette vil være våre inn og ut poeng. Vi vil ikke at TX skal registrere noe mer enn disse punktene. Da må vi gjøre om disse verdiene til 1000-2000. I mitt tilfelle -5500 til 5500 var tallene jeg fikk da jeg satte telefonen 45 grader og når jeg rullet telefonen 45 grader. Så jeg brukte følgende kode: MERK: Det er nå på tide å slette / * og * / i avsnitt 4 for å aktivere denne koden. Slett også hele del 3.

pitchval = map (pitch, -5500, 5500, 1000, 2000) -12;

rollval = kart (rull, -5500, 5500, 1000, 2000) + 7;

Nå er -12 og +7 justeringer for å bringe "pitchval" og "rollval" til et senter på 1500. Sørg for at telefonen er på en flat overflate når du gjør disse justeringene. Hvis senteret ditt ikke er på 1500, kan flyet ditt svinge i en retning, selv om du har telefonnivået ditt.

Vi må begrense rollval og pitchval. Vi vil ikke at de skal gå mer enn 2000 eller færre enn 1000, ellers begynner ting å rote! Så vi skriver dette…

pitchval = begrensning (pitchval, 1000, 2000);

rollval = begrensning (rollval, 1000, 2000);

Det siste vi må gjøre med disse tallene er å sørge for at de samsvarer riktig med måten vi vipper telefonen på. Kontroller om telefonen er med forsiden opp med kameraet til venstre og mikrofonen til høyre.

  • Når du ruller telefonen til venstre, bør rollval reduseres til 1000.
  • Når du ruller til høyre, bør den øke til 2000.
  • Når du legger telefonen bakover, bør pitchval gå ned til 1000.
  • Når du slår telefonen fremover, bør den øke til 2000.
  • Begge sentrene bør ligge på 1500 når du plasserer telefonen på en flat overflate.

Hvis når du ruller telefonen til venstre og rollvalgen øker i stedet for reduseres, endrer du 1000 du multipliserte "roll" med til -1000 (i seksjon 2). Det samme gjelder "tonehøyden" hvis tallene er reversert.

Eksempelkode for å fikse rull i eksemplet ovenfor.

tonehøyde = (tonehøyde * -1000); // gang med 1000 for å bli kvitt desimalene

rulle = (rulle * -1000);

Så hvis alt fungerer bra, kan vi legge dette til den endelige koden!

  1. Åpne skissen ReadRawAccel. Kopier alt under side1 -maker.
  2. Åpne TiltTX_Final -skissen. Rull til bunnen der det står "lim inn side 1 her" og erstatt all koden under den.
  3. Last opp TiltTX_Final -skissen til din arduino.

Trinn 13: Kretsløpstid

Kretsetid!
Kretsetid!
Kretsetid!
Kretsetid!
Kretsetid!
Kretsetid!
Kretsetid!
Kretsetid!

Nå som vi er ferdige med den vanskelige delen, er det på tide å lage kretsen. Du kan velge å ikke lage et skjold for å spare tid og deler, men jeg liker alltid å lage prosjektene mine med skjold i tilfelle jeg trenger å bruke den Arduino med et annet prosjekt. For dette prosjektet skal jeg bruke min Arduino Nano fordi jeg vil at alt skal passe i en liten eske. Men du kan bruke hvilken som helst annen Arduino, fra en Mega til en LilyPad. Så studer skjematikken, se videoen og begynn å lodde! Jeg vil ikke legge ut alt bildet her fordi jeg viser deg trinn for trinn hvordan du gjør det i videoen.

Trinn 14: Sette opp treneren

Nå som du er ferdig med kretsen, slå den på, koble til telefonen og koble monokontakten til treningsporten på baksiden av radioen. Sett multiplikatoren til 1,3 og plasser telefonen på en flat overflate. Kalibrer deretter.

Merk, kanal 0 er gass, kanal 1 er rulle, og kanal 2 er tonehøyde.

Hvis du vil endre disse, gå inn i koden her:

ppm [0] = gass;

ppm [1] = rollval; ppm [2] = pitchval;

Trinn 15: Konklusjon

Noen har hatt problemet med at koden ikke kompilerte. Hvorfor vet jeg ikke fordi det fungerer bra for meg på begge plattformene mine, men hvis du får feilmeldingen (feil ikke definert i dette omfanget), trenger du plassering 1 etter ugyldig feilsløyfe.

1. MeetAndroid meetAndroid (feil); // Android bluetooth -ting. Ikke rør dette. Ugyldig feil (uint8_t flagg, uint8_t verdier) // flere Bluetooth -ting. {Serial.print ("Feil:"); Serial.println (flagg); }

Når du er ferdig skal det se slik ut:

void error (uint8_t flag, uint8_t values) // more bluetooth stuff.

{Serial.print ("Feil:"); Serial.println (flagg); } MeetAndroid meetAndroid (feil); // Android bluetooth -ting. Ikke rør dette.

Jeg håper virkelig at du synes dette var interessant og friskt. Jeg prøvde å sørge for at den er lett å følge. Skulle du forveksle med noe, går videoen inn i litt mer detaljert, så gjør den instruerbare. Kontakt meg hvis du får problemer, så hjelper jeg deg så lenge spørsmålet ditt er relevant. Vennligst gi denne instruksen en stemme og legg ut et bilde nedenfor til replikasjonen din, og hvis du har laget en video, legg ut en lenke! Husk å legge igjen tilbakemeldinger nedenfor!

HavocRC, ~ AJ

Anbefalt: