- Kom godt i gang med ESP32 Bluetooth
- Forståelse af Bluetooth Low Energy (BLE) og ESP32 Classic Bluetooth
- Forbereder Arduino IDE til ESP32
- Serielt Bluetooth-program til ESP32
- Test af seriel Bluetooth med ESP32
Bluetooth-moduler som HC-05 og HC-06 er nemme at opsætte og hurtige at bruge med Arduino IDE, men de har deres egen begrænsning som et højt strømforbrug, og de fungerer på den gamle Bluetooth V2.0. For nylig skaffede jeg mig et nyt ESP32 DEV-sæt, disse moduler har en masse funktioner som indbygget Wi-Fi og Bluetooth, rigelig ADC og DAC-ben, Audio Support, SD-kort Support, Deep Sleep Mode osv. Det har næsten alt for at opbygge IoT-projekter.
Og ligesom enhver hobbyist ville elske det, understøttes ESP32 nu officielt af Arduino IDE. Tidligere er vi nødt til at gøre en enorm løsning med Neil Kolbans Library, men nu er takket være denne fyrs hårde arbejde programmering ESP32 med Arduino IDE blevet en kagevandring. Derfor lancerede jeg min Arduino IDE og gennemgik nogle få eksempler på BLE-programmer, hvorigennem jeg ikke forstod noget. Efter lang tid med surfing og youtubing indså jeg, at der er meget mere at forstå, hvis du skal arbejde med Bluetooth Low Energy (BLE) ved hjælp af ESP32. Jeg besluttede at dække BLE i separate artikler, så her bruger vi den klassiske serielle Bluetooth fra ESP32 til at skifte en LED ved hjælp af Smart Phone. Hvis du er interesseret i at tjekke, hvordan du bruger BLE-funktionerne, skal du se denne artikel om ESP32 BLE-server og ESP32 BLE-klient
Kom godt i gang med ESP32 Bluetooth
Det første program, som jeg ville prøve, var et simpelt program, hvor jeg kan tænde eller slukke for en LED fra en mobiltelefon Bluetooth Terminal-applikation, ligesom de gode gamle HC-05 dage. Men det viser sig, at Bluetooth Low Energy (BLE) ikke er indrykket for det. Jeg opdagede også, at der er to typer Bluetooth i ESP32-modulet, den ene er Classic Bluetooth og den anden er BLE Bluetooth Low Energy. Okay, men hvorfor?…. hvorfor har vi to typer Bluetooth, og hvad skal jeg bruge til mit projekt?
Forståelse af Bluetooth Low Energy (BLE) og ESP32 Classic Bluetooth
Bluetooth Low Energy bruger, som navnet indikerer, mindre strøm end klassisk Bluetooth. Det opnås ved at sende data efter behov med foruddefinerede periodiske opdateringer. Men i modsætning til klassisk Bluetooth bruges det ikke til at overføre filer eller musik. Har du nogensinde spekuleret på, hvordan din telefon automatisk identificerer, at den Bluetooth-enhed, du lige har parret, er en lydenhed eller en bærbar computer eller telefon, har du muligvis også set, at batteriniveauet i den trådløse lydafspiller eller fitnessbånd automatisk vises i statuslinjen for din mobil alle disse er mulige med BLE-enheders egenskaber. En BLE-enhed fungerer med Bluetooth V4.0 og kan fungere med lav strøm som en server eller som en klient, der fremstillerBLE et ideelt valg til fyrtårne, smarte ure, fitnessbånd osv.
Klassisk Bluetooth er derimod bare den enkle almindelige Bluetooth, som vi bruger til at overføre filer og andre data. Næsten alle BLE-enheder har klassisk Bluetooth-funktionalitet tilknyttet. Bluetooth, der bruges i moduler som HC-05, er en version af den klassiske Bluetooth kaldet Bluetooth SSP (Serial Port Protocol), hvilket betyder, at Bluetooth følger standardprotokollen, der gør det lettere at sende og modtage data uden meget overhead. I slutningen af denne vejledning lærer vi, hvordan du bruger seriel Bluetooth-funktionalitet i ESP32.
Her i denne artikel vil vi bruge den serielle Bluetooth-funktion på ESP32 til at parre den med en smartphone og bruge enhver eksisterende Bluetooth Terminal-app fra Play butik til at sende kommandoer til ESP32 og skifte lysdioden om bord i overensstemmelse hermed.
I senere artikler vil vi dække ESP32 BLE som server såvel som klient. BLE-server bruges normalt til at sende BLE-data til andre Bluetooth-enheder, og BLE-klienten bruges til at scanne andre BLE-enheder og fungerer således som et fyrtårn.
Forbereder Arduino IDE til ESP32
Bemærk, at Arduino IDE som standard ikke understøtter ESP32-kort; du skal downloade og installere dem ved hjælp af bestyrelsesadministratoren. Hvis dette er dit første program med ESP32, skal du følge denne startvejledning for at tilføje ESP32-kortet til din Arduino og uploade en testskitse.
Desuden kan du udføre flere projekter med ESP32 uden at bruge nogen Microcontroller med det.
Serielt Bluetooth-program til ESP32
Det komplette program til at skifte en LED ved hjælp af ESP32 Bluetooth findes i slutningen af denne side. Under denne overskrift kan vi bryde koden ind i små uddrag og prøve at forstå dem. Hvis du allerede har brugt andre Bluetooth-moduler som HC-05, ville du finde dette eksempel på ESP32 Bluetooth Classic- programmet meget ens.
Ideen med programmet er at initialisere en seriel Bluetooth-forbindelse ved hjælp af ESP32 og lytte efter data fra parrede enheder. Hvis de indgående data er '1', tænder vi lysdioden, og hvis de er '0', skal vi slukke for lysdioden. Vi begynder vores program med at tilføje headerfilen BluetoothSerial, som får ESP32 Bluetooth til at fungere som Bluetoth SSP.
#include "BluetoothSerial.h" // Header File for Serial Bluetooth, tilføjes som standard til Arduino
Der foregår mange ting bag dette bibliotek, men vi valgte ikke at komme dybt ind i det for at holde tingene enkle. Den næste ting, vi har brug for, er et objekt til vores Bluetooth-relaterede operationer. Her har jeg navngivet min som ESP_BT , men du kan vælge ethvert navn.
BluetoothSerial ESP_BT; // Objekt til Bluetooth
Dernæst inden i funktionen tomrumsopsætning () . Vi begynder seriel kommunikation med baudrate 9600 og initialiserer Bluetooth-signalet med et navn. Her har jeg navngivet det som “ESP32_LED_Control ”, dette vil være navnet, der vil blive fundet af vores telefon, når vi prøver at parre. Endelig har jeg erklæret den indbyggede LED-pin som output-pin, da vi skal skifte den baseret på Bluetooth-signal.
ugyldig opsætning () { Serial.begin (9600); // Start seriel skærm i 9600 ESP_BT.begin ("ESP32_LED_Control"); // Navnet på dit Bluetooth-signal Serial.println ("Bluetooth-enhed er parat til parring"); pinMode (LED_BUILTIN, OUTPUT); // Angiv, at LED-pin er output }
Inde i den uendelige ugyldige sløjfefunktion kontrollerer vi , om der kommer data ind fra Bluetooth-modulet. Hvis ja, læses og gemmes dataene i den indgående variabel. Vi udskriver også denne værdi på den serielle skærm for at krydstjekke, hvad der modtages af Arduino.
hvis (ESP_BT.available ()) // Kontroller, om vi modtager noget fra Bluetooth { indkommende = ESP_BT.read (); // Læs hvad vi modtager Serial.print ("Modtaget:"); Serial.println (indgående);
Uanset hvilken data der modtages, gemmes nu i den indgående variabel, så vi direkte kan sammenligne denne variabel med forventet værdi og udføre den nødvendige handling. Men den værdi, der sendes fra Bluetooth, vil være i char- form, og Arduino læser decimalværdien af den char, der sendes fra telefonen. I vores tilfælde for tegn '0' vil decimalværdien være 48 og for tegn '1' vil decimalværdien være 49. Du kan henvise til ASCII-diagrammet for at forstå, hvad der vil være decimalværdien for hvert tegn.
Her har vi sammenlignet den indgående variabel med 48 og 49 for at kontrollere henholdsvis 0 og 1. Hvis det er en 1, slukker vi lysdioden og udskriver også en bekræftelsesmeddelelse tilbage til Bluetooth, der siger, at lysdioden var slukket og omvendt for 0.
hvis (indkommende == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED tændt"); } hvis (indkommende == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED slukket"); }
Test af seriel Bluetooth med ESP32
Tilslut din ESP til din Arduino IDE, og vælg det korrekte kort og port som beskrevet i startvejledningen. Da det er en 3 rd part bord leder kan det tage lidt længere tid for koden til at få kompileret og uploadet. Når de er uploadet, skal du starte serielle skærme (kun til fejlretning) og åbne Bluetooth-indstillingen på din telefon. Du skal finde en Bluetooth-enhed med navnet ESP32_LED_Control par med.
Nu kan du åbne en hvilken som helst Bluetooth-terminalapp på din smartphone. Jeg bruger den med navnet "Bluetooth Terminal", som blev downloadet fra Google App Store. Forbind Bluetooth-applikationen til den enhed, vi lige har parret, og skriv 1, og tryk på send.
ESP32-modulet skal modtage det og tænde lysdioden i henhold til vores program og også give dig en kvitteringsmeddelelse, der siger, at LED'en er tændt som det viste skærmbillede ovenfor. Du kan også kontrollere den serielle skærm, der viser de data, der modtages af ESP32 Bluetooth i decimalformat, som din Arduino vil læse 48 for 0 og 49 for 1 som forklaret tidligere. Øjebliksbillede af mit terminalvindue er vist nedenfor.
På samme måde skal du også kunne slukke for LED ved at sende 0 fra mobilapplikationen. Det komplette arbejde vises i videoen nedenfor. Håber du forstod vejledningen og lærte noget nyttigt. Hvis du er i tvivl, er du velkommen til at efterlade dem i kommentarfeltet nedenfor eller bruge vores fora til anden teknisk hjælp.