Sadržaj:

Kako koristiti Bluetooth (BLE) s ESP32: 3 koraka
Kako koristiti Bluetooth (BLE) s ESP32: 3 koraka

Video: Kako koristiti Bluetooth (BLE) s ESP32: 3 koraka

Video: Kako koristiti Bluetooth (BLE) s ESP32: 3 koraka
Video: Как подключить встроенный Bluetooth ESP32 к смартфону 2024, Lipanj
Anonim

#####BILJEŠKA#####

Metoda prikazana u ovim uputama stara je i zastarjela. Za najnoviju metodu pogledajte ovaj video.

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

Dok se ESP32 može pohvaliti opsežnim popisom značajki (Wikipedia), najveća značajka koja privlači pažnju je ugrađeni bluetooth v4.2 s podrškom za BLE. No ta izjava može dovesti u zabludu, dok postoji hardver, nedostaje softverska podrška za korištenje Bluetootha. (U razvoju je)

Za one koji ne znaju što je BLE, to znači Bluetooth Low Energy. To je Bluetooth protokol koji povećava znatno nižu potrošnju energije u odnosu na "klasični" Bluetooth.

U ovom Instructables ću vam pokazati kako možete koristiti ograničene (softverske) resurse koji su vam na raspolaganju za slanje podataka s ESP32 ploče na vaš telefon putem BLE -a.

Nekoliko odricanja od odgovornosti…

Nekoliko napomena koje bih trebao spomenuti prije nego nastavite s ovim vodičem.

Napomena 1: Kad kažem da Bluetooth podrška još nije dostupna, mislim u arduino razvojnom okruženju.

Podrška može biti dostupna u službenom SDK -u, ali i IDF -u, ali za njih nisam pronašao nikakve nadležne upute.

Napomena 2: Metoda koju ja koristim uvelike je zaobilazno rješenje, a ne kako bi BLE idealno trebao djelovati. Podrška knjižnice za stvaranje usluga u BLE -u nije ovdje za arduino okruženje.

Jedino što možete učiniti pouzdano je stvaranje Beacon -a koji oglašava njegovo ime. Komentar na YouTubeu izrazio je to vrlo elegantno: "LOL, brutalno hakiranje. Ali što možeš učiniti?"

Napomena 3: Jedina vrsta podataka koju možete poslati je niz.

Možda biste se odlučili kodirati i dekodirati druge vrste podataka u niz i iz njega, ali to je izvan opsega ovog vodiča.

Korak 1: Primjer izrade

Image
Image
Primjer izrade
Primjer izrade
Primjer izrade
Primjer izrade
Primjer izrade
Primjer izrade

Ako ste samo ovdje radi objašnjenja, možete preskočiti ovaj korak, ali prolazak kroz njega mogao bi vam dati malo više jasnoće.

Prvo ću izgraditi primjer projekta, a zatim ću pokušati objasniti kako to funkcionira i kako možete replicirati Bluetooth komunikaciju. Izradit ćemo prijenosni temperaturni senzor koji šalje prijenos uživo na vaš pametni telefon. Izgradnja može raditi danima na jednom li-po-u i lako dokazuje prednosti BLE-a.

Modul možete koristiti kao podmetač za čašu za izolaciju pića i primiti obavijest čim napitak dosegne optimalnu temperaturu. Jer bila bi travestija kad biste morali pijuckati čaj koji je bio iznad 40.

Jedini hardver koji vam je potreban je ploča ESP32 i digitalni senzor temperature. Moja ploča podržava vanjsku bateriju pa koristim 3,7 V li-po koji sam spasio s nekog starog uređaja kako bih ovaj projekt učinio prijenosnim.

Hardver

Priključci osjetnika temperature su jednostavni. Crvena žica spaja se na 3.3v, crna se spaja na masu (gnd), žuta se spaja na GPIO 2 koji je na mojoj ploči označen kao D9. Spojite otpornik od 4,7 k ohma između crvene i žute žice. Ne koristim otpornik, već koristim 3-polni priključak koji se može priključiti uz moj senzor. Ima ugrađen pull up otpornik.

Li-po bi se doista trebao spojiti pomoću JST konektora, ali nisam se mogao potruditi kupiti ga, pa sam samo ukopčao neke kratkospojne kabele (ženski u ženski) u konektor i lemio drugi par na stezaljke baterije. To čini pouzdanu vezu i improvizirani prekidač za napajanje.

Sada kao kućište za projekt koristim disk od stiropora izrezan iz većeg lista. To ga čini izvrsnim izolatorom. Drugi mnogo manji disk zaglavljen je na vrhu, ali malo sa strane. Ovo služi za omatanje dodatne duljine žica kako ne bi visjele posvuda. Nakon velikodušnog korištenja vašeg ljepila i male rupe za senzorsku sondu, spremni ste za nastavak softvera.

Softver

Ako već nemate instaliran arduino IDE, idite na ovu vezu da biste ga preuzeli. Arduino softver prema zadanim postavkama ne dolazi s definicijama ploča za različite ESP32 ploče. Da biste ih natjerali da odu na ovu vezu i preuzmu datoteke u zip datoteci. Morate ih otpakirati na ovo mjesto:

C:/Korisnici // Dokumenti/Arduino/hardver/espserrif/ESP32

Gdje je vaše korisničko ime na računalu. Provjerite jesu li različite datoteke dostupne u mapi ESP32, a ne u drugoj mapi.

Sada, ako pokrenete softver arduino i odete na alate-> ploče, trebali biste vidjeti razne ESP32 ploče pri pomicanju prema dolje.

Većina digitalnih senzora temperature koristi OneWire protokol za komunikaciju s mikro kontrolerima pa moramo nabaviti knjižnicu. Idite na skicu-> uključi biblioteku-> upravljajte knjižnicama i potražite onewire te instalirajte knjižnicu koja ima previše autora. Ne treba vam jednožično čvorište. Ignoriraj to.

Sada možete preuzeti i otvoriti kôd priložen ovom koraku (temperature-example.ino).

Ako koristite drugi senzor od mene, morat ćete promijeniti kôd u skladu s tim. Zamijenite kôd pod getTemp (). Samo vratite konačnu temperaturu u obliku

Povratak;

Gdje je plovak koji sadrži temperaturu.

Priključite ploču, odaberite ispravnu ploču i priključak ispod alata i pritisnite upload.

Ako se kôd odbije učitati, odspojite senzor i spojite GPIO 0 na masu. Vratite veze nakon prijenosa.

Vaš bi ESP sada trebao vrištati temperaturu vaše kave u svijet, ali trebate nekoga tko to može razumjeti.

Aplikacija za Android

Nažalost korisnici iPhonea (… ne baš).

Preuzmite apk odavde i instalirajte ga. Kad pokrenete aplikaciju, dočekat će vas vrlo jednostavno sučelje.

Ako dobijete poruku o pogrešci "Oglašavanje nije podržano", kliknite U redu i zanemarite je, ali ako dobijete poruku da "BLE nije podržan", vaš telefon nema Bluetooth 4.0 ili noviji i ne bi se mogao pokrenuti aplikaciju.

Provjerite je li Bluetooth na vašem telefonu uključen i kliknite ‘Pokreni skeniranje’, sve dok je esp u dosegu i uključen, trebali biste primati neku vrijednost temperature.

Moguće greške:

  • -1000:: To znači da vaš uređaj nije mogao pronaći ESP. provjerite je li Bluetooth uključen i pokušajte ponovno pokrenuti ESP.
  • SNA:: To znači da vaš telefon prima podatke od ESP -a, ali sam ESP nije mogao pronaći senzor temperature na GPIO -u 2. Provjerite jesu li veze sigurne, provjerite koristite li otpornik ispravne vrijednosti. Dvaput provjerite sheme vaše ploče da li ste spojeni na GPIO 2, a ne na pin označen kao D2.

Korak 2: Objašnjenje

Kako BLE normalno radi je da uređaj oglašava svoje ime poput svjetionika, to ime može vidjeti svatko i koristi se za identifikaciju uređaja. Tada uređaj može stvoriti različite usluge koje vide drugi kada se povežu s njim. Ove usluge mogu imati različite tokove podataka.

Za npr. Uređaj pod nazivom "Meteorološka stanica" mogao se servisirati ispod njega, poput "Temperatura", "Vlažnost" i "Vjetar". Kad bi drugi BLE uređaj, poput vašeg pametnog telefona, tražio uređaje, vidio bi meteorološku postaju, a kada se poveže s njim, mogao bi primati podatkovne tokove pod odgovarajućim različitim uslugama.

Knjižnice (za ESP32) koje su nam trenutno dostupne omogućuju nam stvaranje svjetionika koji drugi mogu otkriti, ali to je domet toga. Ne možemo stvarati usluge niti se bilo koji uređaj može povezati s njim.

Dakle, kako šaljem podatke bez stvaranja usluga primjenjujem tehniku sličnu WiFi protokolu pod nazivom Beacon Stuffing. To znači da uvrštavam podatke koji se šalju unutar naziva beacon. To mi omogućuje oglašavanje podataka bez potrebe za povezivanjem drugih uređaja sa svjetionikom.

ble.begin (beaconMsg); // beaconMsg je oglašeni naziv

Knjižnicu SimpleBLE koristimo za stvaranje svjetionika s njegovim imenom u formatu ESP -a. Gdje 'ESP' uvijek ostaje nepromijenjen na početku imena i zamjenjuje se najnovijim podacima koje funkcija getValue () vraća svakih 100 milisekundi.

float getValue () {return sensorValue;}

Android aplikacija traži nazive BLE uređaja koji počinju s 'ESP', jednom pronađena, razdvaja naziv i prikazuje samo podatke s kraja.

Komunikacija je samo jedan način, aplikacija ne šalje ništa natrag.

Korak 3: Zaključak

Na kraju dana, ova metoda ne zamjenjuje ispravno implementiranu BLE knjižnicu, ali bi moglo biti dovoljno za preusmjeravanje nekih projekata dok potpuna podrška za BLE ne dođe u Arduino. Nadamo se da vam je ovaj Instructables bio od neke pomoći.

VELIKA Hvala DFRobot.com što mi je poslao ove proizvode:

  • ESP32 ploča FireBeetle
  • Štit za proširenje FireBeetle
  • Senzor temperature DS18B20

Nedavno sam pronašao ovu biblioteku. ReadME tvrdi da se možete povezati s drugim BLE uređajima za primanje podataka (ne možete se oglašavati). Nisam probao, ali možete provjeriti ako ste zainteresirani.

Videozapis projekta možete provjeriti na: YouTube

Preporučeni: