Перейти к содержанию

Прошивка для SM2 Pro Clone


Рекомендуемые сообщения

  В 13.04.2025 в 20:21, yalymka сказал:

Думаешь кто-то вменяемый будет прошивать оригинальный прибор 32 прошивкой ?

Показать  

Оригинальный прибор работают со всеми версиями программ, по крайней мере я запускал и 13 и 22 и 32 и 35 , ПРИБОР АВТОМОТИЧЕСКИ обновляется под ту программу , в которой было последнее подключение, тому доказательство кратковременная задержка с секунды 3-5.

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

Ссылка на комментарий
Поделиться на другие сайты

  В 13.04.2025 в 18:47, Valery63 сказал:

обзывать устройство можешь как хочешь, но подключаться оно не будет

Показать  

20250414_010505.thumb.jpg.a36453be2bcf950cdb42b86122bd1b0c.jpg.thumb.png.3c4feab3fc5944d07d9a2c0b8f477e5e.png2.thumb.png.3bf1d22e3bde2d42aecf87c87880445a.png

 

Вообщем провел эксперимент. С произвольным именем конфигуратор не видит устройство... но и четко серийник не обязательно. Есть там какой-то алгоритм))) часто вместо произвольного имени определяется как 0000A 

 

Ссылка на комментарий
Поделиться на другие сайты

  В 13.04.2025 в 18:02, Roman St сказал:

Просто быстро сдались)))

Измените имя папки с установлиным pcm и пересоздайте ярлык. Потом установите другой.

Показать  

Вот о чём и речь что он автоматом перешивается ,НАТО он оригинал и в той теме человек имеет ввиду откат прибора на 32 версию

Ссылка на комментарий
Поделиться на другие сайты

  В 26.02.2025 в 21:36, deman-s сказал:

Здравствуйте появилось немного свободного времени проверил esp32 на предмет зависания действительно при больших объёмах данных происходило зависание увеличил объём буфера теперь можно даже  оригинал обновлять через блютуз (если кто ставил в ориг)  в архиве файлы прошивки с изменённым буфером и новая версия программы flash download tool (которая должна работать в win 7) 

sm2pro_,bluetooth_esp32_NEW_bufer.7zНедоступно

Показать  

 

А можно исходник попросить?

Хочется покопаться.

void setup() {
  Serial.setRxBufferSize(1024);
  Serial.setTxBufferSize(1024);

Просто эти величины увеличены?

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 12:42, Drexxter сказал:

 

А можно исходник попросить?

Хочется покопаться.

void setup() {
  Serial.setRxBufferSize(1024);
  Serial.setTxBufferSize(1024);

Просто эти величины увеличены?

Показать  

Здравствуйте исходник дать не могу 

Настройки буфера в скетче увеличить и ещё в плагине esp32 в программе arduino ide увеличить 

Ссылка на комментарий
Поделиться на другие сайты

  В 13.04.2025 в 20:21, yalymka сказал:

Думаешь кто-то вменяемый будет прошивать оригинальный прибор 32 прошивкой ?

Показать  

Откатить оригу таким способом как на скринах не возможно. Назад дороги нет)))

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 12:58, deman-s сказал:

Здравствуйте исходник дать не могу 

Настройки буфера в скетче увеличить и ещё в плагине esp32 в программе arduino ide увеличить 

Показать  

Позвольте поинтересоваться - до каких величин достаточно увеличить?

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 15:04, Drexxter сказал:

Позвольте поинтересоваться - до каких величин достаточно увеличить?

Показать  

2048

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 01:50, Max22 сказал:
  В 13.04.2025 в 18:02, Roman St сказал:

Просто быстро сдались)))

Измените имя папки с установлиным pcm и пересоздайте ярлык. Потом установите другой.

Показать  

Вот о чём и речь что он автоматом перешивается ,НАТО он оригинал и в той теме человек имеет ввиду откат прибора на 32 версию

Показать  

Здесь я говорил про то как поставить 2 разных версии PCMflash 

15786769_.png.d0fa447c896b6f3feddfeb6576ed0880.png

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте,имеется китайматик на версии 2.21.32,планирую добавить bluetooth на esp32,какой версией его лучше прошить,с номером - 78730 или 62122?

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 12:42, Drexxter сказал:

А можно исходник попросить?

Показать  

#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 байт).

Рабочая версия сгенерированная ИИ осталось только потестить)))

Ссылка на комментарий
Поделиться на другие сайты

Эксперементировал с ИИ (deepseek)...

Просил у него код для включения и выключения (для того что бы в обычном режиме esp много не жрала и не грелась) через Bluetooth терминал точки доступа wifi в esp32. Поднимал точку доступа с веб интерфейсом для обновления прошивки (OTA)через wifi. Как бы с костылями работает))) может и оптимизировать можно только что там обновлять в блютус модуле...

Другое дело что в теории можно и STM 32 прошить через ESP32 ИИ даже код дает но эксперементировать некогда....

Ссылка на комментарий
Поделиться на другие сайты

Попробовал ваш скетч. В конец надо добавить закрытие функции. А так все работает.

Правда скорости обмена не добавилось.

Я экспериментирую с разными буферами на программировании одного и того-же блока по воздуху.

Полное время по кабелю 8 минут. По воздуху 22 минуты. От размера буфера зависимости нет. Ваш скетч тоже 22 минуты.

Может это так с программами БМВ х.з. Такое впечатление что увеличенные временные промежутки между посылками. 

Сделал еще один адаптер на основе ЕЛМ-ки. так он программирует за 12 минут. Скорость у него 115200.

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 20:35, Valery63 сказал:

Правда скорости обмена не добавилось.

Показать  

И не добавиться.... а еще и потери данных возрастут в разы при плотном потоке.

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 20:35, Valery63 сказал:

Правда скорости обмена не добавилось.

Я экспериментирую с разными буферами на программировании одного и того-же блока по воздуху.

Показать  

А вообще без буфера пробовали?

 

  В 14.04.2025 в 17:31, Roman St сказал:

/ Буферизованное чтение и запись для уменьшения задержек
  static uint8_t buffer[256]; // Статический буфер для уменьшения аллокаций

Показать  

Здесь меняли значения?

Нету сейчас живого блока для экспериментов...

 

ИИ мне даже предлогал код с задействованием 2 ядер еспшки с задействованием FreeRTOS типо одно ядро на передачу другое на прием... обещал увеличение производительности))) 

Ссылка на комментарий
Поделиться на другие сайты

На сколько знаю, ЕСП на одном ядре крутит связь, на втором крутит код. Блютус/Вайфай стек - весьма прожорливые штуки ) Во всяком случае на 8266 всё зависало на время обработки вифи, ввиду одноядерности.

С static uint8_t buffer[256]; то же не понятно, почему бы и его не бахнуть 2048..

Ссылка на комментарий
Поделиться на другие сайты

  В 14.04.2025 в 22:17, Roman St сказал:

Здесь меняли значения

Показать  

В вашем скетче не менял. 

Пробовал с "типовым".

Буфер менял от 128 до 2048.

Время примерно одинаковое. 

Такое ощущение что ещё где-то задаётся время между посылками.

 

Ссылка на комментарий
Поделиться на другие сайты

  В 15.04.2025 в 01:55, Drexxter сказал:

С static uint8_t buffer[256]; то же не понятно, почему бы и его не бахнуть 2048..

Показать  

 

  В 14.04.2025 в 17:31, Roman St сказал:

Если передаются большие объемы данных, можно увеличить буфер (например, до 512 или 1024 байт).

Показать  

В esp32 с двух ядерностью можно игратся....

Ссылка на комментарий
Поделиться на другие сайты

static uint8_t buffer[256] увеличил до 1024 - сканматик перестал выходить на связь. Не esp32, а сам (программный сбой).

Изменил на 512 - заработал. Время +- 21 минута.

Вальнул блок при программировании специально (отключил питание). С вашим скетчем блок не поднял. Не выходил на связь. Скорее всего по отклику.

Прошил обычный скетч с буфером 2048  - блок поднялся без проблем.

Ссылка на комментарий
Поделиться на другие сайты

Короче "Лучшее - враг хорошего" )

Скетч с морганием светодиодами, буфером, и серийником 32-й версии.

 

  Показать контент


 

sketch_scanmatic_LED_32_bufer.inoПолучение информации...

Ссылка на комментарий
Поделиться на другие сайты

А перед тем как начинать моргать светодиодами, узнать нужно сколько время занимает команда digitalWrite(). За скорость боритесь с якорем по асфальту...

Ссылка на комментарий
Поделиться на другие сайты

"В цикле loop (), используя функцию digitalWrite, мы можем менять состояние пина с частотой максимум 72 кГц"

Это на ардуине, на 16мГц. На ЕСП32 - проверять надо.. И может ли оно напрямую через PORT управляться..

ESP8266 - 560кГц

Ок, на базе GPIO. Быстрее не будет я думаю.


 

  Показать контент

 

Ссылка на комментарий
Поделиться на другие сайты

  В 15.04.2025 в 17:23, Drexxter сказал:

Короче "Лучшее - враг хорошего" )

Показать  

Я тоже думаю чем проще код тем надежнее. Пусть и медленее....

Себе ставил буфер 1024... работает... 

Но скорее всего прошюсь на первую версию она вроде как надежнее)))

 

Ссылка на комментарий
Поделиться на другие сайты

  В 15.04.2025 в 17:40, Drexxter сказал:

Ок, на базе GPIO. Быстрее не будет я думаю.

Показать  

Но если покопаться - GPIO там работает через обработчик FIFO с буфером, сколько он тактов процессора жрёт - не ясно, как и задержки. 

У кого есть осцил под рукой - проверьте частоту

  Показать контент

 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   1 пользователь онлайн

×
  • Создать...