Inhoudsopgave:

Bluetooth (BLE) gebruiken met ESP32: 3 stappen:
Bluetooth (BLE) gebruiken met ESP32: 3 stappen:

Video: Bluetooth (BLE) gebruiken met ESP32: 3 stappen:

Video: Bluetooth (BLE) gebruiken met ESP32: 3 stappen:
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Juni-
Anonim

#####OPMERKING#####

De methode die in deze Instructables wordt getoond, is oud en achterhaald. Bekijk deze video voor de nieuwste methode.

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

Hoewel de ESP32 beschikt over een uitgebreide lijst met functies (Wikipedia), is de grootste functie die de aandacht trekt de ingebouwde bluetooth v4.2 met BLE-ondersteuning. Maar die verklaring kan misleidend zijn, terwijl de hardware er is, ontbreekt de software-ondersteuning voor het gebruik van Bluetooth. (Het is in ontwikkeling)

Voor wie niet weet wat BLE is, het staat voor Bluetooth Low Energy. Het is een bluetooth-protocol dat zorgt voor een aanzienlijk lager stroomverbruik in vergelijking met "klassieke" Bluetooth.

In deze Instructables laat ik je zien hoe je de beperkte (software)bronnen tot je beschikking kunt gebruiken om gegevens van een ESP32-bord via BLE naar je telefoon te sturen.

Een paar disclaimers…

Een paar dingen die ik moet vermelden voordat u verder gaat met deze handleiding..

Opmerking 1: als ik zeg dat Bluetooth-ondersteuning nog niet beschikbaar is, bedoel ik in de Arduino-ontwikkelomgeving.

De ondersteuning is mogelijk beschikbaar in de officiële SDK en in de IDF, maar ik heb daarvoor geen competente instructies gevonden.

Opmerking 2: De methode die ik gebruik is een tijdelijke oplossing en niet hoe BLE idealiter zou moeten werken. De bibliotheek die ondersteuning biedt voor het maken van services in BLE is er niet voor de Arduino-omgeving.

Het enige dat u betrouwbaar kunt doen, is een baken maken dat zijn naam adverteert. Een YouTube-commentaar verwoordde het heel elegant: "LOL, een brutale hack. Maar wat kun je doen?"

Opmerking 3: Het enige soort gegevens dat u kunt verzenden, is string.

U kunt heel goed besluiten om andere soorten gegevens van en naar strings te coderen en te decoderen, maar dat valt buiten het bestek van deze handleiding.

Stap 1: Het voorbeeld bouwen

Image
Image
De voorbeeldconstructie
De voorbeeldconstructie
De voorbeeldconstructie
De voorbeeldconstructie
De voorbeeldconstructie
De voorbeeldconstructie

Als je hier alleen bent voor de uitleg, dan kun je deze stap overslaan, maar als je er doorheen gaat, krijg je misschien wat meer duidelijkheid..

Eerst ga ik een voorbeeldproject bouwen en dan zal ik proberen uit te leggen hoe het werkt en hoe je de Bluetooth-communicatie kunt repliceren. We gaan een draagbare temperatuursensor bouwen die een live feed naar je smartphone stuurt. De build kan dagenlang draaien op een enkele li-po en demonstreert gemakkelijk de voordelen van BLE.

Je kunt de module gebruiken als onderzetter om je drankjes te isoleren en een melding te krijgen zodra je drankje de optimale temperatuur heeft bereikt. Omdat het een aanfluiting zou zijn als je een slokje thee van een graad boven de 40 zou moeten drinken.

De enige hardware die je nodig hebt is een ESP32-bord en een digitale temperatuursensor. Mijn bord ondersteunt een externe batterij, dus ik gebruik een 3.7v li-po die ik van een oud apparaat heb gehaald om dit project draagbaar te maken.

Hardware

De aansluitingen voor de temperatuursensor zijn eenvoudig. De rode draad maakt verbinding met 3.3v, zwarte verbinding met aarde (gnd), gele verbinding met GPIO 2 die op mijn bord is gemarkeerd als D9. Sluit een weerstand van 4,7 k ohm aan tussen de rode en gele draad. Ik gebruik de weerstand niet, in plaats daarvan gebruik ik een 3-pins plug-able terminal die bij mijn sensor is geleverd. Het heeft een ingebouwde pull-up weerstand.

De li-po zou eigenlijk moeten worden aangesloten met een JST-connector, maar ik kon niet de moeite nemen om er een te kopen, dus ik heb gewoon wat (vrouwelijk naar vrouwelijk) startkabels in de connector gesoldeerd en een ander paar aan de batterijpolen gesoldeerd. Dit zorgt voor een betrouwbare verbinding en een geïmproviseerde stroomschakelaar.

Nu gebruik ik als projectbehuizing een piepschuimschijf die uit een groter vel is gesneden. Dit zorgt voor een uitstekende isolator. Een andere veel kleinere schijf zit bovenop, maar een beetje aan de zijkant. Dit is voor het omwikkelen van de extra lengte van draden, zodat ze niet overal bungelen. Na een royale inzet van uw lijm en een klein gaatje voor de sensorsonde, bent u klaar om door te gaan naar de software.

Software

Als je de arduino IDE nog niet hebt geïnstalleerd, ga dan naar deze link om het te downloaden. De Arduino-software wordt standaard niet geleverd met de borddefinities voor de verschillende ESP32-borden. Om ze naar deze link te laten gaan en de bestanden in een zip te downloaden. Je moet ze uitpakken naar deze locatie:

C:/Gebruikers//Documenten/Arduino/hardware/espserrif/ESP32

Waar is uw gebruikersnaam op uw pc. Zorg ervoor dat de verschillende bestanden beschikbaar zijn onder de ESP32-map en niet in een andere map.

Als je nu de Arduino-software start en naar tools->boards gaat, zou je verschillende ESP32-kaarten moeten zien wanneer je naar beneden scrolt.

De meeste digitale temperatuursensoren gebruiken het OneWire-protocol om met de microcontrollers te communiceren, dus we moeten de bibliotheek hebben. Ga naar schets->bibliotheek opnemen->bibliotheken beheren en zoek naar onewire en installeer de bibliotheek met veel te veel auteurs. Je hebt de eendraads hub niet nodig. Negeer het.

Nu kunt u de code die bij deze stap hoort downloaden en openen (temperature-example.ino).

Als u een andere sensor dan ik gebruikt, moet u de code dienovereenkomstig wijzigen. Vervang de code onder getTemp(). Geef gewoon de eindtemperatuur terug in de vorm van

Opbrengst;

Waar is de vlotter met de temperatuur.

Sluit het bord aan, selecteer het juiste bord en de juiste poort onder tools en klik op uploaden.

Als de code weigert te uploaden, koppelt u de sensor los en verbindt u de GPIO 0 met aarde. Herstel de verbindingen na het uploaden.

Je ESP zou nu de temperatuur van je koffie naar de wereld moeten schreeuwen, maar je hebt iemand nodig die het kan begrijpen.

De Android-app

Sorry iPhone-gebruikers (… niet echt).

Download de apk hier en installeer deze. Wanneer u de app start, wordt u begroet met een zeer eenvoudige interface.

Als u een foutmelding krijgt met de tekst 'advertentie niet ondersteund', klikt u op OK en negeert u deze, maar als u een bericht krijgt dat 'BLE niet wordt ondersteund', heeft uw telefoon geen Bluetooth 4.0 of hoger en kan deze niet worden uitgevoerd de app.

Zorg ervoor dat Bluetooth op uw telefoon is ingeschakeld en klik op 'Start scannen', zolang de esp binnen bereik is en is ingeschakeld, zou u een bepaalde temperatuurwaarde moeten ontvangen.

Mogelijke fouten:

  • -1000:: Dit betekent dat uw apparaat de ESP niet kon vinden. zorg ervoor dat Bluetooth is ingeschakeld en probeer de ESP opnieuw op te starten.
  • SNA:: Dit betekent dat je telefoon gegevens van de ESP ontvangt, maar de ESP zelf kon geen temperatuursensor op de GPIO 2 vinden. Zorg ervoor dat de verbindingen goed vastzitten, kijk of je een weerstand van de juiste waarde gebruikt. Controleer nogmaals met uw bordschema's dat u bent aangesloten op de GPIO 2 en niet op een pin gemarkeerd als D2.

Stap 2: De uitleg

Hoe BLE normaal werkt, is dat een apparaat zijn naam adverteert als een baken, deze naam kan door iedereen worden gezien en wordt gebruikt om het apparaat te identificeren. Vervolgens kan het apparaat verschillende services maken die door anderen worden gezien wanneer ze er verbinding mee maken. Deze services kunnen verschillende gegevensstromen hebben.

Voor bijv. Een apparaat met de naam 'Weerstation' kan eronder hebben gewerkt, zoals 'Temperatuur', 'Vochtigheid' en 'Wind'. Wanneer een ander BLE-apparaat zoals uw smartphone naar apparaten scant, zou het het weerstation zien en wanneer het er verbinding mee maakt, zou het de gegevensstromen kunnen ontvangen die overeenkomen met de verschillende services.

De bibliotheken (voor de ESP32) die momenteel voor ons beschikbaar zijn, stellen ons in staat een baken te creëren dat anderen kunnen ontdekken, maar dat is de omvang ervan. We kunnen geen services maken en er kan ook geen apparaat verbinding mee maken.

Dus hoe ik gegevens verzend zonder services te creëren, is door een techniek te gebruiken die vergelijkbaar is met het WiFi-protocol genaamd Beacon Stuffing. Dit betekent dat ik de te verzenden gegevens opneem in de bakennaam zelf. Hierdoor kan ik gegevens adverteren zonder dat andere apparaten verbinding hoeven te maken met het baken.

ble.begin(beaconMsg); // beaconMsg is de geadverteerde naam

We gebruiken de SimpleBLE-bibliotheek om een baken te maken met zijn naam in het formaat ESP. Waarbij 'ESP' altijd ongewijzigd blijft aan het begin van de naam en elke 100 milliseconden wordt vervangen door de nieuwste gegevens die door de functie getValue() worden geretourneerd.

float getValue(){return sensorValue;}

De Android-app zoekt naar BLE-apparaatnamen die beginnen met 'ESP', eenmaal gevonden, splitst het de naam en geeft het alleen de gegevens vanaf het einde weer.

De communicatie is maar eenrichtingsverkeer, de app stuurt niets terug.

Stap 3: Conclusie

Aan het eind van de dag is deze methode geen vervanging voor een correct geïmplementeerde BLE-bibliotheek, maar het kan voldoende zijn om enkele projecten over te slaan totdat Arduino volledige BLE-ondersteuning krijgt. Hopelijk heeft deze Instructables je wat geholpen.

Een grote dank aan DFRobot.com voor het sturen van deze producten:

  • ESP32 FireBeetle-bord
  • FireBeetle-uitbreidingsschild
  • DS18B20 Temperatuursensor

Ik heb onlangs deze bibliotheek gevonden. De ReadME beweert dat u verbinding kunt maken met andere BLE-apparaten om gegevens te ontvangen (u kunt zelf geen reclame maken). Ik heb het niet geprobeerd, maar je kunt het bekijken als je geïnteresseerd bent.

U kunt de projectvideo bekijken op: YouTube

Aanbevolen: