Innholdsfortegnelse:

Slik bruker du Bluetooth (BLE) med ESP32: 3 trinn
Slik bruker du Bluetooth (BLE) med ESP32: 3 trinn

Video: Slik bruker du Bluetooth (BLE) med ESP32: 3 trinn

Video: Slik bruker du Bluetooth (BLE) med ESP32: 3 trinn
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, November
Anonim

#####MERK#####

Metoden vist i denne instruksjonsboken er gammel og utdatert. Se denne videoen for den nyeste metoden.

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

Mens ESP32 har en omfattende funksjonsliste (Wikipedia), er den største funksjonen som trekker blikket den innebygde bluetooth v4.2 med BLE-støtte. Men den uttalelsen kan være misvisende, mens maskinvaren er der, mangler programvarestøtten for bruk av Bluetooth. (Det er under utvikling)

For de som ikke vet hva BLE er, står det for Bluetooth Low Energy. Det er en Bluetooth -protokoll som øker betydelig lavere strømforbruk sammenlignet med "Classic" Bluetooth.

I denne instruksen vil jeg vise deg hvordan du kan bruke de begrensede (programvare) ressursene du har til disposisjon for å sende data fra et ESP32 -kort til telefonen over BLE.

Noen få ansvarsfraskrivelser…

Noen få ting jeg bør nevne før du fortsetter med denne guiden.

Merknad 1: Når jeg sier at Bluetooth -støtte ikke er tilgjengelig ennå, mener jeg i arduino -utviklingsmiljøet.

Støtten kan godt være tilgjengelig i den offisielle SDK så vel som IDF, men jeg har ikke funnet noen kompetente instruksjoner for dem.

Merknad 2: Metoden jeg bruker er i stor grad en løsning og ikke hvordan BLE ideelt sett skal fungere. Biblioteket støtter for å lage tjenester i BLE er ikke her for arduino -miljøet.

Det eneste du kan gjøre pålitelig er å lage et Beacon som annonserer navnet. En YouTube -kommentar sa det veldig elegant: "LOL, en brutal hack. Men hva kan du gjøre?"

Merknad 3: Den eneste typen data du kan sende er streng.

Du kan godt bestemme deg for å kode og dekode andre typer data til og fra streng, men det er utenfor omfanget av denne veiledningen.

Trinn 1: Eksempelbygningen

Image
Image
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen

Hvis du bare er her for forklaringen, kan du hoppe over dette trinnet, men å gå gjennom det kan gi deg litt mer klarhet.

Først skal jeg bygge et eksempelprosjekt, og deretter skal jeg prøve å forklare hvordan det fungerer og hvordan du kan replikere Bluetooth -kommunikasjonen. Vi skal bygge en bærbar temperatursensor som sender en live feed til smarttelefonen din. Bygget kan kjøre i flere dager på en enkelt li-po og demonstrerer enkelt fordelene med BLE.

Du kan bruke modulen som en dalbane for å isolere drikkene dine og få et varsel så snart drikken din når den optimale temperaturen. Fordi det ville være en travesty hvis du måtte nippe til en te som var en grad over 40.

Den eneste maskinvaren du trenger er et ESP32 -kort og en digital temperatursensor. Brettet mitt støtter eksternt batteri, så jeg bruker en 3,7v li-po som jeg reddet fra en gammel enhet for å gjøre dette prosjektet bærbart.

Maskinvare

Tilkoblingene til temperatursensoren er enkle. Den røde ledningen kobles til 3.3v, svart kobles til bakken (gnd), gul kobler til GPIO 2 som på brettet mitt er merket som D9. Koble en 4,7k ohm motstand mellom den røde og gule ledningen. Jeg bruker ikke motstanden, i stedet bruker jeg en 3-pinners pluggbar terminal som fulgte med sensoren min. Den har en innebygd opptrekksmotstand.

Li-po burde virkelig være tilkoblet ved hjelp av en JST-kontakt, men jeg kunne ikke gidde å kjøpe en, så jeg skoet bare inn noen (kvinnelige til kvinnelige) jumperkabler i kontakten og loddet et annet par til batteripolene. Dette gir en pålitelig tilkobling og en provisorisk strømbryter.

Nå som prosjektkapsling bruker jeg en isoporskive som er kuttet ut av et større ark. Dette gir en flott isolator. En annen mye mindre disk sitter fast på toppen, men litt til siden. Dette er for å pakke inn den ekstra lengden på ledninger, slik at de ikke henger overalt. Etter en sjenerøs bruk av limet ditt og et lite hull for sensorsonden, er du klar til å fortsette til programvaren.

Programvare

Hvis du ikke allerede har arduino IDE installert, kan du gå til denne lenken for å laste den ned. Arduino -programvaren kommer som standard ikke med brettdefinisjonene for de forskjellige ESP32 -kortene. For å få dem til å gå denne lenken og laste ned filene i en zip. Du må pakke dem ut til dette stedet:

C:/Brukere // Dokumenter/Arduino/hardware/espserrif/ESP32

Hvor er brukernavnet ditt på din PC. Kontroller at de forskjellige filene er tilgjengelige under ESP32 -mappen og ikke er under en annen mappe.

Hvis du starter arduino-programvaren og går til verktøy-> tavler, bør du se forskjellige ESP32-tavler når du blar ned.

De fleste digitale temperatursensorer bruker OneWire -protokollen for å kommunisere med mikrokontrollerne, så vi må skaffe biblioteket. Gå til skisse-> inkluder bibliotek-> administrer biblioteker og søk etter onewire og installer biblioteket som er altfor mange forfattere. Du trenger ikke onewire -huben. Ignorer det.

Nå kan du laste ned og åpne koden som er knyttet til dette trinnet (temperatur-eksempel.ino).

Hvis du bruker en annen sensor enn meg, må du endre koden tilsvarende. Erstatt koden under getTemp (). Bare returner sluttemperaturen i form av

Komme tilbake;

Hvor er flottøren som inneholder temperaturen.

Plugg inn kortet, velg riktig brett og port under verktøyene og trykk på Last opp.

Hvis koden nekter å laste opp, kobler du fra sensoren og kobler GPIO 0 til bakken. Gjenopprett tilkoblingene etter opplasting.

ESP -en din skal nå skrike temperaturen på kaffen til verden, men du trenger noen som kan forstå det.

Android -appen

Beklager iPhone -brukere (… egentlig ikke).

Last ned apk herfra og installer den. Når du starter appen vil du bli møtt med et veldig enkelt grensesnitt.

Hvis du får en feilmelding som sier "annonsering støttes ikke", klikker du OK og ignorer den, men hvis du får en melding om at "BLE ikke støttes", har ikke telefonen Bluetooth 4.0 eller høyere og kan ikke kjøres appen.

Sørg for at Bluetooth på telefonen er på, og klikk på "Start skanning", så lenge esp er innenfor rekkevidde og slått på, bør du motta en viss temperaturverdi.

Mulige feil:

  • -1000:: Dette betyr at enheten ikke fant ESP. Kontroller at Bluetooth er på, og prøv å starte ESP på nytt.
  • SNA:: Dette betyr at telefonen din mottar data fra ESP, men ESP selv kunne ikke finne en temperatursensor på GPIO 2. Kontroller at tilkoblingene er sikre, se om du bruker en motstand av riktig verdi. Dobbeltsjekk med brettskjemaene dine om du er koblet til GPIO 2 og ikke en pinne merket som D2.

Trinn 2: Forklaringen

Hvordan BLE normalt fungerer er at en enhet annonserer navnet sitt som et fyrtårn, dette navnet kan sees av alle og brukes til å identifisere enheten. Deretter kan enheten lage forskjellige tjenester som blir sett av andre når de kobler seg til den. Disse tjenestene kan ha forskjellige datastrømmer.

For f.eks. En enhet som heter 'Weather Station' kan ha betjent under den som 'Temperatur', 'Fuktighet' og 'Vind'. Når en annen BLE -enhet som smarttelefonen din søker etter enheter, vil den se værstasjonen, og når den kobles til den, vil den kunne motta datastrømmene under som tilsvarer de forskjellige tjenestene.

Bibliotekene (for ESP32) som er tilgjengelige for oss, lar oss lage et fyrtårn som andre kan oppdage, men det er omfanget av det. Vi kan ikke opprette tjenester, og ingen enhet kan koble seg til den.

Så hvordan jeg sender data uten å opprette tjenester er ved å bruke en teknikk som ligner WiFi -protokollen kalt Beacon Stuffing. Dette betyr at jeg inkluderer data som skal sendes i selve beacon -navnet. Dette gjør det mulig for meg å annonsere data uten at det kreves at andre enheter kobler seg til fyret.

ble.begin (beaconMsg); // beaconMsg er det annonserte navnet

Vi bruker SimpleBLE -biblioteket til å lage et fyrtårn med navnet i formatet ESP. Der ‘ESP’ alltid forblir uendret i begynnelsen av navnet og erstattes med de siste dataene som returneres av getValue () -funksjonen hvert 100 millisekund.

float getValue () {retur sensorValue;}

Android -appen ser etter BLE -enhetsnavn som begynner med 'ESP', når den er funnet, deler den navnet og viser bare dataene fra slutten.

Kommunikasjonen er bare en måte, appen sender ikke noe tilbake.

Trinn 3: Konklusjon

På slutten av dagen er denne metoden ingen erstatning for et riktig implementert BLE -bibliotek, men det kan være nok å tide noen prosjekter over til fullstendig BLE -støtte kommer til Arduino. Forhåpentligvis var denne instruksen til hjelp for deg.

En STOR takk til DFRobot.com for at du sendte meg disse produktene:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • DS18B20 Temperatursensor

Jeg fant nylig dette biblioteket. ReadME hevder at du kan koble til andre BLE -enheter for å motta data (kan ikke annonsere selv). Jeg har ikke prøvd det, men du kan sjekke det hvis du er interessert.

Du kan sjekke prosjektvideoen på: YouTube

Anbefalt: