CxemCAR Arduinossa - Auton Bluetooth-ohjaus Androidilla. Yksinkertainen Bluetooth-kone Arduinon Bluetooth-koneella Arduinosta puhelimesta

Arduino-auto Bluetooth-ohjauksella Android-puhelimesta on hyvin yksinkertainen mutta mielenkiintoinen projekti Arduino UNO:ssa Motor Shield -moduulilla. Tältä sivulta saat selville, mitä komponentteja tarvitset robottikoneen tekemiseen Arduinoon omin käsin, vaiheittaiset ohjeet sähköpiirin kokoamiseen, ja voit ladata kaikki tarvittavat ohjelmat Androidille ja Arduino.

Tässä projektissa käytimme Motor Shield L293D -moduulia, kahta hammaspyörää, Arduino UNO -korttia, HC-05 Bluetooth-moduulia ja kahta LEDiä ajovaloihin. Ohjaus tapahtuu etänä älypuhelimen tai tabletin Bluetooth-signaalin kautta. Mallin kokoamisen ja ohjelmien asentamisen jälkeen voit älypuhelimesi sovelluksella kääntää autoa, ajaa eteen- ja taaksepäin sekä sytyttää ja sammuttaa ajovalot.

DIY Arduino kone

Tätä projektia varten tarvitsemme:

  • Arduino Uno / Arduino Nano / Arduino Mega aluksella;
  • Moottorin ohjauskilpi L293D;
  • Bluetooth-moduuli HC-05/06;
  • kaksi moottoria vaihdelaatikoilla ja pyörillä;
  • akku 9 volttia (kruunu);
  • 2 vastusta ja 2 LEDiä;
  • kori ja pyörät vanhasta autosta;
  • juotosrauta, kuumasulatepistooli, johdot, juotos jne.
Osat robotille - autot Arduino UNO:ssa

Arduino-koneen kokoonpanokaavio

Jos sinulla on kaikki tarvittavat osat (voit tehdä ilman LEDejä ja vastuksia projektissa), katsomme seuraavaksi kuinka tehdä Arduino-kone omin käsin. Ensin tulee juottaa johdot moottoreiden koskettimiin ja kiinnittää ne sähköteipillä, jotta koskettimet eivät irtoa. Johdot on kytkettävä moottorisuojan riviliittimiin M1 ja M2 (napaisuutta voidaan muuttaa myöhemmin).


Virta Bluetooth-moduuliin tulee servo-aseman koskettimista, emme tarvitse servoja projektiin. Ja virtalähde on stabiloitu 5 voltin jännite, joka sopii meille. Olisi kätevämpää juottaa naarasliittimet TX- ja RX-portteihin ja juotosnastat (BLS) Pin0- ja Pin1-portteihin Motor Shieldissä. Tällä tavalla voit helposti irrottaa Bluetooth-moduulin Arduinosta, kun sinun on ladattava luonnos.

LED-valoja ohjataan "Pin2"-portista, jossa johto voidaan juottaa suoraan porttiin. Jos teet useita koneita Bluetoothilla, joita ohjaat samanaikaisesti, suosittelemme HC-05-moduulin vilkkumista. Moduulin vilkkuminen on hyvin yksinkertaista, ja sitten et enää sekoita koneita, koska jokainen näyttää oman ainutlaatuisen nimensä Androidissa.

Sovellus ja luonnos Arduino-koneelle

Piirin kokoamisen jälkeen lataa seuraava luonnos koneelle (älä unohda irrottaa Bluetooth-moduuli Arduinosta latauksen aikana) ja asenna sovellus älypuhelimeesi. Kaikki projektin tiedostot (AFMotor.h-kirjasto, luonnos autolle ja Android-sovellukselle) voidaan ladata yhdestä arkistoon suoran linkin kautta. Sketchin toiminta voidaan tarkistaa ohjaamalla konetta tietokoneelta Serial Monitorin kautta USB:n kautta.

#sisältää // yhdistä suojan kirjasto AF_DCMoottorimoottori1(1); // kytke moottori riviliittimeen M1 AF_DCMoottorimoottori2(2); // kytke moottori M2-liittimeen int val; // vapauttaa muistia ohjaimessa void setup() (Serial.begin(9600); pinMode(2, OUTPUT); // Portti LEDeille motor1.setSpeed(250); motor1.run(RELEASE);// pysäytä moottori moottori2.setSpeed(250);// Aseta moottorin maksiminopeus motor1.run(RELEASE); motor2.run(RELEASE); ) void loop () ( jos (Sarjasarja . saatavilla ())// tarkista, vastaanotetaanko komentoja ( val = Serial .read (); if (val == "f") ( // mene eteenpäin motor1.run (FORWARD); motor1.setSpeed ​​​​(250); motor2.run (FORWARD); motor2.setSpeed ​​​​(250) ; ) if (val == "b") ( // go back motor1.run (TAAKSA); motor1.setSpeed ​​​​(200); motor2.run (TAAKSA); motor2.setSpeed ​​​​(200) ) if (val == "s") (// lopeta motor1.run(RELEASE); motor2.run(RELEASE);) if (val == "l") ( // käänny vasemmalle moottori1.ajo(ETEENPÄIN); moottori1.setSpeed(100); moottori2.ajo(TAAKSA); moottori2.setSpeed(250); ) if (val == "r") (// käänny oikealle moottori1.ajo(TAAKSA); motor1.setSpeed(250); motor2.run(FORWARD); moottori2.setSpeed(100);) jos (arvo == "1") (

// laita LEDit päälle

  1. digitalWrite(2,KORKEA);
  2. ) jos (arvo == "0") (
  3. // sammuttaa LEDit

Kun olet tarkistanut koneen toiminnan, asenna sovellus älypuhelimeesi tai tablettiin. Kun muodostat ensimmäisen yhteyden Bluetooth-moduuliin HC-05/06, sinun on muodostettava laitepari Androidin kanssa (sen jälkeen pariliitos tehdään automaattisesti). Jos sinulla on vaikeuksia muodostaa yhteys, lue tämä artikkeli

Tässä artikkelissa tarkastellaan Arduinon yhdistämistä ja ohjaamista Bluetoothin kautta.

Yleisesti käytettyä HC-06:ta käytetään Bluetooth-moduulina.

Projektissamme laitamme päälle ja pois päältä bluetoothin kautta porttiin 13 liitetyn LEDin.

Aloitetaan kirjoittamalla sovellus Android-älypuhelimeen. Sovellus kirjoitetaan kätevässä ja yksinkertaisessa ohjelmointiympäristössä, App Inventorissa. Ohjelmat kootaan verkossa.

Seuraa linkkiä http://ai2.appinventor.mit.edu/. Siellä sinua pyydetään kirjautumaan sisään Google-tiliin, joka sinun on luotava, jos sinulla ei vielä ole sellaista.

Kirjautumisen jälkeen sinut ohjataan ohjelmaan, jossa voit luoda projektin napsauttamalla "aloita uusi projekti". Sinun on syötettävä projektin nimi. Kutsutaan sitä led_controliksi.

Tyhjä sovellusikkuna avautuu.

Tänne laitamme tarvittavat komponentit. Valitse vasemmalla olevasta ikkunasta ListPicker ja pudota se projektiin.

Etsi oikeanpuoleisen ikkunan ListPicker-komponentin Teksti-ominaisuus ja vaihda ListPicker1:n teksti arvoksi "Valitse BT-laite".

Avaa Layout-välilehti vasemmanpuoleisessa ikkunassa, aseta HorizontalArrangement-komponentti sovellukseen, muuta sen Width-ominaisuuden arvoksi "Täytä vanhempi". Lisää 2 painiketta Horizontal Arrangement -asetuksiin, aseta kunkin Leveys-ominaisuuden arvoksi "Täytä vanhempi". Sen pitäisi näyttää tältä:

Vaihdetaanpa painikkeiden tarroja: ensimmäinen lukee LED ON, toinen LED OFF.

Alla lisäämme tunnisteen ja tyhjennämme sen tekstin.

Jäljelle jää vain komponentti, joka järjestää tiedonsiirron Bluetoothin kautta. Avaa Yhteydet-välilehti ja aseta BluetoothClient projektiin. Tämä komponentti ei näy puhelimen näytöllä, vaan sen alapuolella, koska se ei ole visuaalinen.

Nyt voit aloittaa ohjelman kirjoittamisen. Valitse ohjelman oikeasta yläkulmasta Blocks-tila.

Täällä käännetään ohjelma graafisista lohkoista. Napsauta vasemmalla ListPicker1-komponenttia ja valitse ListPicker1.BeforePicking.

Napsauta ListPicker1 uudelleen ja valitse aseta ListPicker1.Elements arvoon

Aseta se kuten kuvakaappauksessa.

Tämä antaa meille luettelon pariksi liitetyistä Bluetooth-laitteista. Yhdistetään nyt valittuun laitteeseen. Kirjoita lohko kuten alla olevassa kuvakaappauksessa.

Vaaleanpunainen lohko, jonka nimi on Yhdistetty, on Teksti-välilehden ensimmäinen lohko. Kirjoita tyhjään ruutuun Connected.

Nyt kirjoitetaan painikekäsittelijä. Kun napsautat ensimmäistä painiketta, teksti "led_on" lähetetään, ja kun napsautat toista, "led_off" lähetetään. Myös Label1:n merkintä muuttuu.

Jäljelle jää vain ladata projekti älypuhelimeesi. Napsauta Build ja valitse lataustapa.

Ensimmäistä vaihtoehtoa varten tarvitset Internetin ja QR-koodinlukijan. Napsauta ja odota, kunnes projekti on koottu ja QR-koodi luotu, avaa sitten älypuhelimesi QR-koodinlukija ja lue koodi. Jäljelle jää vain ladata ja asentaa tiedosto.

Toisessa vaihtoehdossa projekti tallennetaan .apk-muodossa tietokoneellesi ja voit ladata sen älypuhelimeesi millä tahansa kätevällä tavalla (esimerkiksi USB:n kautta).

Aloitetaan nyt Arduino-ohjelmalla.

Tietojen vastaanotto ja siirto tapahtuu COM-portin kautta, joten käytämme sarjaporttia. Vastaanotamme signaaleja merkki merkiltä, ​​muodostamme merkkijonon ja vertaamme sitten luotua merkkijonoa led_on- ja led_off-komentoihin.

Arduino

Merkkijono val = ""; void setup() ( Serial.begin(9600); pinMode(13, OUTPUT); ) void loop() ( while (Serial.available()) ( //kun tiedot saapuvat char c = Serial.read(); // lue ne val += c; //ja muodosta merkkijonoviive(3) if (val != "") ( Serial.println(val); ) if (val == "led_on") ( digitalWrite(13, HIGH ) ; ) else if (val == "led_off") ( digitalWrite(13, LOW); ) val = "" )

Merkkijono val = "" ;

void setup() (

Sarja. alkaa(9600);

pinMode(13, OUTPUT);

void loop() (

kun (Sarja . saatavilla () ) ( //kun tiedot saapuvat

char c = Sarja. lukea(); //lue ne

val += c; //ja luo merkkijono

viive(3);

}

Lataa koodi Arduinoon.

Nyt voit liittää HC-06 Bluetooth-moduulin. Se yhdistää hyvin yksinkertaisesti:

Vcc 5v (3,3 V mahdollista)

JOS YRITÄT LADATA OHJELMAN ARDUINOON MODULI KYTKETTYNÄ, NIIN ILMOITTAA VIRHE, Sillä SEKÄ MODULI JA OHJELMAN LATAUS KÄYTTÄVÄT RX- JA TX-PORTTEJA!

Kytke virta Arduinoon. Bluetooth-moduulin LED-valon pitäisi vilkkua, mikä tarkoittaa, että se odottaa yhteyttä. Ota älypuhelimesi, etsi Bluetooth asetuksista, käynnistä se ja aloita haku. Etsi laite nimeltä hc-06 ja muodosta yhteys siihen. Se ei ehkä onnistu ensimmäisellä kerralla. Kun pariliitos on muodostettu onnistuneesti kerran, voit käynnistää ohjelman älypuhelimellasi.

Napsauta ensin "Valitse BT-laite" ja valitse moduuli pariksi liitetyistä laitteista. Paina seuraavaksi LED-sytytys- ja sammutuspainikkeita. Jos kaikki tehdään oikein, kaikki toimii.

Teimme erittäin yksinkertaisen sovelluksen Bluetoothilla, ilman suunnittelua tai edes tarkistamatta, olemmeko yhteydessä moduuliin vai ei. Seuraavilla tunneilla teemme monimutkaisempia sovelluksia ja tutustumme App Inventoriin paremmin.

Ja työskentele hänen kanssaan.

Moottorisuojan päivitys

Kävi ilmi, että Motor Shield -moduulin valmistajat riistivät asiakkailtaan mahdollisuuden asentaa toinen moduuli tuotteensa päälle. Ilmeisesti he haluavat olla päällä tai vain puristaa normaalia kontaktipaneelia.

Tämä vivahde ei sovi minulle ollenkaan. Siksi päätin ottaa juotosraudan ja viedä Motor Shieldin minulle sopivaan muotoon.


Revin varovasti irti alkuperäiset kontaktiliittimet ja heitin ne pois.


Asensin niiden tilalle normaalit.


Tässä muodossa moduulista on tullut paljon mukavampi käyttää. Nyt voin liittää Bluetooth-johdot kunnolla liittimiin, enkä juottaa niitä tiukasti Motor Shieldin koskettimiin.

Bluetooth-moduuli JY-MCU Arduinolle


JY-MCU Bluetooth-moduuli itsessään on melko pieni. Toimitussarja sisältää liitäntäkaapelin. Pin-määritykset näkyvät kääntöpuolella.


Se saa virran 3,6-6V virtalähteestä. Tämä antaa meille mahdollisuuden kytkeä se suoraan Arduinoon ilman säädintä tai jännitteenjakajaa.

Laitteeseen liitettäessä käytetty koodi: 1234.

Bluetooth JY-MCU:n yhdistäminen Arduino Mega 2560:een

Yhteys on melko yksinkertainen.

Virallinen kytkentäkaavio:

  • TXT JY-MCU:ssa yhdistä RX:ään (0) Arduinossa
  • Yhdistä JY-MCU:n RXD Arduinon TX:ään (1).

Tällä yhteysvaihtoehdolla sinun on katkaistava virta Bluetooth-moduulista joka kerta ennen luonnoksen lataamista. Älä unohda tätä.

En ole tyytyväinen tähän vaihtoehtoon, joten päätin käyttää erillisiä portteja sarjatuella.

Epävirallinen kytkentäkaavio:

  • JY-MCU:n VCC on kytketty +5V Arduinoon
  • Yhdistä JY-MCU:n GND GND Arduinoon
  • JY-MCU:n TXT on yhdistetty Arduinon erilliseen PIN 50:een
  • Yhdistä JY-MCU:n RXD erilliselle PIN 51:lle Arduinossa

Nyt voit ladata luonnoksia katkaisematta virtaa Bluetooth-moduulista.

Bluetoothin turvaamiseksi päätin käyttää Proto Shield -levyä ja miniatyyriä juottamatonta leipälevyä. Jatkossa liitän siihen muita laitteita, ohjaimia ja näyttöjä.




Luonnos robotin ohjaamiseen Arduinossa Bluetoothin kautta Android-älypuhelimen kautta

Luonnoksessani toteutin seuraavat toiminnot:

  • Eteenpäin
  • Liikkuu taaksepäin
  • Käänny vasemmalle
  • Käänny oikealle
  • Tasainen käännös vasemmalle eteenpäin ajettaessa
  • Tasainen käännös oikealle eteenpäin ajettaessa
  • Tasainen käännös vasemmalle liikkuessasi taaksepäin
  • Tasainen käännös oikealle liikkuessasi taaksepäin
  • Stop
  • Nopeusasetus 0 %

    Nopeusasetus 10 %

    Nopeussäätö 20 %

    Nopeussäätö 30 %

    Nopeussäätö 40 %

    Nopeussäätö 50 %

    Nopeussäätö 60 %

    Nopeussäätö 70 %

    Nopeussäätö 80 %

    Nopeussäätö 90 %

    Nopeussäätö 100 %

Käytin luonnoksessa toimintoja, jotta en toistaisi koodia vastaaville tapahtumille.

#sisältää // Yhdistä moottorin ohjauskirjasto
#sisältää // Yhdistä kirjasto servoille
#sisältää // Yhdistä kirjasto toimimaan sarjaportin kanssa erillisten porttien kautta

//Luo objekteja moottoreille
AF_DCMoottorimoottori1(1); //kanava M1 Motor Shieldissä - takana vasen
AF_DCMoottorimoottori2(2); //kanava M2 Motor Shieldissä - takana oikea
AF_DCMoottorimoottori3(3); //kanava M3 Motor Shieldissä - edessä vasen
AF_DCMoottorimoottori4(4); //kanava M4 Motor Shieldissä - edessä oikea

// Luo objekti servolle
Servo vsservo;

SoftwareSerial BTSerial(50, 51); // RX, TX

// Luo muuttuja Bluetooth-komentoille
char vcmd;
// Luo muuttujat muistaaksesi moottoreiden nopeudet
int vspdL, vspdR;
/* Luo muuttuja, jonka arvo laskee nopeutta tasaisissa käännöksissä.
Nykyisen nopeuden on oltava tätä arvoa suurempi. Muuten pyörimissuunnassa olevat moottorit eivät yksinkertaisesti pyöri */
int vspd = 200;

void setup() (
// Aseta Bluetooth-tiedonsiirtonopeus
BTSerial.begin(9600);
// Aseta tiedonsiirtonopeus kaapelin kautta
Serial.begin(9600);
// Valitse nasta, johon servo on kytketty
vservo.attach(9); // tai 10, jos se on kytketty uloimpaan liittimeen
// Käännä servoa 90 astetta joka kerta, kun se käynnistetään
vservo.write(90);
// Aseta moottoreiden suurin pyörimisnopeus
vnopeus(255 255);
}

void loop() (
// Jos dataa on
jos (BTSerial.available())
{
// Lue komennot ja laita ne muuttujaan. char muuntaa komennon merkkikoodin merkiksi
vcmd = (char)BTSerial.read();
// Lähetä komento portille, jotta ne voidaan tarkistaa "Port Monitorissa"
Serial.println(vcmd);

// Eteenpäin
if (vcmd == "F") (
vforward();
}
// Takaisin
jos (vcmd == "B")
{
vbackward();
}
// Vasen
if (vcmd == "L")
{
vleft();
}
// Aivan
if (vcmd == "R")
{
vright();
}
// Suora ja vasen
if (vcmd == "G")
{
vforwardleft();
}
// Suoraan ja oikeaan
if (vcmd == "I")
{
vforwardright();
}
// Taakse ja vasemmalle
jos (vcmd == "H")
{
vbackwardleft();
}
// Taakse ja oikealle
if (vcmd == "J")
{
vbackwardright();
}
// Lopeta
if (vcmd == "S")
{
vrelease();
}
// Nopeus 0%
if (vcmd == "0")
{
vnopeus(0,0);
}
// Nopeus 10%
if (vcmd == "1")
{
vnopeus(25,25);
}
// Nopeus 20%
if (vcmd == "2")
{
vspeed(50,50);
}
// Nopeus 30%
if (vcmd == "3")
{
vnopeus(75,75);
}
// Nopeus 40 %
if (vcmd == "4")
{
vspeed(100,100);
}
// Nopeus 50%
if (vcmd == "5")
{
vnopeus(125 125);
}
// Nopeus 60 %
if (vcmd == "6")
{
vspeed(150,150);
}
// Nopeus 70 %
if (vcmd == "7")
{
vnopeus(175 175);
}
// Nopeus 80%
if (vcmd == "8")
{
vnopeus(200 200);
}
// Nopeus 90%
if (vcmd == "9")
{
vnopeus(225 225);
}
// Nopeus 100 %
if (vcmd == "q")
{
vnopeus(255 255);
}
}
}

// Eteenpäin
void vforward() (
vspeed(vspdL,vspdR);
vforwardRL();
}

// Eteenpäin RL:lle
void vforwardRL() (
moottori1.ajo(ETEENPÄIN);
motor2.run(FORWARD);
moottori3.ajo(ETEENPÄIN);
motor4.run(FORWARD);
}

// Takaisin
void vbackward() (
vspeed(vspdL,vspdR);
vbackwardRL();
}

// Takaisin RL:ään
void vbackwardRL() (
moottori1.ajo(TAAKSA);
moottori2.ajo(TAAKSESTA);
moottori3.ajo(TAAKSA);
moottori4.ajo(TAAKSA);
}

// Vasen
void vleft() (
vspeed(vspdL,vspdR);
moottori1.ajo(TAAKSA);
motor2.run(FORWARD);
moottori3.ajo(TAAKSA);
motor4.run(FORWARD);
}

// Aivan
void vright() (
vspeed(vspdL,vspdR);
moottori1.ajo(ETEENPÄIN);
moottori2.ajo(TAAKSESTA);
moottori3.ajo(ETEENPÄIN);
moottori4.ajo(TAAKSA);
}

// Eteen ja vasemmalle
void vforwardleft() (
if (vspdL > vspd) (
vspeed(vspdL-vspd,vspdR);
}
muu
{
vspeed(0,vspdR);
}
vforwardRL();
}

// Eteen ja oikealle
void vforwardright() (
if (vspdR > vspd) (
vspeed(vspdL,vspdR-vspd);
}
muu
{
vspeed(vspdL,0);
}
vforwardRL();
}

// Taakse ja vasemmalle
void vbackwardleft() (
if (vspdL > vspd) (
vspeed(vspdL-vspd,vspdR);
}
muu
{
vspeed(0,vspdR);
}
vbackwardRL();
}

// Taakse ja oikealle
void vbackwardright() (
if (vspdR > vspd) (
vspeed(vspdL,vspdR-vspd);
}
muu
{
vspeed(vspdL,0);
}
vbackwardRL();
}

// Lopeta
mitätön vrelease())(
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
}

// Muuta nopeutta
void vspeed(int spdL,int spdR)(
if (spdL == spdR) (
vspdL = spdL;
vspdR = spdR;
}
motor1.setSpeed(spdL);
motor2.setSpeed(spdR);
motor3.setSpeed(spdL);
motor4.setSpeed(spdR);
}

Bluetooth RC Car -ohjelma - robottiauton ohjaaminen Android-älypuhelimesta

Asensin Bluetooth RC Car -ohjelman älypuhelimeesi. Mielestäni tämä on paras ohjelmisto robottiauton ohjaamiseen.


Ohjelman avulla voit lähettää komentoja painettaessa painikkeita tai vastata älypuhelimen kiihtyvyysmittarin tietoihin, säätää liikkeen nopeutta liukusäätimellä, sytyttää etu- ja takavalot, kytkeä päälle ja pois äänimerkin, kytkeä päälle ja pois päältä hätäsignaali.




Ohjelma vaatii Android-version 2.3.3 tai uudemman. Ohjelman koko on 3 megatavua.

Lista komentoista:

  • F – eteenpäin
  • B - takaisin
  • L - vasen
  • R - oikein
  • G – suora ja vasen
  • Minä – suoraan ja oikealle
  • H – taakse ja vasemmalle
  • J – taakse ja oikealle
  • S - stop
  • W – ajovalot päällä
  • w – ajovalo ei ole päällä
  • U – takavalo päällä
  • u – takavalo ei pala
  • V – äänimerkki on päällä
  • v – äänimerkki on kytketty pois päältä
  • X – hätäsignaali on päällä
  • x - hätäsignaali on sammutettu
  • 0 – liikenopeus 0 %
  • 1 – liikenopeus 10 %
  • 2 – liikenopeus 20 %
  • 3 – liikenopeus 30 %
  • 4 – liikenopeus 40 %
  • 5 – liikenopeus 50 %
  • 6 – liikenopeus 60 %
  • 7 – liikenopeus 70 %
  • 8 – liikenopeus 80 %
  • 9 – liikenopeus 90 %
  • q – liikenopeus 100 %

Kuten näette, luovuuden testikenttä on melko hyvä. Lisäisin myös mahdollisuuden sytyttää oikea ja vasen valo erikseen etu- ja takavaloihin.

Olen korostanut lihavoituna ne komennot, joita luonnos jo tukee. Loput käytän johonkin muuhun tarkoitukseen.

Komentojen lähettämisen periaate: kun painat painiketta ohjelmassa, komento lähetetään Bluetoothin kautta kerran ja kun painike vapautetaan, S-stop-komento lähetetään välittömästi.

Työn esittely

Seuraavalla kerralla aion kytkeä robottiin ultraäänietäisyysmittarin ja toteuttaa esteen välttämisalgoritmin.

Älkäämme ostako kiinalaisilta huonoja leluja, vaan ostetaan heiltä halpa rakennussarja-alusta, useita moduuleja ja laitetaan kätemme siihen!

Tämän sain lopulta: kelvollinen alusta, hallittavissa - TA-DA!!! - Android-älypuhelimestani.


"Olen suora, olen sivuttain,
Käännöksellä ja hyppyllä,
Sekä lenkiltä että paikan päällä,
Ja kaksi jalkaa yhdessä..."

Tänään rakennetaan hauska auto Bluetoothin kaukosäätimellä. Mukana Androidin ohjausohjelman lähteet.

Hyvä esimerkki lelusta

Minulla on kaksi lasta, tytär ja poika. Molemmille annetaan leluja syntymäpäivälahjaksi. Se, mitä he antavat tyttäreilleni, ei yleensä aiheuta negatiivisia reaktioitani. Ja pojalle annetaan odotetusti kaikenlaisia ​​autoja, tankkeja ja muita varusteita. Kaikesta tästä kiinalaisten tavaroiden lumivyörystä ainoa asia, josta minulla ei ole valittamista, on itse lahjaksi antamani lelumoottorisaha.

Miksi näin on? Luultavasti siksi, että tämä saha myytiin STIHL-työkaluliikkeessä. Uskoakseni STIHL teki tuotteistaan ​​leluanalogin pienessä promootiopainoksessa. Tuloksena syntyi täysin järkevä lelu, joka oli hyvin samanlainen kuin isoveljensä. Kumiketju pyörii, 80 prosenttia ohjaimista on toteutettu. Mukana on jopa kahvalla varustettu johto sahan käämitystä varten, kytkin ja kaasupainike. Sarja sisältää varaketjun ja työkalun ketjun vaihtoon.


Tässä on lelu saha

Mistä minä puhun? Ai niin, arkkitehtuurista! Tarkoitan sitä, että jos haluat, voit tehdä erinomaisen lelun. Ja on jotain mitä katsoa.

Rakennetaan auto kaukosäätimellä!

Radio-ohjattavat lelut ovat käytännön ja teknisen kiinnostavia. 4-6-vuotiaalle lapselle ei kuitenkaan anneta leluja, joissa on "aikuisten" suhteellinen ohjaus. Todennäköisesti lelu menee rikki ja rahaa menee hukkaan.
Tämän seurauksena he yleensä antavat jotain halpaa. Kaikesta tästä - "halpaa" - autot ovat joko erittäin nopeita tai hitaita; säiliöt ovat hauraita; ja muita ilmeisiä ja piilotettuja puutteita. Eikä tietenkään suhteellista valvontaa.

Eräänä kauniina päivänä toisen auton oikea pyörä lakkasi pyörimästä. Purin sen osiin ja tarkistin moottorin - se toimii.
Ohjauskortissa on kolme mikropiiriä - Kiina on tyhmä, en löytänyt järkevää dokumentaatiota. Yksi siru on radiosignaalin vastaanotin, jossa on loogiset lähdöt ja kaksi siltamoottoriohjainta. Yksi kuljettajista on epäonnistunut. En pystynyt heti kokoamaan siltamoottoriohjainta erillisistä komponenteista.

Paikallisessa radion osaliikkeessä ei ollut mitään sopivaa. Niinpä menin kaukaisiin maihin etsimään ihmemikropiirejä. Keräsin tavarani, täytin taskuni keksillä, kaadoin kupin kahvia, käynnistin selaimen ja menin... .
Löysin parametreja vastaavan moottoriohjaimen ja tilasin kaksi kerralla. Varmuuden vuoksi, jos jokin on yhtäkkiä viallinen tai poltan itseni. Silloin alkoi syntyä ajatus omasta autostani. Kun paketti saapui loistavasta Kiinasta, vaihdoin onnistuneesti ajurin ja kone korjattiin.

Hyllyttämättä ajatusta omasta autostani, menin jälleen valitsemaan perustan - tulevan auton alustan. Alustat ovat erilaisia ​​maakuljetuksissa: tela-, pyörä-, kaksi-, kolmi-, nelipyöräiset jne.

Kuinka valitsin alustan

Ensinnäkin valitsin maakuljetustavan, mikä tarkoittaa, että minulla on maaalusta. Tela-alustat ovat yleensä kalliimpia eivätkä kovin nopeita. Kaksi- tai kolmipyöräiset ajoneuvot näyttävät minusta huonosti kulkevilta.
minä asettuin. Mielestäni tällaisella alustalla on erinomainen ohjattavuus ja nopeus.


Rungon mukana:
kaksi akryylilevyä, joissa on joukko teknisiä reikiä kaikkien mahdollisten anturien, ohjauskorttien ja muiden komponenttien asentamiseen
4 pyörää
4 käyttölaitetta koottuna (sähkömoottori + vaihteisto)
4 levyä nopeusantureille, yksi jokaiselle pyörälle
kiinnike
Kyllä, se on taas Kiina. Kyllä, halpaa. Kyllä, aika hyvä laatu. MUTTA! Meidän pitäisi kokeilla sitä ensin. Loppujen lopuksi "aikuinen" alusta maksaa kuin aikuinen, emme ole vielä kasvaneet siihen.

Ajatusten suo ja toimeksiantoehdot

Kun pidät käsissäsi lupaavaa asiaa, esimerkiksi mahdollisuuksien mukaan varustaa malli kaikenlaisilla antureilla, servoilla jne., alat hukkua ajatusten suohon ja tulevaisuudennäkymien suohon. Mutta sanokaamme itsellemme - STOP! Ja laadimme prototyypin minispesifikaation, jossa on lyhyt kuvaus kaikista komponenteista.
Meillä pitäisi olla RC-malli maa-ajoneuvosta, jota ohjataan Bluetoothin kautta ja jolla on mahdollisuus peruuttaa ja säätää pyörän nopeutta sujuvasti.

Mitä tarvitsemme koneen kokoamiseen?

.


Kääntyviä pyöriä ei ole, mikä tarkoittaa, että kääntösäädin on kuin tela-ajoneuvossa. Toisin sanoen eteen-/taakseliikkeessä vetolaitteiden oikea ja vasen puoli pyörivät samalla nopeudella. Ja käännöksen tekemiseksi yhden puolen pyörimisnopeuden on oltava pienempi tai suurempi.


Koneen etähallintaan käytämme Bluetooth-kanavaa. HC-06-moduuli on Bluetooth-silta, sarjaliitäntä, joka mahdollistaa tiedonsiirron molempiin suuntiin. Sisääntulossa on TTL-sarjaliitäntäsignaalit “RxD” ja “TxD” mikro-ohjaimeen (kohdekorttiin) kytkemistä varten.
Android-matkapuhelin toimii kaukosäätimenä. Kirjoitetaan oma ohjelma!



Kuljettaja on kaksikanavainen, vasemmalle ja oikealle pyöräparille. Ohjaimessa on loogiset tulot lähdön napaisuuden (pyörimissuunnan) muuttamiseen ja PWM-tulo, jolloin pyörimisnopeutta voidaan ohjata.


Tämä hallitus valittiin, koska makasi pöydän laatikossa ja sopii täysin tarkoitukseemme. On erilliset tulot/lähdöt, MK-signaalit “RxD” ja “TxD” tulevat ulos, joihin “HC-06” kytketään.
Tulevaisuudessa sanon, että Olimex MOD-IO -tuote on kova ylilyönti. Olisi hienoa käyttää tavallista, kuten kerromme tarinan jatkossa!

Kokonais: runko + ohjauskortti + Bluetooth-moduuli + ohjausohjelma Androidille.

Yleinen kytkentäkaavio

Ei kaavio puhtaassa muodossaan, vaan kytkentäkaavio, koska meillä on kaikki levyt valmiina, ja ei tarvitse muuta kuin yhdistää ne yhteen.

Kaava Proteuksessa


En kuvaile mitä liitin ja minne. Todennäköisesti sinulla on erilainen ohjauskortti. Liitän lähdekoodin, jotta voit muokata laiteohjelmistoa. No, jos joku ei pysty kääntämään levylleen firmwarea, ota yhteyttä - autan kun minulla on vapaa-aikaa.

Mikrokontrolleri ohjelma

MK-ohjelma voi vastaanottaa komentoja sarjaliitännän kautta Bluetooth-moduulista.
Ja ohjaa vasenta ja oikeaa asemaparia komentojen mukaisesti. Peruutus- ja nopeudensäätö toimivat PWM:llä.

Koodia on kommentoitu riittävästi. Haluaisin käsitellä erikseen tiedonvaihdon toteuttamistani.
Saan dataa soittopuskurin kautta. Asia ei ole uusi ja toteutuksia on monia.

Olen sijoittanut rengaspuskurin toiminnot erilliseen kirjastoon, joka koostuu:
otsikkotiedosto ring_buffer.h ja funktion toteutustiedosto ring_buffer.c
Jos haluat käyttää kirjastoa, sinun on sisällytettävä se main.c:hen
#include "ring_buffer.h"

Seuraavaksi sinun on määritettävä otsikkotiedoston kirjasto. Määrittämistä varten sinun on määritettävä vain neljä ohjetta:
#define RX_PACKET_SIZE 7 // RxD-paketin koko #define BUFFER_SIZE 16 // Vastaanottopuskurin koko. Koko on oltava kaksi kertaa RX_PACKET_SIZE:n kokoinen #define START_BYTE "s" // Aloitustavu #define STOP_BYTE "e" // Pysäytä tavu

Itse asiassa ei ole enää mitään konfiguroitavaa.

Koodia käyttämällä Main.c:ssä määritämme mikro-ohjaimen USART:n.
USART-määritystoiminnon kutsuminen
USART_Init(MYUBRR);

#define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 void USART_Init(signed int ubrr) ( /* Aseta siirtonopeus */ UBRRH = (etumerkki)(ubrr >> 8); UBRRL = (signed char)ubrr; /* Ota vastaanotin ja lähetin käyttöön */ UCSRB = (1<< TXCIE) | (1 << RXCIE)| (1 << TXEN) | (1 << RXEN); /* Set frame format: 8data, 2stop bit */ UCSRC = (1 << URSEL) | (0 << USBS) | (3 << UCSZ0); }

Datapaketin vastaanottaminen

USART-tavun vastaanottokeskeytyskäsittelijätoiminnossa meidän on vain asetettava vastaanotettu tavu soittopuskuriin. Jäsennämme paketin myöhemmin.
ISR(USART_RXC_vect) ( uint8_t Data = UDR; RB_push_char(Data); // Lisää vastaanotettu tavu rengaspuskuriin )
Kyllä, olen laiminlyönyt kaikki kehystarkistukset toistaiseksi.

Nyt meidän tarvitsee vain tarkistaa puskurimme aika ajoin. Tätä varten käynnistin ajastimen, jossa asetin lipun, joka sallii soittopuskurin tarkistamisen
ISR(TIMER0_OVF_vect) ( TCNT0 = 0x64; ReadRingBuffer = 1; )

Pääsilmukassa lisäämme ehdon lipun tarkistamiseksi.
if (ReadRingBuffer) ( if (RB_read_buffer((uint8_t*)&RxPacket) == 1) Puskurin lukeminen ( // Jäsennä paketti, tee jotain ) ReadRingBuffer = 0; )

Toiminto RB_read_buffer tarkistaa rengaspuskurin, jos paketin koko, aloitus- ja lopetustavut ovat paikoillaan - paketin katsotaan olevan kelvollinen, funktio palauttaa argumenttina "1".
Luotettavuuden lisäämiseksi paketti voidaan varustaa tarkistussummalla yhdessä kaupallisista projekteistani. Toisin sanoen koon ja aloitus/lopetustavujen tarkistuksen lisäksi lisätään myös tarkistussumman tarkistus. Mutta toistaiseksi tulemme toimeen ilman sitä.

Kuinka puran paketin

Nyt mielenkiintoinen osa on, kuinka puran paketin. Paketti voi lähettää dataa, joka on suurempi kuin tavu, allekirjoitettua dataa tai liukulukudataa.
Selitän käyttämällä esimerkkiä alustan ohjauksen paketista. Aloitus- ja lopetustavujen lisäksi paketissani on lähetettävä yksi komento ja kaksi PWM-arvoa asemien vasemmalle ja oikealle puolelle. Komennossa yksi tavu riittää minulle, ja lähetän jokaista PWM-arvoa kohden int16- 16-bittinen, allekirjoitettu tyyppi. Eli en lähetä suuntalippua (tavu/merkki). Suunnan vaihtamiseksi ohitan positiivisen tai negatiivisen PWM-arvon.

Vastaanottopakettini on järjestetty rakenteen muodossa.
struct RxPacket ( uint8_t StartByte; uint8_t Command; int16_t Left_PWM; int16_t Right_PWM; uint8_t StopByte; ) RxPacket;

Toiminnon kutsuminen RB_read_buffer ((uint8_t*)&RxPacket ), argumenttina välitämme osoittimen vastaanottavan paketin rakenteeseen. Eli kun paketti vastaanotetaan, kaikki lajitellaan omille paikoilleen RxPacket-rakenteessa. Sitten ei jää muuta kuin lukea nämä tiedot rakenteesta, esimerkiksi näin:
lCmd = RxPacket.Command;

lLPWM = RxPacket.Left_PWM;

lRPWM = RxPacket.Right_PWM;
Datapakettien siirto

Vaikka lähetys ei ole vielä käytössä ohjelmassani, lähetysmahdollisuus on kuitenkin otettu käyttöön. Tietojen siirtäminen on helpompaa. Luodaan rakenne samalla tavalla kuin vastaanottavalle paketille:
struct TxPacket ( uint8_t StartByte; uint8_t Rc5System; uint8_t Rc5Command; uint8_t StopByte; ) TxPacket;
Missä on aloitus- ja lopetustavu sekä tieto-osa. Olemme jo alustaneet USART-vastaanottimen.
Aloita pakettisiirto kutsumalla toimintoa void send_packet() ( // Kirjoita aloitustavu UDR-rekisteriin UDR = START_BYTE; ) Tässä esimerkissä tässä funktiossa kirjoitan vain aloitustavun UDR-rekisteriin. Se ei tunnu paljolta, mutta samassa toiminnossa voit toteuttaa paketin valmistelun tai jotain muuta hyödyllistä. Ja tämä on mielestäni loogisempaa. Se on järkevää itsedokumentoivan koodin kannalta. Eli jos olen koodissa, kirjoitan vain arvon UDR-rekisteriin, tämä voidaan ymmärtää vain yhden tavun siirtämisenä ja itsepuhuvan funktion kutsumisena.

lähetä_paketti()
- Puhun siitä, että lähetän datapaketin.< sizeof(TxPacket)) { UDR = *(Pointer + TxIndex); TxIndex++; } else TxIndex = 1; }

Käsittelijässä ilmoitan osoitinmuuttujan ja annan sille TxPacket-rakenteen osoitteen. Seuraavaksi ilmoitetaan staattinen muuttuja - lähetetyn tavun indeksi, jolle annetaan arvo, kun se ilmoitetaan 1 . Aloitamme yhdellä, koska olemme jo lähettäneet ensimmäisen tavun rakenteesta. Yleensä rakenne pärjää ilman aloitustavua, lähetän sen erikseen, mutta tämän tavun ilmoitus jätetään rakenteeseen ymmärtämään, miltä paketti näyttää.

Ehto jos (TxIndex< sizeof(TxPacket)) проверяет, что индекс меньше чем размер пакета. Если условие верно, то записываем байт в регистр UDR: UDR = *(Pointer + TxIndex);
TxIndexin lisäys. Kun USART lähettää seuraavan tavun, päästään taas käsittelijään, mutta rakenteesta lähetetään seuraava tavu, jolloin kaikki rakenteen tavut lähetetään. Kun TxIndex on suurempi kuin rakenteen koko, ehto ei ole tosi ja päädymme muuhun TxIndex = 1;

Missä TxIndex alustetaan, mutta mitään ei kirjoiteta UDR-rekisteriin, joten käsittelijää ei enää kutsuta ennen kuin seuraava pakettilähetys aloitetaan. Siirtoprosessi on siis täysin automaattinen, ja vaikka paketin rakennetta muuttaisimme, käsittelijää ei tarvitse kirjoittaa uudelleen.
Osana MK-ohjelman kuvausta on vielä puhuttava kuljettajien hallinnan toteutuksesta. Kuljettajaa ohjataan kolmella signaalilla: A1 (B1), A2 (B2) ja PWMA (PWMB). A1 ja A2 on suunniteltu kytkemään ohjain päälle/pois ja muuttamaan lähdön napaisuutta. PWM-signaali MK:sta syötetään PWMA-tuloon - voit säätää pyörimisnopeutta. PWM-signaalia varten käytin kahta laitteisto-PWM-ajastinta 1.<< COM1A1) | (0 << COM1A0) | (1 << COM1B1) | (0 << COM1B0) | (_WGM11 << WGM11) | (_WGM10 << WGM10); TCCR1B = (0 << CS12) | (0 << CS11) | (1 << CS10) | (_WGM13 << WGM13) | (_WGM12 << WGM12); TCNT1 =0x0000; OCR1A = 0; OCR1B = 0;

#define _WGM13 0 #define _WGM12 1 #define _WGM11 0 #define _WGM10 1 // Ajastin 1 init TCCR1A = (1
Ajastin on 16-bittinen, mutta PWM alustetaan 8-bittiseksi. Ja kuten luultavasti jo huomasit, vastaanottavassa paketissa minulla on kaksi arvoa PWM:n asettamiseen, vastaavasti vasemmalle ja oikealle asemalle. Allekirjoitetut muuttujat ovat 16-bittisiä.

Selitän miksi tein tämän. Ensinnäkin

, se tuli Android-ohjelmasta. Tosiasia on, että Javassa ei ole allekirjoitettuja tyyppejä ja olen jo astunut tämän rakeen. Ja lähettääkseni numeroita 0 - 255, minun pitäisi jotenkin väistää. Päätin käyttää yksinkertaisempaa reittiä - lähetän allekirjoitetun 16-bittisen numeron. Samanaikaisesti 16 bittiä allekirjoitettua tyyppiä on -32786 - 32768, mikä riittää meille. Toiseksi

, mielestäni se on läpinäkyvämpi - pyörimisnopeutta ja suuntaa kuvaa vain yksi muuttuja. Ja kolmanneksi

Asemien ohjaamiseksi kirjoitin funktion asema(int vasenPWM, int oikeaPWM);.
void drive(int leftPWM, int rightPWM) ( // Siirrä ETEENPÄIN vasen pyörä if (leftPWM > 0)( ClearBit(A2_PORT, A2_PIN); SetBit(A1_PORT, A1_PIN); ) // Siirrä TAKAISIN vasen pyörä if (leftPWM)< 0){ ClearBit(A1_PORT, A1_PIN); SetBit(A2_PORT, A2_PIN); } // Движение ВПЕРЁД правое колесо if (rightPWM >0)( ClearBit(B2_PORT, B2_PIN); SetBit(B1_PORT, B1_PIN); ) // Siirrä TAKAISIN oikea pyörä jos (oikeaPWM< 0){ ClearBit(B1_PORT, B1_PIN); SetBit(B2_PORT, B2_PIN); } // Остановка if (leftPWM == 0){ ClearBit(A1_PORT, A1_PIN); ClearBit(A2_PORT, A2_PIN); } // Остановка if (rightPWM == 0){ ClearBit(B1_PORT, B1_PIN); ClearBit(B2_PORT, B2_PIN); } set_PWM((uint8_t)(abs(leftPWM)), (uint8_t)(abs(rightPWM))); }
PWM-arvon mukaisesti signaaleja A1 (B1), A2 (B2) ohjataan ja PWM-arvo asetetaan kutsumalla toimintoa. set_PWM(vasenPWM, oikeaPWM).

Huh, olen hengästynyt...
Yhteenvetona: vastaanotin paketin, jäsensi sen, välitti PWM-arvon funktiolle ajaa.

Android-sovellus autoille

Ei, en mene niin yksityiskohtiin kuin MK:n ohjelma. Olen vielä uusi Android-ohjelmistokehityksessä, enkä ole valmis puhumaan riittävän pätevästi ja syvällisesti.

Ohjelman päätoiminto- tiedonsiirto HC-06-moduuliin Bluetoothin kautta. Ohjelmalla on yksinkertainen käyttöliittymä.

Yläreunassa on avattava luettelo pariksi liitetyistä Bluetooth-laitteista moduulin valitsemista varten. Aluksi tämä luettelo ei ollut siellä, mutta artikkelin työskentelyn loppupuolella päätin tehdä sen inhimillisesti, koska kaikki eivät pysty ymmärtämään lähdekoodia.

Seuraavaksi "Off"-painike kytkee yhteyden "HC-06":n kanssa päälle/pois. Alhaalta vasemmalta oikealle: vasemman kanavan lähetetty PWM-arvo, anturin tyyppi, oikean kanavan arvo. Alla on kaksi liukusäädintä nopeuden ja pyörimisherkkyyden säätämiseksi.

Ohjelma toteuttaa kahden tyyppistä koneohjausta. Voit vaihtaa anturin tyyppiä koskettamalla anturin nimeä: "Tilt" tai "Shuffle".

1. Ohjaa konetta kallistamalla puhelinta. Puhelimen nolla-asento on vaakasuorassa. Kun puhelinta kallistetaan eteenpäin, PWM-arvo kasvaa suhteessa kallistukseen välillä 0-255. Kun kallistat puhelinta taaksepäin, PWM-arvo pienenee suhteessa kallistukseen välillä 0 - -255


Kääntyäksesi vasemmalle tai oikealle sinun on kallistattava puhelinta eteenpäin tai taaksepäin ja samalla vastaavasti vasemmalle tai oikealle. Kyllä, aivan kuten oikeassa autossa, se ei käänny ennen kuin painat kaasua.

2. Kosketusohjaus. Tämän tyyppisen ohjauksen kauppanimeni on "shuffle".


Voidaan ajatella kosketuslevynä. Kun kosketat harmaata neliötä, PWM-arvo kasvaa/pienenee kosketuksen sijainnin mukaan, mitä alempana tai ylöspäin keskustasta, sitä suurempi/pienempi arvo.

Kelloja ja pillejä ei ole. Siinä näyttää olevan kaikki.

Vähän kärpäsen "suksilla"

Puhelimessani on ongelma. Joo, "hiihto"-puhelin on LG G2 mini. Se ei muodosta riittävää Bluetooth-yhteyttä. Yhteys muodostetaan normaalisti vain, jos Bluetooth oli päällä juuri ennen sovelluksen käynnistämistä.
Tein näin: kun käynnistän sovelluksen, tarkistan, onko Bluetooth päällä, jos se on pois päältä, teen pyynnön kytkeä se päälle. Ja kun "minimoin" tai suljen sovelluksen, sammutan Bluetoothin väkisin.
Ja vielä yksi asia, kun vaihdat näytön suuntaa, Bluetooth sammuu ja sinua kehotetaan jälleen kytkemään se päälle, sinun on kytkettävä automaattinen näytön kierto pois päältä.

Jatkaa

Uskon, että olen saavuttanut tavoitteeni! Pienellä vaivalla loin RC-mallin järkevällä suhteellisella ohjauksella. Jopa aikuinen voi leikkiä autolla innokkaasti, tehdä käännöksiä paikan päällä, tehdä monimutkaisia ​​piruetteja, hidastaa ja kiihdyttää tarvittaessa.
Ja se on helppo korjata, jos se hajoaa.

Vielä on tilaa toiminnalle, on tilaa kasvaa. Voit mukauttaa runkoa, voit päivittää ja parantaa puhelimesi ohjelmistoja.
Ja tälle tulee jatkoa!


Tässä materiaalissa suosittelemme oppimaan, kuinka voit tehdä radio-ohjatun auton kotona.

Koneen valmistamiseksi tarvitsemme:
- leluauto;
- kaksi Arduino Uno -korttia;
- kaksi NRF24-radiomoduulikorttia;
- kondensaattori 470 mF, 25 volttia;
- L298N moottoriohjainkortti;
- moottori;
- servokäyttö;
- analoginen joystick;
- ladattavat akut;
- kruunuparisto;
- kaksi päälle ja pois päältä -painiketta;
-kehys.

Ensimmäinen vaihe on juottaa kondensaattori radiomoduulin tehonastoihin. Sinun on myös ensin koottava paristot, jotta saat 12 voltin kokonaistehoa moottorin ja Arduino-levyn tehostamiseksi.

Auton kääntöjärjestelmästä on huolehdittava. Tätä varten leikkaamme etupyörien kiinnittämiseen tarkoitetun osan.

Nyt sinun on tehtävä reiät, joiden halkaisija on 4 mm, koneen rungon ja pyörien alaosaan.

Keräämme kaiken. Asetamme ruuvin pyörään ja kiinnitämme sen kahdella mutterilla.

Asetamme toisen ruuvin rungon reikään ja kiinnitämme sen muttereilla.

Lopuksi ei jää muuta kuin laittaa pyörä vinosti koneen rungon mutteriin ja kiinnittää se parilla lisämutterilla. Teemme saman toisen pyörän kanssa.

Nyt sinun on kytkettävä servokäyttö pyörivään järjestelmään.

Moottorissa on myös erityiset kiinnitysreiät, joihin sinun on asetettava kaksi ruuvia moottorin kiinnittämiseksi koneen runkoon.

Nyt sinun on ladattava koodi Arduino-levylle. Artikkelin lopussa esitetään vastaanottimen koodi sekä lähettimen koodi.

Esitämme kaavion joystickin tai lähettimen kokoamisesta.

Alla näet kaavion vastaanottimen kokoonpanosta.

Lopulta jäljellä on vain koota kotitekoisen radio-ohjatun auton elektroniikka ja mekaniikka. Kun kytket sen päälle, sinun on ensin kytkettävä virta ohjauspaneeliin ja sitten itse koneeseen.

Kuten luvattiin, alla annamme linkit kortin ohjelmointiin tarvittaviin koodeihin
Vastaanottajan koodi: (lataukset: 3609)
Lähettimen koodi: (lataukset: 2617)

Esittelemme myös lyhyet ohjeet Arduino Uno -levyjen laiteohjelmiston vilkkumisesta. Levy on liitettävä tietokoneeseen USB-kaapelilla. Seuraavaksi sinun on ladattava ilmainen ohjelma viralliselta verkkosivustolta (), asenna se, asenna levyohjaimet ja flash se käyttämällä tätä ohjelmaa.

Jos käytät kiinalaista lautaa, voit ladata sen ohjaimen tästä linkistä: