Šest jednoduchých způsobů, jak připojit Arduino k Androidu. Ovládejte Arduino ze svého telefonu
Začít znovu.
Čip ESP 8266
Čip ESP8266 je navržen speciálně pro internet věcí. Existují dvě možnosti použití tohoto čipu. První je jako UART-WIFI můstek pro připojení k mikrokontroléru a ovládání AT příkazů. Druhá možnost - samotný čip hraje roli řídicího řadiče. Podle mých odhadů je mezi milovníky elektroniky čip častěji využíván jako řídicí ovladač.
Vlastnosti čipu:
- Podpora 802.11b/g/n
- Integrovaný 32bitový nízkoenergetický MCU
- Integrovaný 10bitový ADC
- Vestavěný zásobník TCP/IP
- Vestavěný zesilovač RF signálu
- Podpora rozmanitosti antény
- WiFi 2,4 GHz, podpora WPA/WPA2
- Podpora režimů STA/AP/STA+AP
- SDIO 2.0, (H) SPI, UART, I2C, I2S, IR dálkové ovládání, PWM, GPIO
- STBC, 1x1 MIMO, 2x1 MIMO
- Agregace A-MPDU & A-MSDU & ochranný interval 0,4s
- výstupní výkon+20 dBm v režimu 802.11b
Čip je vysoce integrované WiFi řešení. Vše, co je potřeba, bylo umístěno uvnitř čipu. Typický, minimálně požadovaný obvod pro mikroobvod sestává pouze ze sedmi prvků.
Fotografie pro porovnání počtu součástí podobných řešení.
Podle některých zpráv je celá tato krása řízena 32bitovým jádrem procesoru Xtensa LX106, podle jiných - L106 Diamond společnosti Tensilica. Čip pod mikroskopem vypadá jako celé město propojených prvků.
Jednou z nejdůležitějších vlastností je spotřeba energie. V ESP8266 je to prostě úžasné:
- 215 mA v režimu nepřetržitého vysílání.
- 1mA v režimu udržování komunikace s přístupovým bodem
- 10uA v režimu hlubokého spánku s běžícími hodinami reálného času
- 0,5uA palců Režim napájení VYPNUTO
Doba potřebná k probuzení a zahájení přenosu paketu je kratší než 2 ms. Například při měření teploty každých 100 sekund a připojení k přístupovému bodu a přenosu nashromážděných dat každých 300 sekund (zbytek času čip spí) bude průměrný proud asi 1 mA. To jsou více než tři měsíce práce ze tří prstových baterií s kapacitou 2600 mAh.
O modulech ESP
V současné době jsou nejoblíbenější moduly založené na ESP8266 ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP -11, ESP-12, ESP-12E. Liší se počtem rozvedených pinů, přítomností konektoru pro připojení externí antény a velikostí.
Nyní již v prodeji najdete staršího bratříčka ESP8266 - jedná se o modul ESP-32. Na Aliexpressu mají tyto moduly zatím jen dva prodejci. Cena je asi 250 rublů oproti 110 rublům za ESP-12E. V novém modulu bude ještě více vychytávek.
Hlavní rysy ESP-32. (kliknutím zobrazíte)
WiFi
- 802.11b/g/n/e/i
- 802.11n (2,4 GHz), až 150 Mbps
- Bezpečnostní funkce 802.11i: předběžná autentizace a TSN
- 802.11e: Správa více front pro plné využití priorit provozu QoS
- Wi-Fi Protected Access (WPA)/WPA2
- Wi-Fi Protected Setup (WPS)
- Vyhovující a certifikované UMA
- Rozmanitost a výběr antén
- Agregace A-MPDU a A-MSDU
- Výkon WMM s U-APSD
- Fragmentace a defragmentace
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner Mode a P2P Power Management
- Režim Infrastructure BSS Station / režim Soft AP
- Automatické monitorování / skenování majáku
- SSL zásobníky s hardwarovými akcelerátory
Bluetooth
- Jednočipové CMOS plně integrované rádio a základní pásmo
- Bluetooth Piconet a Scatternet
- Bluetooth 4.2 (BR/EDR/BLE)
- Adaptivní frekvenční přeskakování (AFH)
- SMP
- Vysílač třídy 1, třídy 2 a třídy 3 bez externího zesilovače výkonu
- +10dBm přenosový výkon
- NZIF přijímač s citlivostí -90 dBm
- Až 4 Mbps vysokorychlostní UART HCI
- SDIO / SPI HCI
- CVSD a SBC
- Malá spotřeba energie
- Minimální externí součást
CPU a paměti
- Xtensa® Dual-Core 32bitový LX6 micr pr cess rs, až 400MIPS
- 128 kB ROM
- QSPI Flash/SRAM, až 4 x 16 MB
- Napájení: 2,5V až 3,6V
- 416 KB SRAM
Hodiny a časovače
- 2 MHz až 40 MHz krystalový oscilátor
- Interní 8 MHz oscilátor s kalibrací
- Externí 32 kHz oscilátor pro RTC s kalibrací
- Interní RC oscilátor s kalibrací
- Dvě skupiny časovačů včetně 3 x 64bitových časovačů a 1 x watchdog v každé skupině
- RTC časovač s přesností na sekundu
- RTC hlídací pes
Pokročilá periferní rozhraní
- 12bitový SAR ADC až 16 kanálů
- 2 x 10bitové D/A převodníky
- 10x dotykový senzor
- Teplotní senzor (-40 +125°C)
- 4x SPI
- 2x I2S
- 2 x I2C
- 2x UART
- 1 hostitel (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Rozhraní Ethernet MAC s vyhrazenou podporou DMA a IEEE 1588
- CAN 2.0
- IR (TX/RX)
- PWM motoru
- LED PWM až 16 kanálů
Bezpečnostní
- Všechny podporované bezpečnostní funkce standardu IEEE 802.11, včetně WFA, WPA/WPA2 a WAPI
- Bezpečná bota
- Flash šifrování
- 1024bitové OTP, až 768bitové pro zákazníky
- Kryptografická hardwarová akcelerace:
- AES 128/192/256
- Knihovna HASH (SHA-2).
-RSA
- Generátor čísel Radom
Zvláště zajímavá je deklarovaná podpora sběrnice CAN. Brzy bude možné spravovat systémy auta a provádět diagnostiku přes WiFi přímo z mobilní zařízení.
Ale zpět k ESP-12E. Na základě tohoto modulu je postavena platforma NodeMCU.
O platformě
Platforma využívá schopnosti modulu ESP-12, nemá vlastní mikrokontrolér. Číňané vyrábějí mnoho klonů s různými převodníky rozhraní a samotné platformy mají různé velikosti.
Ve výchozím nastavení je firmware NodeMCU načten do platformy s podporou interpretru skriptovacího jazyka LUA. Skripty definují chování desky.
Píšu a nahrávám programy pomocí Arduino IDE. Pro práci s platformou musí být nainstalovány knihovny. Dodává se s knihovnami velký počet ukázky programů.
Instalace knihoven na prostředí Arduino IDE pracovat s NodeMCU .
Chcete-li nainstalovat knihovny, přejděte na Nastavení Arduina IDE a do pole „Additional board“ zadejte adresu http://arduino.esp8266.com/package_esp8266com_index.json
Projděte seznam a najděte ESP8266 by ESP8266 Community a nainstalujte knihovny.
Zavřete Správce nástěnek. Přejděte na „Nástroje“ a vyberte desku NodeMCU podle vaší verze.
Chcete-li pochopit, který modul jste nainstalovali a kterou verzi zvolit, podívejte se na modul. Pokud jsou kontakty na něm umístěny na třech stranách - jedná se o ESP-12E, pokud pouze na dvou - jedná se o ESP-12.
Přiřazení pinů platformy NodeMCU
Funkce podporované knihovnami pro Arduino IDE .
Úplný popis si můžete přečíst zde https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru a v ruštině. Budu mluvit o hlavních funkcích.
GPIO se ovládá stejným způsobem jako Arduino. Funkce pinMode, digitalRead, digitalWrite, analogWrite jako obvykle. analogRead(A0) čte hodnotu ADC z analogového vstupu A0. analogWrite umožňuje softwarové PWM. Frekvence PWM je asi 1 kHz. Rozsah PWM je od 0 do 1023, pro Arduino, jak si pamatujeme, až 255. Přerušení jsou také podporována na jakémkoli GPIO kromě GPIO16. Funkce millis() a micros() vrací milisekundy a mikrosekundy od spuštění modulu. Funkce delay() NodeMCU funguje jinak než Arduino. Zde je použití zpoždění vítáno a ve velkých programech dokonce nutné. Když modul udržuje WiFi připojení, musí dělat spoustu jiných úkolů na pozadí, než je váš náčrt. Funkce WiFi a TCP/IP knihoven SDK mají schopnost zpracovat všechny události ve frontě po dokončení každého cyklu vaší funkce loop() nebo během provádění delay(...). Pokud váš kód obsahuje fragmenty, které trvají déle než 50 milisekund, musíte použít delay(...), aby zásobník WiFi fungoval správně. Ale delayMicroseconds() blokuje jiné úlohy a nedoporučuje se pro zpoždění větší než 20 milisekund. Serial používá hardwarový UART0 běžící na PIO1(TX) a GPIO3(RX).
Program pro ovládání čtyř relé z mobilní aplikace
Po instalaci knihoven připojíme k platformě blok 4 relé na piny D1, D2, D3, D4, což odpovídá GPIO 5, 4, 0, 2, resp. Poté připojíme napájení k platformě a k reléové jednotce. Reléový blok, který mám, má jednu vlastnost. Chcete-li relé zapnout, musíte přitáhnout kolík k zemi. To znamená, že logická 0 relé zapne a 1 jej vypne.
Budu zvažovat tři možnosti pro program řízení reléového bloku.
První program používá populární knihovnu aRest https://github.com/marcoschwartz/aREST
Toto je knihovna API, která vám umožňuje ovládat GPIO prostřednictvím požadavků http, jako jsou http://192.168.0.10/digital/6/1 její možnosti: nastavte GPIO na digitální nebo analogové (PWM), nastavte 0 nebo 1 na pin v digitální režimu, vracet proměnné a číst stav pinů.
Zkompiloval jsem program a načetl jej z příkladů, které jsou součástí knihovny. Co se použití týče, jednodušší už to být nemůže.
V Nastavení je navázáno spojení s přístupovým bodem, který je hlášen přes COM port. A smyčka vypadá takto:
void loop() (
Klient WiFiClient = server.available();
pokud (!klient) (
vrátit se;
}
while(!client.available())(
zpoždění(1);
}
odpočívací rukojeť (klient);
}
Všechno. Co se tam děje, není jasné. Funguje to, ale vlastně nic neprogramujeme. My pouze spustíme program, o zbytek se postará knihovna. Zajímavější je ale naučit se pracovat s GPIO „z ruky“. Ano, mimochodem, můj program po neurčité době spadl. Někdy po 40 minutách, někdy po 5-6 hodinách. Když jsem přišel domů po 8 hodinách práce, vždy jsem zjistil, že program nefunguje. Router to ukazuje wifi klient připojen a přidělena IP adresa. O knihovnu jsem rychle ztratil zájem. Na ruskojazyčných fórech jsem neviděl žádné stížnosti na zmrazení aRest. Už jsem hřešil na NodeMCU nebo nestabilní napájení, ale další experimenty prokázaly, že v mém případě je na vině program. S největší pravděpodobností mám speciální případ. Netvrdím, že knihovna nefunguje.
Přišli jsme na aRest.
Druhý program
vlastní, používá pouze jednu #include knihovnu
Po zkompilování a nahrání programu na monitor sériového portu program ohlásí stav připojení a IP adresu, kterou platforma obdrží od přístupového bodu.
Pro ovládání reléové jednotky pro tyto dva programy byla vytvořena aplikace pro mobilní telefon s OS Android. Aplikace je velmi jednoduchá, byla vytvořena v App Inventor 2. Postup tvorby aplikace popíšu později. Jednak třetí možnost řešení ovládání relé.
Třetí možnost komplex. Firmware platformy a software Android od jednoho vývojáře. Použil jsem službu Blynk. Jedná se o cloudovou službu pro tvorbu grafických ovládacích panelů a je vhodná pro širokou škálu mikropočítačů a mikrokontrolérů.
K vytvoření vlastního projektu spravovaného přes Blynk potřebujete velmi málo: nainstalovat aplikaci (k dispozici jsou verze pro iOS a Android) nebo použít webový formulář. Zde se budete muset zaregistrovat v jednom kroku – zadejte svůj e-mail a heslo. Faktem je, že Blynk je cloudové řešení a každý uživatel může získat kontrolu nad kusem železa bez registrace.
Ti, kteří chtějí, mohou nainstalovat server lokálně. V tomto případě není vyžadován přístup k internetu.
Popíšu postup. Skládá se ze dvou částí.
První díl. Stáhněte si Blynk z Google Play. Nainstalujte a spusťte program
- Klikněte na "Vytvořit nový projekt"
- Zadejte název projektu a v poli „Hardwarový model“ vyberte NodeMCU. Naučte se Auth Token nazpaměť nebo si jej zapište na papír a pošlete na svůj e-mail. Klikněte na "Vytvořit".
- Klikněte na "+" v rohu.
- Zvolte "Tlačítko". Jak jste již poznamenali, každý prvek přidaný do projektu stojí energii. Ve výchozím nastavení je vám přiděleno 2000. Při přidávání widgetů se spotřebovává energie. Pokud potřebujete umístit více widgetů, budete si muset koupit energii za peníze.
- Zde je naše tlačítko. Klikněte na to. Otevře se jeho nastavení.
- Vyberte název, pin, na který bude působit, režim tlačítka nebo přepínače, název pro stavy „on“ a „off“. V aplikaci nelze signál z tlačítka invertovat. U mých relé: tlačítko je vypnuté - 0 na výstupu, relé je zapnuté a naopak. Pravidla pro fungování logiky můžete předepsat instalací serveru na místní počítač.
- Dále klikněte na trojúhelník vpravo nahoře. Program se přepne z režimu úprav do práce.
- Tlačítka fungují. Je pozoruhodné, že je podporován multitouch. Zkusil jsem stisknout 6 tlačítek současně. Vše funguje (telefon má 10 tlakových bodů dle popisu).
Druhá část je firmware NodeMCU. Stáhněte a nainstalujte knihovny Blynk https://github.com/blynkkk/blynk-library . Spusťte Arduino IDE - Soubor - Vzorky - Blynk - BoardsAndShields - ESP8266_Standalone.
Do příkladu zadejte Auth Token z tajné pošty. Stejně tak SSID vaší WiFi sítě a heslo pro přístup k ní.
Všechno. Sestavte a šijte. Všechno fungovalo napoprvé. Použití vyhrazeno cloudová služba musí mít přístup k internetu mobilní telefon a NodeMCU.
Vytvořte aplikaci vAplikace inventář.
App Inventor je vizuální vývojové prostředí pro aplikace pro Android, které od uživatele vyžaduje minimální znalosti programování. Původně byl vyvinut v Google Labs, po uzavření této laboratoře byl převeden na Massachusetts Institute of Technology. Pro programování v App Inventor použijte GUI, vizuální programovací jazyk velmi podobný Scratch a StarLogo TNG. Není tak těžké přijít na to, jak napsat aplikaci. Nenašel jsem žádnou užitečnou dokumentaci v ruštině, ale na YouTube je spousta videí.
Služba má dvě hlavní záložky. První je „Designer“, zde v vizuální editor komponenty jsou umístěny. Rychlost vývoje rozhraní je velmi vysoká díky jedné funkci služby App Inventor. Na mobilním zařízení je třeba nainstalovat aplikaci MIT App Inventor 2 Companion. Spusť to. Na webu vyberte Connect – AI Companion. Vygeneruje se QR kód a zobrazí se na obrazovce. V aplikaci je potřeba kliknout na „naskenovat QR kód“ a naskenovat kód. Po několika sekundách se aplikace objeví na obrazovce mobilního zařízení. Nové položky nebo jakákoli změněná data jsou k dispozici pro ověření na mobilním zařízení během pouhé sekundy.
Obrazovka obsahuje: vstupní pole pro zadání IP adresy, tlačítko pro nastavení adresy a odeslání testovacího požadavku. Níže je komponenta „WebViewer“, která zobrazí stránku odeslanou jako odpověď z NodeMCU. Níže jsou 4 skupiny dvou tlačítek, které relé zapínají a vypínají. Dále potřebujeme komponentu TinyDB, do ní uložíme proměnnou pro sestavení dotazu. Přidal jsem také komponentu pro rozpoznávání hlasu pro testování, abyste mohli relé ovládat hlasovými příkazy. Nebudu popisovat algoritmus akcí pro rozpoznávání textu, protože použití této funkce je extrémně nepohodlné. Nejprve je třeba stisknout tlačítko, poté se zobrazí okno od Googlu s nápisem „mluvte“, poté se příkaz vysloví. Navíc po skončení výslovnosti povelu rozpoznávací systém nějakou dobu čeká, pak si uvědomí, že vše už bylo řečeno. Poté přichází rozpoznávání řeči a následuje textová odpověď. Musí se porovnávat s předem připravenými frázemi. A teprve poté bude příkaz vykonán. Je jednodušší stisknout tlačítko.
Druhá záložka se nazývá "Blocks". Zde je ve formě bloků specifikována celá „softwarová“ část aplikace.
Zde je algoritmus programu tvořen bloky. Hlavní část algoritmu je na obrazovce. Popíšu, co se zde děje.
- Při SET.Click - při stisku tlačítka "set" vyvoláte funkci IP
- Následuje samotná funkce IP. Ukládá IP adresu ze vstupního pole v TinyDB předponou "http://". Poté WebViewer.GoToUrl převezme adresu z TinyDB, na konec připojí "/test" a přejde na tuto adresu. Dostávám "http://192.168.0.1/test". Ve WebViewer se na obrazovku načte informace, že test prošel, a zobrazí se doba nepřetržitého provozu NodeMCU. Pokud byla IP adresa zadána špatně, pak se nám zobrazí zpráva o nemožnosti otevření stránky.
- Když ON1.Click (ON1 je název tlačítka) volá funkci ON1.
- Funkce ON1 převezme adresu z TinyDB, připojí k ní "/D1/0", ukáže se "http://192.168.0.1/D1/0" a odešle požadavek. NodeMCU po obdržení daná žádost, si myslí, že pin D1 je potřeba nastavit na 0. Provede a odešle odpověď „GPIO set OK“, kterou vidíme ve WebVieweru.
- Další tlačítko OFF1 dělá totéž, pouze na konec připojí "/D1/1". Nastaví logickou 1 na pin D1. Relé se vypne.
Zbývající tlačítka se chovají podobně, mění čísla PIN a požadovaný stav v požadavku.
Poté, co je vše zkontrolováno a funguje, klikněte na Build - App (uložit .apk do mého počítače). Kompilace a stažení souboru apk aplikace. Musí být nainstalován na mobilním zařízení, které dříve umožňovalo instalaci aplikací z zdroje třetích stran. Nyní se aplikace spustí sama. AI Companion již není potřeba a připojení k internetu také.
Takto můžete bez námahy vytvořit aplikaci pro vaše zařízení Android pro správu zátěže WiFi sítě.
NodeMCU a mobilní telefon jsou připojeny domácí router. Kde není tečka WiFi přístup, NodeMCU může fungovat jako přístupový bod pro připojení mobilního zařízení přímo k ESP8266. Například ovládání otevírání garážových vrat a rozsvícení světla v garáži.
P.S. Ještě se mi nepodařilo zvednout přístupový bod na plošině. Příklad dodaný s knihovnami se nezkompiluje. Arduino IDE se při kompilaci jen zasekne. S tím se ještě musím vypořádat.
P.P.S. Zvedl bod na platformě, ale dosud nedosáhl odpovídající práce. Příkazy byly provedeny buď se zpožděním několika sekund, nebo nebyly provedeny vůbec. Zatímco studium modulu je pozastaveno. Vytížený autoservis.
Může být RC auto WiFi auto...?
RC auta jsou dobrá, ale levná RC auta mají omezený dojezd a ovládají se pouze specifickým dálkovým ovladačem, který je součástí sady.
Koupil jsem si 4x4 RC Jeep s pružným odpružením a terénními pneumatikami za asi 30 dolarů. Po hraní se strojem jsem se rozhodl, že by se dal vylepšit pomocí Wi-Fi a Androidu. Poté, co jsem strávil trochu času, jsem úplně odstranil desku ze stroje. Změřil jsem napětí na této desce a vyvinul systém řízení motoru s Nápověda pro Arduino. Původní řídicí systém nepoužívá PWM pro regulaci otáček. Stroj je navržen tak, aby se přes překážky pohyboval na velmi nízkém převodovém stupni a v důsledku toho velmi pomalu. Můj obvod používá PWM.
Arduino používám již několik měsíců. Také jsem si zakoupil asynclabs WiFi Sheild pro Duemilanoe Arduino, abych experimentoval s WiFi. Dodává se s knihovnou nainstalovanou v Arduino IDE. Podařilo se mi vytvořit program, který umožňuje ovládat motory a směr pohybu pomocí WiFi.
S pomocí vizuální studio Vyvinul jsem okno programu, které se připojuje k serveru auta a dává mu příkazy. Poté jsem po několika pokusech napsal aplikaci pro Android, která používá k ovládání auta akcelerometr.
Nástroje a prvky
Tento společný seznam nástroje a prvky, které byly použity v tomto projektu. Dokumentace Eagle přesně specifikuje Specifikace použité komponenty.
multimetr
páječka
Pájka
Šroubováky
Řešení pro leptání desek plošných spojů
Sklolaminátová fólie
Kleště
Arduino
AsyncLabs WiFi Shield
konektory RJ45
Ovladač motoru H-můstek
Kondenzátory
Řidič motoru
Pomocí Eagle jsem navrhl a vyrobil tento obvod tištěný spoj pro ni. Funguje jako ovladač motoru a regulátor výkonu pro Arduino.
To vám umožní používat standardní 7,2V baterii pro napájení hlavního a řídicího motoru a Arduina.
Tento obvod používá k ovládání motorů duální integrovaný ovladač H-můstku SN754410. Ovládací kolíky ovladače jsou připojeny ke kabelu RJ45, který se připojuje k AsyncLabs WiFi Sheild.
štít arduino
Pomocí knihovny SparkFun v Eagle jsem navrhl Arduino Shield, který předá piny WiFi Shield a připojí se k ovladači motoru přes konektor RJ45 a 2 šroubovací svorky.
Pinout RJ45 je velmi důležitý. Chyba připojení může vést k nepředvídatelným výsledkům a budete muset desku předělat.
Leptání DPS
Toto téma už bylo mnohokrát probíráno a nebudu ho podrobně popisovat.
Používám ho a vyhovuje mi a se zkušenostmi dává vynikající výsledky.
K upevnění desky k pouzdru byl použit suchý zip. Měl jsem štěstí, protože v mém psacím stroji bylo pod trubkovým rámem hodně místa pro elektroniku.
Zapomněl jsem vyfotit spojení desky ovladače motoru se zbytkem desek, ale dopadlo to dobře a nezabralo moc místa v pouzdře.
Program
Můj kód možná není dostatečně efektivní, ale funguje.
psací stroj
Byl jsem schopen postavit CarServer na základě příkladu SocketServer, který jsem dostal od Wifi Sheild AsynLabs.
Budete muset zadat informace o vaší bezdrátové síti do kódu Arduino. Když je stroj zapnutý, dejte mu 15–45 sekund na navázání spojení se směrovačem. Červená LED na WiFi Shield znamená, že připojení je navázáno.
Tento program jsem vytvořil v C# a MS Visual Studio 2008. Udělal jsem pěkné okno a auto se dá ovládat šipkami.
Proč neovládat auto z telefonu?
Tato myšlenka mě napadla asi týden po koupi DroidX. Začal jsem experimentovat a nakonec jsem použil Android SDK. Našel jsem podobné aplikace, kde k ovládání slouží akcelerometr. Při pohledu na tyto aplikace jsem napsal vlastní.
Vložte IP a port zadaný v kódu Arduino. Držte telefon vodorovně. Poté jej nakloňte směrem od sebe pro jízdu vpřed a směrem k sobě pro jízdu vzad. Použijte svůj telefon jako volant.
Toto je moje první velká aplikace pro Android. Stále má nějaké chyby, ale z velké části funguje dobře.
Jezděte na dvoře s autem 4x4 s WiFi!
Při vytváření tohoto projektu jsem se skvěle bavil. Získal jsem spoustu znalostí a nových dovedností a nyní mám auto s pohonem 4x4, které lze ovládat z telefonu.
Potřebuji kameru namontovat za přední sklo, abych viděl, kam jedu. Měl by mít nízkou spotřebu a také sám přenášet video. (Myslím, že to Arduino zvládne).
Seznam rádiových prvků
Označení | Typ | Označení | Množství | Poznámka | Prodejna | Můj poznámkový blok | |
---|---|---|---|---|---|---|---|
Řidič motoru | |||||||
IC1 | Čip | SN754410 | 1 | Do poznámkového bloku | |||
Lineární regulátor | 5 V | 1 | Do poznámkového bloku | ||||
bipolární tranzistor | 2N3904 | 1 | Do poznámkového bloku | ||||
C1, C2 | elektrolytický kondenzátor | 2 | Do poznámkového bloku | ||||
Konektor | 2 špendlíky | 7 | Do poznámkového bloku | ||||
Konektor | 8 pinů | 1 | Do poznámkového bloku | ||||
štít arduino | |||||||
U1 | Deska Arduino | 1 | Do poznámkového bloku | ||||
T1 | bipolární tranzistor | 2N3904 | 1 | Do poznámkového bloku | |||
R1 | Rezistor | 1 | Do poznámkového bloku | ||||
3 USD | Trimrový odpor | 1 | Do poznámkového bloku | ||||
Konektor | 2 špendlíky | 2 |
Chcete poslat textová zpráva ze smartphonu Android na desku Arduino? Tento článek vám poradí, jak na to!
Co bude požadováno
- Smartphone Android podporující režim hostitele USB (tj. podpora OTG) – většina zařízení se systémem Android 3.1 a vyšším tento režim podporuje. Zkontrolujte svůj telefon pomocí přes USB Aplikace Host Diagnostics z Obchodu Play;
- Arduino - jakákoli verze. budu používat Uno R3;
- USB kabel pro Arduino;
- USB OTG kabel- potřebujete jej k připojení Arduino USB kabelu micro USB port telefon;
- Android Studio – musíte si jej nainstalovat. Je to docela snadné. android studio usnadňuje vývoj aplikací prostřednictvím svých předpokladů a generování kódu. Toto je jedno z nejlepších IDE. Tento článek můžete také použít jako návod Instalace pro Android IDE.
Hlavní součásti aplikace pro Android
V aplikace pro Android existují tři hlavní soubory:
MainActivity.java Toto je spustitelný kód Java, který řídí, jak bude aplikace fungovat. activity_main.xml Obsahuje rozvržení aplikace, tj. komponenty: tlačítka, komponenty zobrazení textu a tak dále. AndroidManifest.xml Zde definujete, kdy se má aplikace spustit, jaká oprávnění potřebuje a k jakému hardwaru potřebuje přístup.
Existuje mnoho dalších souborů, ale všechny jsou navzájem propojeny pomocí těchto tří.
Aktivitu lze popsat jako obrazovku, na které uživatel komunikuje s telefonem. Aktivity obsahují widgety, jako jsou tlačítka, textová pole, obrázky atd., které pomáhají při předávání informací. Tento výukový program bude používat pouze jednu aktivitu, MainActivity , která bude přijímat uživatelský vstup pro odeslání do Arduina a také zobrazí přijatý text.
Rozložení
![](https://i1.wp.com/radioprog.ru/uploads/media/articles/0001/01/ba4fd729fdb62d1c7fe3881fe3cf01cec823d96c.png)
Použijeme stejné rozložení jako aplikace USB a Bluetooth. Je jednoduchý a obsahuje minimum widgetů potřebných pro kontrolu spojení mezi zařízeními.
Jak vidíte, obsahuje widget EditText pro příjem vstupu od uživatele, tlačítka pro zahájení připojení, odeslání dat, ukončení připojení a vymazání TextView . Přijatá data se zobrazí v TextView (prázdné místo pod tlačítky).
Zde je část kódu XML. Protože kód tlačítek je podobný, není zde zobrazen. Celý kód lze stáhnout z odkazu na konci článku.
Použil jsem zde RelativeLayout, což znamená, že každý widget je umístěn relativně k widgetům kolem něj. Rozvržení lze snadno znovu vytvořit na kartě Návrh, kde můžete widgety přetahovat kamkoli chcete. Musíme popsat, co se stane po kliknutí na tlačítko. K tomu se používá metoda onClick. Zadejte název metody v kódu XML pro tlačítko. Chcete-li to provést, přidejte řádek:
Android:onClick="onClickMethod"
Nyní najeďte myší na tento řádek, nalevo by se mělo objevit varování, které vypadá takto:
![](https://i2.wp.com/radioprog.ru/uploads/media/articles/0001/01/1fa492d90a452879a7128af59aa0ab36ddc859ad.png)
Klikněte na možnost "Create onClick...". Tím se automaticky přidá kód metody onClick do MainActivity.java . Musíte to udělat pro každé tlačítko.
Sériová knihovna USB
Nastavení sériové připojení v Androidu je poměrně pracné, protože to vyžaduje manuální nastavení spoustu věcí, tak jsem našel pár knihoven, které tohle všechno dělají automaticky. Otestoval jsem několik z nich a nakonec jsem se rozhodl pro knihovnu UsbSerial od uživatele Github felHR85. Mezi podobnými knihovnami, které jsem našel, je to jediná, která se stále aktualizuje. Je to docela snadné nastavit a používat. Chcete-li knihovnu přidat do svého projektu, stáhněte si ji Nejnovější verze JAR soubor na Github. Umístěte jej do podadresáře libs v adresáři projektu. Poté v průzkumníku souborů v Android Studio klikněte pravým tlačítkem na soubor JAR a vyberte „Přidat jako knihovnu“ (Přidat jako knihovnu). To je vše!
Algoritmus provádění programu
![](https://i0.wp.com/radioprog.ru/uploads/media/articles/0001/01/c863581dfe792509722743f3d8cf3fb804cdb10e.png)
Toto je krátký nástin toho, jak budeme postupovat. Každá aktivita má metodu onCreate(), která se spustí při vytvoření aktivity. Jakýkoli kód, který chcete spustit na začátku, by měl být umístěn uvnitř této metody. Všimněte si, že čtení ze zařízení je asynchronní, což znamená, že bude fungovat v Pozadí. To má zajistit, že data budou přijata co nejdříve.
Otevření připojení
Nejprve si nadefinujme metodu onClick pro tlačítko Begin. Po kliknutí musíte vyhledat všechna připojená zařízení a poté zkontrolovat, zda se VendorID připojeného zařízení (ID dodavatele) shoduje s VendorID Arduina. Pokud je nalezena shoda, měl by být uživatel požádán o povolení. Každý otrok USB zařízení má ID dodavatele a ID produktu, které lze použít k určení, které ovladače by se měly pro toto zařízení použít. ID dodavatele pro jakoukoli desku Arduino je 0x2341 nebo 9025.
Public void onClickStart(View view) ( HashMap usbDevices = usbManager.getDeviceList(); if (!usbDevices.isEmpty()) ( boolean keep = true; for (Map.Entry entry: usbDevices.entrySet()) ( device = entry. getValue(); int deviceVID = device.getVendorId(); if (deviceVID == 0x2341) //ID dodavatele Arduina ( PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); usbManager(requestPer) zařízení, pi); keep = false; ) else ( connection = null; device = null; ) if (! keep) break; ) ) )
Nyní nadefinujme BroadcastReceiver pro příjem vysílaných zpráv a žádostí o povolení uživatele automatické spuštění připojení, když je zařízení připojeno, a uzavřete připojení, když je odpojeno.
// Příjemce vysílaných zpráv pro automatické spuštění a ukončení sériového připojení. soukromé finále BroadcastReceiver broadcastReceiver = new BroadcastReceiver() ( @Override public void onReceive(kontextový kontext, záměr záměru) ( if (intent.getAction().equals(ACTION_USB_PERMISSION)) ( boolean přidělen = intent.getExtras().getBoolean(UsbManager. EXTRA_PERMISSION_GRANTED); if (uděleno) ( připojení = usbManager.openDevice(zařízení); serialPort = UsbSerialDevice.createUsbSerialDevice(zařízení, připojení); if (serialPort != null) ( if (serialPort.open()) ( //Nastavit sériový port parametry connection.setUiEnabled(true); //Povolení tlačítek v UI.serialPort.setBaudRate(9600);serialPort.setDataBits(UsbSerialInterface.DATA_BITS_8);serialPort.setStopBits(UsbSerialInterface.STOP_BITS_PARITYer_Interial_ONES; . setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF); serialPort.read(mCallback); // tvAppend(textView,"Sériové připojení otevřeno!\n"); ) else ( Log.d("SERIAL", "PORT NOT OPEN"); ) ) else ( Log.d("SERIAL", "PORT IS NULL"); ) ) else ( Log.d("SERIAL", "PERM NOT GRANTED"); ) ) else if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) ( onClickStart(startButton); ) else if (intent.getAction ().equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) ( onClickStop(stopButton); ) ); );
Pokud je splněna první podmínka IF a pokud uživatel udělil oprávnění, zahajte připojení se zařízením, jehož ID dodavatele se shoduje s ID dodavatele, které potřebujeme. Pokud je také přijato vysílání připojení nebo odpojení zařízení, ručně zavolejte metody onClick pro tlačítka Start a Stop. SerialPort je definován pomocí zařízení a připojení jako argumentů. Pokud bude úspěšný, otevřete SerialPort a nastavte příslušné parametry. Hodnoty parametrů pro Arduino Uno jsou: 8 datových bitů, 1 stop bit, žádná parita, řízení toku vypnuto. Přenosová rychlost může být 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 nebo 115200 bps, ale použijeme standardních 9600 bps.
Příjem dat ze zařízení
Ve výše uvedeném úryvku kódu si všimněte řádku obsahujícího serialPort.read(mCallback) . Zde je funkci čtení předán odkaz na objekt Callback, který se automaticky spustí, když narazí na příchozí data.
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() ( // Definujte metodu zpětného volání, která je volána při příjmu dat. @Override public void onReceivedData(byte arg0) (String data = null; try ( data = new String(arg0) " UTF-8"); data.concat("/n"); tvAppend(textView, data); ) catch (UnsupportedEncodingException e) ( e.printStackTrace(); ) ) );
Přijatá data budou ve formě nezpracovaných bajtů. Budeme je muset překódovat čitelný formát, například UTF-8. Poté jsou přidány do TextView pomocí speciální metody tvAppend(). To se provádí tímto způsobem, protože jakékoli změny uživatelského rozhraní lze provést pouze ve vláknu. uživatelské rozhraní. Protože toto zpětné volání poběží jako vlákno na pozadí, nemůže přímo ovlivnit uživatelské rozhraní.
Private void tvAppend(TextView tv, text CharSequence) ( final TextView ftv = tv; final CharSequence ftext = text; runOnUiThread(new Runnable() ( @Override public void run() ( ftv.append(ftext); ) )); )
Přenos dat do zařízení
Přenos dat je ve srovnání se čtením dat ze zařízení poměrně snadný. Toto je jednoduché volání funkce s bajty dat, které mají být předány jako argument. To bude implementováno v metodě onClick tlačítka Odeslat.
SerialPort.write(string.getBytes());
Uzavření spojení
Chcete-li spojení ukončit, jednoduše zavřete sériový port.
SerialPort.close();
Manifest aplikace
Manifest deklaruje, jaká další oprávnění může aplikace potřebovat. Jediné oprávnění, které potřebujeme, je oprávnění k tomu, aby byl telefon hostitelem USB. Přidejte do manifestu následující řádek:
Aplikaci lze nastavit tak, aby se spustila automaticky přidáním filtru záměru do hlavní aktivity. Tento filtr záměru se spustí, když je připojeno jakékoli nové zařízení. Typ zařízení lze explicitně specifikovat pomocí ID dodavatele a/nebo ID produktu v souboru XML.
Všimněte si řádku " android:resource="@xml/device_filter ". Ten říká kompilátoru, že může najít vlastnosti zařízení v souboru nazvaném device_filter v adresáři src/main/res/xml, takže vytvořte podadresář " xml " v src adresář /main/res a vložte do něj soubor s následujícím obsahem:
Testování aplikací
Sestavte aplikaci a spusťte ji na svém smartphonu. Nyní spusťte Arduino IDE a nastavte Arduino tak, aby jednoduše odráželo vše, co deska přijme přes sériový port. Zde je velmi jednoduchý kód, který vám s tím pomůže:
void setup() ( Serial.begin(9600); ) void loop() ( char c; if(Serial.available()) ( c = Serial.read(); Serial.print(c); ) )
Nyní připojte své Arduino k microUSB portu vašeho telefonu pomocí OTG kabelu. Aplikace by se měla spustit automaticky. Zkuste poslat nějaký text a stejná data se vrátí zpět!
![](https://i2.wp.com/radioprog.ru/uploads/media/articles/0001/01/b2feb577aab2da3a577b86d03c5e6e958a05b347.png)
Závěr
Tento článek ukazuje, jak může Arduino komunikovat s vaším smartphonem. A možnosti jeho využití jsou nekonečné! V případě, že jsou potřeba data z jakéhokoli senzoru, který není mezi těmi zabudovanými ve smartphonu, můžete pomocí libovolného mikrokontroléru načíst data z tohoto senzoru a přenést je do smartphonu. Následující článek vám ukáže, jak připojit svůj smartphone k Arduinu pomocí oblíbeného bluetooth modulu HC05.
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 nějaký příkaz. Náčrt tohoto příkazu zase rozsvítí nebo zhasne jednu 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 portálu Google Developer Portal. 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 vyberte sadu SDK, kterou potřebujeme, v našem pouzdro na android 2.3.3 (API 10). Pokud není k dispozici žádný 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. My se ale nechystáme nahrát aplikaci, 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 libovolný 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í, zatímco 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 typ „Aktivita“: typ toho, co bude na obrazovce při spuštění aplikace. Vybereme "Prázdná činnost", což znamená, že chceme začít vše od začátku. Klikněte na "Další".
Naše aplikace bude mít pouze jednu Aktivitu, takže v okně, které se objeví, nemůžete nic měnit. Stačí tedy kliknout na „Dokončit“.
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í, na emulátoru. Pojďme nakonfigurovat naše.
Chcete-li to provést, spusťte „Okno → Android Virtual správce zařízení". V zobrazeném okně klikněte na „Nový“. Vyplňte pole zobrazeného formuláře. Kolik a jaké zdroje emulátor „telefonu“ poskytne, závisí na nich. Vyberte rozumné hodnoty a klikněte na OK.
V okno Android Virtual Device Manager, 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:
Vyplnění aktivity
Aktivita – to je to, co se zobrazuje na displeji 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 Průzkumník balíčků otevřete res/layout/activity_main.xml . Jeho vzhled bude přibližně stejný jako na snímku obrazovky.
Přetáhněte 2 tlačítka „ToggleButton“ 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.xmlNení to nic jiného než naše Aktivita, která se nezobrazuje jako grafika, ale je popsána ve formátu XML.
Udělejme názvy komponent srozumitelnější. Změňme pole android:id následovně.
Přidáme k nim i popisky, změníme jejich barvu a velikost textu. Výsledný značkovací kód bude vypadat takto.
activity_main.xmlStejné změny lze provést v grafickém režimu pomocí karty Osnova/Vlastnosti.
Zkušební provoz
Aplikaci, kterou jsme právě vytvořili, můžeme spustit na emulátoru. Přejděte do nastavení spouštění "Spustit" → Spustit konfigurace", na levé straně klikněte na "Aplikace pro Android". Objeví se nová konfigurace "New_configuration". V pravé části 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 poběží v emulátoru.
Můžete mačkat tlačítka. Ale nic se nestane, protože klikačky ještě nebyly napsány námi.
Pro spuštění aplikace na reálném zařízení je potřeba v jejím nastavení povolit volbu „USB ladění“ a připojit ji k počítači.
Na reálném zařízení vypadá aplikace úplně stejně.
Psaní kódu pro Android
Manifestní úprava
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.xmlPřidání hlavního kódu
Je čas vdechnout život naší aplikaci. Otevřete soubor MainActivity.java (src → ru.amperka.arduinobtled). Na začátku obsahuje následující kód:
MainActivityAutogen.java balíček en.amperka.arduinoobtled ; import android.os.Bundle ; importovat android.app.Activity ; import android.view.Menu ; public class 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 pošleme 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í.
Příkaz číslo 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 nyní svítí nebo ne. U zeleného tlačítka je vše při starém, bere se jen 70 místo 60 (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 výše uvedené.
MainActivity.java balíček en.amperka.arduinoctled ; 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" zobrazení tlačítka v okně aplikace s implementací redButton = (ToggleButton) findViewById(R.id .toggleRedLed ) ; greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ) ; //Přidejte k tlačítku "poslouchač kliknutí". redButton.setOnClickListener (toto ) ; greenButton.setOnClickListener (toto ) ; // 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 dělat tyto věci Snaž se( //Zařízení s danou adresou je naše Bluetooth Bee //Adresa je definována následovně: navázat spojení //mezi PC a modulem (pin: 1234) a pak se podívej 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í připojení k zařízení metoda m = device.getClass () .getMethod ( "createRfcommSocket" , new Class ( int .class ) ) ; clientSocket = (BluetoothSocket) m.invoke (zařízení, 1 ) ; clientSocket.connect(); // V případě jakýchkoli chyb 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; toto přidá položky na panel akcí, pokud je přítomen. getMenuInflater() .inflate(R.menu .main , menu) ; vrátit true ; ) // Zavolá se pouze tato funkce@Override public void onClick( Pohled proti)( //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 k 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, vytiskněte 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 celočíselným dělením hodnoty přijatého bajtu 10 //a akce, kterou potřebujeme získáním zbytku dělení 2: //(1 - zapnout, 0 - vypnout) digitalWrite(incomingByte / 10 , incomingByte % 2 ); ))Funkce výplně náčrtu
Pro Bluetooth-Bee komunikaci 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 vytvořit 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!
Přenos firmwaru, aktualizací a dalších dat pomocí páječky a drátů není pro Arduino tím nejlepším řešením. Mikrokontroléry pro arduino wi-fi však nejsou levné a ne vždy je o ně nouze, proto je uživatelé ve svých projektech raději zbytečně nepoužívají.
Trh ale zaujal jiný čínský produkt, kutilský wi-fi rušič esp8266 lze připojit k desce Arduino nebo jinému systému a získáte stabilní připojení s řadou dalších výhod. Pojďme se tedy zabývat arduino uno wi-fi a zda se vyplatí kupovat tento modul a také co je podobný mikrokontrolér na arduino wi-fi obecně.
Nyní se většina uživatelů arduina již nebojí o cenu takových zařízení, ačkoli před 3 lety byl arduino wi-fi modul považován za luxus. To vše díky wi-fi rušičce esp8266, jejíž výrobci uvedli na trh zcela nový produkt, ohromující svou funkčností a zároveň poměrně levný, který významně přispěl a vytvořil v tomto směru konkurenci.
Proto je nyní arduino wi-fi esp8266 považován za nejdostupnější modul na trhu, stejně jako všichni jeho bratři. Cena na zahraničních webech tedy začíná od 2 $, což vám umožňuje nakupovat tyto moduly v dávkách a ne je tisíckrát přerovnávat, pájet kontakty, aby se zachoval výkon.
![](https://i0.wp.com/arduinoplus.ru/wp-content/uploads/2018/01/esp-620x883.jpg)
Nejprve byl tento arduino wi-fi modul používán hlavně jako arduino wi-fi štít, protože to byla nejlevnější varianta a nebyl v žádném případě horší než původní. Zařízení je opravdu téměř legendární, protože za jeho cenu neexistují žádné významné mínusy. Existuje mnoho knihoven, včetně uživatelských, a také podporuje provoz přes sériové sběrnice a nejjednodušší příkazy AT a AT +. Díky tomu není potřeba studovat sémantiku notoricky známého C99, jak tomu často bývá u jiných mikrokontrolérů třetích stran.
V souladu s tím na to přijde i začátečník během několika sekund a profesionál bude moci používat již připravené knihovny. Mezi další výhody patří:
- Procesor je 160 MHz, ale je 32bitový, což zanechává určitý otisk na výkonu. Ale stojí za to připomenout, že modul se stále používá ve spojení s deskami Arduino, které samy osekávají vysoké frekvence a žerou většinu zdrojů, nikdo neví proč.
- Výrobce, který vydal wi-fi modul esp8266, v tomto nedokončil zajímavé projekty a nyní existuje celá řada mikrokontrolérů osvědčené kvality.
- Moderní síťové bezpečnostní standardy. WPA a WPA2 už samozřejmě dávno nejsou tak bezpečné, jak bychom si přáli, ale jejich přítomnost se z tak levného ovladače nemůže radovat.
- 16 výstupních portů, včetně 10bitových, umožňuje experimentovat s deskou.
Důležitější je, že po vybalení na vás čekají až 4 megabajty trvalé paměti v závislosti na typu desky, což výrazně usnadňuje práci s velkými knihovnami a dokonce i některými mediálními soubory. Na většině desek Arduino je skutečně 1 megabajt považován za nedostupný luxus.
Vlastnosti esp8266 wi-fi jistě potěší, zvláště ve srovnání s její dražší konkurencí, ale uživatel, který nemá s těmito deskami žádné předchozí zkušenosti, bude mít otázku, jak ji připojit. Faktem je, že modul má mnohem více pinů, než jsou začátečníci zvyklí vidět, a proto začnou panikařit. Pokud však situaci rozumíte, ve skutečnosti na tom není nic složitého. Stačí se zásobit pájkou a páječkou a jen si přečíst návod.
Jak připojit Wi-Fi modul k Arduinu
Podívejme se na připojení esp8266 esp 12e a co je esp8266 wi-fi uart bridge. Ostatně právě připojení a konfigurace modulu vyvolává nejvíce otázek.
![](https://i0.wp.com/arduinoplus.ru/wp-content/uploads/2018/01/esp8266_esp12e-620x479.png)
Nejprve se rozhodněte, jakou verzi mikrokontroléru máte po ruce. V prvním jsou LED diody postaveny v blízkosti pinů a na druhém, který začali vyrábět poměrně nedávno, jsou signální světla umístěna v blízkosti antény.
Před připojením byste si měli stáhnout nejnovější firmware, který vám umožní zvýšit rychlost výměny paketů až na 9600 jednotek informací za sekundu. A zkontrolujeme připojení přes kabel usb-ttl a odpovídající terminál od CoolTerm.
![](https://i0.wp.com/arduinoplus.ru/wp-content/uploads/2018/01/esp-nano-620x292.png)
Výše popsané piny pro připojení kabelu jsou standardní, ale napájení jde přes 3,3 voltový pin od Arduina. Je důležité si uvědomit, že maximální proud, který deska dodává, nelze nastavit nad 150 mA a esp8266 esp 07 a esp8266 witty cloud wi-fi modul pro arduino vyžadují 240 mA.
Pokud však není jiný zdroj proudu, můžete použít standardní verzi od Arduina, utrpí tím ale výkon desky. Přestože 70 mA stačí pro malou zátěž, připravte se na náhlé restarty mikrokontroléru ve špičkách zátěže a podle toho zapište software tak, aby filtroval a rozděloval soubory bez přetížení desky.
![](https://i2.wp.com/arduinoplus.ru/wp-content/uploads/2018/01/esp-arduino-620x392.jpg)
Další možnost připojení je níže. Důležité - kontakty RX-TX jsou spojeny nitkovým křížem. Protože úrovně signálu modulu ESP8266 jsou 3,3 V a Arduino je 5 V, musíme pro převod úrovně signálu použít odporový dělič napětí.
Wi-Fi modul registrujeme v Arduinu
Jak víte, s patřičnými zkušenostmi můžete štít esp8266 ex 12e spárovat také se smartphonem, ale začátečníkům způsobuje registrace esp8266 esp 12 v systému Arduino potíže. Ve skutečnosti stačí modul připojit a zkontrolovat jeho výkon vypuštěním několika běžných AT příkazů z nabídky ladění.
Můžete například přidat blikání standardní LED (pro schéma zapojení výše):
#define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000) ;)
Jakmile deska potvrdí, že mikrokontrolér v systému vidí, můžete s ním začít plnohodnotně pracovat. Je však vhodné poznamenat, že pokud je samotná deska Arduino v projektu použita pouze pro připojení tohoto řadiče, je to iracionální.
Stačí převodník USB-UART, protože esp8266 nepoužívá "mozky" arduina a jeho flash paměť je docela dost na to, aby uložila pár základních knihoven a firmwaru. V souladu s tím nemá smysl utrácet peníze navíc za pomocnou desku, pokud ji můžete jednoduše připájet k převodníku a nadále ji používat v projektu. Zároveň tím, že připojíte pomocný zdroj energie a nebudete se bát, že se data přestanou v nejklíčovějším okamžiku přenášet kvůli nedostatku napájení systému.
Důležitá poznámka! U posledního obvodu nahrajeme skicu do Arduina jako obvykle, ale protože je modul ESP8266 připojen na piny 0 a 1, programování je nemožné. Kompilátor zobrazí chybu. Odpojte vodiče vedoucí k ESP8266 od kolíků 0 a 1, proveďte programování a poté vraťte kolíky na místo a stiskněte tlačítko reset na Arduinu.