Satura rādītājs:

Kā lietot Bluetooth (BLE) ar ESP32: 3 soļi
Kā lietot Bluetooth (BLE) ar ESP32: 3 soļi

Video: Kā lietot Bluetooth (BLE) ar ESP32: 3 soļi

Video: Kā lietot Bluetooth (BLE) ar ESP32: 3 soļi
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, Jūnijs
Anonim

#####PIEZĪME#####

Šajā instrukcijā parādītā metode ir veca un novecojusi. Noskatieties šo videoklipu, lai uzzinātu jaunāko metodi.

###############

Lai gan ESP32 lepojas ar plašu funkciju sarakstu (Wikipedia), lielākā iezīme, kas piesaista uzmanību, ir iebūvētais Bluetooth v4.2 ar BLE atbalstu. Bet šis apgalvojums var būt maldinošs, kamēr aparatūra ir pieejama, trūkst programmatūras atbalsta Bluetooth lietošanai. (Tas tiek izstrādāts)

Tiem, kas nezina, kas ir BLE, tas nozīmē Bluetooth Low Energy. Tas ir Bluetooth protokols, kas ievērojami samazina enerģijas patēriņu salīdzinājumā ar klasisko Bluetooth.

Šajā instrukcijā es jums parādīšu, kā varat izmantot jūsu rīcībā esošos ierobežotos (programmatūras) resursus, lai nosūtītu datus no ESP32 plates uz tālruni, izmantojot BLE.

Dažas atrunas…

Pirms turpināt šo rokasgrāmatu, man jāpiemin dažas lietas, kas jāņem vērā.

1. piezīme. Kad es saku, ka Bluetooth atbalsts vēl nav pieejams, es domāju arduino izstrādes vidē.

Atbalsts ļoti labi var būt pieejams oficiālajā SDK, kā arī IDF, bet es neesmu atradis nevienu kompetentu norādījumu.

2. piezīme. Mana izmantotā metode ir ļoti risinājums, nevis tas, kā ideāli vajadzētu darboties BLE. Bibliotēka atbalsta pakalpojumu izveidei BLE šeit nav paredzēta arduino videi.

Vienīgais, ko varat uzticami izdarīt, ir izveidot bāku, kas reklamē tā nosaukumu. Kāds YouTube komentārs izteica to ļoti eleganti: "LOL, brutāls uzlaušana. Bet ko jūs varat darīt?"

3. piezīme. Vienīgais datu veids, ko varat nosūtīt, ir virkne.

Jūs varētu ļoti labi nolemt kodēt un atšifrēt cita veida datus uz virkni un no tās, taču tas nav šīs rokasgrāmatas darbības jomā.

1. darbība. Veidošanas piemērs

Image
Image
Veidošanas piemērs
Veidošanas piemērs
Veidošanas piemērs
Veidošanas piemērs
Veidošanas piemērs
Veidošanas piemērs

Ja jūs esat šeit tikai skaidrojuma dēļ, varat izlaist šo soli, bet, ja to veiksit, tas jums sniegs mazliet lielāku skaidrību.

Vispirms es izveidošu piemēra projektu, un tad es mēģināšu izskaidrot, kā tas darbojas un kā jūs varat atkārtot Bluetooth komunikāciju. Mēs izveidosim pārnēsājamu temperatūras sensoru, kas jūsu viedtālrunim nosūta tiešraides plūsmu. Būvējums var darboties vairākas dienas vienā li-po, un tas viegli parāda BLE priekšrocības.

Jūs varat izmantot moduli kā paliktni, lai izolētu savus dzērienus un saņemtu paziņojumu, tiklīdz dzēriens sasniegs optimālo temperatūru. Jo tas būtu traģēdija, ja tev būtu jāmalko tēja, kuras grāds pārsniedz 40 grādus.

Vienīgā nepieciešamā aparatūra ir ESP32 tāfele un digitālais temperatūras sensors. Mana dēlis atbalsta ārējo akumulatoru, tāpēc es izmantoju 3.7v li-po, ko izglābu no kādas vecas ierīces, lai padarītu šo projektu pārnēsājamu.

Aparatūra

Temperatūras sensora savienojumi ir vienkārši. Sarkanais vads savienojas ar 3.3v, melns savienojas ar zemi (gnd), dzeltens savienojas ar GPIO 2, kas uz mana dēļa ir atzīmēts kā D9. Pievienojiet 4,7 kΩ pretestību starp sarkano un dzelteno vadu. Es neizmantoju rezistoru, tā vietā es izmantoju 3 kontaktu spraudni, kas pievienots manam sensoram. Tam ir iebūvēts pacelšanas rezistors.

Li-po patiešām vajadzētu savienot, izmantojot JST savienotāju, bet es nevarēju apnikt, lai to nopirktu, tāpēc es vienkārši pievienoju savienotājā dažus (no sievietēm līdz sievietēm) džemperu kabeļus un pielodēju citu pāri pie akumulatora spailēm. Tas nodrošina uzticamu savienojumu un īslaicīgu barošanas slēdzi.

Tagad kā projekta korpuss es izmantoju putupolistirola disku, kas ir izgriezts no lielākas lapas. Tas nodrošina lielisku izolatoru. Vēl viens daudz mazāks disks ir iestrēdzis augšpusē, bet mazliet uz sāniem. Tas ir paredzēts papildu stieples garuma iesaiņošanai, lai tie netiktu karināmi visā vietā. Pēc bagātīgas līmes izmantošanas un neliela cauruma sensora zondei jūs esat gatavs turpināt programmatūru.

Programmatūra

Ja jums vēl nav instalēts arduino IDE, dodieties uz šo saiti, lai to lejupielādētu. Arduino programmatūrai pēc noklusējuma nav pievienotas dažādu ESP32 dēļu dēļu definīcijas. Lai viņi nokļūtu šajā saitē un lejupielādētu failus zip formātā. Jums tie ir jāizsaiņo šajā vietā:

C:/Lietotāji // Dokumenti/Arduino/aparatūra/espserrif/ESP32

Kur ir jūsu lietotājvārds datorā. Pārliecinieties, vai dažādi faili ir pieejami mapē ESP32 un nav citā mapē.

Tagad, ja sākat arduino programmatūru un dodaties uz rīkiem-> dēļiem, ritinot uz leju, vajadzētu redzēt dažādas ESP32 plates.

Lielākā daļa digitālo temperatūras sensoru izmanto OneWire protokolu, lai sazinātos ar mikrokontrolleriem, tāpēc mums ir jāiegūst bibliotēka. Dodieties uz skici-> iekļaut bibliotēku-> pārvaldiet bibliotēkas un meklējiet onewire un instalējiet bibliotēku, kurā ir pārāk daudz autoru. Jums nav nepieciešams onewire centrmezgls. Ignorē to.

Tagad jūs varat lejupielādēt un atvērt šim solim pievienoto kodu (temperatūra-example.ino).

Ja jūs izmantojat citu sensoru nekā es, tad jums būs attiecīgi jāmaina kods. Aizstājiet kodu zem getTemp (). Vienkārši atgrieziet galīgo temperatūru formā

Atgriešanās;

Kur atrodas pludiņš ar temperatūru.

Pievienojiet dēli, no rīkiem izvēlieties pareizo dēli un portu un noklikšķiniet uz augšupielādēt.

Ja kods atsakās augšupielādēt, atvienojiet sensoru un pievienojiet GPIO 0 zemei. Pēc augšupielādes atjaunojiet savienojumus.

Jūsu ESP tagad vajadzētu kliegt pasaulei par jūsu kafijas temperatūru, bet jums ir nepieciešams kāds, kas to var saprast.

Android lietotne

Atvainojiet iPhone lietotājus (… ne īsti).

Lejupielādējiet apk šeit un instalējiet to. Palaižot lietotni, jūs sagaidīs ļoti vienkāršs interfeiss.

Ja tiek parādīts kļūdas ziņojums ar tekstu “reklāma netiek atbalstīta”, noklikšķiniet uz Labi un ignorējiet to, bet, ja tiek parādīts ziņojums, ka “BLE netiek atbalstīts”, tālrunī nav Bluetooth 4.0 vai jaunākas versijas un to nevarēs palaist lietotni.

Pārliecinieties, vai tālrunī ir ieslēgts Bluetooth, un noklikšķiniet uz Sākt skenēšanu, ja vien esp ir diapazonā un ir ieslēgts, jums vajadzētu saņemt kādu temperatūras vērtību.

Iespējamās kļūdas:

  • -1000:: Tas nozīmē, ka jūsu ierīce nevarēja atrast ESP. pārliecinieties, vai Bluetooth ir ieslēgts, un mēģiniet restartēt ESP.
  • SNA:: Tas nozīmē, ka jūsu tālrunis saņem datus no ESP, bet pats ESP nevarēja atrast GPIO 2 temperatūras sensoru. Pārliecinieties, vai savienojumi ir droši, un pārbaudiet, vai izmantojat pareizas vērtības rezistoru. Vēlreiz pārbaudiet, izmantojot shēmas shēmas, vai esat savienots ar GPIO 2, nevis tapu, kas atzīmēta kā D2.

2. solis: skaidrojums

BLE parasti darbojas tā, ka ierīce savu nosaukumu reklamē kā bāku, šo nosaukumu var redzēt ikviens un to izmanto, lai identificētu ierīci. Tad ierīce var izveidot dažādus pakalpojumus, kurus citi redz, kad izveido savienojumu ar to. Šiem pakalpojumiem var būt dažādas datu plūsmas.

Piemēram, piem. Ierīci ar nosaukumu “Weather Station” var apkalpot, piemēram, “Temperatūra”, “Mitrums” un “Vējš”. Kad cita BLE ierīce, piemēram, jūsu viedtālrunis, meklē ierīces, tā redzēs meteoroloģisko staciju, un, izveidojot savienojumu ar to, tā varēs saņemt datu plūsmas saskaņā ar dažādiem pakalpojumiem.

Bibliotēkas (ESP32), kas mums pašlaik ir pieejamas, ļauj mums izveidot bāku, ko citi var atklāt, bet tas ir tā apjoms. Mēs nevaram izveidot pakalpojumus, kā arī neviena ierīce nevar ar to izveidot savienojumu.

Tātad, kā es sūtu datus, neradot pakalpojumus, tiek izmantota metode, kas līdzīga WiFi protokolam ar nosaukumu Bākas pildījums. Tas nozīmē, ka es iekļauju nosūtāmos datus pašā bākas nosaukumā. Tas ļauj man reklamēt datus, neprasot citām ierīcēm savienojumu ar bāku.

ble.begin (beaconMsg); // beaconMsg ir reklamētais nosaukums

Mēs izmantojam bibliotēku SimpleBLE, lai izveidotu bāku ar tās nosaukumu ESP formātā. Ja “ESP” vienmēr paliek nemainīgs nosaukuma sākumā un tiek aizstāts ar jaunākajiem datiem, ko atgriež funkcija getValue () ik pēc 100 milisekundēm.

float getValue () {return sensorValue;}

Android lietotne meklē BLE ierīču nosaukumus, kas sākas ar “ESP”, kad tā ir atrasta, tā sadala nosaukumu un parāda tikai datus no beigām.

Saziņa ir tikai viens veids, lietotne neko nesūta atpakaļ.

3. solis: secinājums

Dienas beigās šī metode neaizstāj pareizi ieviestu BLE bibliotēku, taču ar to var pietikt, lai pabeigtu dažus projektus, līdz Arduino saņems pilnīgu BLE atbalstu. Cerams, ka šī pamācība jums nedaudz palīdzēja.

LIELS paldies DFRobot.com, kas man atsūtīja šos produktus:

  • ESP32 FireBeetle dēlis
  • FireBeetle paplašināšanas vairogs
  • DS18B20 temperatūras sensors

Nesen atradu šo bibliotēku. ReadME apgalvo, ka, lai saņemtu datus, varat izveidot savienojumu ar citām BLE ierīcēm (nevar sevi reklamēt). Es neesmu mēģinājis, bet, ja ir interese, varat to pārbaudīt.

Jūs varat pārbaudīt projekta video vietnē: YouTube

Ieteicams: