Innehållsförteckning:

Så här använder du Bluetooth (BLE) med ESP32: 3 steg
Så här använder du Bluetooth (BLE) med ESP32: 3 steg

Video: Så här använder du Bluetooth (BLE) med ESP32: 3 steg

Video: Så här använder du Bluetooth (BLE) med ESP32: 3 steg
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, November
Anonim

#####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

Image
Image
Exempelbygget
Exempelbygget
Exempelbygget
Exempelbygget
Exempelbygget
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: