Съдържание:

Как да използвате Bluetooth (BLE) с ESP32: 3 стъпки
Как да използвате Bluetooth (BLE) с ESP32: 3 стъпки

Видео: Как да използвате Bluetooth (BLE) с ESP32: 3 стъпки

Видео: Как да използвате Bluetooth (BLE) с ESP32: 3 стъпки
Видео: How to Connect ESP32 In-built Bluetooth to Smartphone 2024, Септември
Anonim

#####ЗАБЕЛЕЖКА#####

Методът, показан в тази инструкция, е стар и остарял. Гледайте това видео за най -новия метод.

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

Докато ESP32 може да се похвали с обширен списък с функции (Wikipedia), най-голямата характеристика, която привлича вниманието, е вграденият bluetooth v4.2 с поддръжка на BLE. Но това твърдение може да бъде подвеждащо, докато хардуерът е там, липсва софтуерната поддръжка за използване на Bluetooth. (В процес на разработка е)

За тези, които не знаят какво е BLE, той означава Bluetooth Low Energy. Това е Bluetooth протокол, който увеличава значително по -ниската консумация на енергия в сравнение с "класическия" Bluetooth.

В тази инструкция ще ви покажа как можете да използвате ограничените (софтуерни) ресурси, с които разполагате, за да изпращате данни от платка ESP32 към телефона си по BLE.

Няколко отказ от отговорност…

Няколко забележителни неща, които трябва да спомена, преди да продължите с това ръководство.

Забележка 1: Когато казвам, че Bluetooth поддръжката все още не е налична, имам предвид в средата за разработка на arduino.

Поддръжката може да е налична както в официалния SDK, така и в IDF, но не намерих компетентни инструкции за тях.

Забележка 2: Методът, който използвам, е много заобиколно решение, а не как BLE в идеалния случай трябва да работи. Поддръжката на библиотеката за създаване на услуги в BLE не е тук за средата arduino.

Единственото нещо, което можете да направите надеждно, е да създадете маяк, който рекламира името му. Коментар в YouTube го изрази много елегантно: "LOL, брутален хак. Но какво можеш да направиш?"

Забележка 3: Единственият вид данни, които можете да изпращате, е низ.

Може много добре да решите да кодирате и декодирате други видове данни към и от низ, но това е извън обхвата на това ръководство.

Стъпка 1: Примерното изграждане

Image
Image
Примерното изграждане
Примерното изграждане
Примерното изграждане
Примерното изграждане
Примерното изграждане
Примерното изграждане

Ако сте тук само за обяснението, можете да пропуснете тази стъпка, но преминаването през нея може да ви даде малко повече яснота.

Първо ще създам пример за проект и след това ще се опитам да обясня как работи и как можете да възпроизведете Bluetooth комуникацията. Ще изградим преносим температурен сензор, който изпраща емисия на живо към вашия смартфон. Компилацията може да работи с дни на едно li-po и лесно демонстрира предимствата на BLE.

Можете да използвате модула като подложка, за да изолирате напитките си и да получите известие веднага щом напитката достигне оптималната температура. Защото би било пародия, ако трябва да отпиете чай с градус над 40.

Единственият хардуер, от който се нуждаете, е платка ESP32 и цифров температурен сензор. Моята дъска поддържа външна батерия, така че използвам 3.7v li-po, който спасих от някакво старо устройство, за да направя този проект преносим.

Хардуер

Връзките за температурния сензор са прости. Червеният проводник се свързва към 3.3v, черният се свързва към земята (gnd), жълтият се свързва с GPIO 2, който на дъската ми е маркиран като D9. Свържете резистор от 4,7 k ома между червения и жълтия проводник. Не използвам резистора, вместо това използвам 3-пинов терминал, който може да се включи, който дойде с моя сензор. Той има вграден резистор за изтегляне.

Li-po наистина трябва да бъде свързан с помощта на JST конектор, но не можех да си направя труда да си купя такъв, така че просто обух в някои (женски към женски) кабели на джъмпера в конектора и запоех друга двойка към клемите на батерията. Това прави надеждна връзка и импровизиран превключвател на захранването.

Сега като кутия за проект използвам диск от стиропор, който е изрязан от по -голям лист. Това прави страхотен изолатор. Друг много по -малък диск е заседнал отгоре, но малко отстрани. Това е за увиване на допълнителната дължина на проводниците, така че те да не висят навсякъде. След щедро използване на вашето лепило и малък отвор за сензорната сонда, вие сте готови да продължите към софтуера.

Софтуер

Ако все още не сте инсталирали arduino IDE, отидете на тази връзка, за да го изтеглите. Софтуерът arduino по подразбиране не идва с дефинициите на платките за различните платки ESP32. За да ги накарате да отидат на тази връзка и да изтеглят файловете в цип. Трябва да ги разархивирате на това място:

C:/Потребители // Документи/Arduino/хардуер/espserrif/ESP32

Къде е вашето потребителско име на вашия компютър. Уверете се, че различните файлове са налични в папката ESP32 и не са в друга папка.

Сега, ако стартирате софтуера arduino и отидете на инструменти-> дъски, трябва да видите различни платки ESP32, когато превъртате надолу.

Повечето цифрови сензори за температура използват протокола OneWire за комуникация с микроконтролерите, така че трябва да получим библиотеката. Отидете на скица-> включете библиотека-> управлявайте библиотеки и потърсете onewire и инсталирайте библиотеката, която е твърде много автори. Не ви е необходим едножичният хъб. Игнорирай го.

Сега можете да изтеглите и отворите кода, прикачен към тази стъпка (temperature-example.ino).

Ако използвате различен от мен сензор, ще трябва да промените кода съответно. Заменете кода под getTemp (). Просто върнете крайната температура под формата на

Връщане;

Къде е поплавъкът, съдържащ температурата.

Включете платката, изберете правилната платка и порт от инструментите и натиснете качване.

Ако кодът откаже да се качи, изключете сензора и свържете GPIO 0 към земята. Възстановете връзките след качването.

Вашият ESP сега трябва да крещи температурата на вашето кафе към света, но имате нужда от някой, който може да го разбере.

Приложението за Android

За съжаление потребителите на iPhone (… не наистина).

Изтеглете apk от тук и го инсталирайте. Когато стартирате приложението, ще бъдете посрещнати с много прост интерфейс.

Ако получите съобщение за грешка „рекламата не се поддържа“, щракнете върху OK и го игнорирайте, но ако получите съобщение, че „BLE не се поддържа“, тогава телефонът ви няма Bluetooth 4.0 или по -нова версия и няма да може да работи приложението.

Уверете се, че Bluetooth на телефона ви е включен и щракнете върху „Стартиране на сканирането“, стига esp да е в обхват и включен, трябва да получавате някаква стойност на температурата.

Възможни грешки:

  • -1000:: Това означава, че вашето устройство не може да намери ESP. уверете се, че Bluetooth е включен и опитайте да рестартирате ESP.
  • SNA:: Това означава, че телефонът ви получава данни от ESP, но самият ESP не може да намери температурен сензор на GPIO 2. Уверете се, че връзките са сигурни, вижте дали използвате резистор с правилната стойност. Проверете два пъти със схемите на вашата платка дали сте свързани с GPIO 2, а не с пин, маркиран като D2.

Стъпка 2: Обяснението

Обикновено BLE работи, че устройството рекламира името си като маяк, това име може да се види от всеки и се използва за идентифициране на устройството. Тогава устройството може да създава различни услуги, които се виждат от другите, когато се свържат с него. Тези услуги могат да имат различни потоци от данни.

За напр. Устройство, наречено „Метеорологична станция“, може да се обслужва под него като „Температура“, „Влажност“и „Вятър“. Когато друго BLE устройство, като вашия смартфон, сканира за устройства, то ще види метеорологичната станция и когато се свърже с нея, ще може да получава потоци от данни, съответстващи на различните услуги.

Библиотеките (за ESP32), които са ни достъпни в момента, ни позволяват да създадем маяк, който другите могат да открият, но това е неговата степен. Не можем да създаваме услуги, нито всяко устройство може да се свърже с него.

Така че аз изпращам данни, без да създавам услуги, като използвам техника, подобна на WiFi протокола, наречена Beacon Stuffing. Това означава, че включвам данни, които да се изпращат в самото име на маяк. Това ми дава възможност да рекламирам данни, без да изисквам други устройства да се свързват с маяка.

ble.begin (beaconMsg); // beaconMsg е рекламираното име

Използваме библиотеката SimpleBLE, за да създадем маяк с неговото име във формата на ESP. Когато „ESP“винаги остава непроменен в началото на името и се заменя с най -новите данни, върнати от функцията getValue () на всеки 100 милисекунди.

float getValue () {return sensorValue;}

Приложението за Android търси имена на устройства BLE, започващи с „ESP“, след като бъде намерено, разделя името и показва само данните от края.

Комуникацията е само по един начин, приложението не изпраща нищо обратно.

Стъпка 3: Заключение

В края на краищата този метод не замества правилно внедрената BLE библиотека, но може да е достатъчно, за да се справят някои проекти, докато пълната поддръжка на BLE дойде в Arduino. Надяваме се, че тази инструкция е била от полза за вас.

ГОЛЯМО Благодаря на DFRobot.com, че ми изпрати тези продукти:

  • ESP32 FireBeetle дъска
  • FireBeetle Expantion Shield
  • DS18B20 Температурен сензор

Наскоро намерих тази библиотека. ReadME твърди, че можете да се свържете с други BLE устройства, за да получавате данни (Не можете да се рекламирате). Не съм го пробвал, но можете да го проверите, ако се интересувате.

Можете да проверите видеоклипа на проекта на: YouTube

Препоръчано: