создание блока BLE ESP32

Скетч есть, нужно в блок запихать

Создаем свой блок. Вопросы, помощь знатоков.
andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

создание блока BLE ESP32

#1

Сообщение andrewkik » 24.07.2021{, 16:56}

Всем привет!!! помогите засунуть скетч в пользовательский блок. Простые сам собираю, этот с классами, не пойму как собрать. Спецу тут дел на перекур один.
нужны: вход - работы EN, CompanyId. выходы - addr, rssi, uuid, power. каждый выход отдельно.
по факту в скетче вывод в порт в таком виде: addr:24:0a:c4:ed:fc:ce rssi:-60 uuid:4D6FC88B-BE75-6698-DA48-6866A36EC78E power:0
.
буду очень признателен за помощь.
Вложения
ESP32_anchor_flprog.ino
(3.11 КБ) 46 скачиваний
Последний раз редактировалось andrewkik 10.08.2021{, 09:33}, всего редактировалось 1 раз.

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#2

Сообщение sergserg » 24.07.2021{, 21:55}

andrewkik писал(а):
24.07.2021{, 16:56}
этот с классами, не пойму как собрать
тоже бесят классы

Отправлено спустя 20 секунд:
не пойму нафига они вообщее нужны в ардуино

Отправлено спустя 1 минуту 54 секунды:
"return" в классе - это ЧТЕНИЕ.

Ч Т Е Н И Е ....просто чтение...

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#3

Сообщение sergserg » 24.07.2021{, 22:00}

какой ужас:



class Color { // класс Color
public:
Color(byte color = 5, byte bright = 30) { // конструктор
_color = color; // запоминаем
_bright = bright;
}
void setColor(byte color) {_color = color;}
void setBright(byte bright) {_bright = bright;}
byte getColor() {return _color;}
byte getBright() {return _bright;}
private:
byte _color; // переменная цвета
byte _bright; // переменная яркости
};
Color myColor(10); // создаём объект myColor, указав _color (получим 10, 30)
Color myColor2(10, 20); // указываем цвет и яркость! (получим 10, 20)
Color myColor3; // без инициализации (получим 5, 30)
Теперь при вызове например myColor2.getColor() мы получим значение 10, как и установили при инициализации. Если вызовем myColor2.setColor(50), то присвоим закрытой переменной _color объекта myColor2 значение 50. При дальнейшем вызове myColor2.getColor()мы получим уже 50





вот ради чего вот это все в ардуине???
НАХРЕНА???
и ведь НУЖНО это понять....ибо дальше никуда)))
Последний раз редактировалось sergserg 24.07.2021{, 22:01}, всего редактировалось 1 раз.

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#4

Сообщение sergserg » 24.07.2021{, 22:00}

сорян за офтоп

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#5

Сообщение sergserg » 24.07.2021{, 22:03}

Просто и доходчиво пояснит кто: ну вот зачем вообще классы?

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#6

Сообщение sergserg » 24.07.2021{, 22:06}

"Ведь мы можем создать несколько объектов класса, и управлять каждым (объектом?) в отдельности при помощи одинаковых методов (класса?), но каждый объект будет обладать индивидуальным набором настроек, которые хранятся где-то внутри него."

и при этом же:

" не всегда удобно писать реализацию метода внутри класса, получается очень громоздко и класс перестаёт быть документацией к самому себе..." т.е. "...методы (класса?) объявлены, но расписаны где-то в другом месте...." - вот и ищи их...

НАХРЕНА ТОГДА ПИСАТЬ КЛАСС???

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#7

Сообщение sergserg » 24.07.2021{, 22:11}

"...Двойное двоеточие :: является оператором, который уточняет область видимости имени, к которому применяется...."

это ппц.... не ну я понимаю еще в андроид студио такое применять...но для ардуино???

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

помогите создать блок BLE ESP32

#8

Сообщение sergserg » 24.07.2021{, 22:12}

сорян просто накипело)))) и з**бало скакать по библиотекам и *cpp ради срани какой нибудь....

блин это все настолько непрозрачно и неудобно....имхо

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#9

Сообщение andrewkik » 26.07.2021{, 13:29}

Помощники найдутся? Готов разорится на пиво хорошее))). Давайте, други, помогайте. Сам в шоке, крутил, вертел, не получается, а надо очень!!!

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

помогите создать блок BLE ESP32

#10

Сообщение ecoins » 26.07.2021{, 15:26}

andrewkik писал(а):
26.07.2021{, 13:29}
Зарегистрирован: 28.11.2018{, 16:53}
Репутация: 0
Имя: Андрей
Контактная информация: Контактная информация пользователя andrewkik
0BUTTON_REPORTЦитата#9Непрочитанное сообщение andrewkik » Сегодня{, 10:29}
Помощники найдутся? Готов разорится на пиво хорошее))). Давайте, други, помогайте. Сам в шоке, крутил, вертел, не получается, а надо очень!!!
Пиво кому полезно, а кому-то просто не нравится.
Да и за пивом сложные задачи не решаются...
Если Вам действительно надо, то есть быстрый и надежный способ - это внешний (например через UART2) модуль BlueTooth.
Мы в свое время экспериментировали, работало, но отложили до лучших времен. Одна из причин - очень много памяти требует. Возможно и процессорного времени.
Готовых приличных решений на BlueTooth ESP32 не встречали.
Возможно это больше декларация ESP, чем рабочи инструмент.,
Возможно просто процессорные возможности ESP32 не достаточные для программной реализации такой непростой задачи.

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#11

Сообщение andrewkik » 26.07.2021{, 18:38}

пишите в личку, кто готов помочь, договоримся. хотелось бы реализовать основную часть на одном процессоре. туда же блок фильтрации засунуть и еще, по мелочи.

Отправлено спустя 1 минуту 26 секунд:
заказал такие, придут опробую. https://aliexpress.ru/item/400057132959 ... 1597231019

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

помогите создать блок BLE ESP32

#12

Сообщение aidar_i » 27.07.2021{, 10:00}

удалил
Последний раз редактировалось aidar_i 08.08.2021{, 21:34}, всего редактировалось 4 раза.

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#13

Сообщение andrewkik » 27.07.2021{, 14:56}

Здорово, спасибо!!
Для примера один выход покажите как прикрутить?
заранее спасибо!

Отправлено спустя 6 минут 7 секунд:
в секции loop так не проходит.
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = device.getRSSI();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);

Отправлено спустя 1 час 7 минут 25 секунд:
так тоже не работает
String rssi_out;
bool getRSSI;
#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00) >> 8) + (((x)&0xFF) << 8))
void setup()
{
Serial.begin(115200);
BLEDevice::init("");
}
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = getRSSI();

'getRSSI' cannot be used as a function

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

помогите создать блок BLE ESP32

#14

Сообщение aidar_i » 27.07.2021{, 16:49}

удалил
Последний раз редактировалось aidar_i 08.08.2021{, 21:34}, всего редактировалось 1 раз.

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#15

Сообщение andrewkik » 27.07.2021{, 17:22}

получилось, только порт занимает. в BLEAdvertisedDeviceCallbacks.h
// Последовательный вывод информации iBeacon
void printIBeacon(BLEAdvertisedDevice device) {
Serial.printf(device.getAddress().toString().c_str(),
device.getRSSI(),
getUuid(device).c_str(),
*(signed char*)&device.getManufacturerData().c_str()[24]);
}

я так понял из за этого.
как убрать, но данные на выходах сохранить?

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

помогите создать блок BLE ESP32

#16

Сообщение aidar_i » 27.07.2021{, 17:50}

удалил
Последний раз редактировалось aidar_i 08.08.2021{, 21:35}, всего редактировалось 1 раз.

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#17

Сообщение andrewkik » 27.07.2021{, 18:19}

пробовал уже. вот это пишит
In file included from C:\Users\dom\AppData\Local\Temp\flprog\pr14\pr14.ino:6:0:
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h: In member function 'virtual void IBeaconAdvertised::onResult(BLEAdvertisedDevice)':
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h:9:26: error: 'printIBeacon' was not declared in this scope
printIBeacon(device);

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

помогите создать блок BLE ESP32

#18

Сообщение aidar_i » 27.07.2021{, 18:42}

удалил
Последний раз редактировалось aidar_i 08.08.2021{, 21:35}, всего редактировалось 1 раз.

andrewkik
Рядовой
Сообщения: 42
Зарегистрирован: 28.11.2018{, 19:53}
Репутация: 0
Имя: Андрей

помогите создать блок BLE ESP32

#19

Сообщение andrewkik » 27.07.2021{, 19:20}

сделал,

class IBeaconAdvertised: public BLEAdvertisedDeviceCallbacks {
public:
// Обратный вызов при обнаружении BLE
void onResult(BLEAdvertisedDevice device) {
if (!isIBeacon(device)) {
return;
}
//printIBeacon(device);
}

на выходе нет данных, вернее есть, но раз в минуту где-то. и данные -9999.
MAC адрес подставил там 00:00:00:00:00:00
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);
BLEAdvertisedDevice device; //вот эту строку добавить в начале
rssi_out = device.getAddress().toString().c_str();

в компорт блок настроен отправка каждые 10 сек

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

помогите создать блок BLE ESP32

#20

Сообщение aidar_i » 27.07.2021{, 20:01}

Если не удалять вышеуказанные коды, выход нормально работает?

Ответить

Вернуться в «Разработка пользовательских блоков»