-
Постов
159 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип контента
Профили
Форумы
Загрузки
Магазин
Весь контент Roman St
-
я уже превратил, bin файл есть в моем архиве.... Arduino ide может делать экспорт bin файла.
- 96 ответов
-
- scanmatik 2 pro
- сканматик 2 pro
-
(и ещё 2 )
C тегом:
-
На первой странице автора скачайте архив там же есть программа и инструкция. или вот https://docs.espressif.com/projects/esp-at/en/latest/esp32/Get_Started/Downloading_guide.html
- 96 ответов
-
- scanmatik 2 pro
- сканматик 2 pro
-
(и ещё 2 )
C тегом:
-
Bluetooth не пользуюсь. В основном WIFI. Pcm, DTS monako, vediamo шил... да связь норм не вылетала не разу. Дело не в связе а в том что он может в бмв залить то чего там не должно быть....
-
Там есть скетч....arduino ide, копируйте код и вставляйте куда удобно.. есть и bin файл
- 96 ответов
-
- scanmatik 2 pro
- сканматик 2 pro
-
(и ещё 2 )
C тегом:
-
Смотря что за мотор. А то там же и стоят... Потому и спросил где чтоят мозги.
-
Похоже на болячку 221 мерса... здесь же тоже мозги на моторе стоят? Может проц отваливается. На 221 проверялось постукиванием по эбу))
-
Переезжаем... Сделал еще прошивочку для ESP32. В прошивке добавлена возможность изменения имени Bluetooth. Через Bluetooth terminal. Протестил на блоке edc16c39 фул и калибровки читает пишет. Уваливал блок(дергал питание) .... восстановил. Файл прошивки с подробностями ищем в теме выше)))
-
Сделал еще прошивочку для ESP32. В прошивке добавлена возможность изменения имени Bluetooth. Через Bluetooth terminal. Подробности в файлеSCANMATIK ESP32.rar протестил на блоке edc16c39 фул и калибровки читает пишет. Уваливал блок(дергал питание) .... восстановил.
- 96 ответов
-
- scanmatik 2 pro
- сканматик 2 pro
-
(и ещё 2 )
C тегом:
-
Кабель нужен что бы после лаунча попробывать поднять E-SYS))) Закодировать еще можно что то... забекапившись... а вот програмировать опасно. Как для диагностики подключаетесь так же и для кодинга и програминга... но желательно по usb.
-
Считывал stm 32. Тоже не получалось... с припаенным ресетом, но если рессет подключать ручками на время определение чипа а потом отключать то все работало. Попробуйте откидывать рессет.... есть подозрение что он как то не правельно функционирует. Так их и надо наоборот подключать.... rx на tx tx на rx....
-
Ну на всякий случай вот по отдельности... system.rar Судя по размерам файлов... не понятно как то включен или нет... То есть app всегда встроен в system? Почему тогда раздельно прилетели на планшет?
-
Сегодня обновился через оболочку... Не хватает SmartLinkC_App_Update_File😉
-
Есть такое. Указываешь на проблемму и она переписывает код и проверяет ошибки. Ну и кто в коде шарит сам и поправит)) Когда сам пишешь тоже не с первого раза работает)))
-
С обсуждением кода еспешки действительно можно перехать в тему установки модуля.... так как здесь народу не интересно все ж ждут готового решения))) Каждый led сокращает время на 7 сек. Что бы обогнать ориг. осталось посчитать сколько надо диодов и заказать ленту)))) А в RTOS в 2х ядерном режиме пробовали? Прям интересно затестить. #include "BluetoothSerial.h" #include <freertos/FreeRTOS.h> #include <freertos/task.h> #include <freertos/queue.h> BluetoothSerial SerialBT; QueueHandle_t btToSerialQueue; QueueHandle_t serialToBtQueue; HardwareSerial hardwareSerial(1); // Используем UART1 // Пины UART (настройте под вашу конфигурацию) #define RX_PIN 16 #define TX_PIN 17 #define RTS_PIN 18 // Опционально для аппаратного управления потоком #define CTS_PIN 19 // Опционально для аппаратного управления потоком // Настройки UART #define UART_BAUDRATE 921600 #define QUEUE_SIZE 2048 #define BUFFER_SIZE 1024 void btTask(void *pvParameters) { // Ядро 0: Обработка Bluetooth SerialBT.begin("ESP32-SerialBridge"); // Имя Bluetooth устройства SerialBT.setPin("1234"); // Пин-код (опционально) uint8_t btBuffer[BUFFER_SIZE]; size_t btBytesRead; while(1) { // Прием данных из Bluetooth и отправка в очередь для UART if(SerialBT.available()) { btBytesRead = SerialBT.readBytes(btBuffer, BUFFER_SIZE); if(btBytesRead > 0) { xQueueSend(btToSerialQueue, btBuffer, portMAX_DELAY); } } // Отправка данных из очереди в Bluetooth uint8_t serialBuffer[BUFFER_SIZE]; if(xQueueReceive(serialToBtQueue, serialBuffer, 0) == pdTRUE) { SerialBT.write(serialBuffer, BUFFER_SIZE); } vTaskDelay(1 / portTICK_PERIOD_MS); // Небольшая задержка } } void serialTask(void *pvParameters) { // Ядро 1: Обработка UART hardwareSerial.begin(UART_BAUDRATE, SERIAL_8N1, RX_PIN, TX_PIN); uint8_t serialBuffer[BUFFER_SIZE]; size_t serialBytesRead; while(1) { // Прием данных из UART и отправка в очередь для Bluetooth if(hardwareSerial.available()) { serialBytesRead = hardwareSerial.readBytes(serialBuffer, BUFFER_SIZE); if(serialBytesRead > 0) { xQueueSend(serialToBtQueue, serialBuffer, portMAX_DELAY); } } // Отправка данных из очереди в UART uint8_t btBuffer[BUFFER_SIZE]; if(xQueueReceive(btToSerialQueue, btBuffer, 0) == pdTRUE) { hardwareSerial.write(btBuffer, BUFFER_SIZE); } vTaskDelay(1 / portTICK_PERIOD_MS); // Небольшая задержка } } void setup() { // Инициализация очередей btToSerialQueue = xQueueCreate(QUEUE_SIZE, sizeof(uint8_t[BUFFER_SIZE])); serialToBtQueue = xQueueCreate(QUEUE_SIZE, sizeof(uint8_t[BUFFER_SIZE])); // Создание задач на разных ядрах xTaskCreatePinnedToCore( btTask, // Функция задачи "BT_Task", // Имя задачи 4096, // Размер стека NULL, // Параметры 2, // Приоритет (выше, чем у serialTask) NULL, // Дескриптор задачи 0 // Ядро 0 ); xTaskCreatePinnedToCore( serialTask, // Функция задачи "SerialTask", // Имя задачи 4096, // Размер стека NULL, // Параметры 1, // Приоритет NULL, // Дескриптор задачи 1 // Ядро 1 ); // Удаление задачи loop (не используется) vTaskDelete(NULL); } void loop() { // Не используется, так как задачи работают в RTOS } ### Ключевые особенности реализации: 1. **Двухъядерная архитектура**: - Bluetooth обработка на ядре 0 - UART обработка на ядре 1 2. **Межзадачное взаимодействие**: - Использование двух очередей FreeRTOS для передачи данных между задачами - Буферизация данных для минимизации потерь 3. **Оптимизация производительности**: - Большие буферы (1024 байта) - Высокая скорость UART (921600 бод) - Приоритет задачи Bluetooth выше, чем у UART 4. **Гибкость конфигурации**: - Настраиваемые пины UART - Возможность добавления аппаратного управления потоком (RTS/CTS) 5. **Стабильность**: - Проверка доступности данных перед чтением - Защита от переполнения очередей ### Дополнительные улучшения: 1. Для увеличения скорости можно добавить DMA для UART: ```cpp hardwareSerial.begin(UART_BAUDRATE, SERIAL_8N1, RX_PIN, TX_PIN); hardwareSerial.onReceive([]() { // Обработка прерываний UART }, true); ``` 2. Для улучшения стабильности Bluetooth соединения: ```cpp SerialBT.enableSSP(); SerialBT.setMTU(512); // Увеличение максимального размера пакета ``` 3. Добавление мониторинга состояния соединения: ```cpp if(!SerialBT.connected()) { // Переподключение или уведомление } ``` Этот код обеспечивает полнодуплексный туннель между Bluetooth SPP и UART с максимальным использованием возможностей двух ядер ESP32.
-
Я тоже думаю чем проще код тем надежнее. Пусть и медленее.... Себе ставил буфер 1024... работает... Но скорее всего прошюсь на первую версию она вроде как надежнее)))
-
В esp32 с двух ядерностью можно игратся....
-
А вообще без буфера пробовали? Здесь меняли значения? Нету сейчас живого блока для экспериментов... ИИ мне даже предлогал код с задействованием 2 ядер еспшки с задействованием FreeRTOS типо одно ядро на передачу другое на прием... обещал увеличение производительности)))
-
Эксперементировал с ИИ (deepseek)... Просил у него код для включения и выключения (для того что бы в обычном режиме esp много не жрала и не грелась) через Bluetooth терминал точки доступа wifi в esp32. Поднимал точку доступа с веб интерфейсом для обновления прошивки (OTA)через wifi. Как бы с костылями работает))) может и оптимизировать можно только что там обновлять в блютус модуле... Другое дело что в теории можно и STM 32 прошить через ESP32 ИИ даже код дает но эксперементировать некогда....
-
#include "BluetoothSerial.h" #include "driver/uart.h" //#define USE_PIN // Раскомментируйте для использования PIN-кода при сопряжении const char *pin = "1234"; const String device_name = "SCANMATIK #A111788"; // const для экономии памяти BluetoothSerial SerialBT; void setup() { Serial.setRxBufferSize(2048); Serial.setTxBufferSize(2048); Serial.begin(921600); // Настройка UART с аппаратным управлением потоком (RTS/CTS) uart_set_pin(UART_NUM_0, 1, 3, 22, 19); // UART, TX, RX, RTS, CTS uart_set_hw_flow_ctrl(UART_NUM_0, UART_HW_FLOWCTRL_CTS_RTS, 64); uart_set_mode(UART_NUM_0, UART_MODE_UART); SerialBT.begin(device_name); #ifdef USE_PIN SerialBT.setPin(pin); #endif Serial.print("AT-AB -BypassMode-\n"); } void loop() { // Буферизованное чтение и запись для уменьшения задержек static uint8_t buffer[256]; // Статический буфер для уменьшения аллокаций size_t available; // Передача данных из Serial в Bluetooth available = Serial.available(); if (available > 0) { size_t bytesRead = Serial.readBytes(buffer, min(available, sizeof(buffer))); SerialBT.write(buffer, bytesRead); } // Передача данных из Bluetooth в Serial available = SerialBT.available(); if (available > 0) { size_t bytesRead = SerialBT.readBytes(buffer, min(available, sizeof(buffer))); Serial.write(buffer, bytesRead); Буферизация данных Вместо посимвольного чтения (Serial.read()) используется буферизованный обмен (readBytes + write), что ускоряет передачу. Статический буфер (static uint8_t buffer[256]) исключает лишние выделения памяти. Оптимизация памяти device_name объявлена как const String, чтобы избежать лишних копий. Читаемость и надежность Добавлены комментарии для настройки UART. Использована функция min() для предотвращения переполнения буфера. Снижение задержек Пакетная передача уменьшает нагрузку на процессор. Дополнительные рекомендации: Если передаются большие объемы данных, можно увеличить буфер (например, до 512 или 1024 байт). Рабочая версия сгенерированная ИИ осталось только потестить)))
-
Вот о чём и речь что он автоматом перешивается ,НАТО он оригинал и в той теме человек имеет ввиду откат прибора на 32 версию Здесь я говорил про то как поставить 2 разных версии PCMflash
-
Вообщем провел эксперимент. С произвольным именем конфигуратор не видит устройство... но и четко серийник не обязательно. Есть там какой-то алгоритм))) часто вместо произвольного имени определяется как 0000A
-
Просто быстро сдались))) Измените имя папки с установлиным pcm и пересоздайте ярлык. Потом установите другой.
-
Получается это работает только на 1 версии. Которая шла со скетчем. Сейчас 2 версию пробовал разными прогами и с компа и с телефона с разными скоростями... не работает.
-
У автора другой модуль... с esp32 так не прокатит.