V této lekci přidáme k robotovi Baby modul Bluetooth. Směr a rychlost pohybu robota bude řízena pomocí aplikace nainstalované v telefonu.

Modul Bluetooth telefonu bude fungovat jako hlavní a modul Bluetooth robota bude fungovat jako podřízený. Párování master a slave stačí provést pouze jednou. V budoucnu, až bude robot napájen a Bluetooth modul telefonu bude zapnutý, se zařízení připojí nezávisle a vše, co musíme udělat, je připojit se k robotu v aplikaci v telefonu.

Další podrobnosti o ovládání robota a párování modulů Bluetooth jsou popsány níže v části „Ovládání“.

Video:

Potřebujeme:

    x 1 ks x 1 ks

K realizaci projektu potřebujeme nainstalovat knihovny:

    – pro práci s Trema Bluetooth modulem HC-05.
  • Knihovny SoftwareSerial jsou součástí základní sady Arduino IDE a nevyžadují instalaci.

Jak instalovat knihovny najdete na stránce Wiki – Instalace knihoven v Arduino IDE.

Schéma zapojení pro robota „Baby“:

Pojďme sestavit mechanické a elektrické části, jak je popsáno v projektech č. 1-8 v knize „Kit „Baby“. Dále nainstalujeme Bluetooth HC-05 na horní stěnu; modul je připojen na sběrnici UART (v příkladu je použita softwarová sběrnice UART).

Bluetooth Motorový štít
Bluetooth HC-05 RX kolík digitální výstup D10
TX pin digitální výstup D9
výstup K (klávesa) digitální výstup D13
kolík V (Vcc) jakýkoli 5V kolík na červeném bloku
pin G (GND) jakýkoli GND kolík na černém bloku

Použijeme montážní schéma z projektu č. 9 knihy „Kit „Baby“, ale místo IR přijímače Trema modul nainstalujeme do pouzdra Bluetooth modul Trema (připojený na piny D13, D9 a D10).

Programový kód pro “Baby”:

V tomto kódu je robot řízen ve třech hlavních fázích: příjem dat z telefonu; změna hodnot proměnných arrSpeed, arrRoute; napájení motorů a nastavení směru jejich otáčení. Kód také obsahuje další bloky: zapnutí/vypnutí LED diod; změna rychlosti kola; Vstup do režimu párování.

  • Příjem dat z dálkového ovladače:
    • Tento blok začíná příkazem if, jehož podmínka říká softSerial.available() . Tato podmínka bude pravdivá, pokud data z telefonu dorazí na sériový port, jinak bude podmínka nepravdivá;
    • Následuje další příkaz while, jehož podmínkou je opět softSerial.available() . Pokud je podmínka pravdivá, pak bude hodnota přijatá na sériovém portu zapsána do proměnné str; je provedeno zpoždění 5 milisekund, takže při nízké přenosové rychlosti má Arduino čas kompletně načíst hodnotu ze sériového portu do proměnné str;
    • Tento blok začíná příkazem if, jehož podmínka říká str == XX. V závislosti na hodnotě XX, kterou nabývá proměnná str (jedna z 9 pro hlavní funkce), se vynuluje flgTime – časovač pro spuštění provádění funkce a také se nastaví hodnota příznaku flg (od 1 do 9);
    • Následuje konstrukce přepínače. case , ve kterém příkaz switch porovná hodnotu příznaku flg s příkazem case a v závislosti na hodnotě příznaku flg spustí kód, který určuje, který motor bude napájen (proměnná arrSpeed ​​​​) a ve kterém směru otáčení (proměnná arrRoute);
    • Tento blok začíná příkazem if, jehož podmínka říká flgTime > (millis() – 50) . Tato podmínka bude pravdivá do 50 milisekund po začátku příjmu signálu z telefonu a nastaví hodnoty proměnných arrSpeed ​​a arrRoute na pinech Arduina. Pokud není během 50 milisekund přijat žádný signál, operátor else resetuje hodnotu rychlosti na 0 a robot se zastaví;
    • Tento blok obsahuje 2 části: příjem signálu z telefonu a změna příznaku flg_LED; zapínání/vypínání LED diod;
    • První část začíná příkazem if, jehož podmínka říká ( str == “SWS” || str == “SwS”) . Podmínka bude pravdivá, pokud je hodnota proměnné str rovna SWS OR SwS , což způsobí, že příznak flg_LED bude nastaven na opačnou hodnotu, než je jeho aktuální hodnota;
    • Druhá část začíná příkazem if, jehož podmínka říká (flg_LED) . Podmínka bude pravdivá, pokud je příznak flg_LED true , což rozsvítí LED diody. Pokud je hodnota příznaku flg_LED nepravdivá, LED diody zhasnou.
    • Tato strana obsahuje 2 části: příjem signálu z telefonu a změna vlajky; změna hodnoty proměnné valSpeed ​​​​;
    • První část začíná příkazem if, jehož podmínka říká str == XX . V závislosti na hodnotě XX, kterou nabývá proměnná str (jedna z 11 pro další funkce), je nastavena hodnota příznaku flg (od 10 do 20);
    • Druhá část začíná příkazem if, jehož podmínka říká flg == XX . V závislosti na hodnotě XX, kterou má proměnná flg (jedna z 11 pro další funkce), je nastavena hodnota proměnné valSpeed ​​​​ (od 5 do 255);
    • Tento blok je v kódu void setup() a začíná příkazem if, jehož podmínka říká hc05.begin(softSerial) . Tato podmínka platí, pokud proběhla úspěšná inicializace s modulem Bluetooth přes sběrnici UART, o čemž se zobrazí zpráva monitor sériového portu;
    • Dále se resetuje časovač tmrWait a zkontroluje se podmínka !hc05.checkConnect() && millis() a minuta (60 sec) neuplyne, modul provede prázdnou smyčku.
    • Po cyklu while je příkaz if, jehož podmínka říká millis()
    • Pokud ani po minutě nedojde ke spárování dříve vytvořeného páru, následuje příkaz else, který zavolá funkci createSlave(“BT_CAR”, “1234”) objektu hc05, která přiřadí robotu Bluetooth modulu roli slave s názvem „BT_CAR“ a PIN kódem „1234“, přeruší dříve vytvořené spojení s masterem (pokud nějaké bylo) a vymaže seznam dříve vytvořených párů. Poté modul začne čekat na připojení mastera, který správně uvede název a PIN kód modulu. Na monitoru sériového portu se zobrazí zpráva o úspěšném nebo naopak neúspěšném provedení funkce.

    Příjem dat a práce s modulem Trema Bluetooth HC-05 probíhá prostřednictvím funkcí a metod objektu hc05 knihovny iarduino_Bluetooth_HC05, jejíž podrobný popis naleznete na stránce Wiki – Trema bluetooth modul HC-05.

    Spojení:

    Nastavení modulu Bluetooth vašeho telefonu:

    Přejděte do nastavení telefonu a vyberte Nastavení modulu Bluetooth;

    Přepněte modul Bluetooth z vypnutého na zapnutý.

    Při prvním spárování vás program požádá o zadání kódu.

    Tento kód je uveden v náčrtu při vytváření role otroka modulu Bluetooth „Baby“. V našem náčrtu je „1234„;

    Instalace aplikace do telefonu

    Vstupte do nabídky obchodu s aplikacemi Google Play Market ;

    Klikněte na vyhledávací lištu a zadejte Arduino Bluetooth RC auto a vyberte první řádek, který se objeví s názvem aplikace;

    V okně instalace aplikace klikněte na tlačítko Chcete-li nainstalovat ;

    V okně, které se zobrazí, klikněte na tlačítko Potvrďte instalaci ;

    Po úspěšné instalaci se na ploše vašeho telefonu objeví ikona programu;

    Pro spuštění aplikace stačí stisknout tlačítko jednou otevřený nebo vyberte ikonu aplikace na ploše;

    Nastavení aplikace Bluetooth RC Controller v telefonu:

    Po spuštění aplikace se dostanete na hlavní obrazovku.

    Červený blikající signál v levém horním rohu znamená, že aplikace a „Baby“ nejsou spárovány.

    Chcete-li začít pracovat s „Baby“, klikněte na ikonu ozubeného kola – zcela vpravo v horní řadě tlačítek;

    V zobrazeném okně se zobrazí zařízení, se kterým je telefon aktuálně spárován. Klikněte na řádek s názvem „BT_CAR“;

    Po všech výše uvedených krocích uvidíte, že signál v levém horním rohu se změnil z blikající červené na trvale zelenou – spárování proběhlo úspěšně.

    Ze strany „Baby“ uvidíte, že modrá LED s nápisem „Connected“ svítí nepřerušovaně.

    Rozhraní programu v telefonu:

    číslo Funkce
    1 Indikace párování robota
    2 Blok kláves „pohyb vpřed-vzad“
    3 Blok kláves „pohyb zprava doleva“
    4 Indikace stisknutí pohybových kláves
    5 Posuvník pro nastavení rychlosti robota
    6 Tlačítko zapnutí/vypnutí LED
    7 Tlačítko pro vstup do menu nastavení

    Řízení:

    Ihned po sestavení, načtení náčrtu a zapnutí „Baby“ nebude reagovat na příkazy z telefonu, protože moduly Bluetooth vyžadují spárování (párování). Spárování stačí provést jednou, bluetooth moduly si vytvořený pár zapamatují ve své energeticky nezávislé paměti a pokusí se k sobě při každém dalším napájení připojit.

    • Připojte napájení k robotu (pokud již není připojen). Po zapnutí modulu Bluetooth bude modul robota minutu (60 sekund) čekat na spárování s posledním úspěšně připojeným zařízením, a pokud ke spárování nedojde, modul si přiřadí roli slave s názvem „BT_CAR ” a PIN kód “1234” a bude čekat na mastery připojení
    • Pokud vypnete telefon, robot se okamžitě zastaví.

    Robot se ovládá z vašeho telefonu následovně:

    V tomto tutoriálu přidáme modul Bluetooth k robotu QUADRUPED a vytvoříme dálkové ovládání založené na podobném modulu Bluetooth. Směr a rychlost pohybu robota bude řízena pomocí joysticku a výška robota bude upravena potenciometrem. Pokud jsou detekovány překážky, robot odmítne jet rovně, ale bude souhlasit s tím, že půjde dozadu nebo se otočí.

    Modul Bluetooth dálkového ovládání bude fungovat jako hlavní a modul Bluetooth robota bude fungovat jako podřízený. Párování master a slave stačí provést pouze jednou. V budoucnu, až bude robot napájen a dálkový ovladač napájen, se zařízení připojí nezávisle.

    Rychlost a směr pohybu robota bude záviset na stupni a směru vychýlení joysticku. Robot bude schopen provádět příkazy, jako je pohyb vpřed nebo vzad, s kroucením nebo bez kroucení, otáčení na místě doleva nebo doprava, nastavení všech kloubů do centrální polohy, uvolnění všech kloubů, zvedání a spouštění těla. Pokud dojde k přerušení spojení mezi moduly bluetooth dálkového ovládání a robotem, robot se přestane pohybovat a všechna jeho serva zeslábnou.

    Další podrobnosti o ovládání robota a párování modulů Bluetooth jsou popsány níže v části „Ovládání“.

    Video:

    Potřebujeme:

      Robot “QUADRUPED”: x1 ks. x 1 ks x 1 ks x 1 ks x 1 ks
    • Baterie:
      • nebo 2 Li-ion baterie velikosti 18650.
      • nebo 5 Ni-MH baterií velikosti AA.
        Dálkové ovládání: x 1 ks. x 1 ks x 1 ks x 1 ks x 1 ks
      • Baterie:
        • nebo 1 Ni-MH baterie o velikosti koruny a adaptér pro DC-jack.
        • nebo jiný zdroj energie pro Arduino Uno.

        K realizaci projektu potřebujeme nainstalovat knihovny:

          – pro práci s Trema Bluetooth modulem HC-05.
        • iarduino_HC_SR04 – pro práci s ultrazvukovým snímačem vzdálenosti HC-SR04+.
        • Knihovny SoftwareSerial a Servo jsou součástí základní sady Arduino IDE a nevyžadují instalaci.

        Jak instalovat knihovny najdete na stránce Wiki – Instalace knihoven v Arduino IDE.

        Schéma zapojení dálkového ovládání:

        • Nainstalujte Trema-Set Shield na Arduino Uno.
        • Nainstalujte potenciometr Trema-module na 2. montážní podložku Trema-Set Shield.
        • Nainstalujte joystick Trema modulu na 4. přistávací plochu Trema-Set Shield.
        • Nainstalujte Trema Bluetooth modul HC-05 na 6. přistávací plochu Trema-Set Shield.
        • V případě potřeby lze všechny moduly nainstalované na Trema-Set Shield zajistit pomocí nylonových šroubů a stojanů.

        Díky použití Trema-Set Shield jsou všechny moduly instalovány bezdrátově a přítomnost pouze dvou bloků s různým počtem pinů na každém místě zaručuje správnou instalaci modulů.

        Schéma zapojení pro robot QUADRUPED:

        Sestavte mechaniku, připojte Tream-Power Shield, serva, senzor vzdálenosti a zkalibrujte robota, jak je popsáno na stránce Sestavení QUADRUPED. Elektronika + kalibrace. Dále nainstalujte Bluetooth HC-05 a tlačítko na boční panely, první modul se připojí ke sběrnici UART (v příkladu je použita hardwarová sběrnice UART) a druhý k libovolnému pinu Arduino Uno (v například je použit pin D12).

        Snímač vzdálenosti Trema Power Shield
        Senzor
        HC-SR04+
        Echo výstup kolík 2 na bílém bloku
        Trig výstup kolík 3 na bílém bloku
        Vcc kolík jakýkoli kolík na červeném bloku
        Gnd výstup jakýkoli kolík na černém bloku

        Můžete změnit kolíky 2 a 3 pro připojení snímače HC-SR04+ k jakémukoli jinému tak, že je specifikujete v náčrtu při deklaraci objektu objSensor.

        Servopohony Trema Power Shield
        1 končetina Vodorovný spoj (č. 0) kolík 4 na bílém bloku
        Vertikální spoj (č. 1) kolík 5 na bílém bloku
        2 končetina Vodorovný spoj (č. 2) kolík 6 na bílém bloku
        Vertikální spoj (č. 3) kolík 7 na bílém bloku
        3 končetina Vodorovný spoj (č. 4) kolík 8 na bílém bloku
        Vertikální spoj (č. 5) kolík 9 na bílém bloku
        4 končetina Vodorovný spoj (č. 6) kolík 10 na bílém bloku
        Vertikální spoj (č. 7) kolík 11 na bílém bloku

        Můžete změnit piny 4-11 pro připojení serv k jakémukoli jinému tak, že je specifikujete ve skice při deklaraci pole objektů pinServo[8]. Třívodičové servo smyčky se instalují následovně:

        • Oranžový vodič se připojuje ke svorce na bílém bloku.
        • Červený vodič je připojen ke svorce na červeném bloku.
        • Hnědý vodič se připojuje ke svorce na černém bloku.

        Pin A0 pro připojení Bluetooth můžete změnit na jakýkoli jiný pin tak, že jej uvedete ve skice při deklaraci objektu objHC05.

        Piny RX a TX modulu jsou propojeny vodiči s piny TX a RX bloku označeného Serial. Třívodičový kabel připojený ke kolíkům K, V, G se instaluje následovně:

        • Pin K (klíč) je připojen ke kolíku na bílém bloku.
        • Pin V (Vcc) je připojen ke kolíku na červeném bloku.
        • Pin G (GND) je připojen ke kolíku na černém bloku.

        Můžete změnit kolík D12 pro připojení tlačítka k libovolnému jinému tak, že jej určíte ve skice při definování konstanty pinK.

        Třívodičový kabel připojený ke kolíkům S, V, G se instaluje následovně:

        • Pin S (Signal) je připojen ke kolíku na bílém bloku.
        • Pin V (Vcc) je připojen ke kolíku na červeném bloku.
        • Pin G (GND) je připojen ke kolíku na černém bloku.

        Níže uvedené schéma je stejné jako schéma z montážního návodu QUADRUPED, ale byly do něj přidány dva moduly: bluetooth (připojený na piny A0, TX a RX) a tlačítko (napojeno na pin D12).

        Sestavení robota pro ovládání bluetooth

        Prvky schématu: „E0“. „E7“ – serva, „E8“ – snímač vzdálenosti, „E9“ – Trema bluetooth modul, „E10“ tlačítko Trema.

        Programový kód pro dálkové ovládání:

        V tomto kódu jsou hodnoty joysticku a potenciometru neustále ukládány do pole arrData, načež jsou odesílány přes rádio přes bluetooth modul. Skica kalibruje joystick při spuštění, čte hodnoty pro osy X a Y, které jsou před vypnutím napájení považovány za centrální. Hodnoty os X a Y jsou odesílány v rámci hodnot -100 až +100. Hodnoty potenciometru jsou odesílány mezi 0 a +100. Stav tlačítka je odeslán jako číslo 0 nebo 1.

        Pokud zapnete napájení se stisknutým tlačítkem joysticku, v kódu nastavení se provede kód pro vyvolání funkce createMaster, která nastaví modul bluetooth do role master, zahájí hledání podřízeného s názvem „QUADRUPED“ a PIN kód „1212“, a pokud je takové podřízené zařízení k dispozici, dojde ke spárování a připojení s tímto podřízeným bluetooth modulem (toto je název a PIN, který bude přiřazen bluetooth modulu na robotu). Pokud nestisknete joystick při zapnutí napájení, funkce createMaster bude přeskočena a modul bluetooth se pokusí vytvořit spojení na základě svého posledního nastavení. Spárování s modulem Bluetooth robota tedy stačí provést pouze jednou.

        Funkce begin(), createMaster() a checkConnect() objektu objHC05 vrací true nebo false a jsou volány jako podmínka operátoru while(), to znamená, že se provádí inicializace, přiřazení rolí a kontrola připojení modulů bluetooth. dokud se nedosáhne pozitivního výsledku. Tyto funkce lze volat pouze jednou, pokud jste si jisti, že druhý bluetooth modul (robotní modul) je definitivně zapnutý, je mu přidělena role slave, je připraven k připojení a je v dosahu komunikace. V opačném případě funkce vrátí hodnotu false a kód bude pokračovat v provádění, aniž by na chybu reagoval.

        Funkce send() objektu objHC05 je schopna posílat pole a proměnné libovolného typu a také vrací true nebo false a hlásí výsledek dat přijatých druhým modulem bluetooth. V našem případě není potřeba tuto funkci volat v podmínce operátoru while(), protože tato funkce je již neustále volána v kódu loop().

        Podrobný popis všech funkcí objektu objHC05 knihovny iarduino_Bluetooth_HC05 naleznete na stránce Wiki – Trema bluetooth modul HC-05.

        Programový kód pro robota QUADRUPED:

        Vzhledem k tomu, že modul Trema Bluetooth HC-05 je připojen k hardwarové sběrnici UART, před načtením tohoto náčrtu je třeba odpojit vodič buď od TX pinu modulu nebo od RX pinu na desce Tream-Power Shield a po načtení skicu, připojte ji zpět.

        Hodnoty pole cenAngle musí být změněny (kalibrovány) na skutečné úhly serva ve stupních, při kterých jsou všechny klouby robota ve střední poloze. To se provádí pomocí kalibračního náčrtu, jak je popsáno na stránce QUADRUPED Build. Elektronika + kalibrace.

        V tomto kódu je robot ovládán pomocí funkcí: