Innholdsfortegnelse:
Video: Slik bruker du Bluetooth (BLE) med ESP32: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
#####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
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:
Slik bruker du en feilsøker på en ESP32: 11 trinn (med bilder)
Hvordan bruke en feilsøking på en ESP32: Har du noen gang ønsket å ta en titt inn i koden din for å se hvorfor den oppfører seg som den er? Tradisjonelt i ESP32 -prosjekter ville du ha måttet legge til endeløs utskriftserklæring for å prøve å finne ut hva som foregikk, men det er en bedre måte! En feilsøkingsprogram
ESP32 Bluetooth -opplæring - Slik bruker du innebygd Bluetooth av ESP32: 5 trinn
ESP32 Bluetooth -opplæring | Hvordan bruke innebygd Bluetooth av ESP32: Hei folkens siden ESP32 -kortet kommer med WiFi & Bluetooth begge, men for de fleste prosjektene bruker vi vanligvis bare Wifi, vi bruker ikke Bluetooth. Så i denne instruksjonene viser jeg hvor enkelt det er å bruke Bluetooth av ESP32 & For dine grunnleggende prosjekter
Slik bruker du MQTT med Raspberry Pi og ESP8266: 8 trinn (med bilder)
Hvordan bruke MQTT Med Raspberry Pi og ESP8266: I denne instruksen vil jeg forklare hva MQTT -protokollen er og hvordan den brukes til å kommunisere mellom enheter. Så, som en praktisk demonstrasjon, skal jeg vise deg hvordan du setter opp en enkel to klientsystem, hvor en ESP8266 -modul sender et melding
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: 4 trinn
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: Vi viser deg hvordan du åpner MAC Terminal. Vi viser deg også noen få funksjoner i terminalen, for eksempel ifconfig, endring av kataloger, tilgang til filer og arp. Ifconfig lar deg sjekke IP -adressen din og MAC -annonsen din
Slik bruker du RPLIDAR 360 ° laserskanner med Arduino: 3 trinn (med bilder)
Slik bruker du RPLIDAR 360 ° laserskanner med Arduino: Jeg er en stor fan av å bygge sumobotter, og jeg er alltid på utkikk etter nye interessante sensorer og materialer å bruke for å bygge en bedre, raskere og smartere robot. Jeg fant ut om RPLIDAR A1 som du kan få for $ 99 på DFROBOT.com. Jeg sa at jeg var helt