• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

UBIA - USB / BLE to I2C/SMBus Adapter.

nikolz

Well-known member
pvvx
Пытаюсь собрать UBIA для BLE
устанавливаю
// Project type:
#define USE_BLE 1
#define USE_USB_CDC 0
#define USE_I2C_DEV 1
#define USE_SPI_DEV 0
#define USE_ADC_DEV 0
#define USE_DAC_DEV 1
#define USE_HX711 0
#define USE_UART_DEV 1
-------------------
получаю ошибку
-----------------
../source/cmd_decode.c:73:27: error: 'SPP_Server2Client_INPUT_DP_H' undeclared (first use in this function)
tc32-elf-gcc -ffunction-sections -fdata-sections -I"D:\wk2022\my_ble_usb_i2c_adc\include" -I"D:\wk2022\tl_pvvx_ble_sdk" -D__PROJECT_8266_MYMODULE__=1 -DBOARD=BOARD_JDY_10 -Wall -O2 -fpack-struct -fshort-enums -finline-small-functions -std=gnu99 -funsigned-char -funsigned-bitfields -fshort-wchar -fms-extensions -fdata-sections -ffunction-sections -c -o"sdk/proj/mcu_spec/gpio_8266.o" "D:/wk2022/tl_pvvx_ble_sdk/proj/mcu_spec/gpio_8266.c"
../source/cmd_decode.c:73:27: note: each undeclared identifier is reported only once for each function it appears in
Invoking: TC32 Compiler
../source/ble.c: In function 'main_ble_loop':
../source/ble.c:660:36: error: 'SPP_Server2Client_INPUT_DP_H' undeclared (first use in this function)
-----------------------
подскажите, что не так.
Спасибо
 

pvvx

Активный участник сообщества
1. Оно не предназначено для сборки во всех комбинациях опций. Это сборка фиксирована для тестов и прочих программ указанных в данном репозитории.
2. У вас нарушения не в указанных опциях, а вы покопались с переменной SPP_SERVICE_ENABLE.
3. Для сборки указан свой SDK
4. В том репе уже всё очень старое, но заодно my_ble_usb_i2c_adc обновил, т.к. ещё используется у меня на самом примитивном варианте PowerProfiler. Он тоже уже давно оброс всякими мелочами, но не обновлен уже годы :)
 

pvvx

Активный участник сообщества
И в качестве BLE TLSR8266 уже совсем никчемен - старый BT4.0 - малый буфер для пакета и плоховатые RF RX дБ, большое потребление - нет реализации реальной sleep, а так-же нет deep-sleep c retetnion RAM, нет поддержки безопасного OTA, ... (это только аппаратные проблемы и не могут быть изменены)
Т.е. годится как контроллер USB1.1 (USB2.0FS), т.к. в этом качестве лучше мелких STM32.
Смените на TLSR825x, т.к. это глобальное отличие во многие качественные стороны, а цена и доступность одинаковы.
 

pvvx

Активный участник сообщества
И если интересен и нужен шустрый USB, то по скорости и производительности в USB1.1(USB2.0FS) уже лучше BL702 и подобные BL7+. А далее идет RTL872x - там уже полный USB2.0 с HiSpeed.
 

pvvx

Активный участник сообщества
К PowerProfiler давно добавлены несколько разных INAxxx. Но т.к. надо писать разные описания и причесывать код, то обновлений в git пока (годы) нет.
 

nikolz

Well-known member
1. Оно не предназначено для сборки во всех комбинациях опций. Это сборка фиксирована для тестов и прочих программ указанных в данном репозитории.
2. У вас нарушения не в указанных опциях, а вы покопались с переменной SPP_SERVICE_ENABLE.
3. Для сборки указан свой SDK
4. В том репе уже всё очень старое, но заодно my_ble_usb_i2c_adc обновил, т.к. ещё используется у меня на самом примитивном варианте PowerProfiler. Он тоже уже давно оброс всякими мелочами, но не обновлен уже годы :)
Благодарю за разъяснения.
Но я вообще-то ничего не делал с исходниками
Просто скачал распаковал и загрузил проект
-----------------
правильно я понял, что данная сборка будет посылать рекламу и без установки #define USE_BLE 1 ?
===============
Относительно новых чипов, они у меня есть,
но сейчас мне надо собрать прототип устройства в котором
по протоколу I2C с датчиков посылаю данные в рекламе на смартфон.
-----------------------------------
При этом основное потребление делают датчики.
Импульсный ток датчика TOF во время измерения до 50 мА
Частота опроса датчика не менее 10 Гц,
т е работа BLE с интервалом 0.1 сек и менее.
-------------------------------
Очевидно, что спать особо не придется.
Поэтому не имеет значение какой ток во сне.
================
задача сделать очень маленькое и легкое устройство, автономное время работы хотя бы 10 часов .
 

nikolz

Well-known member
pvvx,
UBIA собрался и смартфон его увидел. Спасибо.
-------------------
Пару вопросов.
==============
Сделал прототип умной "белой трости " на ESP8266, которая сообщает расстояние до препятствий.
Проблем оказалось не мало, сейчас тестирую в реальных условиях четвертый вариант.
------------------------
Замечу, что аналог ее есть на мировом рынке и стоит примерно 600$.
В России недоступен. да и мало кто готов потратить 600 долларов на трость пусть даже и умную.
=============
Есть желание сделать это с BLE в двух вариантах -автономное и со смартфоном.
=============
В автономном желательно передать сообщения на стандартные беспроводные наушники.
-----------------------------
Можете подсказать возможно ли это реализовать на Telink чипах или подобных и каких и есть ли для этого SDK.
Спасибо.
 

pvvx

Активный участник сообщества
и со смартфоном.
Современный смартфон сам в состоянии по изображению с камеры описывать всю окружающую обстановку, включая распознавание объектов с голосовым диалогом по подобию "Ok Google" и прочих.
Зачем вы делаете убогую сиcтему во время развития так называемого ИИ "с поддержкой зала" на внешних серверах, включая развивающуюся "виртуальную реальность"?
Совсем погрязли в детcаде с ESP8266? Поделка подразумевает сдачу дипломной работы для школьника?
 

pvvx

Активный участник сообщества
При этом основное потребление делают датчики.
Импульсный ток датчика TOF во время измерения до 50 мА
Частота опроса датчика не менее 10 Гц,
т е работа BLE с интервалом 0.1 сек и менее.
Я вот не стесняюсь, что занимаюсь хобби с мелкими SoC, которые можно освоить одному за пару дней и слепить какую-то фигню на них для теста ради интереса. Но не делать же на такой фигне промышленные или бытовые вещи! Для их разработки и поддержки необходима команда из нескольких человек и толпа людей в системе обеспечения этой команды. У вас же нет этой части.
Сначала постройте эту систему, потом она и выдаст вам какой SoC или что-там необходимо и можно использовать…
 

nikolz

Well-known member
Современный смартфон сам в состоянии по изображению с камеры описывать всю окружающую обстановку, включая распознавание объектов с голосовым диалогом по подобию "Ok Google" и прочих.
Зачем вы делаете убогую сиcтему во время развития так называемого ИИ "с поддержкой зала" на внешних серверах, включая развивающуюся "виртуальную реальность"?
Совсем погрязли в детcаде с ESP8266? Поделка подразумевает сдачу дипломной работы для школьника?
Вы просто не в теме.
Предлагаю Вам провести эксперимент.
возьмите свой умный смартфон. Встаньте на расстоянии 2-4 метра от стены .
Закройте глаза.
И слушая свой смартфон смело идите вперед пока ваш смартфон не сообщит Вам что Вы стукнулись лбом в стену.
Уверен, что вы узнаете это раньше, чем это вам скажет смартфон.
-----------------
или можете сделать тоже самое т е закрыть глаза держать в руке умный смартфон и смело идти прямо на лестничный марш пока смартфон не скажет вам что вы спотыкнулись о ступеньки
и разбили себе коленки о них или еще хуже свой умный лоб.
----------------
Ну и так далее... примеров много. Но самоуверенных всезнаек еще больше.
 

nikolz

Well-known member
Я вот не стесняюсь, что занимаюсь хобби с мелкими SoC, которые можно освоить одному за пару дней и слепить какую-то фигню на них для теста ради интереса. Но не делать же на такой фигне промышленные или бытовые вещи! Для их разработки и поддержки необходима команда из нескольких человек и толпа людей в системе обеспечения этой команды. У вас же нет этой части.
Сначала постройте эту систему, потом она и выдаст вам какой SoC или что-там необходимо и можно использовать…
К вашему удивлению, я уже строил такую систему и занимался производством.
--------------------------
И я не хочу тратить свое время на изучения чипа ,чтобы делать фигню даже за пару дней .
-------------------------
Мне интересно решать задачи, которые не имеют на данный момент технического решения и требуют комплекса знаний.
-----------------------
Что касается умной белой трости ,
то помимо надобности такой трости многим есть конкретный человек кому она нужна
и его вполне устраивает данное решение и не только его одного.
--------------------------------
Поэтому Я сделал прототип устройства , которого нет даже на мировом рынке, не говоря уж о странах СНГ.
-------------------------
Заменить ESP на любой другой чип нет большого труда.
----------------
Поэтому изучаю чипы, если их свойства мне нужны для решения конкретной задачи.
-----------------------------------
Но Вы можете делать фигню. - это ваш выбор.
 

pvvx

Активный участник сообщества
К вашему удивлению, я уже строил такую систему и занимался производством.
Но нигде нет этому подтверждения. Видимо неудачно.
Поэтому Я сделал прототип устройства , которого нет даже на мировом рынке, не говоря уж о странах СНГ.
На этом дело и закончится и не принесет помощи никому.
Но Вы можете делать фигню. - это ваш выбор.
Это не фигня – это такое хобби, дающее обучение, развитие и технический маркетинг для другой моей проф.сферы, что далее идет на наше производство для обеспечения разработки и сборки пром.установок работающих уже на обеспечение миллионов людей в нашей стране :p
 

pvvx

Активный участник сообщества
Ныне нет проблем поделиться разработкой и получить помощь со стороны “тестеров” для выработки качественных пользовательских характеристик.
На сегодня всю разработку можно делать в интернет-браузере, не качая никакого софта.
GitHub бесплатно обеспечивает время на производительных серверах, на которых вы можете собрать свой проект. Для этого нужно только описание среды и составляющих Linux для виртуальной машины и репо с вашим кодом. И любой человек может собрать ваш проект парой кликов мыши в меню…

Так-же такое ПО типа STM32Cube, по назначению ножек, CLK и т.д. уже давно есть в сети для некоторых SoC и тоже работает в браузере.
Пример:
1671297959765.png
1671297967618.png
1671297975603.png

Завтра уже "ИИ" будет писать код по нарисованному или описанному устно алгоритму за еду в виде стоимости энергии, а вы всё прячете свой код и схему из детских кубиков, в надежде, что новый мировой порядок оставит “частную собственность”?
Художники уже пошли лесом со своими “авторскими” и воют в инете на ИИ… :)
 

nikolz

Well-known member
Ныне нет проблем поделиться разработкой и получить помощь со стороны “тестеров” для выработки качественных пользовательских характеристик.
На сегодня всю разработку можно делать в интернет-браузере, не качая никакого софта.
GitHub бесплатно обеспечивает время на производительных серверах, на которых вы можете собрать свой проект. Для этого нужно только описание среды и составляющих Linux для виртуальной машины и репо с вашим кодом. И любой человек может собрать ваш проект парой кликов мыши в меню…

Так-же такое ПО типа STM32Cube, по назначению ножек, CLK и т.д. уже давно есть в сети для некоторых SoC и тоже работает в браузере.
Пример:
Посмотреть вложение 12599
Посмотреть вложение 12600
Посмотреть вложение 12601

Завтра уже "ИИ" будет писать код по нарисованному или описанному устно алгоритму за еду в виде стоимости энергии, а вы всё прячете свой код и схему из детских кубиков, в надежде, что новый мировой порядок оставит “частную собственность”?
Художники уже пошли лесом со своими “авторскими” и воют в инете на ИИ… :)
Вы о чем?
 

pvvx

Активный участник сообщества
О том, что вы пытаетесь сделать. И что надо, чтобы оно было сделано и работало.
 

pvvx

Активный участник сообщества
Устройство создано по случайной находке при копании в барахле, через десять минут после нахождения VL53L1X.
Компилировать Arduino на ESP32 долго!
Но пишет в лог:
VL53L1X -> BT
I2C SCL: pin22, SDA: pin21
VL53L1X ID: 0xEACC10FF
Connect to 'XY-BT'...
VL53L1X: Start continuous readings, step 50 ms

И пищить! в самые дешевые наушники и приемник BT с частотой, зависящей от расстояния:
1671331603440.png
И АКБ уже есть. Осталось купить трость за скоко там говорили?
"nikolz:> есть на мировом рынке и стоит примерно 600$." - что-то маловато будет для хорошей трости!
1671331756131.png
А "скетч" - завтра или ... Зачем он нужен - в нем я после копипаста вписал всего строк пять-шесть и из них несколько это символы "{" :p
 

pvvx

Активный участник сообщества
Раньше такой музыкальный инструмент был - расстояние руки до антенны меняет частоту. Не помню как назывался.
Вот это примерно и вышло, но расстояние от десятка см до 4-х метров. И шаг между измерениями 50 мс, а не плавный. Булькает хорошо на открытом пространстве...
Пробовал ходить с закрытыми глазами. Можно приловчиться-привыкнуть и попадать в открытые двери :) :p
Но это очередной "скетч" от Ардуинщиков и ESP32-WROM с максимальными RAM и т.д. всё равно падает через некоторое время - но есть кнопка рестарта :)
 

pvvx

Активный участник сообщества
Код:
/* https://github.com/pschatzmann/ESP32-A2DP
   https://github.com/pololu/vl53l1x-arduino */

#include "BluetoothA2DPSource.h"
#include <math.h>
#include <Wire.h>
#include <VL53L1X.h>

VL53L1X sensor;

double c3_frequency = 500;
bool off_frequency = true;

BluetoothA2DPSource a2dp_source;

// The supported audio codec in ESP32 A2DP is SBC. SBC audio stream is encoded
// from PCM data normally formatted as 44.1kHz sampling rate, two-channel 16-bit sample data
int32_t get_data_channels(Frame *frame, int32_t channel_len) {
  static double m_time = 0.0;
  double m_amplitude = 10000.0;  // -32,768 to 32,767
  double m_deltaTime = 1.0 / 44100.0;
  double m_phase = 0.0;
  double double_Pi = PI * 2.0;
  // fill the channel data
  if (off_frequency)
    for (int sample = 0; sample < channel_len; ++sample) {
      m_time += m_deltaTime;
      frame[sample].channel1 = 0;
      frame[sample].channel2 = 0;
    }
  else
    for (int sample = 0; sample < channel_len; ++sample) {
      double angle = double_Pi * c3_frequency * m_time + m_phase;
      frame[sample].channel1 = m_amplitude * sin(angle);
      frame[sample].channel2 = frame[sample].channel1;
      m_time += m_deltaTime;
    }
  return channel_len;
}


void setup() {
  Serial.begin(115200);
  while (!Serial);
  Serial.println();
  Serial.println();
  Serial.println("VL53L1X -> BT");
  Serial.printf("\r\n\r\nI2C SCL: pin%i, SDA: pin%i\r\n", SCL, SDA );

  Wire.setPins(SDA, SCL);
  Wire.begin();
  Wire.setClock(400000); // use 400 kHz I2C

  Serial.printf("VL53L1X ID: 0x%08X\r\n", sensor.readReg32Bit(0x010F)); // IDENTIFICATION__MODEL_ID, IDENTIFICATION__MODULE_TYPE...

  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("VL53L1X:Failed to detect and initialize sensor!");
    while (1);
  }
  //a2dp_source.set_auto_reconnect(false);
  Serial.println("Connect to 'XY-BT'...");
  a2dp_source.start("XY-BT", get_data_channels);
  a2dp_source.set_volume(30);
  // Use long distance mode and allow up to 50000 us (50 ms) for a measurement.
  // You can change these settings to adjust the performance of the sensor, but
  // the minimum timing budget is 20 ms for short distance mode and 33 ms for
  // medium and long distance modes. See the VL53L1X datasheet for more
  // information on range and timing limits.
  sensor.setDistanceMode(VL53L1X::Long);
  sensor.setMeasurementTimingBudget(50000);

  // Start continuous readings at a rate of one measurement every 50 ms (the
  // inter-measurement period). This period should be at least as long as the
  // timing budget.
  Serial.println("VL53L1X: Start continuous readings, step 50 ms");
  sensor.startContinuous(50);
}

void loop() {
  uint32_t dist_mm;
  delay(50);
  if (sensor.dataReady()) {
    dist_mm = sensor.read(false);
    off_frequency = false;
    if (dist_mm > 4000)
      c3_frequency = 200;
    else
      c3_frequency = 4200 - dist_mm;
  }
}
 
Сверху Снизу