Talaan ng mga Nilalaman:

Paano Gumamit ng Bluetooth (BLE) Sa ESP32: 3 Mga Hakbang
Paano Gumamit ng Bluetooth (BLE) Sa ESP32: 3 Mga Hakbang

Video: Paano Gumamit ng Bluetooth (BLE) Sa ESP32: 3 Mga Hakbang

Video: Paano Gumamit ng Bluetooth (BLE) Sa ESP32: 3 Mga Hakbang
Video: Paano Ikonekta ang ESP32 In-built na Bluetooth sa Smartphone 2024, Hunyo
Anonim

##### TANDAAN ### ###

Ang pamamaraan na ipinapakita sa Mga Instructionable na ito ay luma at luma na. Panoorin ang video na ito para sa pinakabagong pamamaraan.

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

Habang ipinagmamalaki ng ESP32 ang isang malawak na listahan ng tampok (Wikipedia), ang pinakamalaking tampok na nakakakuha ng mata ay ang built-in na bluetooth v4.2 na may suporta sa BLE. Ngunit ang pahayag na iyon ay maaaring maging isang mapanlinlang, habang ang hardware ay naroroon, ang suporta ng software para sa paggamit ng Bluetooth ay nawawala. (Nasa ilalim ng pag-unlad)

Para sa mga hindi nakakaalam kung ano ang BLE, ito ay nangangahulugang Bluetooth Low Energy. Ito ay isang bluetooth protocol na nagpapalakas ng mas mababang konsumo sa kuryente kumpara sa "Klasikong" Bluetooth.

Sa Mga Tagubilin na ito ipapakita ko sa iyo kung paano mo magagamit ang limitadong (software) na mga mapagkukunan na magagamit mo upang magpadala ng data mula sa isang board na ESP32 sa iyong telepono sa paglipas ng BLE.

Ilang Mga Pagwawaksi…

Ang ilang mga bagay na dapat tandaan ay dapat kong banggitin bago ka magpatuloy sa karagdagang gabay na ito..

Tandaan 1: Kapag sinabi kong ang suporta sa Bluetooth ay hindi pa magagamit, ang ibig kong sabihin ay sa kapaligiran ng pag-unlad ng arduino.

Ang suporta ay mahusay na maaaring magagamit sa opisyal na SDK pati na rin ang IDF ngunit wala akong natagpuang anumang karampatang mga tagubilin para sa mga iyon.

Tandaan 2: Ang pamamaraang ginagamit ko ay talagang isang solusyon at hindi kung paano umepekto ang BLE. Sinusuportahan ng library ang paglikha ng mga serbisyo sa BLE ay wala para sa kapaligiran ng arduino.

Ang tanging bagay na maaari mong gawin mapagkakatiwalaan ay ang paglikha ng isang Beacon na ina-advertise ang pangalan nito. Isang komentaryo sa YouTube ang naglalagay dito nang napaka-elegante: "LOL, isang brutal na pag-hack. Ngunit ano ang magagawa mo?"

Tandaan 3: Ang tanging uri ng data na maaari mong ipadala ay ang string.

Maaari kang magpasya na mag-code at mag-decode ng iba pang mga uri ng data papunta at mula sa string ngunit lampas sa saklaw ng gabay na ito.

Hakbang 1: Ang Halimbawa na Bumuo

Image
Image
Ang Halimbawa na Bumuo
Ang Halimbawa na Bumuo
Ang Halimbawa na Bumuo
Ang Halimbawa na Bumuo
Ang Halimbawa na Bumuo
Ang Halimbawa na Bumuo

Kung narito ka lamang para sa paliwanag pagkatapos ay maaari mong laktawan ang hakbang na ito ngunit ang pagdaan dito ay maaaring magbigay sa iyo ng kaunting kalinawan..

Bumubuo muna ako ng isang halimbawa ng proyekto at pagkatapos ay susubukan kong ipaliwanag kung paano ito gumagana at kung paano mo maaaring makaya ang komunikasyon sa Bluetooth. Bumubuo kami ng isang portable temperatura sensor na nagpapadala ng isang live na feed sa iyong smartphone. Ang pagpapatayo ay maaaring tumakbo nang maraming araw sa isang solong li-po at madaling maipakita ang mga pakinabang ng BLE.

Maaari mong gamitin ang module bilang isang coaster upang insulate ang iyong mga inumin at makakuha ng isang notification sa lalong madaling maabot ang iyong inumin sa pinakamainam na temperatura. Sapagkat magiging isang travesty kung kailangan mong humigop ng tsaa na isang degree na higit sa 40.

Ang tanging hardware na kailangan mo ay isang board ng ESP32 at isang digital temperatura sensor. Sinusuportahan ng aking board ang panlabas na baterya kaya gumagamit ako ng isang 3.7v li-po na nai-salvage ko mula sa ilang lumang aparato upang gawing portable ang proyektong ito.

Hardware

Ang mga koneksyon para sa sensor ng temperatura ay simple. Ang pulang kawad ay kumokonekta sa 3.3v, itim na kumokonekta sa lupa (gnd), dilaw na kumokonekta sa GPIO 2 na sa aking board ay minarkahan bilang D9. Ikonekta ang isang 4.7k ohm risistor sa pagitan ng pula at dilaw na kawad. Hindi ako gumagamit ng risistor, sa halip ay gumagamit ako ng isang 3 pin na plug-magagawang terminal na kasama ng aking sensor. Mayroon itong built-in na pull up risistor.

Ang li-po ay dapat na konektado gamit ang isang konektor ng JST ngunit hindi ako mapakali upang bumili ng isa kaya't sinubuan ko lamang ang ilang (babae hanggang babae) na mga jumper cable papunta sa konektor at naghinang ng isa pang pares sa mga terminal ng baterya. Ginagawa ito para sa isang maaasahang koneksyon at isang pansamantalang switch ng kuryente.

Ngayon bilang isang enclosure ng proyekto, gumagamit ako ng isang Styrofoam disk na na-cut mula sa isang mas malaking sheet. Ginagawa ito para sa isang mahusay na insulator. Ang isa pang mas maliit na disk ay natigil sa itaas ngunit medyo sa gilid. Ito ay para sa pambalot ng labis na haba ng mga wire upang hindi sila nakabitin sa buong lugar. Matapos ang isang mapagbigay na trabaho ng iyong pandikit at isang maliit na butas para sa sensor probe, handa ka nang magpatuloy sa software.

Software

Kung wala ka pang naka-install na arduino IDE pagkatapos ay pumunta sa link na ito upang ma-download ito. Ang arduino software bilang default ay hindi kasama ng mga kahulugan ng board para sa iba't ibang mga board ng ESP32. Upang mapunta ang mga ito sa link na ito at i-download ang mga file sa isang zip. Kailangan mong i-unzip ang mga ito sa lokasyon na ito:

C: / Mga Gumagamit // Mga Dokumento / Arduino / hardware / espserrif / ESP32

Nasaan ang iyong pangalan ng gumagamit sa iyong PC. Tiyaking magagamit ang iba't ibang mga file sa ilalim ng folder ng ESP32 at wala sa ilalim ng isa pang folder.

Ngayon kung sinimulan mo ang arduino software at pumunta sa mga tool-> board dapat mong makita ang iba't ibang mga board ng ESP32 kapag nag-scroll pababa.

Karamihan sa mga digital na sensor ng temperatura ay gumagamit ng OneWire protocol upang makipag-usap sa mga micro controler kaya kailangan nating makuha ang library. Pumunta sa sketch-> isama ang library-> pamahalaan ang mga aklatan at maghanap para sa onewire at i-install ang library na sa pamamagitan ng napakaraming mga may-akda. Hindi mo kailangan ang onewire hub. Huwag pansinin.

Maaari mo na ngayong i-download at buksan ang code na naka-attach sa hakbang na ito (temperatura-halimbawa.ino).

Kung gumagamit ka ng ibang sensor mula sa akin pagkatapos ay kakailanganin mong baguhin ang code nang naaayon. Palitan ang code sa ilalim ng getTemp (). Ibalik lamang ang pangwakas na temperatura sa anyo ng

Bumalik;

Nasaan ang float na naglalaman ng temperatura.

I-plug sa board, piliin ang tamang board at port mula sa ilalim ng mga tool at pindutin ang upload.

Kung ang code ay tumangging mag-upload, idiskonekta ang sensor at ikonekta ang GPIO 0 sa lupa. Ibalik ang mga koneksyon pagkatapos ng pag-upload.

Ang iyong ESP ay dapat na sumisigaw ng temperatura ng kape sa mundo ngunit kailangan mo ng isang tao na maunawaan ito.

Ang Android App

Paumanhin ang mga gumagamit ng iPhone (… hindi talaga).

I-download ang apk mula rito at i-install ito. Kapag sinimulan mo ang app ay babatiin ka ng isang napaka-simpleng interface.

Kung nakakuha ka ng isang mensahe ng error na nagsasabing 'hindi suportado ang advertising', i-click ang OK at huwag pansinin ito ngunit kung nakakuha ka ng isang mensahe na 'BLE ay hindi suportado' kung gayon ang iyong telepono ay walang Bluetooth 4.0 o mas mataas at hindi magagawang tumakbo ang app.

Tiyaking naka-on ang Bluetooth sa iyong telepono at i-click ang 'Start Scanning', hangga't ang esp ay nasa saklaw at pinapatakbo sa iyo ay dapat makatanggap ng ilang halaga sa temperatura.

Posibleng mga error:

  • -1000:: Nangangahulugan ito na hindi mahanap ng iyong aparato ang ESP. tiyaking naka-on ang Bluetooth at subukang i-restart ang ESP.
  • SNA:: Nangangahulugan ito na ang iyong telepono ay nakakatanggap ng data mula sa ESP ngunit ang ESP mismo ay hindi makahanap ng isang sensor ng temperatura sa GPIO 2. Tiyaking ligtas ang mga koneksyon, tingnan kung gumagamit ka ng isang risistor ng wastong halaga. I-double check sa iyong mga iskema ng board na nakakonekta ka sa GPIO 2 at hindi isang pin na minarkahan bilang D2.

Hakbang 2: Ang Paliwanag

Paano karaniwang gumagana ang BLE ay na-advertise ng isang aparato ang pangalan nito tulad ng isang beacon, ang pangalang ito ay maaaring makita ng sinuman at ginagamit upang makilala ang aparato. Pagkatapos ang aparato ay maaaring lumikha ng iba't ibang mga serbisyo na nakikita ng iba kapag kumonekta sila dito. Ang mga serbisyong ito ay maaaring magkaroon ng iba't ibang mga stream ng data.

Para hal. Ang isang aparato na pinangalanang 'Weather Station' ay maaaring maglingkod sa ilalim nito tulad ng 'Temperatura', 'Humidity' at 'Wind'. Kapag ang isa pang BLE aparato tulad ng iyong smartphone ay nag-i-scan para sa mga aparato, makikita nito ang Weather Station at kapag ito ay kumokonekta dito, makakatanggap ito ng mga stream ng data sa ilalim ng naaayon sa iba't ibang mga serbisyo.

Ang mga aklatan (para sa ESP32) na kasalukuyang magagamit sa amin ay pinapayagan kaming lumikha ng isang beacon na maaaring matuklasan ng iba ngunit iyon ang lawak nito. Hindi kami makakalikha ng mga serbisyo at hindi rin makakonekta ang anumang aparato dito.

Kaya kung paano ako nagpapadala ng data nang hindi lumilikha ng mga serbisyo ay sa pamamagitan ng paggamit ng isang diskarteng katulad sa WiFi protocol na tinatawag na Beacon Stuffing. Nangangahulugan ito na nagsasama ako ng data upang maipadala sa mismong pangalan ng beacon. Pinapayagan akong mag-advertise ng data nang hindi nangangailangan ng iba pang mga aparato upang kumonekta sa beacon.

ble.begin (beaconMsg); // beaconMsg ang na-advertise na pangalan

Gumagamit kami ng library ng SimpleBLE upang lumikha ng isang beacon na may pangalan nito sa format ng ESP. Kung saan laging nananatiling hindi nagbabago ang 'ESP' sa simula ng pangalan at pinalitan ng pinakabagong data na ibinalik ng getValue () na function bawat 100 milliseconds.

float getValue () {return sensorValue;}

Ang Android app ay naghahanap ng mga pangalan ng aparato ng BLE na nagsisimula sa 'ESP', sa sandaling nahanap, nahahati nito ang pangalan at ipinapakita lamang ang data mula sa huli.

Ang komunikasyon ay isang paraan lamang, ang app ay hindi nagpapadala ng anumang bumalik.

Hakbang 3: Konklusyon

Sa pagtatapos ng araw, ang pamamaraang ito ay hindi kapalit para sa maayos na ipinatupad na BLE library ngunit maaaring sapat na upang magawa ang ilang mga proyekto hanggang sa makumpleto ang suporta ng BLE sa Arduino. Inaasahan kong ang Mga Instructionable na ito ay may tulong sa iyo.

Isang MALAKING Salamat sa DFRobot.com sa pagpapadala sa akin ng mga produktong ito:

  • Lupon ng FireBeetle ng ESP32
  • FireBeetle Expantion Shield
  • DS18B20 Temperatura Sensor

Kamakailan ko lang nahanap ang library na ito. Sinasabi ng ReadME na maaari kang kumonekta sa ibang mga aparato ng BLE upang makatanggap ng data (Hindi ma-advertise ang iyong sarili). Hindi ko ito nasubukan ngunit maaari mo itong suriin kung interesado ka.

Maaari mong suriin ang video ng proyekto sa: YouTube

Inirerekumendang: