- Pagsisimula sa ESP32 Bluetooth
- Pag-unawa sa Bluetooth Low Energy (BLE) at ESP32 Classic Bluetooth
- Paghahanda ng Arduino IDE para sa ESP32
- Serial Bluetooth Program para sa ESP32
- Pagsubok sa Serial Bluetooth na may ESP32
Ang mga module ng Bluetooth tulad ng HC-05 at HC-06 ay madaling i-set-up at mabilis na magamit sa Arduino IDE, ngunit mayroon silang sariling limitasyon tulad ng mataas na pagkonsumo ng kuryente at nagpapatakbo sila sa lumang Bluetooth V2.0. Gayundin, kamakailan lamang nakuha ko ang aking sarili ng isang bagong kit ng ESP32 DEV, ang mga modyul na ito ay may isang suntok ng mga tampok tulad ng built-in na Wi-Fi at Bluetooth, sapat na mga ADC at DAC pin, Suporta sa Audio, Suporta sa SD Card, Deep Sleep Mode atbp halos mayroon itong lahat upang makabuo ng mga proyekto ng IoT.
At tulad ng pag-ibig ng sinumang libangan, ang ESP32 ay opisyal na sinusuportahan ngayon ng Arduino IDE. Mas maaga kailangan naming gumawa ng isang malaking solusyon sa Neil Kolbans Library, ngunit ngayon salamat sa pagsusumikap ng taong ito na pagsusulit sa programa ng3232 na may Arduino IDE ay naging isang paglalakad sa cake. Samakatuwid, inilunsad ko ang aking Arduino IDE at nagpunta sa ilang mga halimbawa ng mga programang BLE, kung saan wala akong naintindihan. Matapos ang mahabang panahon ng surfing at youtubing napagtanto ko na maraming bagay na mauunawaan kung kailangan mong gumana sa Bluetooth Low Energy (BLE) gamit ang ESP32. Napagpasyahan kong takpan ang BLE sa magkakahiwalay na mga artikulo, kaya dito gagamitin namin ang klasikong Serial Bluetooth ng ESP32 upang magpalipat-lipat ng isang LED gamit ang Smart Phone. Kung interesado kang suriin kung paano gamitin ang mga tampok na BLE suriin ang artikulong ito sa ESP32 BLE Server at ESP32 BLE Client
Pagsisimula sa ESP32 Bluetooth
Ang unang programa na nais kong subukan ay isang simpleng programa gamit ang kung saan maaari kong Buksan o I-off ang isang LED mula sa isang mobile phone application na Bluetooth Terminal, tulad ng magandang lumang HC-05 na araw. Ngunit lumalabas na, ang Bluetooth Low Energy (BLE) ay hindi naka-indent para doon. Natuklasan ko rin na mayroong dalawang uri ng Bluetooth sa module na ESP32, ang isa ay ang Klasikong Bluetooth at ang isa ay BLE Bluetooth Low Energy. Okay, ngunit bakit?…. bakit mayroon kaming dalawang uri ng Bluetooth at ano ang dapat kong gamitin para sa aking proyekto?
Pag-unawa sa Bluetooth Low Energy (BLE) at ESP32 Classic Bluetooth
Ang Bluetooth Mababang Enerhiya, tulad ng ipinapahiwatig ng pangalan ay gumagamit ng mas kaunting lakas kaysa sa klasikong Bluetooth. Nakamit ito sa pamamagitan ng pagpapadala ng data kung kinakailangan sa paunang natukoy na pana-panahong pag-update. Ngunit hindi katulad ng klasikong Bluetooth hindi ito ginagamit upang ilipat ang Mga File o Musika. Naisip mo ba kung paano awtomatikong kinikilala ng iyong telepono na ang aparato na Bluetooth na ipinares mo lamang ay isang audio device o isang laptop o telepono, maaaring nakita mo rin na ang antas ng baterya sa wireless audio player o fitness band ay awtomatikong ipinapakita sa status bar ng iyong telepono; posible ang lahat ng ito sa mga katangian ng mga aparatong BLE. Ang isang BLE aparato ay gumagana sa Bluetooth V4.0 at maaaring gumana nang may mababang lakas bilang isang server o bilang isang client na gumagawaBLE isang mainam na pagpipilian para sa mga beacon, matalinong relo, fitness band atbp.
Ang klasikong Bluetooth sa kabilang banda ay lamang ang simpleng payak na lumang Bluetooth na ginagamit namin upang maglipat ng mga file at iba pang data. Halos lahat ng mga aparatong BLE ay may pag-andar ng Klasikong Bluetooth na nauugnay dito. Ang Bluetooth na ginamit sa mga modyul tulad ng HC-05 ay isang bersyon ng klasikong Bluetooth na tinatawag na Bluetooth SSP (Serial Port Protocol), nangangahulugang sinusundan ng Bluetooth ang karaniwang serial protocol na ginagawang mas madali ang pagpapadala at pagtanggap ng data nang walang labis na overhead. Sa pagtatapos ng tutorial na ito matututunan natin kung paano gamitin ang pagpapaandar ng Serial Bluetooth sa ESP32.
Dito sa artikulong ito gagamitin namin ang pagpapaandar ng Serial Bluetooth sa ESP32 upang ipares ito sa isang Smartphone at gamitin ang anumang umiiral na Bluetooth Terminal app mula sa Play store upang magpadala ng mga utos sa ESP32 at i-toggle ang on board LED nang naaayon.
Sa mga susunod na artikulo sasakupin namin ang ESP32 BLE bilang server pati na rin ang client. Pangkalahatang ginagamit ang server ng BLE upang magpadala ng data ng BLE sa iba pang Mga Bluetooth Device at ang BLE client ay ginagamit upang i-scan ang iba pang mga aparatong BLE sa gayon ay kumikilos bilang beacon.
Paghahanda ng Arduino IDE para sa ESP32
Tandaan na ang Arduino IDE bilang default ay hindi sumusuporta sa board ng ESP32; kailangan mong i-download at mai-install ang mga ito gamit ang board manager. Kung ito ang iyong unang programa sa ESP32 pagkatapos ay sundin ang pagsisimula ng tutorial na ito upang idagdag ang board ng ESP32 sa iyong Arduino at mag-upload ng isang test sketch.
Dagdag dito, maaari kang gumawa ng maraming mga proyekto sa ESP32, nang hindi gumagamit ng anumang Microcontroller dito.
Serial Bluetooth Program para sa ESP32
Ang kumpletong programa upang i- toggle ang isang LED gamit ang ESP32 Bluetooth ay ibinibigay sa dulo ng pahinang ito. Sa ilalim ng heading na ito, hinahayaan na masira ang code sa maliliit na mga snippet at subukang unawain ang mga ito. Kung nagamit mo na ang iba pang mga module ng Bluetooth tulad ng HC-05 kung gayon mahahanap mo ang halimbawang programa ng ESP32 na Bluetooth Classic na magkatulad.
Ang ideya ng programa ay upang simulan ang isang koneksyon sa Serial Bluetooth gamit ang ESP32 at makinig para sa data mula sa mga ipinares na aparato. Kung ang papasok na data ay '1' pagkatapos ay i-on namin ang LED at kung ito ay '0' dapat naming patayin ang LED. Sinimulan namin ang aming programa sa pamamagitan ng pagdaragdag ng header file na BluetoothSerial na ginagawang gumana ang ESP32 Bluetooth bilang Bluetoth SSP.
# isama ang "BluetoothSerial.h" // Header File para sa Serial Bluetooth, idaragdag bilang default sa Arduino
Maraming mga bagay na nangyayari sa likod ng silid-aklatan na ito, ngunit pinili namin na hindi mapunta dito upang mapanatili ang mga bagay na simple. Ang susunod na kailangan namin ay isang bagay para sa aming pagpapatakbo na nauugnay sa Bluetooth. Dito ko pinangalanan ang akin bilang ESP_BT , ngunit maaari kang pumili ng anumang pangalan.
BluetoothSerial ESP_BT; // Bagay para sa Bluetooth
Susunod, sa loob ng pag- andar ng void setup () . Sinimulan namin ang Serial na komunikasyon sa baud rate na 9600 at pinasimulan ang signal ng Bluetooth na may isang pangalan. Dito ko ito pinangalanan bilang "ESP32_LED_Control ", ito ang magiging pangalan na mahahanap ng aming telepono kapag sinusubukan na ipares. Sa wakas ay idineklara ko ang built-in na LED pin bilang output pin dahil ililipat namin ito batay sa signal ng Bluetooth.
void setup () { Serial.begin (9600); // Start Serial monitor in 9600 ESP_BT.begin ("ESP32_LED_Control"); // Pangalan ng iyong Bluetooth Signal Serial.println ("Handa na Itambal ang Bluetooth Device"); pinMode (LED_BUILTIN, OUTPUT); // Tukuyin na ang LED pin ay output }
Sa loob ng walang katapusang pag- andar ng void loop , sinusuri namin kung mayroong anumang data na nagmumula sa module ng Bluetooth, kung oo kung gayon ang data ay nabasa at naimbak sa variable na papasok . Nai-print din namin ang halagang ito sa Serial monitor upang i-cross check lamang kung ano ang natatanggap ng Arduino.
kung (ESP_BT.available ()) // Suriin kung nakakatanggap kami ng anumang bagay mula sa Bluetooth { papasok = ESP_BT.read (); // Basahin kung ano ang natanggap namin Serial.print ("Natanggap:"); Serial.println (papasok);
Ngayon, anumang natanggap na data ay nakaimbak sa variable na papasok , kaya maaari naming direktang ihambing ang variable na ito sa inaasahang halaga at maisagawa ang kinakailangang pagkilos. Ngunit ang halagang ipinadala mula sa Bluetooth ay nasa char form at babasahin ng Arduino ang Decimal na halaga ng char na ipinapadala mula sa telepono. Sa aming kaso para sa char '0' ang decimal na halaga ay magiging 48 at para sa char '1' ang decimal na halaga ay 49. Maaari kang mag-refer sa tsart ng ASCII upang maunawaan kung ano ang magiging decimal na halaga para sa bawat character.
Narito na tayo kung ihahambing sa mga papasok na variable na may 48 at 49 upang suriin para sa 0 at 1 ayon sa pagkakabanggit. Kung ito ay isang 1 pagkatapos ay patayin namin ang LED at nag-print din ng isang mensahe ng pagkilala pabalik sa Bluetooth na nagsasabing ang LED ay naka-off at vice versa para sa 0.
kung (papasok == 49) { digitalWrite (LED_BUILTIN, MATAAS); ESP_BT.println ("Naka-ON ang LED"); } kung (papasok == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED naka-OFF"); }
Pagsubok sa Serial Bluetooth na may ESP32
Ikonekta ang iyong ESP sa iyong Arduino IDE at piliin ang tamang board at port tulad ng tinalakay sa pagsisimula ng tutorial. Dahil ito ay isang 3 rd party na board manager maaaring tumagal ng kaunti na para ang code upang makakuha ng naipon at nai-upload. Kapag na-upload ilunsad ang mga Serial monitor (para lamang sa pag-debug) at buksan ang setting ng Bluetooth sa iyong telepono. Dapat kang makahanap ng isang aparatong Bluetooth na pinangalanang pares ng ESP32_LED_Control .
Ngayon ay maaari mong buksan ang anumang Bluetooth terminal app sa iyong smartphone, ginagamit ko ang isang pinangalanang "Bluetooth Terminal" na na-download mula sa Google App store. Ikonekta ang application ng Bluetooth sa aparato na ipinares pa lamang namin at nai-type ang 1 at pindutin ang ipadala.
Dapat tanggapin ito ng module ng ESP32 at i-on ang LED ayon sa aming programa at bibigyan ka rin ng mensahe ng pagkilala na nagsasabing naka-ON ang LED tulad ng screenshot na ipinakita sa itaas. Maaari mo ring suriin ang Serial monitor na magpapakita ng data na natatanggap ng ESP32 Bluetooth sa decimal format na iyong Arduino ay magbabasa ng 48 para sa 0 at 49 para sa 1 tulad ng naipaliwanag nang mas maaga. Ang snapshot ng aking terminal window ay ipinapakita sa ibaba.
Katulad nito, dapat mo ring i-off ang LED sa pamamagitan ng pagpapadala ng 0 mula sa mobile application. Ang kumpletong pagtatrabaho ay ipinapakita sa video sa ibaba. Inaasahan kong naintindihan mo ang tutorial at natutunan ang isang bagay na kapaki-pakinabang. Kung mayroon kang anumang mga pagdududa huwag mag-atubiling iwanan ang mga ito sa seksyon ng komento sa ibaba o gamitin ang aming mga forum para sa iba pang panteknikal na tulong.