Innehållsförteckning:
Video: Så här använder du Bluetooth (BLE) med ESP32: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
#####NOTERA#####
Metoden som visas i denna instruktion är gammal och föråldrad. Se den här videon för den senaste metoden.
###############
ESP32 har en omfattande funktionslista (Wikipedia), men den största funktionen som drar blicken är den inbyggda bluetooth v4.2 med BLE-stöd. Men det påståendet kan vara vilseledande, medan hårdvaran finns, saknas programvarustödet för att använda Bluetooth. (Det är under utveckling)
För dem som inte vet vad BLE är, står det för Bluetooth Low Energy. Det är ett bluetooth -protokoll som ökar betydligt lägre strömförbrukning jämfört med "klassisk" Bluetooth.
I denna instruktionsbok visar jag dig hur du kan använda de begränsade (programvara) resurser som du har till förfogande för att skicka data från ett ESP32 -kort till din telefon via BLE.
Några ansvarsfriskrivningar …
Några anmärkningsvärda saker bör jag nämna innan du fortsätter med den här guiden..
Not 1: När jag säger att Bluetooth -stöd ännu inte är tillgängligt, menar jag i arduino -utvecklingsmiljön.
Stödet kan mycket väl vara tillgängligt i det officiella SDK såväl som IDF men jag har inte hittat några kompetenta instruktioner för dem.
Not 2: Metoden som jag använder är mycket en lösning och inte hur BLE helst ska fungera. Biblioteket stöder för att skapa tjänster i BLE är inte här för arduino -miljön.
Det enda du kan göra på ett tillförlitligt sätt är att skapa en Beacon som annonserar dess namn. En YouTube -kommentar uttryckte det mycket elegant: "LOL, ett brutalt hack. Men vad kan du göra?"
Not 3: Den enda typen av data som du kan skicka är sträng.
Du kan mycket väl bestämma dig för att koda och avkoda andra typer av data till och från sträng, men det ligger utanför räckvidden för den här guiden.
Steg 1: Exempelbygget
Om du bara är här för förklaringen kan du hoppa över det här steget men att gå igenom det kan ge dig lite mer klarhet..
Först ska jag bygga ett exempelprojekt och sedan ska jag försöka förklara hur det fungerar och hur du kan replikera Bluetooth -kommunikationen. Vi bygger en bärbar temperatursensor som skickar ett levande flöde till din smartphone. Bygget kan köras i flera dagar på en enda li-po och visar enkelt fördelarna med BLE.
Du kan använda modulen som en dalbana för att isolera dina drycker och få ett meddelande så snart din dryck når den optimala temperaturen. För det skulle vara en travesti om du fick smutta på ett te som var över 40 grader.
Den enda hårdvaran du behöver är ett ESP32 -kort och en digital temperatursensor. Mitt kort stöder externt batteri så jag använder en 3,7v li-po som jag räddade från en gammal enhet för att göra detta projekt bärbart.
Hårdvara
Anslutningarna för temperaturgivaren är enkla. Den röda tråden ansluts till 3,3v, svart ansluts till jord (gnd), gul ansluter till GPIO 2 som på mitt kort är märkt som D9. Anslut ett motstånd på 4,7 k ohm mellan den röda och gula ledningen. Jag använder inte motståndet, istället använder jag en 3-polig pluggbar terminal som följde med min sensor. Den har ett inbyggt pull-up-motstånd.
Li-po borde verkligen vara ansluten med en JST-kontakt men jag kunde inte bry mig om att köpa en så jag skonade bara in några (kvinnliga till kvinnliga) bygelkablar i kontakten och lödde ytterligare ett par till batteripolerna. Detta ger en pålitlig anslutning och en provisorisk strömbrytare.
Nu som ett projekthölje använder jag en frigolitskiva som har skurits ur ett större ark. Detta ger en bra isolator. En annan mycket mindre disk sitter fast ovanpå men lite åt sidan. Detta är för att slå in den extra längden av ledningar så att de inte dinglar överallt. Efter en generös användning av ditt lim och ett litet hål för sensorsonden är du redo att fortsätta till programvaran.
programvara
Om du inte redan har arduino IDE installerat går du till den här länken för att ladda ner den. Arduino -programvaran kommer som standard inte med kortdefinitionerna för de olika ESP32 -korten. För att få dem att gå den här länken och ladda ner filerna i en zip. Du måste packa upp dem till den här platsen:
C:/Användare // Dokument/Arduino/hardware/espserrif/ESP32
Var är ditt användarnamn på din dator. Se till att de olika filerna är tillgängliga under ESP32 -mappen och inte är under en annan mapp.
Om du nu startar arduino-programvaran och går till verktygs-> kort bör du se olika ESP32-kort när du rullar ner.
De flesta digitala temperatursensorer använder OneWire -protokollet för att kommunicera med mikrokontrollerna så vi måste skaffa biblioteket. Gå till skiss-> inkludera bibliotek-> hantera bibliotek och sök efter onewire och installera biblioteket som är alldeles för många författare. Du behöver inte onewire -navet. Ignorera det.
Nu kan du ladda ner och öppna koden som bifogas detta steg (temperatur-exempel.ino).
Om du använder en annan sensor än mig måste du ändra koden i enlighet därmed. Ersätt koden under getTemp (). Returnera bara den slutliga temperaturen i form av
Lämna tillbaka;
Var är flottören som innehåller temperaturen.
Anslut kortet, välj rätt kort och port från verktygen och tryck på Ladda upp.
Om koden vägrar att ladda upp, koppla bort sensorn och anslut GPIO 0 till jord. Återställ anslutningarna efter uppladdningen.
Din ESP borde nu skrika temperaturen på ditt kaffe till världen men du behöver någon som kan förstå det.
Android -appen
Förlåt iPhone -användare (… inte riktigt).
Ladda ner apk härifrån och installera den. När du startar appen skulle du bli hälsad med ett mycket enkelt gränssnitt.
Om du får ett felmeddelande som säger "reklam stöds inte" klickar du på OK och ignorerar det, men om du får ett meddelande att "BLE stöds inte" har din telefon inte Bluetooth 4.0 eller högre och skulle inte kunna köras appen.
Se till att Bluetooth på din telefon är på och klicka på "Starta skanning", så länge esp är inom räckhåll och påslagen bör du få något temperaturvärde.
Möjliga fel:
- -1000:: Det betyder att din enhet inte kunde hitta ESP. Se till att Bluetooth är på och försök starta om ESP.
- SNA:: Detta innebär att din telefon tar emot data från ESP men ESP själv kunde inte hitta en temperatursensor på GPIO 2. Se till att anslutningarna är säkra, se om du använder ett motstånd av rätt värde. Dubbelkolla med ditt kortschema att du är ansluten till GPIO 2 och inte en nål märkt som D2.
Steg 2: Förklaringen
Hur BLE normalt fungerar är att en enhet annonserar sitt namn som en fyr, det här namnet kan ses av alla och används för att identifiera enheten. Sedan kan enheten skapa olika tjänster som andra ser när de ansluter till den. Dessa tjänster kan ha olika dataströmmar.
Till exempel En enhet som heter "Väderstation" kan ha servats under den som "Temperatur", "Luftfuktighet" och "Vind". När en annan BLE -enhet som din smartphone söker efter enheter skulle den se väderstationen och när den ansluter till den skulle den kunna ta emot dataströmmarna under motsvarande de olika tjänsterna.
De bibliotek (för ESP32) som för närvarande är tillgängliga för oss tillåter oss att skapa en ledstjärna som andra kan upptäcka men det är omfattningen av det. Vi kan inte skapa tjänster och inte heller kan någon enhet ansluta till den.
Så hur jag skickar data utan att skapa tjänster är att använda en teknik som liknar WiFi -protokollet som kallas Beacon Stuffing. Det betyder att jag inkluderar data som ska skickas inom själva fyrnamnet. Detta gör att jag kan annonsera data utan att andra enheter behöver ansluta till fyren.
ble.begin (beaconMsg); // beaconMsg är det annonserade namnet
Vi använder SimpleBLE -biblioteket för att skapa en fyr med sitt namn i formatet ESP. Där "ESP" alltid förblir oförändrad i början av namnet och ersätts med de senaste data som returneras av funktionen getValue () var 100 millisekund.
float getValue () {return sensorValue;}
Android -appen letar efter BLE -enhetsnamn som börjar med "ESP", en gång hittat delar den namnet och visar endast data från slutet.
Kommunikationen är bara ett sätt, appen skickar inget tillbaka.
Steg 3: Slutsats
I slutet av dagen är den här metoden ingen ersättning för ett korrekt implementerat BLE -bibliotek, men det kan vara tillräckligt att vänta några projekt tills komplett BLE -stöd kommer till Arduino. Förhoppningsvis var denna instruktion till någon hjälp för dig.
Ett STORT Tack till DFRobot.com för att du skickade dessa produkter till mig:
- ESP32 FireBeetle Board
- FireBeetle Expantion Shield
- DS18B20 Temperaturgivare
Jag hittade nyligen detta bibliotek. ReadME hävdar att du kan ansluta till andra BLE -enheter för att ta emot data (kan inte annonsera själv). Jag har inte provat det men du kan kolla in det om du är intresserad.
Du kan kolla projektvideon på: YouTube
Rekommenderad:
Så här använder du kollisionsbrytare XD206 med SkiiiD: 9 steg
Hur man använder Collision Switch XD206 med SkiiiD: En handledning för att utveckla Collision Switch XD206 med skiiiD
Så här använder du knappmodul med SkiiiD: 9 steg
Så här använder du knappmodul med SkiiiD: Det här projektet är en instruktion om hur du använder Buzzer HW-508 (gäller för KY-006) med Arduino via skiiiD Innan du börjar, nedan är en grundläggande handledning för hur du använder skiiiD https: // www.instructables.com/id/Getting-Started-With-SkiiiD-Editor
ESP32 Bluetooth -handledning - Så här använder du inbyggd Bluetooth av ESP32: 5 steg
ESP32 Bluetooth -handledning | Hur man använder inbyggd Bluetooth av ESP32: Hej killar Eftersom ESP32 -kortet levereras med WiFi & Bluetooth båda men för våra mestadels projekt använder vi vanligtvis bara Wifi, vi använder inte Bluetooth. Så i denna instruktioner visar jag hur enkelt det är att använda Bluetooth av ESP32 & För dina grundläggande projekt
Så här använder du Wemos ESP-Wroom-02 D1 Mini WiFi-modul ESP8266 + 18650 med hjälp av Blynk: 10 steg
Så här använder du Wemos ESP-Wroom-02 D1 Mini WiFi-modul ESP8266 + 18650 med hjälp av Blynk: Specifikation: Kompatibel med nodemcu 18650 laddningssystemintegration Indikatorlampan (grön betyder full röd betyder laddning) kan användas under laddning Brytare styr strömförsörjning SMT kontakt kan användas för viloläge · 1 lägg till
Så här använder du kontroller som inte stöds med en IOS 9.3.5 -enhet: 23 steg
Så här använder du kontroller som inte stöds med en IOS 9.3.5 -enhet: Nödvändigt material: PlayStation 4 -kontroller Lightning -laddningskabel Bärbar dator med Windows 10 iPod Touch 5: e generationens bärbar mus Mus bärbar laddningskabel