Sadržaj:

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

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

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

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

Metoda prikazana u ovom uputstvu je stara i zastarjela. Za najnoviju metodu pogledajte ovaj video.

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

Dok se ESP32 može pohvaliti opsežnom listom funkcija (Wikipedia), najveća karakteristika koja privlači pažnju je ugrađeni bluetooth v4.2 sa podrškom za BLE. Ali 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 šta je BLE, on znači Bluetooth Low Energy. To je Bluetooth protokol koji povećava značajno nižu potrošnju energije u odnosu na "klasični" Bluetooth.

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

Nekoliko odricanja odgovornosti…

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

Napomena 1: Kada kažem da Bluetooth podrška još nije dostupna, mislim na arduino razvojno okruženje.

Podrška može biti dostupna u službenom SDK -u, kao i u IDF -u, ali za njih nisam našao nikakva nadležna uputstva.

Napomena 2: Metoda koju koristim u velikoj mjeri je zaobilazno rješenje, a ne kako bi BLE idealno trebao funkcionirati. Podrška biblioteke za kreiranje usluga u BLE -u nije ovdje za arduino okruženje.

Jedino što možete pouzdano učiniti je stvoriti Beacon koji oglašava njegovo ime. YouTube komentar to je vrlo elegantno izrazio: "LOL, brutalni hak. Ali šta možeš učiniti?"

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

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
Primer izgradnje
Primer izgradnje
Primer izgradnje
Primer izgradnje
Primer izgradnje
Primer izgradnje

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. Izgradit ćemo prijenosni temperaturni senzor koji šalje prijenos uživo na vaš pametni telefon. Konstrukcija može raditi danima na jednom li-po-u i lako demonstrira 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 lakrdija kad biste morali pijuckati čaj iznad 40 stepeni.

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 prenosivim.

Hardver

Priključci senzora temperature su jednostavni. Crvena žica se spaja 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 utikački terminal koji je isporučen sa mojim senzorom. Ima ugrađen pull up otpornik.

Li-po bi zaista trebao biti povezan pomoću JST konektora, ali nije mi smetalo da ga kupim, 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 čini odličnog izolatora. Još jedan mnogo manji disk zaglavljen je na vrhu, ali malo sa strane. Ovo služi za omotavanje dodatne duljine žica tako da ne visi posvuda. Nakon velikodušnog korištenja vašeg ljepila i male rupe za senzorsku sondu, spremni ste za nastavak softvera.

Softver

Ako još niste instalirali 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 -u. Morate ih otpakirati na ovu lokaciju:

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

Gdje je vaše korisničko ime na računaru. Uverite se da su različite datoteke dostupne u fascikli ESP32, a ne u drugoj fascikli.

Sada, ako pokrenete arduino softver i prijeđete na alati-> ploče, trebali biste vidjeti razne ESP32 ploče prilikom pomicanja prema dolje.

Većina digitalnih senzora temperature koristi OneWire protokol za komunikaciju s mikro kontrolerima pa moramo nabaviti biblioteku. Idite na skicu-> uključi biblioteku-> upravljajte bibliotekama i potražite onewire i instalirajte biblioteku koja ima previše autora. Ne treba vam jednožično čvorište. Zanemari 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.

Uključite ploču, odaberite ispravnu ploču i port ispod alata i pritisnite upload.

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

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

Android aplikacija

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

Preuzmite apk odavde i instalirajte ga. Kada pokrenete aplikaciju, dočekalo bi vas vrlo jednostavno sučelje.

Ako dobijete poruku o grešci "Oglašavanje nije podržano", kliknite U redu i zanemarite je, ali ako dobijete poruku da "BLE nije podržano", 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 dometu 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 ponovo 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 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 bilo tko 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 "Vremenska stanica" može se servisirati ispod njega, poput "Temperatura", "Vlažnost" i "Vjetar". Kada drugi BLE uređaj, poput vašeg pametnog telefona, traži uređaje, vidio bi meteorološku stanicu, a kada se poveže s njim, mogao bi primati tokove podataka u skladu s različitim uslugama.

Biblioteke (za ESP32) koje su nam trenutno dostupne omogućuju nam da stvorimo svjetionik 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 uključujem podatke koji se šalju unutar naziva beacon. To mi omogućava da oglašavam podatke bez potrebe za povezivanjem drugih uređaja na beacon.

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

Koristimo biblioteku SimpleBLE za kreiranje 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 ime 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 nije zamjena za pravilno implementiranu BLE biblioteku, ali bi moglo biti dovoljno da se prerade neki projekti dok potpuna BLE podrška ne stigne u Arduino. Nadamo se da vam je ovaj Instructables bio od neke pomoći.

VELIKO Hvala DFRobot.com -u što mi je poslao ove proizvode:

  • ESP32 ploča FireBeetle
  • FireBeetle Expantion Shield
  • DS18B20 Senzor temperature

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

Video zapis projekta možete provjeriti na: YouTube

Preporučuje se: