Inhoudsopgave:
Video: Bluetooth (BLE) gebruiken met ESP32: 3 stappen:
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
#####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
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:
Hoe de GPIO-pinnen en Avrdude van een Raspberry Pi te gebruiken om DIMP 2 of DA PIMP te Bit-bang-programma te gebruiken 2: 9 stappen
Hoe de GPIO-pinnen van een Raspberry Pi en Avrdude te gebruiken voor Bit-bang-programma DIMP 2 of DA PIMP 2: Dit zijn stapsgewijze instructies voor het gebruik van een Raspberry Pi en het gratis open-source commando avrdude to bit-bang -programmeer een DIMP 2 of DA PIMP 2. Ik neem aan dat je bekend bent met je Raspberry Pi en de LINUX-opdrachtregel. Je hoeft niet
ESP32 Bluetooth-zelfstudie - Hoe de ingebouwde Bluetooth van ESP32 te gebruiken: 5 stappen
ESP32 Bluetooth-zelfstudie | Hoe de ingebouwde Bluetooth van ESP32 te gebruiken: Hallo, aangezien het ESP32-bord wordt geleverd met WiFi & Bluetooth beide, maar voor onze meestal projecten gebruiken we meestal alleen wifi, we gebruiken geen Bluetooth. Dus in deze instructables laat ik zien hoe gemakkelijk het is om Bluetooth van ESP32 & Voor uw basisprojecten
Mac Terminal gebruiken en toetsfuncties gebruiken: 4 stappen
Mac Terminal gebruiken en toetsfuncties gebruiken: We laten u zien hoe u de MAC Terminal opent. We zullen u ook enkele functies binnen de Terminal laten zien, zoals ifconfig, mappen wijzigen, toegang tot bestanden en arp. Met Ifconfig kunt u uw IP-adres en uw MAC-advertentie controleren
Orange Pi gebruiken zonder monitor door SSH en VNC-server te gebruiken - Ajarnpa
Gebruik Orange Pi zonder monitor door SSH en VNC-server te gebruiken: Orange Pi is als een minicomputer. Het heeft alle basispoorten die een normale computer heeft.Zoals HDMIUSBEthernetIT heeft een aantal speciale speciale poorten ZoalsUSB OTGGPIO-headersSD-kaartsleufParallelle camerapoortAls u orange pi wilt bedienen, moet u o
Hoe de Wiimote als computermuis te gebruiken Kaarsen als sensor gebruiken!! - Ajarnpa
De Wiimote als computermuis gebruiken Kaarsen als sensor gebruiken!!: Deze gids laat je zien hoe je je Wii-afstandsbediening (Wiimote) op je pc aansluit en als muis gebruikt