- Komme i gang med ESP32 Bluetooth
- Forstå Bluetooth Low Energy (BLE) og ESP32 Classic Bluetooth
- Forbereder Arduino IDE for ESP32
- Serielt Bluetooth-program for ESP32
- Testing av seriell Bluetooth med ESP32
Bluetooth-moduler som HC-05 og HC-06 er enkle å sette opp og er raske å bruke med Arduino IDE, men de har sin egen begrensning som høyt strømforbruk, og de bruker den gamle Bluetooth V2.0. Nylig fikk jeg meg et nytt ESP32 DEV-sett, disse modulene har en rekke funksjoner som innebygd Wi-Fi og Bluetooth, rikelig med ADC- og DAC-pinner, lydstøtte, SD-kortstøtte, dyp hvilemodus etc. det har nesten alt for å bygge IoT-prosjekter.
Og akkurat som enhver hobbyist, vil ESP32 nå offisielt støttes av Arduino IDE. Tidligere må vi gjøre en enorm løsning med Neil Kolbans Library, men nå takket være denne fyrens harde arbeid har ESP32 med Arduino IDE blitt en kakevandring. Derfor lanserte jeg min Arduino IDE og gikk grundig noen få eksempler på BLE-programmer, der jeg ikke forsto noe. Etter lang tid med surfing og youtubing skjønte jeg at det er mye mer å forstå hvis du må jobbe med Bluetooth Low Energy (BLE) ved hjelp av ESP32. Jeg bestemte meg for å dekke BLE i separate artikler, så her vil vi bruke Classic Serial Bluetooth på ESP32 for å slå på en LED ved hjelp av Smart Phone. Hvis du er interessert i å sjekke hvordan du bruker BLE-funksjonene, kan du sjekke denne artikkelen på ESP32 BLE Server og ESP32 BLE Client
Komme i gang med ESP32 Bluetooth
Det første programmet jeg ønsket å prøve var et enkelt program der jeg kan slå på eller av en LED fra en mobiltelefon Bluetooth Terminal-applikasjon, akkurat som de gode gamle HC-05 dagene. Men det viser seg at Bluetooth Low Energy (BLE) ikke er innrykket for det. Jeg oppdaget også at det er to typer Bluetooth i ESP32-modulen, den ene er Classic Bluetooth og den andre er BLE Bluetooth Low Energy. Ok, men hvorfor?…. hvorfor har vi to typer Bluetooth og hva skal jeg bruke til prosjektet mitt?
Forstå Bluetooth Low Energy (BLE) og ESP32 Classic Bluetooth
Bluetooth Low Energy, som navnet indikerer, bruker mindre strøm enn klassisk Bluetooth. Det oppnås ved å sende data etter behov med forhåndsdefinerte periodiske oppdateringer. Men i motsetning til klassisk Bluetooth brukes den ikke til å overføre filer eller musikk. Har du noen gang lurt på hvordan telefonen din automatisk identifiserer at Bluetooth-enheten du nettopp har paret, er en lydenhet eller en bærbar PC eller telefon, har du kanskje også sett at batterinivået i trådløs lydavspiller eller treningsbånd automatisk vises i statuslinjen til mobilen din; alt dette er mulig med egenskapene til BLE-enheter. En BLE-enhet fungerer med Bluetooth V4.0 og kan fungere med lite strøm som en server eller som en klient som lagerBLE et ideelt valg for fyrtårn, smarte klokker, fitness band osv.
Klassisk Bluetooth er derimot bare den enkle, vanlige Bluetooth som vi bruker til å overføre filer og annen data. Nesten alle BLE-enheter har klassisk Bluetooth-funksjonalitet tilknyttet. Bluetooth som brukes i moduler som HC-05 er en versjon av den klassiske Bluetooth som heter Bluetooth SSP (Serial Port Protocol), noe som betyr at Bluetooth følger standard seriell protokoll som gjør det lettere å sende og motta data uten mye overhead. På slutten av denne veiledningen vil vi lære hvordan du bruker seriell Bluetooth-funksjonalitet i ESP32.
Her i denne artikkelen vil vi bruke Serial Bluetooth-funksjonen på ESP32 til å koble den med en smarttelefon og bruke en hvilken som helst eksisterende Bluetooth Terminal-app fra Play-butikken til å sende kommandoer til ESP32 og veksle den innebygde LED-en tilsvarende.
I senere artikler vil vi dekke ESP32 BLE som server så vel som klient. BLE-server brukes vanligvis til å sende BLE-data til andre Bluetooth-enheter, og BLE-klienten brukes til å skanne andre BLE-enheter, og fungerer dermed som fyrtårn.
Forbereder Arduino IDE for ESP32
Vær oppmerksom på at Arduino IDE som standard ikke støtter ESP32-kort; du må laste ned og installere dem ved hjelp av styrelederen. Hvis dette er ditt første program med ESP32, følg denne startveiledningen for å legge til ESP32-kortet i Arduino og laste opp en testskisse.
Videre kan du gjøre flere prosjekter med ESP32, uten å bruke noen Microcontroller med den.
Serielt Bluetooth-program for ESP32
Hele programmet for å slå på en LED ved hjelp av ESP32 Bluetooth er gitt på slutten av denne siden. Under denne overskriften kan vi bryte koden inn i små utdrag og prøve å forstå dem. Hvis du allerede har brukt andre Bluetooth-moduler som HC-05, vil du oppdage at dette eksempelprogrammet ESP32 Bluetooth Classic er veldig likt.
Ideen med programmet er å initialisere en seriell Bluetooth-tilkobling ved hjelp av ESP32 og lytte etter data fra sammenkoblede enheter. Hvis innkommende data er '1', slår vi på LED-lampen, og hvis den er '0', bør vi slå av LED-lampen. Vi begynner programmet vårt med å legge til topptekstfilen BluetoothSerial som gjør at ESP32 Bluetooth fungerer som Bluetoth SSP.
#include "BluetoothSerial.h" // Header File for Serial Bluetooth, blir lagt til som standard i Arduino
Det er mange ting som skjer bak dette biblioteket, men vi valgte å ikke gå dypt inn i det for å holde ting enkelt. Det neste vi trenger er et objekt for våre Bluetooth-relaterte operasjoner. Her har jeg kalt meg som ESP_BT , men du kan velge hvilket som helst navn.
BluetoothSerial ESP_BT; // Objekt for Bluetooth
Deretter inne i tomrumsoppsettet () -funksjonen. Vi starter seriekommunikasjonen med overføringshastighet 9600 og initialiserer Bluetooth-signalet med et navn. Her har jeg kalt det som “ESP32_LED_Control ”, dette vil være navnet som blir funnet av telefonen vår når vi prøver å pare. Endelig har jeg erklært den innebygde LED-pinnen som utgangspinne siden vi skal bytte den basert på Bluetooth-signal.
ugyldig oppsett () { Serial.begin (9600); // Start seriell skjerm i 9600 ESP_BT.begin ("ESP32_LED_Control"); // Navnet på Bluetooth-signal Serial.println ("Bluetooth-enheten er klar til paring"); pinMode (LED_BUILTIN, OUTPUT); // Spesifiser at LED-pinnen blir sendt ut }
Inne i den uendelige ugyldige sløyfefunksjonen , sjekker vi om det kommer inn data fra Bluetooth-modulen, hvis ja, blir dataene lest og lagret i variabelen innkommende . Vi skriver også ut denne verdien på den serielle skjermen bare for å kryssjekke hva som mottas av Arduino.
hvis (ESP_BT.available ()) // Sjekk om vi mottar noe fra Bluetooth { innkommende = ESP_BT.read (); // Les hva vi mottar Serial.print ("Mottatt:"); Serial.println (innkommende);
Nå lagres uansett data som mottas i den innkommende variabelen, slik at vi direkte kan sammenligne denne variabelen med forventet verdi og utføre den nødvendige handlingen. Men verdien som sendes fra Bluetooth vil være i røde form, og Arduino vil lese desimalverdien til røyen som sendes fra telefonen. I vårt tilfelle for tegn '0' vil desimalverdien være 48 og for tegn '1' vil desimalverdien være 49. Du kan se ASCII-diagrammet for å forstå hva som vil være desimalverdien for hvert tegn.
Her har vi sammenlignet den innkommende variabelen med 48 og 49 for å sjekke henholdsvis 0 og 1. Hvis det er en 1, slår vi av LED-en og skriver også ut en bekreftelsesmelding tilbake til Bluetooth som sier at LED-en var slått av og omvendt for 0.
hvis (innkommende == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED slått PÅ"); } hvis (innkommende == 48) { digitalWrite (LED_BUILTIN, LAV); ESP_BT.println ("LED slått AV"); }
Testing av seriell Bluetooth med ESP32
Koble ESP til Arduino IDE og velg riktig tavle og port som beskrevet i opplæringen. Siden det er en tredje parts styreleder, kan det ta litt lengre tid før koden blir samlet og lastet opp. Når du er lastet opp, start seriellmonitorene (bare for feilsøking) og åpne Bluetooth-innstillingen på telefonen. Du bør finne en Bluetooth-enhet med navnet ESP32_LED_Control pair med.
Nå kan du åpne hvilken som helst Bluetooth-terminalapp på smarttelefonen din. Jeg bruker den som heter "Bluetooth Terminal" som ble lastet ned fra Google App Store. Koble Bluetooth-applikasjonen til enheten vi nettopp har paret, og skriv inn 1 og trykk send.
ESP32-modulen skal motta den og slå på LED-en i henhold til vårt program, og også gi deg en bekreftelsesmelding som sier at LED-en er slått PÅ som skjermbildet vist ovenfor. Du kan også sjekke seriell skjerm som viser dataene som mottas av ESP32 Bluetooth i desimalformat som Arduino vil lese 48 for 0 og 49 for 1 som forklart tidligere. Øyeblikksbildet av terminalvinduet mitt vises nedenfor.
På samme måte bør du også kunne slå av lysdioden ved å sende 0 fra mobilapplikasjonen. Komplett arbeid vises i videoen nedenfor. Håper du forsto opplæringen og lærte noe nyttig. Hvis du er i tvil, kan du gjerne legge dem igjen i kommentarfeltet nedenfor eller bruke forumene våre for annen teknisk hjelp.