Kazalo:

Kako uporabljati Bluetooth (BLE) z ESP32: 3 koraki
Kako uporabljati Bluetooth (BLE) z ESP32: 3 koraki

Video: Kako uporabljati Bluetooth (BLE) z ESP32: 3 koraki

Video: Kako uporabljati Bluetooth (BLE) z ESP32: 3 koraki
Video: $5 WiFi Camera Setup | ESP32 Wifi Setup view on Mobile phone 2024, Junij
Anonim

#####OPOMBA#####

Metoda, prikazana v tem navodilu, je stara in zastarela. Oglejte si ta videoposnetek za najnovejšo metodo.

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

Medtem ko se ESP32 ponaša z obsežnim seznamom funkcij (Wikipedia), je največja značilnost, ki pritegne pozornost, vgrajen bluetooth v4.2 s podporo BLE. Toda ta izjava je lahko zavajajoča, medtem ko strojna oprema obstaja, programska podpora za uporabo Bluetooth manjka. (Je v razvoju)

Za tiste, ki ne vedo, kaj je BLE, pomeni Bluetooth Low Energy. To je protokol bluetooth, ki znatno poveča porabo energije v primerjavi s klasičnim bluetoothom.

V tem navodilu vam bom pokazal, kako lahko z omejenimi (programskimi) sredstvi, ki so vam na voljo, pošljete podatke z plošče ESP32 v telefon prek BLE.

Nekaj omejitev odgovornosti…

Preden nadaljujete s tem priročnikom, bi rad omenil nekaj stvari.

Opomba 1: Ko rečem, da podpora Bluetooth še ni na voljo, mislim v razvojnem okolju arduino.

Podpora je lahko na voljo tako v uradnem SDK kot v IDF, vendar za njih nisem našel nobenih pristojnih navodil.

Opomba 2: Metoda, ki jo uporabljam, je zelo rešitev in ne, kako bi BLE v idealnem primeru deloval. Knjižnična podpora za ustvarjanje storitev v BLE ni tukaj za okolje arduino.

Edino, kar lahko zanesljivo naredite, je ustvariti svetilnik, ki oglašuje njegovo ime. YouTube komentar je izrazil zelo elegantno: "LOL, brutalni kramp. Kaj pa lahko narediš?"

Opomba 3: Edina vrsta podatkov, ki jih lahko pošljete, je niz.

Morda se boste odločili kodirati in dekodirati druge vrste podatkov v niz in iz njega, vendar to presega področje uporabe tega priročnika.

1. korak: Primer gradnje

Image
Image
Primer gradnje
Primer gradnje
Primer gradnje
Primer gradnje
Primer gradnje
Primer gradnje

Če ste samo tukaj za razlago, lahko ta korak preskočite, vendar vam bo morda z njim malo jasneje.

Najprej bom zgradil primer projekta, nato pa bom poskušal razložiti, kako deluje in kako lahko ponovite komunikacijo Bluetooth. Zgradili bomo prenosni temperaturni senzor, ki pošilja prenos v živo na vaš pametni telefon. Zgradba lahko teče več dni na enem samem li-po in zlahka dokaže prednosti BLE.

Modul lahko uporabite kot podstavek za izolacijo svojih pijač in prejmete obvestilo takoj, ko pijača doseže optimalno temperaturo. Ker bi bila parodija, če bi morali srkati čaj nad 40 stopinj.

Edina strojna oprema, ki jo potrebujete, je plošča ESP32 in digitalni temperaturni senzor. Moja plošča podpira zunanjo baterijo, zato uporabljam 3,7-voltni li-po, ki sem ga rešil iz neke stare naprave, da bi bil ta projekt prenosljiv.

Strojna oprema

Priključki za temperaturni senzor so preprosti. Rdeča žica se priključi na 3.3V, črna na ozemljitev (gnd), rumena se poveže z GPIO 2, ki je na moji plošči označen kot D9. Med rdečo in rumeno žico priključite 4,7 k ohmski upor. Ne uporabljam upora, namesto tega uporabljam 3-polni priključek, ki je priložen senzorju. Vgrajen ima vlečni upor.

Li-po bi res moral biti priključen s konektorjem JST, vendar se nisem motil kupiti, zato sem samo priključil nekaj (ženskih na ženskih) mostičnih kablov v konektor in spajal še en par na sponke akumulatorja. To omogoča zanesljivo povezavo in improvizirano stikalo za vklop.

Zdaj kot ohišje za projekt uporabljam disk iz stiropora, ki je bil izrezan iz večjega lista. Zaradi tega je odličen izolator. Še en precej manjši disk je obtičal na vrhu, vendar nekoliko ob strani. To je za zavijanje dodatne dolžine žic, da ne visijo povsod. Po velikodušnem nanašanju lepila in majhni luknji za senzorsko sondo ste pripravljeni nadaljevati s programsko opremo.

Programska oprema

Če arduino IDE še nimate nameščenega, pojdite na to povezavo, da ga prenesete. Programska oprema arduino privzeto ne vsebuje definicij plošč za različne plošče ESP32. Če želite, da gredo na to povezavo in prenesejo datoteke v zip. Odpreti jih morate na to mesto:

C:/Uporabniki // Dokumenti/Arduino/strojna oprema/espserrif/ESP32

Kje je vaše uporabniško ime v računalniku. Prepričajte se, da so različne datoteke na voljo v mapi ESP32 in niso v drugi mapi.

Zdaj, če zaženete programsko opremo arduino in pojdite na orodne plošče, bi se morali pri pomikanju navzdol prikazati različne plošče ESP32.

Večina digitalnih temperaturnih senzorjev uporablja protokol OneWire za komunikacijo z mikro krmilniki, zato moramo dobiti knjižnico. Pojdite na skico-> vključi knjižnico-> upravljajte knjižnice in poiščite onewire ter namestite knjižnico, ki je preveč avtorjev. Ne potrebujete vozlišča onewire. Ignorirajte ga.

Zdaj lahko prenesete in odprete kodo, priloženo temu koraku (temperature-example.ino).

Če uporabljate drugačen senzor od mene, boste morali ustrezno spremeniti kodo. Kodo zamenjajte pod getTemp (). Samo vrnite končno temperaturo v obliki

Vrnitev;

Kje je plovec, ki vsebuje temperaturo.

Priključite ploščo, izberite pravilno ploščo in vrata pod orodji in pritisnite nalaganje.

Če se koda noče naložiti, odklopite senzor in priključite GPIO 0 na maso. Po nalaganju obnovite povezave.

Vaš ESP bi moral kričati temperaturo vaše kave v svet, vendar potrebujete nekoga, ki to lahko razume.

Aplikacija za Android

Žal uporabniki iPhone -a (… ne res).

Od tu prenesite apk in ga namestite. Ko zaženete aplikacijo, vas bo pozdravil zelo preprost vmesnik.

Če se prikaže sporočilo o napaki z napisom »oglaševanje ni podprto«, kliknite V redu in ga prezrite, če pa dobite sporočilo, da »BLE ni podprt«, potem vaš telefon nima Bluetootha 4.0 ali novejšega in se ne bo mogel zagnati. aplikacijo.

Prepričajte se, da je Bluetooth v telefonu vklopljen, in kliknite »Začni skeniranje«, če je esp v dosegu in vklopljen, bi morali prejemati neko temperaturno vrednost.

Možne napake:

  • -1000:: To pomeni, da vaša naprava ni našla ESP. preverite, ali je Bluetooth vklopljen, in poskusite znova zagnati ESP.
  • SNA:: To pomeni, da vaš telefon prejema podatke od ESP, vendar sam ESP ni mogel najti temperaturnega senzorja na GPIO 2. Prepričajte se, da so povezave varne, preverite, ali uporabljate upor pravilne vrednosti. S shemami plošče dvakrat preverite, ali ste povezani z GPIO 2 in ne z zatičem, označenim kot D2.

2. korak: Pojasnilo

BLE običajno deluje tako, da naprava svoje ime oglašuje kot svetilnik, to ime lahko vidi vsak in se uporablja za identifikacijo naprave. Nato lahko naprava ustvari različne storitve, ki jih vidijo drugi, ko se povežejo z njo. Te storitve imajo lahko različne tokove podatkov.

Za npr. Naprava z imenom „Vremenska postaja“je lahko pod njo servisirana, na primer „Temperatura“, „Vlažnost“in „Veter“. Ko druga naprava BLE, kot je vaš pametni telefon, išče naprave, bi zagledala vremensko postajo in ko bi se povezala z njo, bi lahko prejela podatkovne tokove pod ustreznimi različnimi storitvami.

Knjižnice (za ESP32), ki so nam trenutno na voljo, nam omogočajo, da ustvarimo svetilnik, ki ga lahko odkrijejo drugi, vendar je to obseg tega. Storitev ne moremo ustvarjati in nobena naprava se ne more povezati z njim.

Torej, kako pošiljam podatke brez ustvarjanja storitev, uporabljam tehniko, podobno protokolu WiFi, imenovano Beacon Stuffing. To pomeni, da vključujem podatke, ki se pošiljajo v imenu svetilnika. To mi omogoča oglaševanje podatkov, ne da bi za povezavo z svetilnikom potrebovali druge naprave.

ble.begin (beaconMsg); // beaconMsg je oglaševano ime

Knjižnico SimpleBLE uporabljamo za ustvarjanje svetilnika z njegovim imenom v obliki ESP. Kjer „ESP“vedno ostane nespremenjen na začetku imena in se nadomesti z najnovejšimi podatki, ki jih funkcija getValue () vrne vsakih 100 milisekund.

float getValue () {return sensorValue;}

Aplikacija android išče imena naprav BLE, ki se začnejo z "ESP", ko je enkrat najdena, razdeli ime in prikaže samo podatke od konca.

Komunikacija je samo ena, aplikacija ne pošilja ničesar nazaj.

3. korak: Zaključek

Konec koncev ta metoda ni nadomestilo za pravilno izvedeno knjižnico BLE, vendar bo morda dovolj, da prepletete nekatere projekte, dokler v Arduino ne pride popolna podpora BLE. Upajmo, da vam je bil ta Instructables v kakšno pomoč.

VELIKA hvala DFRobot.com za pošiljanje teh izdelkov:

  • Plošča ESP32 FireBeetle
  • Razširitveni ščit FireBeetle
  • Temperaturni senzor DS18B20

Pred kratkim sem našel to knjižnico. ReadME trdi, da se lahko povežete z drugimi napravami BLE za sprejem podatkov (ne morete se oglaševati). Nisem poskusil, lahko pa preverite, če vas zanima.

Posnetek projekta si lahko ogledate na: YouTube

Priporočena: