- Darba sākšana ar ESP32 Bluetooth
- Izpratne par Bluetooth Low Energy (BLE) un ESP32 Classic Bluetooth
- Arduino IDE sagatavošana ESP32
- ESP32 sērijveida Bluetooth programma
- Sērijas Bluetooth testēšana ar ESP32
Bluetooth moduļus, piemēram, HC-05 un HC-06, ir viegli uzstādīt un ātri lietot ar Arduino IDE, taču tiem ir savi ierobežojumi, piemēram, liels enerģijas patēriņš, un tie darbojas ar veco Bluetooth V2.0. Turklāt nesen es sev ieguvu jaunu ESP32 DEV komplektu, šiem moduļiem ir daudz funkciju, piemēram , iebūvēts Wi-Fi un Bluetooth, pietiekami daudz ADC un DAC tapu, audio atbalsts, SD karšu atbalsts, dziļa miega režīms utt. viss, lai izveidotu IoT projektus.
Tāpat kā jebkuram vaļaspriekam tas patiktu, ESP32 tagad oficiāli atbalsta Arduino IDE. Iepriekš mums ir jāizdara milzīgs risinājums ar Nila Kolbāna bibliotēku, taču tagad, pateicoties šī puiša smagajam darbam, ESP32 programmēšana ar Arduino IDE ir kļuvusi par kūku pastaigu. Tāpēc es palaidu savu Arduino IDE un izgāju dažus BLE programmu piemērus, caur kuriem es neko nesapratu. Pēc ilga sērfošanas un youtubinga laika es sapratu, ka ir daudz kas cits, kas jāsaprot, ja jums ir jāstrādā ar Bluetooth Low Energy (BLE), izmantojot ESP32. Es nolēmu BLE aplūkot atsevišķos rakstos, tāpēc šeit mēs izmantosim ESP32 klasisko seriālo Bluetooth, lai pārslēgtu LED, izmantojot viedtālruni. Ja jūs interesē pārbaudīt, kā izmantot BLE funkcijas, pārbaudiet šo rakstu par ESP32 BLE serveri un ESP32 BLE klientu
Darba sākšana ar ESP32 Bluetooth
Pirmā programma, kuru es gribēju izmēģināt, bija vienkārša programma, izmantojot kuru es varu ieslēgt vai izslēgt gaismas diode no mobilā tālruņa Bluetooth Terminal lietojumprogrammas, tāpat kā vecās labās HC-05 dienas. Bet izrādās, ka Bluetooth Low Energy (BLE) tam nav atkāpes. Es arī atklāju, ka ESP32 modulī ir divu veidu Bluetooth, viens ir Classic Bluetooth un otrs ir BLE Bluetooth Low Energy. Labi, bet kāpēc?…. kāpēc mums ir divu veidu Bluetooth un ko man vajadzētu izmantot savam projektam?
Izpratne par Bluetooth Low Energy (BLE) un ESP32 Classic Bluetooth
Bluetooth Low Energy, kā norāda nosaukums, patērē mazāk enerģijas nekā klasiskais Bluetooth. Tas tiek sasniegts, nosūtot datus pēc nepieciešamības ar iepriekš noteiktiem periodiskiem atjauninājumiem. Bet atšķirībā no klasiskā Bluetooth to neizmanto failu vai mūzikas pārsūtīšanai. Vai esat kādreiz domājis, kā tālrunis automātiski identificē, ka tikko savienotā Bluetooth ierīce ir audio ierīce, klēpjdators vai tālrunis, iespējams, esat redzējis arī to, ka akumulatora uzlādes līmenis bezvadu audio atskaņotājā vai fitnesa joslā tiek automātiski parādīts jūsu mobilais; tas viss ir iespējams ar BLE ierīču īpašībām. BLE Ierīce darbojas ar Bluetooth V4.0, un var darboties ar mazu jaudu, kā serveris vai klients, kas padaraBLE ir ideāla izvēle bākugunīm, viedajiem pulksteņiem, fitnesa joslām utt.
No otras puses, klasiskais Bluetooth ir vienkārši vienkāršs vecais Bluetooth, ko mēs izmantojam failu un citu datu pārsūtīšanai. Gandrīz visām BLE ierīcēm ir pievienota klasiskā Bluetooth funkcionalitāte. Moduļos, piemēram, HC-05, izmantotais Bluetooth ir klasiskā Bluetooth versija, ko sauc par Bluetooth SSP (seriālā porta protokols), kas nozīmē, ka Bluetooth seko standarta sērijas protokolam, kas atvieglo datu sūtīšanu un saņemšanu bez daudzām papildu izmaksām. Šīs apmācības beigās mēs uzzināsim, kā izmantot seriālo Bluetooth funkcionalitāti ESP32.
Šajā rakstā mēs izmantosim ESP32 sērijas Bluetooth funkciju, lai to savienotu pārī ar viedtālruni, un izmantosim jebkuru esošo Bluetooth termināļa lietotni no Play veikala, lai nosūtītu komandas uz ESP32 un attiecīgi pārslēgtu borta LED.
Turpmākajos rakstos mēs aplūkosim ESP32 BLE kā serveri, kā arī klientu. BLE serveri parasti izmanto, lai nosūtītu BLE datus citām Bluetooth ierīcēm, un BLE klientu izmanto, lai skenētu citas BLE ierīces, tādējādi darbojoties kā bāka.
Arduino IDE sagatavošana ESP32
Vai ņemiet vērā, ka Arduino IDE pēc noklusējuma neatbalsta ESP32 dēli; tie ir jālejupielādē un jāinstalē, izmantojot dēļu pārvaldnieku. Ja šī ir jūsu pirmā programma ar ESP32, izpildiet šo darba sākšanas pamācību, lai pievienotu ESP32 dēli savam Arduino un augšupielādētu testa skici.
Turklāt jūs varat veikt vairāk projektu ar ESP32, neizmantojot tajā nevienu mikrokontrolleru.
ESP32 sērijveida Bluetooth programma
Pilna programma gaismas pārslēgšanai, izmantojot ESP32 Bluetooth, ir dota šīs lapas beigās. Šajā sadaļā ļauj sadalīt kodu mazos fragmentos un mēģināt tos saprast. Ja jūs jau esat izmantojis citus Bluetooth moduļus, piemēram, HC-05, jūs atradīsit, ka šī ESP32 Bluetooth Classic piemēru programma ir ļoti līdzīga.
Programmas ideja ir inicializēt sērijveida Bluetooth savienojumu, izmantojot ESP32, un klausīties datus no pārī savienotām ierīcēm. Ja ienākošie dati ir "1", mēs ieslēdzam LED un, ja tas ir "0", mums vajadzētu izslēgt LED. Mēs sākam savu programmu, pievienojot galvenes failu BluetoothSerial, kas liek ESP32 Bluetooth darboties kā Bluetoth SSP.
#include "BluetoothSerial.h" // Sērijas Bluetooth galvenes fails pēc noklusējuma tiks pievienots Arduino
Aiz šīs bibliotēkas notiek daudz kas, bet mēs izvēlējāmies tajā neiedziļināties, lai viss būtu vienkārši. Nākamā lieta, kas mums nepieciešama, ir objekts mūsu ar Bluetooth saistītajām darbībām. Šeit es esmu nosaucis savu kā ESP_BT , bet jūs varat izvēlēties jebkuru vārdu.
BluetoothSerial ESP_BT; // Objekts Bluetooth
Pēc tam funkcijas void setup () iekšpusē. Mēs sākam sērijveida saziņu ar baudu ātrumu 9600 un inicializējam Bluetooth signālu ar nosaukumu. Šeit es to nosaucu kā “ESP32_LED_Control ”. Šis būs nosaukums, kuru mūsu tālrunis atradīs, mēģinot savienot pārī. Visbeidzot, es esmu paziņojis iebūvēto LED tapu par izejas tapu, jo mēs to pārslēgsim, pamatojoties uz Bluetooth signālu.
void setup () { Sērijas.sākt (9600); // Sākt sērijveida monitoru 9600 ESP_BT.begin ("ESP32_LED_Control"); // Jūsu Bluetooth signāla sērijas nosaukums.println ("Bluetooth ierīce ir gatava savienošanai pārī"); pinMode (LED_BUILTIN, OUTPUT); // norādiet, ka tiek izvadīta LED tapa }
Bezgalīgās tukšuma cilpas funkcijā mēs pārbaudām, vai no Bluetooth moduļa ienāk kādi dati, ja jā, tad dati tiek nolasīti un saglabāti mainīgajā ienākošajā . Mēs arī izdrukājam šo vērtību uz sērijas monitora, lai tikai pārbaudītu, ko saņem Arduino.
if (ESP_BT.available ()) // Pārbaudiet, vai mēs kaut ko saņemam no Bluetooth { ienākošais = ESP_BT.read (); // Izlasiet to, ko mēs saņemam Serial.print ("Saņemts:"); Serial.println (ienākošais);
Jebkuri saņemtie dati tiek glabāti ienākošajā mainīgajā, tāpēc mēs varam tieši salīdzināt šo mainīgo ar paredzamo vērtību un veikt nepieciešamo darbību. Bet no Bluetooth nosūtītā vērtība būs char formā, un Arduino nolasīs no tālruņa sūtītās char decimālo vērtību. Mūsu gadījumā rakstzīmei “0” decimālvērtība būs 48, bet rakstzīmei “1” decimālvērtība būs 49. Lai uzzinātu, kāda būs katras rakstzīmes decimāldaļa, decimālvērtība ir norādīta ASCII diagrammā.
Šeit mēs esam salīdzinājuši ienākošo mainīgo ar 48 un 49, lai pārbaudītu attiecīgi 0 un 1. Ja tas ir 1, mēs izslēdzam LED un arī izdrukājam apstiprināšanas ziņojumu atpakaļ uz Bluetooth, sakot, ka LED ir izslēgts, un otrādi - 0.
if (ienākošais == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED ir ieslēgts"); } if (ienākošais == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED ir izslēgts"); }
Sērijas Bluetooth testēšana ar ESP32
Pievienojiet savu ESP savam Arduino IDE un izvēlieties pareizo dēli un portu, kā tas ir aprakstīts darba sākšanas apmācībā. Tā kā tas ir 3 rd puse valdes vadītājs var paiet nedaudz ilgāks kods, lai saņemtu apkopoti un augšupielādēti. Pēc augšupielādes palaidiet sērijas monitorus (tikai atkļūdošanai) un tālrunī atveriet Bluetooth iestatījumu. Jums vajadzētu atrast Bluetooth ierīci ar nosaukumu ESP32_LED_Control .
Tagad viedtālrunī varat atvērt jebkuru Bluetooth termināļa lietotni, es izmantoju to ar nosaukumu “Bluetooth Terminal”, kas tika lejupielādēts no Google App Store. Pievienojiet Bluetooth lietojumprogrammu ierīcei, kuru tikko savienojām pārī, un ierakstiet 1. un nospiediet nosūtīt.
ESP32 modulim tas jāsaņem un jāieslēdz gaismas diode atbilstoši mūsu programmai, kā arī jāsniedz apstiprinājuma ziņojums, kurā teikts, ka LED ir ieslēgts tāpat kā iepriekš redzamais ekrānuzņēmums. Varat arī pārbaudīt sērijas monitoru, kas parādīs datus, kurus saņem ESP32 Bluetooth decimāldaļu formātā, tas ir, jūsu Arduino rādīs 48 uz 0 un 49 par 1, kā paskaidrots iepriekš. Mana termināla loga momentuzņēmums ir parādīts zemāk.
Tāpat jums vajadzētu būt iespējai izslēgt LED, nosūtot 0 no mobilās lietojumprogrammas. Pilnīga darbība ir parādīta zemāk esošajā videoklipā. Ceru, ka sapratāt apmācību un uzzinājāt kaut ko noderīgu. Ja jums ir kādas šaubas, droši atstājiet tos komentāru sadaļā zemāk vai izmantojiet mūsu forumus citai tehniskai palīdzībai.