Ovládání Arduina z Androidu přes USB. Šest jednoduchých způsobů, jak připojit Arduino k Androidu. Vytvoření aplikace pro Android

💖 Líbí se vám? Sdílejte odkaz se svými přáteli

Google již poměrně dlouho umožňuje připojit zařízení Android přes USB k různým mikrokontrolérům otevřením API. Nyní se může radovat každý, kdo se podílí na tvorbě různých projektů na Arduinu, protože nyní bude mnohem jednodušší ladit systém Android Arduino a v zásadě regulovat jejich interakci.

Již jsme začali čtenářům představovat možnosti kombinace mikrokontroléru a smartphonu – viz.

Ale ještě předtím různé moduly umožňovaly Android a Arduino snadnou interakci. Pojďme zjistit, jak můžete implementovat projekt, který bude řízen ze smartphonu, a co je k tomu zapotřebí.

Kde mohu využít spojení mezi Androidem a Arduinem?

V první řadě je potřeba se zamyslet nad tím, jak využít možnost přenosu signálu z Androidu do Arduina. Každý rozumný člověk by totiž měl před studiem jakýchkoliv materiálů pochopit, kam ho to nakonec zavede. I když se bavíme o koníčku. Možnost ovládat zařízení ze smartphonu už dávno přestala být vnímána jako něco mimořádného. Možnost přenosu dat do chytrého telefonu má v dnešní době většina televizorů, ledniček a dokonce i vysavačů zakoupených střední třídou.

Toto řešení umožňuje výrazně zjednodušit život běžnému člověku, protože ke stejnému televizoru není potřeba neustále dokupovat baterie do dálkového ovladače a shánět jej, pokud se ztratí. Blížíme se k oblíbeným chytrým domácnostem, ale někteří lidé si takové zařízení raději nekupují, ale navrhují si je sami.

V tomto případě by měl být balíček Android Arduino zvažován ve dvou variantách:

  1. Dálkové ovládání libovolného zařízení pomocí smartphonu. Nazývá se také spojení smartphone-MK. Všechno stejné vybavení, například posuvné žaluzie nebo osvětlení v místnosti, které se vypne jedním kliknutím. Pokud chcete udělat to druhé, pak není třeba měnit elektroinstalaci nebo kupovat speciální chytré lampy, které mohou po měsíci shořet. Stačí si pořídit malý mikrokontrolér Arduino, bezdrátový internetový nebo Bluetooth komunikační modul a elektrickou pásku. Poté bude stačit připájet nejjednodušší obvod, který se sepne, pokud je do MK odeslán signál.
    Tento signál bude odeslán z vašeho telefonu, zavřete kontakty a kontrolka se rozsvítí. Abyste se vyhnuli problémům a zvýšili bezpečnost vašeho domova, můžete napsat skript, který dokáže automaticky otevřít okruh, pokud je ovládací zařízení odstraněno z dohledu. Běžné spínače budou stále fungovat, ale pouze když je obvod uzavřen.
  2. Přenos dat pro informace nebo komunikaci MK-Smartphone. Zde již neovládáte některé vybavení, ale spíše naopak různé vybavení umožňuje přijímat určitá data na váš smartphone. První, co vás napadne a nejjednodušší aplikace, je pohybový senzor. Tento modul je k dispozici ve standardních senzorech pro mikrokontroléry Arduino, jeho zakoupení nebude problém, stejně jako instalace do průchodu. Pak už jen zbývá napsat kód, který už na mnoha anglicky psaných fórech existuje a který pošle SMS nebo zprávu na sociální sítě, a také speciální utilitu, pokud někdo překročí infračervený paprsek.
    Můžete si vytvořit složitější a automatizované systémy, které budou přenášet nejen mediální informace o vašem bytě, ale také hlásit, zda ve vašem domácím skleníku dozrává zelenina nebo ovoce. Vše závisí pouze na fantazii samotného inženýra, ale základ technologie je stále stejný – přenos dat z jednoho zařízení do druhého.

Vybrali jste si tedy vhodný projekt a pustili se do jeho realizace. Moduly a mikrokontroléry jsou již objednány a zatímco jsou na cestě, můžete začít s vývojem softwaru. Koneckonců, nahý Android neinteraguje s Arduinem pomocí magie.

Aplikace pro Android pro interakci s Arduinem

Utilitu nebudeme vyvíjet od začátku, protože to není základ pro programování v Javě. Nejjednodušší je použít hotové enginy a prostředí s uživatelským rozhraním, kde stačí doslova přidat 1-2 řádky kódu pro tlačítko, aby fungovalo. Takový přístup přirozeně výrazně omezuje funkčnost výsledného produktu a nevyhnutelně zhoršuje kreativitu, ale bude užitečný pro ty, kteří chtějí rychle realizovat jednoduchý projekt bez zbytečných problémů.

Nejprve se podívejme na tři základní soubory, se kterými se při navrhování programu setkáte:

  1. MainActivity.java je celý kód aplikace ve stejnojmenném jazyce, zde jsou uloženy všechny funkce a metody, které napíšete.
  2. Activity_main.xml – rozložení, jak snadno uhodnete z přípony souboru. Zde je uloženo umístění tlačítek, textu a dalších interaktivních komponent, které se následně oživí v kódu.
  3. AndroidManifest.xml – Tento soubor se také týká rozvržení, ale v trochu jiné oblasti. Definuje základní parametry pro spuštění aplikace a oprávnění, která bude potřebovat. V našem případě se jedná o nutnost zapnout Bluetooth, protože přes něj budeme komunikovat s MK. Pokud vyrábíte senzor, který musí odesílat informace na velkou vzdálenost, musíte zapnout a zkontrolovat provoz bezdrátového nebo mobilního internetu.

Základy příjmu a přenosu dat

Abyste pochopili, jak bude váš budoucí projekt obecně fungovat, stálo by za to studovat základní fyziku elektromagnetických polí. Abychom však nebyli přetíženi zbytečnými informacemi, stačí pochopit, že přenos dat dnes probíhá třemi hlavními způsoby:

  1. Přes USB kabel, který se nehodí všude, ale dobrá možnost nastavení projektu.
  2. Prostřednictvím Bluetooth a souvisejících protokolů je například v poslední době populární používat NTFS k ovládání chytrých zařízení. Ale protože mluvíme o projektu na Arduino MK, zaměříme se na bluetooth.
  3. Prostřednictvím bezdrátového internetu. Není zde nic nového, ve skutečnosti váš mobil nebo mikrokontrolér funguje jako server, který přijímá a zpracovává přijatá data a poté provádí výpočty nebo akce a odesílá odpověď.

Toto jsou hlavní způsoby přenosu a příjmu informací, stačí si vybrat ten správný. Pro projekty, které nebudou používány na velké vzdálenosti, je nejlepší volbou z hlediska objemu kódu a snadného nastavení Bluetooth.

Jaké komponenty mohou být vyžadovány pro interakci?

Již výše jsme zmínili, že pro projekt na Arduinu, který zahrnuje použití jedné z metod přenosu dat na dálku, je nutné dokoupit moduly. Opět platí, že Bluetooth je nejlepší volbou. Tento modul umožňuje přijímat a odesílat signály o určité frekvenci, které zachycuje většina smartphonů, a proto by neměly nastat žádné problémy. Můžete si vybrat jedno ze zařízení uvedených v hlavní řadě Arduino nebo čínské analogy, které budou mnohem levnější.

Jedním z modulů, které si můžete vzít, je Bluetooth Bee, který lze zakoupit v mnoha obchodech od společnosti DFRobot.

Vše závisí na konkrétním systému a v něm požadované „šířce pásma“. Koneckonců, pokud se jedná o video monitorovací kameru, musí být datový tok přenášen nepřetržitě a ve velkém množství. A pro jednoduchý pohybový senzor stačí nejlevnější Wi-Fi modul. Stejné je to s automatizovanými zařízeními pro chytrou domácnost.

Při výběru jednotlivých komponent zvažte své potřeby a to, co se chystáte do projektu implementovat, a nepřeplácejte funkce, které nepotřebujete.

Nastavení připojení

Nyní jste tedy vytvořili a již nainstalovali aplikaci nebo její hotový analog do smartphonu pro ovládání vašeho mikrokontroléru pomocí Arduina, pak musíte:

  1. Zapněte v systému samotný modul Bluetooth a napájejte jej ze sítě nebo z baterie.
  2. Spusťte aplikaci v telefonu a najděte požadované zařízení.
  3. Připojte se k modulu Bluetooth pomocí výchozího hesla nebo hesla, které jste nastavili při flashování Arduina.
  4. Zadejte první příkazy a uvidíte, jak na ně systém zareaguje.

Zde stojí za to říci, že na Google Play je mnoho aplikací pro Arduino, v příštím článku si ukážeme 7 z nich.

Nejjednodušší příklad

Abyste přibližně pochopili, jak by měl hotový projekt fungovat, uvedeme příklad s použitím stejného doplňku k vaší lampě.

  1. K systému se připojíte přes svůj chytrý telefon.
  2. Stisknete jedno tlačítko a okruh se otevře nebo zavře.
  3. Světlo se objeví nebo zmizí.
  4. Stiskněte znovu tlačítko na smartphonu a dojde k opačnému efektu.

Přirozeně, abyste to udělali, musíte nejprve uzavřít okruh rozsvícením žárovky pomocí nástěnného vypínače. Ale to je pouze podmíněný příklad toho, co lze pomocí této technologie realizovat.

V nadcházejících lekcích se budeme podrobněji zabývat interakcí smartphonů a mikrokontrolérů a uděláme s vámi několik užitečných lekcí.

V tomto tutoriálu se naučíte, jak používat modul bluetooth a aplikaci MIT k vytvoření bezdrátového sériového spojení mezi telefonem s Androidem a deskou arduino. Tento článek popisuje, jak se připojit, napsat arduino skicu, která dokáže přijímat a odesílat základní příkazy, a jak si sami vytvořit aplikaci. Předpokládá se, že jste již obeznámeni s některými základy, máte za sebou několik arduino projektů a znáte arduino IDE. Pokud jste vyzkoušeli sériovou komunikaci s deskou arduino, mělo by být vše zcela jasné. Pokud máte nějaké problémy nebo dotazy, neváhejte se zeptat na diskusní stránce.

O ČEM JE TEN ČLÁNEK?

Akce

1. Použijte následující kód pro arduino

Klidně to změňte. Důležitým aspektem je zde přenosová rychlost – ujistěte se, že odpovídá přenosové rychlosti vašeho modulu – podívejte se do datasheetu nebo k tomu použijte AT příkazy.

  • const int ledPin = 2; // pin, ke kterému je LED připojena k bajtu serialA; void setup() ( // inicializujte sériovou komunikaci: Serial.begin(19200); //přenosová rychlost — ujistěte se, že odpovídá rychlosti modulu, který máte: // inicializujte ledPin jako výstup: pinMode(ledPin, OUTPUT) ; ) void loop() ( if (Serial.available() > 0) (serialA = Serial.read();Serial.println(serialA);) přepínač (serialA) ( případ 1: digitalWrite(ledPin, HIGH); break případ 2: digitalWrite(ledPin, LOW);

2. Pokud vše, co chcete, je získat aplikaci a zjistit, jak funguje

stáhněte si aplikaci a poté ji stáhněte do telefonu. Můžete si jej stáhnout na -> https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing. Váš telefon musí umožňovat instalaci aplikací ze zdrojů třetích stran.

3. Pokud chcete změnit aplikaci, přejděte na


  • http://appinventor.mit.edu/explore/learn.html, kde se dozvíte, jak připravit počítač a nainstalovat software pro vývojáře aplikací. Jakmile to budete mít v provozu, udělejte alespoň jednu nebo dvě ze svých hlavních lekcí. Níže je zde použitá aplikace. Můžete jej nahrát do App Inventor a poté jej stáhnout do telefonu nebo upravit. https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing

Věci, které budete potřebovat

  • deska arduino
  • bluetooth sériový modul (v tomto článku byl použit modul btm222 s vestavěným regulátorem)
  • Jedinou problematickou částí je zde modul bluetooth. Na celém internetu jsou různé moduly, takže se ujistěte, že jste zkontrolovali výstup v datovém listu, který máte, protože se může lišit. Všimněte si také, že existují dvě obecné třídy modulů bluetooth: Třída 1 má dosah přibližně 100 metrů. Třída 2 má dosah asi 10 metrů. Pokud vás zajímá, že jsou plně kompatibilní a můžete získat pouze 100 m, pokud obě zařízení podporují tento dosah
  • Zde použitý sériový modul bluetooth má následující piny zleva doprava (zem, RX, TX, nepřipojeno, VCC). Je zřejmé, že zem a VCC jdou na zem a + 5V pin na arduinu. Vzhledem k tomu, že budeme přijímat data přes modul a poté je posílat na desku arduino, musíme použít pouze TX pin na modulu. Veďte drát z tohoto kolíku k výstupu RX na desce arduino. LED se ovládá pomocí PIN 2 na Arduinu.
  • Světelná dioda
  • rezistor (100 ohmů)
  • dráty
  • prkénko na chleba

  • Tento tutoriál pro vás může být trochu obtížný, pokud jste začátečník. Pokud jste nikdy nezkoušeli sériovou komunikaci s deskou arduino nebo jste alespoň neudělali většinu náčrtů příkladů arduina, postupujte podle některých jednodušších návodů a vraťte se k nim později.

Tento článek podrobně popíše tvorbu malé aplikace pro mobilní operační systém Android a skicu pro Arduino. Arduino Uno bude mít Wireless Shield s modulem Bluetooth. Aplikace se připojí k modulu Bluetooth a odešle určitý příkaz. Skica zase použije tento příkaz k rozsvícení nebo zhasnutí jedné z LED připojených k Arduinu.

Budeme potřebovat

Vytvoření aplikace pro Android

Prázdný

Vývoj pro OS Android probíhá ve vývojovém prostředí ADT, Android Development Tools. Který lze stáhnout z vývojářského portálu Google. Po stažení a instalaci ADT jej klidně spusťte. Na vývoj aplikace je však ještě příliš brzy. Musíte si také stáhnout Android SDK požadované verze. Chcete-li to provést, musíte otevřít Správce Android SDK „Okno → Správce Android SDK“. V seznamu musíme vybrat SDK, který potřebujeme, v našem případě Android 2.3.3 (API 10). Pokud nemáte telefon, vyberte 2.3.3 nebo vyšší; a pokud existuje, verze, která odpovídá verzi operačního systému telefonu. Poté kliknutím na tlačítko „Instalovat balíčky“ spusťte proces instalace.

Po dokončení stahování a instalace začneme s tvorbou aplikace. Vyberte „Soubor → Nový → Projekt aplikace Android“. Vyplňte obsah okna, jak je znázorněno na obrázku.

    Název aplikace – název aplikace, která se zobrazí v Obchodě Google Play. Aplikaci se ale nechystáme zveřejnit, takže jméno pro nás není nijak zvlášť důležité.

    Název projektu – název projektu v ADT.

    Package Name - identifikátor aplikace. Měl by být složen následovně: název vašeho webu pozpátku plus nějaký název aplikace.

V rozevíracích seznamech „Minimální požadovaná sada SDK“, „Cílová sada SDK“, „Kompilovat s“ vyberte verzi, kterou jsme stáhli dříve. Novější verze sady SDK podporují grafické motivy aplikací, ale starší verze ne. Proto v poli „Téma“ vyberte „Žádný“. Klikněte na „Další“.

Zrušte zaškrtnutí políčka „Vytvořit vlastní ikonu spouštěče“: v tomto článku se nezaměříme na vytvoření ikony aplikace. Klikněte na „Další“.

V okně, které se objeví, můžete vybrat zobrazení „Aktivita“: zobrazení toho, co bude na obrazovce po spuštění aplikace. Vybereme „Prázdná aktivita“, což znamená, že chceme začít vše od začátku. Klikněte na „Další“.

V naší aplikaci bude pouze jedna Aktivita, takže v okně, které se objeví, nemusíte nic měnit. Stačí tedy kliknout na „Dokončit“.

To je vše, naše aplikace je vytvořena.

Nastavení emulátoru

Aplikace pro Android se ladí na skutečném zařízení, nebo pokud žádné není, pak na emulátoru. Pojďme nakonfigurovat naše.

Chcete-li to provést, spusťte „Okno → Správce virtuálních zařízení Android“. V zobrazeném okně klikněte na „Nový“. Vyplňte pole zobrazeného formuláře. Záleží na nich, kolik a jaké zdroje emulátor „telefonu“ poskytne. Vyberte přiměřené hodnoty a klikněte na OK.

V okně Správce virtuálních zařízení Android klikněte na tlačítko „Start“. Tím se spustí emulátor. Spuštění trvá několik minut. Buďte tedy trpěliví.

V důsledku toho uvidíte okno emulátoru podobné tomuto:

Plnicí činnost

Aktivita je to, co se zobrazí na obrazovce telefonu po spuštění aplikace. Na něm budeme mít dvě tlačítka „Rozsvítit červenou LED“ a „Rozsvítit modrou LED“. Pojďme je přidat. Na panelu „Package Explorer“ otevřete soubor res/layout/activity_main.xml. Jeho vzhled bude přibližně stejný jako na snímku obrazovky.

Přetáhněte 2 „ToggleButtons“ na formulář na obrazovce. Přepněte na kartu „activity_main.xml“ a podívejte se na následující kód:

activity_main_aiutogen.xml xmlns:tools = android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom= android:paddingLeft= android:paddingRight = "@dimen/activity_horizontal_margin" android:paddingTop = "@dimen/activity_vertical_margin" tools:context = "MainActivity" > android:id="@+id/toggleButton1" android:layout_alignParentLeft"pravda" android:layout_alignParentTop="true" android:text="ToggleButton" /> android:id="@+id/toggleButton2" android:layout_width="zabalit_obsah" android:layout_height="zabalit_obsah" android:layout_above="@+id/textView1" android:layout_alignParentRight"pravda" android:text="ToggleButton" /> >

Nejde o nic jiného než o naši Aktivitu, která se nezobrazuje jako grafika, ale je popsána ve formátu XML.

Udělejme si názvy komponent jasnější. Změňme pole android:id následovně.

android:id="@+id/toggleRedLed" ... android:id="@+id/toggleGreenLed" ...

Přidáme k nim také podpisy, změníme jejich barvu a velikost textu. Výsledný značkovací kód bude vypadat takto:

activity_main.xml "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" android:layout_width="fill_parent" android:paddingBottom= "@dimen/activity_vertical_margin" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight = "@dimen/activity_horizontal_margin" android:paddingTop = "@dimen/activity_vertical_margin" tools:context = "MainActivity" android:weightSum="2" android:orientation="horizontální" > android:id="@+id/toggleRedLed" android:layout_width="zabalit_obsah" android:layout_height="fill_parent" android:layout_weight="1" android:background="#FF0000" android:textOff="OFF" android:textOn="ON" android:textSize="30dp" /> android:id="@+id/toggleGreenLed" android:layout_width="zabalit_obsah" android:layout_height="fill_parent" android:layout_weight="1" android:background="#00FF00" android:textOff="OFF" android:textSize="30dp" android:textOn="ON" /> >

Stejné změny lze provést v grafickém režimu pomocí záložky „Outline/Properties“.

Zkušební provoz

Nově vytvořenou aplikaci můžeme spustit na emulátoru. Přejděte do nastavení spuštění „Spustit“ → Spustit konfigurace, na levé straně klikněte na „Aplikace pro Android“. Objeví se nová konfigurace „New_configuration“. Na pravé straně okna vyberte záložku „Cíl“ a vyberte možnost „Spustit na všech kompatibilních zařízeních/AVD“.

Klikněte na „Použít“ a poté na „Spustit“. Aplikace se spustí v emulátoru.

Můžete stisknout tlačítka. Ale nic se nestane, protože jsme ještě nenapsali klikací ovladače.

Chcete-li aplikaci spustit na skutečném zařízení, musíte v jejím nastavení povolit možnost „Ladění USB“ a připojit ji k počítači.

Na reálném zařízení vypadá aplikace úplně stejně.

Psaní kódu pro Android

Úprava manifestu

Každá aplikace pro Android musí systému sdělit, jaká práva potřebuje udělit. Práva jsou uvedena v tzv. manifestu souboru AndroidManifest.xml. V něm musíme uvést skutečnost, že chceme v naší aplikaci používat Bluetooth. Chcete-li to provést, přidejte pouze několik řádků:

AndroidManifest.xml "http://schemas.android.com/apk/res/android" package="ru.amperka.arduinobtled" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="10" android:targetSdkVersion="10" /> "android.permission.BLUETOOTH"/> "android.permission.BLUETOOTH_ADMIN"/>
android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/název_aplikace" android:theme="@style/AppTheme" > android:name = "ru.amperka.arduinobtled.MainActivity" android:label="@string/název_aplikace" > > "android.intent.category.LAUNCHER" /> > > > >

Přidání hlavního kódu

Je čas vdechnout život naší aplikaci. Otevřete soubor MainActivity.java (src → ru.amperka.arduinobtled). Zpočátku obsahuje následující kód:

MainActivityAutogen.java balíček ru.amperka.arduinobled ; import android.os.Bundle ; importovat android.app.Activity ; import android.view.Menu ; veřejná třída MainActivity rozšiřuje aktivitu ( @Override protected void onCreate(Bundle SavedInstanceState) ( super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; ) @Override public boolean onCreateOptionsMenu( Jídelní lístek menu) ( getMenuInflater() .inflate (R.menu .main , menu) ; return true ; ) )

Přidejme kód podle toho, co potřebujeme:

    Zapneme Bluetooth, pokud je vypnutý.

    Zpracujeme kliknutí na tlačítka

    Zašleme informaci o tom, které tlačítko bylo stisknuto.

Do Arduina přeneseme jeden bajt s dvouciferným číslem. První číslice čísla je číslo pinu, ke kterému je připojena ta či ona LED, druhá je stav LED: 1 - svítí, 0 - nesvítí.

Číslo příkazu se vypočítá velmi jednoduše: Pokud se stiskne červené tlačítko, vezme se číslo 60 (pro červenou LED jsme zvolili 6. pin Arduina) a k němu se přidá 1 nebo 0, podle toho, zda má LED teď buď zapnutý nebo ne. U zeleného tlačítka je vše podobné, jen místo 60 se bere 70 (protože zelená LED je připojena na pin 7). Výsledkem je, že v našem případě jsou možné 4 týmy: 60, 61, 70, 71.

Pojďme napsat kód, který implementuje vše, co bylo řečeno.

MainActivity.java balíček ru.amperka.arduinobled ; import java.io.IOException ; import java.io.OutputStream ; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Metoda ; importovat android.app.Activity ; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; importovat android.content.Intent ; import android.os.Bundle ; import android.util.Log ; import android.view.Menu ; import android.view.View ; import android.view.View.OnClickListener; import android.widget.Toast ; importovat android.widget.ToggleButton ; public class MainActivity rozšiřuje Activity implements Pohled.OnClickListener( //Instance našich tříd tlačítek ToggleButton červené Tlačítko; ToggleButton zelené Tlačítko; //Zásuvka, pomocí které budeme posílat data do Arduina BluetoothSocket clientSocket; //Tato funkce se spustí automaticky při spuštění aplikace@Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate(savedInstanceState) ; setContentView(R.layout .activity_main ) ; //"Propojit" pohled na tlačítko v okně aplikace s implementací redButton = (ToggleButton) findViewById(R.id .toggleRedLed ) ; greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ) ; //Přidejte k tlačítku „posluchač kliknutí“. redButton.setOnClickListener(this); greenButton.setOnClickListener(this); //Zapněte bluetooth. Pokud je již povoleno, nic se nestane Tětiva enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE ; startActivityForResult(new Intent(enableBT) , 0 ) ; //Chceme použít výchozí bluetooth adaptér BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); //Pokouším se provést tyto akce Snaž se ( //Zařízení s touto adresou je naše Bluetooth Bee //Adresa je určena následovně: navázat spojení //mezi PC a modulem (pin: 1234) a pak se podívejte do nastavení //adresa připojovacího modulu. S největší pravděpodobností to bude podobné. Zařízení BluetoothDevice = bluetooth.getRemoteDevice("00:13:02:01:00:09" ) ; //Zahájení spojení se zařízením Metoda m = device.getClass().getMethod("createRfcommSocket", new Class(int.class)); clientSocket = (BluetoothSocket) m.invoke(zařízení, 1); clientSocket.connect(); //Pokud se vyskytnou nějaké chyby, vypíše zprávu do protokolu) chytit ( IOException SecurityException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( NoSuchMethodException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( IllegalArgumentException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( IllegalAccessException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( InvocationTargetException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) //Zobrazí zprávu o úspěšném připojení Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show(); ) @Override public boolean onCreateOptionsMenu( Jídelní lístek Jídelní lístek) ( // Nafoukněte nabídku; to přidá položky na panel akcí, pokud je přítomen. getMenuInflater() .inflate (R.menu .main , menu) ; vrátit true ; ) //To je přesně ta funkce, která bude volána@Override public void onClick( Pohled v) ( //Pokouším se odeslat data Snaž se ( //Získání výstupního proudu pro přenos dat OutputStream outStream = clientSocket.getOutputStream(); int hodnota = 0 ; //Podle toho, které tlačítko bylo stisknuto, //změna dat pro odeslání if (v == redButton) ( value = (redButton.isChecked () ? 1 : 0 ) + 60 ; ) else if (v == greenButton) ( value = (greenButton.isChecked () ? 1 : 0 ) + 70 ; ) //Zápis dat do výstupního proudu outStream.write(hodnota); ) chytit ( IOException e) ( //Pokud se vyskytnou chyby, vypíše je do protokolu Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7 , OUTPUT) ; ) void loop() ( //Pokud data dorazila if (Serial.available() > 0) ( //Čtení příchozího bajtu byte incomingByte = Serial.read(); //Získejte číslo PIN tak, že vydělíte hodnotu přijatého bajtu 10 //a akce, kterou potřebujeme získáním zbytku dělení 2: //(1 - rozsvítí se, 0 - zhasne) digitalWrite(incomingByte / 10 , incomingByte % 2 ) ; ))

Vlastnosti vyplňování skic

Pro komunikaci Bluetooth-Bee s ovladačem jsou použity stejné piny (0 a 1) jako pro firmware. Proto při programování ovladače musí být přepínač „SERIAL SELECT“ na „Wireless Shield“ nastaven do polohy „USB“ a po bliknutí musí být vrácen do polohy „MICRO“.

Výsledek

Závěr

V tomto článku jsme se naučili vytvářet aplikace pro operační systém Android a přenášet data přes Bluetooth. Nyní, když stisknete tlačítko na obrazovce telefonu založeného na operačním systému Android, změní se stav LED na desce.

Můžete rozvíjet svůj nápad a vytvořit uživatelsky přívětivější rozhraní na Androidu, ovládat s ním mnohem složitější zařízení, publikovat skvělé aplikace na Android Marketu a mnohem, mnohem více zajímavých věcí!

Podívali jsme se na instalaci a konfiguraci softwaru, který jsme potřebovali pro vývoj pro ADK a Android. Nyní, když máme vše připraveno, můžeme vytvořit náš první projekt. A podle tradice to bude projekt s LED.

Projekt bude velmi jednoduchý – na obrazovce Android zařízení se zobrazí tlačítko, po jeho stisknutí se rozsvítí LED na ladicí desce a po uvolnění zhasne.

Program pro Arduino

Pojďme vytvořit nový projekt. Náš zdrojový kód bude velmi jednoduchý:

#include #include Připojení * připojení; void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data) ( if (event == ADB_CONNECTION_RECEIVE) // Pokud jsou přijata data ( digitalWrite(13, data); // Změňte stav LED v závislosti na přijaté proměnné ) ) void setup() ( pinMode(13,OUTPUT); // Použijte vestavěnou LED L desky Seeeduino ADK ADB::init(); connection = ADB::addConnection("tcp:4568", true, adbEventHandler ) void loop( ) ( ADB::poll(); )

Stručně řečeno - inicializujeme a vytvoříme ADB připojení a také definujeme funkci adbEventHandler(), která bude volána při každém příjmu dat ze zařízení Android. Při příjmu dat zapíšeme přijatý bajt pomocí funkce digitalWrite(), čímž se LED rozsvítí nebo zhasne.

Nyní sestavíme skicu a nahrajeme ji na naši tabuli.

Program pro android

Otevřete Eclipse IDE a vytvořte nový projekt: Nový -> Projekt... Otevře se okno, ve kterém najdeme složku Android a vybereme Android Application Project. Klikněte na tlačítko Další a vyplňte název projektu a některé parametry.

Dále klikněte na Další a vytvořte ikonu aplikace atd. Po kliknutí na tlačítko Dokončit je vaše aplikace připravena. Nyní v okně Průzkumník balíčků klikněte pravým tlačítkem na svůj projekt a vyberte vlastnosti projektu: Vlastnosti. Ujistěte se, že váš cílový název je nastaven na Google API a ne na Android.

Poté otevřeme soubor manifestu AndroidManifest.xml a napíšeme do něj řádek, aby nám operační systém Android umožnil přístup k odpovídajícím službám:

Dále zkopírujeme potřebné knihovny, abychom zajistili fungování režimu MicroBridge: /src/org/microbridge/server a v této složce jsou 4 soubory. Můžete si je převzít z archivu na konci článku nebo z originální ukázky ze seed studio.

Nyní musíme do aktivity (okna aplikace) přidat grafické prvky pro interakci s uživatelem. Prozatím budeme mít pouze 2 prvky: text a ToggleButton (tlačítko se 2 stavy).
Uživatelské rozhraní lze vytvořit dvěma způsoby: pomocí grafického rozvržení (jednoduché přetažení a rozvržení) a pomocí souboru XML. Použijeme Graphical Layout. Chcete-li to provést, v okně prostředků aplikace klikněte na soubor /res/layout/activity_main.xml. A přetáhněte ToggleButton do okna, které se objeví:

Nyní otevřete náš hlavní soubor /src/com/example/arduino52/MainActivity.java, smažte vše v něm a zkopírujte následující řádky:

Balíček com.example.arduino52; import java.io.IOException; import org.microbridge.server.Server; import android.os.Bundle; importovat android.util.Log; importovat android.app.Activity; importovat android.widget.ToggleButton; importovat android.widget.CompoundButton; veřejná třída MainActivity rozšiřuje Activity implementuje CompoundButton.OnCheckedChangeListener ( Server server = null; @Override public void onCreate(Bundle SavedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ToggledButton(R.Bton) .id.toggleButton1 mButton.setOnCheckedChangeListener(this); // Vytvořte server TCP (založený na serveru MicroBridge LightWeight) try ( server = new Server(4568); // Stejný port musí být použit na serveru desky ADK); .start ( ) catch (IOException e) ( Log.e("arduino52", "Nelze spustit TCP server", e); System.exit(-1); ) ) @Override protected void onDestroy ()( super .onDestroy (server.stop( ) public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) ( byte data; if(isChecked) // Pokud je tlačítko stisknuto ( data = 1; ) else ( data = 0; ) try ( // Odeslat data server.send(new byte ((byte) data)); catch (IOException e) ( Log.e("arduino52", "Problém při odesílání zprávy TCP", e); )))

Aplikace pro Android je poněkud složitější, nebudu popisovat celou její strukturu, existují na to specializované stránky a knihy. Řeknu vám pouze hlavní body, které jsou pro náš projekt potřeba.
Nejprve je tedy inicializován náš server MicroBridge, který je nainstalován na portu 4568. Přesně stejný port by měl být ve vašem náčrtu Arduina.
Poté je deklarován handler onCheckedChanged() který se volá pokaždé, když se změní stav našeho ToggleButton. Dále, v závislosti na stavu tlačítka, uložíme 1 nebo 0 do proměnné data a poté dojde k pokusu o odeslání těchto dat do funkce server.send()

Dále připojíme naše zařízení Android k počítači, spustíme náš projekt Run, vybereme tam naše skutečné zařízení (ne to virtuální) a počkáme, až se program zkompiluje a nainstaluje do vašeho telefonu nebo tabletu.

A HTC Desire s firmwarem cyanogen 7.1.0 RC1 (Android 2.3.4). Pro jistotu připomínám, že vše, co bude popsáno níže, funguje pouze od Androidu 2.3.4 pro telefony a Androidu 3.1 pro tablety.

Zde stojí za zmínku, že tento USB Host Shield není úplně povedený, zvláště v kombinaci s Arduino Mega 2560. Prvním problémem bylo, že tato rozšiřující deska byla vyrobena pro Arduino UNO a od Mega se liší v polohách Kontakty SPI, takže jsem musel přidat propojky (viz. foto). Druhým problémem, ač celkem očekávaným, byla potřeba externího zdroje napájení pro provoz této rozšiřující karty. USB Host Shield 2.0 od Circuits@Home je považován za úspěšnější, ale je také dražší.

Deska s propojenými SPI kontakty

Nastavení softwaru Arduino

1. Pokud ještě není nainstalován, stáhněte si a nainstalujte software pro Arduino.
2. Stáhněte a rozbalte balíček ADK (obsahuje aplikaci DemoKit). Měly by se objevit složky aplikace, firmwaru a hardwaru.
3. Stáhněte si knihovnu CapSense
4. Zkopírujte firmware/arduino_libs/AndroidAccessory a firmware/arduino_libs/USB_Host_Shield do /knihovny/ .
5. Vytvořte adresář CapSense /libraries/ a zkopírujte do něj CapSense.cpp a CapSense.h z archivu CapSense.

Firmware ke stažení

Google laskavě poskytuje svůj náčrt DemoKit pro Arduino. Vše, co musíte udělat, je otevřít z firmware/demokit/demokit.pde, zkompilovat a nahrát na desku.

Test aplikace pro Android

Balíček DemoKit obsahuje také zdroje aplikace pro Android, které demonstrují schopnosti. Google nás zve, abychom sami vytvořili projekt pro Android a sestavili tuto aplikaci. Nejprve budeme muset nainstalovat API Level 10. Pak je vše jednoduché – vytvoříme projekt Android a určíme cestu ke složce aplikace, v Build Target zadáme Google API (Platform 2.3.3 , API úrovně 10). Aplikaci sestavíme a nainstalujeme do telefonu. Ti, kteří se nechtějí obtěžovat s montáží, si mohou stáhnout hotový APK.

Zahájení

Jednoduše připojíme náš telefon k USB Host Shield. Pokud jsme vše udělali správně, objeví se na obrazovce požadavek na spuštění aplikace DemoKit.

Samotná aplikace obsahuje dvě záložky – In (tlačítka, joystick a senzory) a Out (LED, relé a serva).

Rozhodl jsem se, že na ukázku stačí pár LED diod a tlačítko. Jak celý tento zázrak funguje se můžete podívat na videu.

Nějaký kód

V tomto příkladu se zprávy přenášené přes USB skládají ze tří bajtů:
1. byte definuje příkaz nebo skupinu zařízení, například LED - 0x2
2. byte označuje konkrétní zařízení, například zelená LED - 0x1
3. byte obsahuje hodnotu předávanou do zařízení, například maximální jas - 0xff

Arduino

... /* inicializace */ AndroidAccessory acc("Google, Inc.", "DemoKit", "DemoKit Arduino Board", "1.0", "http://www.android.com", "0000000012345678"); void setup() ( .... acc.powerOn(); ) void loop() ( byte msg; /* kontrola připojení */ if (acc.isConnected()) ( /* příjem zprávy ze zařízení Android */ int len = acc.read(msg, sizeof(msg), 1 if (len > 0) ( /* zpráva pro LED */ if (msg == 0x2) ( if (msg == 0x0) analogWrite(LED3_RED, msg) ; else if (msg == 0x1) analogWrite(LED3_GREEN, msg) else if (msg == 0x2) analogWrite(LED3_BLUE, msg) ( msg = 0; / 1); * stav tlačítka odeslat */ acc.write(msg, 3);

Android

import com.android.future.usb.UsbAccessory; importovat com.android.future.usb.UsbManager; ... Veřejná třída Demokitactivity Extitions Implements spustitelné (Private USBManager Musbmanager; USBACCESSORY MACCCESSORY; FileinPutstream MinPuSTREAM; Utputstream; ... Private Void Openaccessory (USBACCESSORY) ) ( mAccessory = příslušenství; FileDescriptor newDescriptm = FileDescriptam eam (fd); byte int i while (ret >= 0) ( // příjem příchozích zpráv ret = mInputStream.read(buffer); i = 0; while (i)< ret) { int len = ret - i; switch (buffer[i]) { case 0x1: // сообщение от кнопки if (len >= 3) ( Zpráva m = Message.obtain(mHandler, MESSAGE_SWITCH); m.obj = new SwitchMsg(buffer, buffer); mHandler.sendMessage(m); ) i += 3; přestávka; ) ) ) ) // příklad použití - rozsviťte červenou LED na plný jas: // mActivity.sendCommand((byte)2, (byte)0, (byte)255) public void sendCommand(byte command, byte target, int hodnota) ( byte buffer = nový bajt; if (hodnota > 255) hodnota = 255; buffer = příkaz; buffer = cíl; buffer = (byte) hodnota; if (mOutputStream != null && buffer != -1) ( zkuste ( mOutputStream. write(buffer); catch (IOException e) ( ... ) ) ) )

závěry

Otevřením takových příležitostí Google samozřejmě v první řadě počítá s výskytem velkého množství aktivního příslušenství Android, ale v neposlední řadě je důležité, že v podstatě získáme pohodlné zařízení pro interakci s různými senzory. , senzory a akční členy. Takové zařízení by se snadno mohlo stát mozkem něčeho robotického.

Také nesmíme zapomenout, že jako rozšiřující deska může fungovat zařízení Android pro Arduino, které má GPS, Bluetooth, WiFi, akcelerometr a mnoho dalšího.

říct přátelům