- Komma igång med ESP32 Bluetooth
- Förstå Bluetooth Low Energy (BLE) och ESP32 Classic Bluetooth
- Förbereder Arduino IDE för ESP32
- Seriellt Bluetooth-program för ESP32
- Testar seriell Bluetooth med ESP32
Bluetooth-moduler som HC-05 och HC-06 är enkla att installera och snabba att använda med Arduino IDE, men de har sin egen begränsning som hög strömförbrukning och de fungerar på den gamla Bluetooth V2.0. Nyligen fick jag själv ett nytt ESP32 DEV-kit, dessa moduler har en massa funktioner som inbyggt Wi-Fi och Bluetooth, gott om ADC- och DAC-stift, ljudstöd, SD-kortstöd, djupt viloläge etc. det har nästan allt för att bygga IoT-projekt.
Och precis som någon hobbyist skulle älska det, stöds nu ESP32 officiellt av Arduino IDE. Tidigare måste vi göra en enorm lösning med Neil Kolbans Library, men nu tack vare den här killens hårda arbete har ESP32 med Arduino IDE blivit en tårtvandring. Därför lanserade jag min Arduino IDE och gick igenom några exempel på BLE-program, genom vilka jag inte förstod någonting. Efter en lång tid av surfing och youtubing insåg jag att det finns mycket mer att förstå om du måste arbeta med Bluetooth Low Energy (BLE) med ESP32. Jag bestämde mig för att täcka BLE i separata artiklar, så här kommer vi att använda Classic Serial Bluetooth på ESP32 för att växla en LED med Smart Phone. Om du är intresserad av att kolla in hur du använder BLE-funktionerna kan du läsa den här artikeln om ESP32 BLE Server och ESP32 BLE Client
Komma igång med ESP32 Bluetooth
Det första programmet som jag ville prova var ett enkelt program med vilket jag kan sätta på eller stänga av en LED från en mobiltelefon Bluetooth Terminal-applikation, precis som de gamla gamla HC-05-dagarna. Men det visar sig att Bluetooth Low Energy (BLE) inte är indragen för det. Jag upptäckte också att det finns två typer av Bluetooth i ESP32-modulen, en är Classic Bluetooth och den andra är BLE Bluetooth Low Energy. Okej, men varför?…. varför har vi två typer av Bluetooth och vad ska jag använda för mitt projekt?
Förstå Bluetooth Low Energy (BLE) och ESP32 Classic Bluetooth
Bluetooth Low Energy förbrukar, som namnet antyder, mindre ström än klassisk Bluetooth. Det uppnås genom att skicka data efter behov med fördefinierade periodiska uppdateringar. Men till skillnad från klassisk Bluetooth används den inte för att överföra filer eller musik. Har du någonsin undrat hur din telefon automatiskt identifierar att den Bluetooth-enhet du just parat är en ljudenhet eller en bärbar dator eller telefon? Du kanske också har sett att batterinivån i trådlös ljudspelare eller fitnessband automatiskt visas i statusfältet för din mobil; alla dessa är möjliga med egenskaperna hos BLE-enheter. En BLE-enhet fungerar med Bluetooth V4.0 och kan fungera med låg effekt som en server eller som en klient som görBLE ett perfekt val för fyrar, smarta klockor, fitness band osv.
Klassisk Bluetooth är å andra sidan bara den enkla vanliga Bluetooth som vi använder för att överföra filer och annan data. Nästan alla BLE-enheter har klassisk Bluetooth-funktionalitet associerad med den. Bluetooth som används i moduler som HC-05 är en version av den klassiska Bluetooth som heter Bluetooth SSP (Serial Port Protocol), vilket innebär att Bluetooth följer det seriella standardprotokollet vilket gör det lättare att skicka och ta emot data utan mycket overhead. I slutet av denna handledning lär vi oss hur man använder seriell Bluetooth-funktionalitet i ESP32.
Här i den här artikeln kommer vi att använda Serial Bluetooth-funktionen på ESP32 för att para ihop den med en smartphone och använda någon befintlig Bluetooth Terminal-app från Play Store för att skicka kommandon till ESP32 och växla ombord-lysdioden därefter.
I senare artiklar kommer vi att täcka ESP32 BLE som server såväl som klient. BLE-servern används vanligtvis för att skicka BLE-data till andra Bluetooth-enheter och BLE-klienten används för att skanna andra BLE-enheter och fungerar som en fyr.
Förbereder Arduino IDE för ESP32
Observera att Arduino IDE som standard inte stöder ESP32-kort; du måste ladda ner och installera dem med styrelsens chef. Om detta är ditt första program med ESP32, följ sedan den här handboken för att lägga till ESP32-kortet i din Arduino och ladda upp en testskiss.
Dessutom kan du göra fler projekt med ESP32 utan att använda någon Microcontroller med den.
Seriellt Bluetooth-program för ESP32
Det kompletta programmet för att växla en LED med ESP32 Bluetooth finns i slutet av denna sida. Under den här rubriken kan vi bryta in koden i små utdrag och försöka förstå dem. Om du redan har använt andra Bluetooth-moduler som HC-05 skulle du tycka att det här exemplet på ESP32 Bluetooth Classic är mycket lika.
Idén med programmet är att initiera en seriell Bluetooth-anslutning med ESP32 och lyssna efter data från parade enheter. Om inkommande data är '1' slår vi på lysdioden och om den är '0' ska vi stänga av lysdioden. Vi börjar vårt program med att lägga till rubrikfilen BluetoothSerial som gör att ESP32 Bluetooth fungerar som Bluetoth SSP.
#include "BluetoothSerial.h" // Rubrikfil för seriell Bluetooth, läggs till som standard i Arduino
Det finns många saker som händer bakom detta bibliotek, men vi valde att inte gå djupt in i det för att hålla saker enkelt. Nästa sak vi behöver är ett objekt för våra Bluetooth-relaterade operationer. Här har jag namngett min som ESP_BT , men du kan välja vilket namn som helst.
BluetoothSerial ESP_BT; // Objekt för Bluetooth
Därefter inuti funktionen tomrumsinställning () . Vi börjar seriekommunikationen med överföringshastighet 9600 och initialiserar Bluetooth-signalen med ett namn. Här har jag kallat det som “ESP32_LED_Control ”, det här kommer att bli ett namn som kommer att hittas av vår telefon när vi försöker para ihop dem. Slutligen har jag förklarat det inbyggda LED-stiftet som utgångsstift eftersom vi ska växla det baserat på Bluetooth-signal.
ogiltig installation () { Serial.begin (9600); // Starta seriell bildskärm i 9600 ESP_BT.begin ("ESP32_LED_Control"); // Namnet på din Bluetooth-signal Serial.println ("Bluetooth-enheten är redo att paras ihop"); pinMode (LED_BUILTIN, OUTPUT); // Ange att LED-stift matas ut }
Inuti den oändliga tomrum loop funktion, vi kontrollera om det finns några data som kommer in från Bluetooth-modulen, om ja då läses data och lagras i variabeln inkommande . Vi skriver också ut detta värde på den seriella bildskärmen bara för att korskontrollera vad som tas emot av Arduino.
if (ESP_BT.available ()) // Kontrollera om vi får något från Bluetooth { inkommande = ESP_BT.read (); // Läs vad vi återfår Serial.print ("Mottaget:"); Serial.println (inkommande);
Oavsett vilken data som tas emot lagras nu i variabeln inkommande , så vi kan direkt jämföra denna variabel med förväntat värde och utföra den nödvändiga åtgärden. Men värdet som skickas från Bluetooth kommer att vara i char- form och Arduino kommer att läsa decimalvärdet för char som skickas från telefonen. I vårt fall för tecken '0' kommer decimalvärdet att vara 48 och för tecken '1' kommer decimalvärdet att vara 49. Du kan hänvisa till ASCII-diagrammet för att förstå vad som blir decimalvärdet för varje tecken.
Här har vi jämfört den inkommande variabeln med 48 och 49 för att kontrollera för 0 respektive 1. Om det är en 1 stänger vi av lysdioden och skriver också ut ett bekräftelsemeddelande tillbaka till Bluetooth som säger att lysdioden var avstängd och vice versa för 0.
if (inkommande == 49) { digitalWrite (LED_BUILTIN, HÖG); ESP_BT.println ("LED tänd PÅ"); } om (inkommande == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED släckt"); }
Testar seriell Bluetooth med ESP32
Anslut din ESP till din Arduino IDE och välj rätt kort och port som diskuterades i handboken för att komma igång. Eftersom det är en tredje party-styrelseledare kan det ta lite längre tid innan koden sammanställs och laddas upp. När du har laddat upp startar du seriella bildskärmar (bara för felsökning) och öppnar Bluetooth-inställningen på din telefon. Du bör hitta en Bluetooth-enhet med namnet ESP32_LED_Control- par med.
Nu kan du öppna vilken Bluetooth-app som helst på din smartphone, jag använder den som heter "Bluetooth Terminal" som laddades ner från Google App store. Anslut Bluetooth-applikationen till den enhet som vi just parade ihop och skriv 1 och tryck på skicka.
ESP32-modulen ska ta emot den och slå på lysdioden enligt vårt program och ge dig också ett bekräftelsemeddelande som säger att lysdioden är tänd som den skärmdump som visas ovan. Du kan också kontrollera den seriella bildskärmen som visar data som tas emot av ESP32 Bluetooth i decimalformat som din Arduino kommer att läsa 48 för 0 och 49 för 1 som förklarats tidigare. Ögonblicksbilden av mitt terminalfönster visas nedan.
På samma sätt bör du också kunna stänga av lysdioden genom att skicka 0 från mobilapplikationen. Hela arbetet visas i videon nedan. Hoppas att du förstod handledningen och lärt dig något användbart. Om du är osäker kan du lämna dem i kommentarfältet nedan eller använda våra forum för annan teknisk hjälp.