Obsah:

Jak používat Bluetooth (BLE) s ESP32: 3 kroky
Jak používat Bluetooth (BLE) s ESP32: 3 kroky

Video: Jak používat Bluetooth (BLE) s ESP32: 3 kroky

Video: Jak používat Bluetooth (BLE) s ESP32: 3 kroky
Video: Jak připojit ESP32 vestavěný Bluetooth k smartphonu 2024, Listopad
Anonim

#####POZNÁMKA#####

Metoda ukázaná v tomto Instructables je stará a zastaralá. Podívejte se na toto video, kde najdete nejnovější metodu.

###############

Zatímco ESP32 se může pochlubit rozsáhlým seznamem funkcí (Wikipedia), největší funkcí, která upoutá pozornost, je vestavěný bluetooth v4.2 s podporou BLE. Toto prohlášení však může být zavádějící, zatímco hardware je k dispozici, softwarová podpora pro použití Bluetooth chybí. (Je ve vývoji)

Pro ty, kteří nevědí, co je BLE, to znamená Bluetooth Low Energy. Je to protokol bluetooth, který ve srovnání s „klasickým“Bluetooth zvyšuje výrazně nižší spotřebu energie.

V tomto Instructables vám ukážu, jak můžete použít omezené (softwarové) zdroje, které máte k dispozici, k odesílání dat z desky ESP32 do vašeho telefonu přes BLE.

Několik zřeknutí se odpovědnosti…

Několik poznámek, které bych měl zmínit, než budete v této příručce pokračovat dále.

Poznámka 1: Když říkám, že podpora Bluetooth ještě není k dispozici, mám na mysli vývojové prostředí arduino.

Podpora může být velmi dobře dostupná v oficiální SDK i v IDF, ale nenašel jsem pro ně žádné kompetentní pokyny.

Poznámka 2: Metoda, kterou používám, je do značné míry řešením a nikoli tím, jak by v ideálním případě mělo fungovat BLE. Knihovna podporující vytváření služeb v BLE zde pro prostředí arduino není.

Jediná věc, kterou můžete spolehlivě udělat, je vytvořit maják, který inzeruje jeho jméno. Komentář na YouTube to vyjádřil velmi elegantně: "LOL, brutální hack. Ale co můžete dělat?"

Poznámka 3: Jediný druh dat, která můžete odeslat, je řetězec.

Můžete se velmi dobře rozhodnout kódovat a dekódovat data jiného druhu do az řetězce, ale to je mimo rozsah této příručky.

Krok 1: Příklad sestavení

Image
Image
Příklad sestavení
Příklad sestavení
Příklad sestavení
Příklad sestavení
Příklad sestavení
Příklad sestavení

Pokud jste zde jen kvůli vysvětlení, můžete tento krok přeskočit, ale jeho procházení vám může dát trochu větší jasnost.

Nejprve vytvořím příklad projektu a poté se pokusím vysvětlit, jak funguje a jak můžete replikovat komunikaci Bluetooth. Postavíme přenosný teplotní senzor, který odešle živý přenos do vašeho smartphonu. Sestavení může běžet několik dní na jednom li-po a snadno demonstruje výhody BLE.

Modul můžete použít jako tácek k izolaci nápojů a obdržení upozornění, jakmile váš nápoj dosáhne optimální teploty. Protože by to byl průšvih, kdybyste museli usrkávat čaj, který měl stupeň nad 40.

Jediný hardware, který potřebujete, je deska ESP32 a digitální teplotní senzor. Moje deska podporuje externí baterii, takže používám 3,7V li-po, který jsem zachránil z nějakého starého zařízení, aby byl tento projekt přenosný.

Hardware

Připojení pro teplotní senzor je jednoduché. Červený vodič se připojuje na 3,3 V, černý na zem (GND), žlutý na GPIO 2, který je na mé desce označen jako D9. Mezi červený a žlutý vodič připojte odpor 4,7 kOhm. Nepoužívám odpor, místo toho používám 3pinový konektor, který lze připojit k mému senzoru. Má vestavěný pull up odpor.

Li-po by měl být opravdu připojen pomocí konektoru JST, ale nemohl jsem se obtěžovat ho koupit, takže jsem do konektoru vložil některé propojovací kabely (žena-žena) a připájel další pár na svorky baterie. To zajišťuje spolehlivé připojení a provizorní vypínač.

Nyní jako kryt projektu používám disk z polystyrenu, který byl vystřižen z většího listu. Díky tomu je skvělý izolant. Další mnohem menší disk je přilepený nahoře, ale trochu stranou. Slouží k omotání extra délky drátů, aby se nepohybovaly všude. Po velkorysém nasazení lepidla a malého otvoru pro senzorovou sondu jste připraveni přejít k softwaru.

Software

Pokud ještě nemáte nainstalované arduino IDE, přejděte na tento odkaz a stáhněte si jej. Software arduino ve výchozím nastavení neobsahuje definice desek pro různé desky ESP32. Chcete -li je přimět jít tímto odkazem a stáhnout soubory ve formátu zip. Musíte je rozbalit na toto místo:

C:/Uživatelé // Dokumenty/Arduino/hardware/espserrif/ESP32

Kde je vaše uživatelské jméno na vašem PC. Ujistěte se, že různé soubory jsou k dispozici ve složce ESP32 a nejsou v jiné složce.

Nyní, když spustíte software arduino a přejdete na nástroje-> desky, měli byste při posouvání dolů vidět různé desky ESP32.

Většina digitálních teplotních senzorů používá ke komunikaci s mikrořadiči protokol OneWire, takže potřebujeme získat knihovnu. Přejděte na skicu-> zahrnout knihovnu-> spravovat knihovny a hledat onewire a nainstalovat knihovnu, která je mimochodem příliš mnoho autorů. Nepotřebujete rozbočovač onewire. Ignorujte to.

Nyní si můžete stáhnout a otevřít kód připojený k tomuto kroku (teplota-příklad.ino).

Pokud používáte jiný snímač než já, budete muset kód odpovídajícím způsobem změnit. Nahraďte kód pod getTemp (). Stačí vrátit konečnou teplotu ve formě

Vrátit se;

Kde je plovák obsahující teplotu.

Zapojte desku, z nástrojů vyberte správnou desku a port a klikněte na Nahrát.

Pokud kód odmítne nahrát, odpojte snímač a připojte GPIO 0 k zemi. Po odeslání obnovte připojení.

Váš ESP by nyní měl křičet teplotu vaší kávy do světa, ale potřebujete někoho, kdo tomu rozumí.

Aplikace pro Android

Omlouváme se uživatelům iPhonu (… vlastně ne).

Stáhněte si apk odtud a nainstalujte jej. Když spustíte aplikaci, uvítá vás velmi jednoduché rozhraní.

Pokud se zobrazí chybová zpráva „reklama není podporována“, klikněte na OK a ignorujte ji, ale pokud se zobrazí zpráva „BLE není podporováno“, váš telefon nemá Bluetooth 4.0 nebo vyšší a nelze jej spustit aplikace.

Ujistěte se, že je v telefonu zapnuté Bluetooth, a klikněte na „Spustit skenování“, pokud je esp v dosahu a zapnuté, měli byste dostávat nějaké hodnoty teploty.

Možné chyby:

  • -1000:: To znamená, že vaše zařízení nemohlo najít ESP. ujistěte se, že je zapnuté Bluetooth, a zkuste restartovat ESP.
  • SNA:: To znamená, že váš telefon přijímá data z ESP, ale ESP sám nemohl najít teplotní čidlo na GPIO 2. Ujistěte se, že jsou připojení bezpečná, zkontrolujte, zda používáte odpor správné hodnoty. Znovu zkontrolujte schémata desky, zda jste připojeni k GPIO 2 a ne k pinu označenému jako D2.

Krok 2: Vysvětlení

BLE normálně funguje tak, že zařízení inzeruje své jméno jako maják, toto jméno může vidět kdokoli a slouží k identifikaci zařízení. Poté může zařízení vytvářet různé služby, které vidí ostatní, když se k němu připojí. Tyto služby mohou mít různé datové toky.

Pro např. Zařízení s názvem „Meteorologická stanice“může pod ním obsluhovat například „Teplota“, „Vlhkost“a „Vítr“. Když jiné zařízení BLE, jako je váš smartphone, vyhledává zařízení, uvidí meteorologickou stanici a když se k ní připojí, bude schopno přijímat datové toky pod odpovídajícími různými službami.

Knihovny (pro ESP32), které jsou nám aktuálně k dispozici, nám umožňují vytvořit maják, který mohou objevit ostatní, ale to je jeho rozsah. Nemůžeme vytvářet služby ani se k němu nemůže připojit žádné zařízení.

Jak tedy odesílám data bez vytváření služeb, je použití techniky podobné protokolu WiFi s názvem Beacon Stuffing. To znamená, že zahrnuji data, která mají být odeslána, v samotném názvu majáku. To mi umožňuje inzerovat data bez nutnosti připojení dalších zařízení k majáku.

ble.begin (beaconMsg); // beaconMsg je inzerovaný název

Knihovnu SimpleBLE používáme k vytvoření majáku s jeho názvem ve formátu ESP. Kde „ESP“vždy zůstává nezměněn na začátku názvu a je nahrazen nejnovějšími daty vrácenými funkcí getValue () každých 100 milisekund.

float getValue () {return sensorValue;}

Aplikace pro Android vyhledává názvy zařízení BLE začínající na „ESP“, jakmile je najde, rozdělí název a zobrazí pouze data od konce.

Komunikace je pouze jedním ze způsobů, aplikace nic neposílá zpět.

Krok 3: Závěr

Na konci dne tato metoda nenahrazuje řádně implementovanou knihovnu BLE, ale může stačit některé projekty odložit, dokud do Arduina nepřijde kompletní podpora BLE. Naštěstí vám tento Instructables pomohl.

VELKÉ díky DFRobot.com za zaslání těchto produktů:

  • Deska ESP32 FireBeetle
  • FireBeetle Expantion Shield
  • Snímač teploty DS18B20

Nedávno jsem našel tuto knihovnu. ReadME tvrdí, že se můžete připojit k jiným zařízením BLE a přijímat data (nemůžete se inzerovat). Nezkoušel jsem to, ale pokud máte zájem, můžete se na to podívat.

Video z projektu si můžete prohlédnout na: YouTube

Doporučuje: