Indholdsfortegnelse:

Sådan bruges Bluetooth (BLE) med ESP32: 3 trin
Sådan bruges Bluetooth (BLE) med ESP32: 3 trin

Video: Sådan bruges Bluetooth (BLE) med ESP32: 3 trin

Video: Sådan bruges Bluetooth (BLE) med ESP32: 3 trin
Video: Как подключить встроенный Bluetooth ESP32 к смартфону 2024, Juni
Anonim

#####BEMÆRK#####

Metoden vist i denne instruks er gammel og forældet. Se denne video for den nyeste metode.

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

Mens ESP32 kan prale af en omfattende funktionsliste (Wikipedia), er den største funktion, der tiltrækker øjet, den indbyggede bluetooth v4.2 med BLE-understøttelse. Men denne erklæring kan være en misvisende, mens hardwaren er der, mangler softwarensupport til brug af Bluetooth. (Det er under udvikling)

For dem, der ikke ved, hvad BLE er, står det for Bluetooth Low Energy. Det er en bluetooth -protokol, der øger betydeligt lavere strømforbrug i forhold til "Classic" Bluetooth.

I denne instruks kan jeg vise dig, hvordan du kan bruge de begrænsede (software) ressourcer, du har til rådighed, til at sende data fra et ESP32 -kort til din telefon via BLE.

Et par ansvarsfraskrivelser…

Et par bemærkelsesværdige ting, jeg bør nævne, før du fortsætter med denne vejledning.

Note 1: Når jeg siger, at Bluetooth -understøttelse endnu ikke er tilgængelig, mener jeg i arduino -udviklingsmiljøet.

Support kan meget vel være tilgængelig i den officielle SDK såvel som IDF, men jeg har ikke fundet nogen kompetente instruktioner til dem.

Note 2: Den metode, jeg bruger, er i høj grad en løsning og ikke, hvordan BLE ideelt set skal fungere. Biblioteket understøtter til oprettelse af tjenester i BLE er ikke her for arduino -miljøet.

Det eneste, du kan gøre pålideligt, er at oprette et Beacon, der annoncerer dets navn. En YouTube -kommentar udtrykte det meget elegant: "LOL, et brutalt hack. Men hvad kan du gøre?"

Note 3: Den eneste slags data, du kan sende, er streng.

Du kan meget vel beslutte at kode og afkode andre slags data til og fra streng, men det er uden for denne vejledning.

Trin 1: Eksempelbygningen

Image
Image
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen
Eksempelbygningen

Hvis du bare er her for forklaringen, kan du springe dette trin over, men hvis du går igennem det, kan det give dig lidt mere klarhed.

Først skal jeg bygge et eksempelprojekt, og derefter vil jeg prøve at forklare, hvordan det fungerer, og hvordan du kan replikere Bluetooth -kommunikationen. Vi bygger en bærbar temperatursensor, der sender et live feed til din smartphone. Bygningen kan køre i flere dage på en enkelt li-po og demonstrerer let fordelene ved BLE.

Du kan bruge modulet som en rutsjebane til at isolere dine drikkevarer og få en meddelelse, så snart din drik når den optimale temperatur. Fordi det ville være en travesty, hvis du skulle nippe til en te, der var en grad over 40.

Den eneste hardware, du har brug for, er et ESP32 -kort og en digital temperatursensor. Mit bord understøtter eksternt batteri, så jeg bruger en 3,7v li-po, som jeg bjærgede fra en gammel enhed for at gøre dette projekt bærbart.

Hardware

Tilslutningerne til temperatursensoren er enkle. Den røde ledning tilsluttes til 3.3v, sort forbinder til jorden (gnd), gul forbinder til GPIO 2, som på mit bord er markeret som D9. Tilslut en 4,7k ohm modstand mellem den røde og gule ledning. Jeg bruger ikke modstanden, i stedet bruger jeg en 3-polet stik, der kunne leveres med min sensor. Den har en indbygget pull up-modstand.

Li-po skulle virkelig tilsluttes ved hjælp af et JST-stik, men jeg kunne ikke genere at købe en, så jeg skoede bare nogle (hun til hun) jumperkabler ind i stikket og loddet et andet par til batteripolerne. Dette giver en pålidelig forbindelse og en midlertidig afbryder.

Nu som et projektkabinet bruger jeg en frigolitskive, der er skåret ud af et større ark. Dette giver en god isolator. En anden meget mindre disk sidder fast oven på, men lidt til siden. Dette er til indpakning af den ekstra længde af ledninger, så de ikke dingler overalt. Efter en generøs anvendelse af din lim og et lille hul til sensorsonden, er du klar til at gå videre til softwaren.

Software

Hvis du ikke allerede har arduino IDE installeret, skal du gå til dette link for at downloade det. Arduino -softwaren leveres som standard ikke med kortdefinitionerne for de forskellige ESP32 -kort. For at få dem til at gå dette link og downloade filerne i en zip. Du skal pakke dem ud til denne placering:

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

Hvor er dit brugernavn på din pc. Sørg for, at de forskellige filer er tilgængelige under ESP32 -mappen og ikke er under en anden mappe.

Hvis du nu starter arduino-softwaren og går til værktøjs-> tavler, skal du se forskellige ESP32-tavler, når du ruller ned.

De fleste digitale temperatursensorer bruger OneWire -protokollen til at kommunikere med mikrokontrollerne, så vi skal have biblioteket. Gå til skitse-> inkluder bibliotek-> administrer biblioteker, og søg efter onewire og installer biblioteket, der er alt for mange forfattere. Du behøver ikke onewire -hubben. Ignorer det.

Nu kan du downloade og åbne koden, der er knyttet til dette trin (temperatur-eksempel.ino).

Hvis du bruger en anden sensor end mig, skal du ændre koden i overensstemmelse hermed. Udskift koden under getTemp (). Bare returner den endelige temperatur i form af

Vend tilbage;

Hvor er flyderen indeholdende temperaturen.

Tilslut kortet, vælg det korrekte kort og porten fra under værktøjer, og tryk på upload.

Hvis koden nægter at uploade, skal du afbryde sensoren og tilslutte GPIO 0 til jorden. Gendan forbindelserne efter upload.

Din ESP skal nu skrige temperaturen på din kaffe til verden, men du har brug for nogen, der kan forstå det.

Android -appen

Beklager iPhone -brugere (… ikke rigtig).

Download apk'en herfra og installer den. Når du starter appen, vil du blive mødt med en meget enkel grænseflade.

Hvis du får en fejlmeddelelse, der siger 'reklame understøttes ikke', skal du klikke på OK og ignorere det, men hvis du får en besked om, at 'BLE ikke understøttes', har din telefon ikke Bluetooth 4.0 eller højere og ville ikke kunne køre appen.

Sørg for, at Bluetooth på din telefon er tændt, og klik på 'Start scanning', så længe esp er inden for rækkevidde og tændt, skal du have en vis temperaturværdi.

Mulige fejl:

  • -1000:: Det betyder, at din enhed ikke kunne finde ESP'en. Sørg for, at Bluetooth er slået til, og prøv at genstarte ESP'en.
  • SNA:: Det betyder, at din telefon modtager data fra ESP, men ESP'en selv ikke kunne finde en temperatursensor på GPIO 2. Sørg for, at forbindelserne er sikre, se om du bruger en modstand af den korrekte værdi. Dobbelt tjek med dit board skema, at du er forbundet til GPIO 2 og ikke en pin markeret som D2.

Trin 2: Forklaringen

Hvordan BLE normalt fungerer er, at en enhed annoncerer sit navn som et fyrtårn, dette navn kan ses af alle og bruges til at identificere enheden. Derefter kan enheden oprette forskellige tjenester, der ses af andre, når de opretter forbindelse til den. Disse tjenester kan have forskellige datastrømme.

For f.eks. En enhed med navnet 'Weather Station' kan have serviceret under den som 'Temperatur', 'Fugtighed' og 'Vind'. Når en anden BLE -enhed som din smartphone scanner efter enheder, vil den se vejrstationen, og når den opretter forbindelse til den, ville den kunne modtage datastrømmene under svarende til de forskellige tjenester.

De biblioteker (til ESP32), der i øjeblikket er tilgængelige for os, giver os mulighed for at oprette et fyrtårn, som andre kan opdage, men det er omfanget af det. Vi kan ikke oprette tjenester, og ingen enhed kan oprette forbindelse til det.

Så hvordan jeg sender data uden at oprette tjenester, er ved at anvende en teknik, der ligner WiFi -protokollen kaldet Beacon Stuffing. Det betyder, at jeg inkluderer data, der skal sendes inden for selve fyrtidsnavnet. Dette gør det muligt for mig at annoncere data uden at kræve, at andre enheder opretter forbindelse til fyret.

ble.begin (beaconMsg); // beaconMsg er det annoncerede navn

Vi bruger SimpleBLE -biblioteket til at oprette et fyrtårn med sit navn i formatet ESP. Hvor 'ESP' altid forbliver uændret i begyndelsen af navnet og erstattes med de nyeste data, der returneres af getValue () -funktionen hvert 100 millisekund.

float getValue () {return sensorValue;}

Android -appen leder efter BLE -enhedsnavne, der starter med 'ESP', når den er fundet, deler den navnet og viser kun dataene fra slutningen.

Kommunikationen er kun en måde, appen sender ikke noget tilbage.

Trin 3: Konklusion

I sidste ende er denne metode ikke en erstatning for et korrekt implementeret BLE -bibliotek, men det kan være nok at tidevende nogle projekter, indtil fuldstændig BLE -support kommer til Arduino. Forhåbentlig var denne instruktør til en hjælp for dig.

En STOR tak til DFRobot.com for at sende mig disse produkter:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • DS18B20 Temperatursensor

Jeg fandt for nylig dette bibliotek. ReadME hævder, at du kan oprette forbindelse til andre BLE -enheder for at modtage data (kan ikke annoncere dig selv). Jeg har ikke prøvet det, men du kan tjekke det ud, hvis du er interesseret.

Du kan tjekke projektvideoen på: YouTube

Anbefalede: