Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Делюсь опытом stm32 esp8266 ат команды самодельная wifi камера

Тема в разделе "Другие проекты", создана пользователем BORISBRITWA, 11 май 2019.

  1. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    STM32 wifi камера
    Детали:stm32f4, ov2640 камера и esp01 за 1 бакс)
    Использую режим transparent transmission mode
    В видео используется скорость 921600 бод .Сейчас поднял до 2000000 это даже не половина от максимальной заявленной Baudrate range: 110 to 115200*40 (4.608 Mega).
    Картинка JPEG 800x600 в среднем весит 14килобайт передача занимает на скорости в 2ляма 100ms.
    Сейчас работаю над оптимизацией работы с DMA, должно убрать еще 100-200 ms на захват данных в во фреймбуфер.Я тестировал ESP32 камеру так там 2-6 кадров было 800 на 600 .Это уже на данные момент сравнимо с моими результатами.
     
  2. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    На esp32 пробрасывал rtp видео поток, получаемый с другого mcu.
    Из за неожиданных лагов, картинка начинает разваливаться (на 264-м кодеке из-за запоздавших слайсов вылезают неприятные артефакты), работает не стабильно, может начать разваливаться через 5 минут или через минуту.
    В общем такое не продать, пришлось отказаться от этого модуля.
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    На ESP8266 уходит много ресурсов (тактов CPU) на задачу помещения данных в RAM с внешних интерфейсов без использования DMA (есть жалкое подобие) и нет места для необходимой буферизации видео-потока к средним рабочим условиям WiFi. У ESP32 аналогично - желательного объема буфера для видео низкого разрешения нет.

    ESP позволяют передавать необходимый поток исключительно из своей QSPI-Flash. При этом среднестатистическая скорость TCP находиться в пределах 1МБ в сек, а при UDP – 1.2..1.5 МБ при условии работы ESP8266 на 160 МГц, близкой зоне AP, одного участника - данной ESP и роутера + довольно чистого эфира рабочего канала WiFi. Чего в городе – “днем с огнем не сыщешь”.
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Непрерывный поток данные с COM порта в TCP выше 3-х мегабит ESP8266 не протягивает. UART сидит на общей низко-скоростной шине и масса тактов CPU уходит на выемку блоков из его FIFO. В идеальных условиях (ESP8266 и роутер в железном ящике) получите к пределу 5 Мбит UART.
    А когда его обрабатывать - прилеплять заголовки, и передавать по WiFi?
     
  5. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    На 3Мегабит на вышло. действительно возникли проблемы.Добился 5 кадров в секунду на 2мегабитах (800x600),(двойной фрейм буфер пока первая часть передается ,вторая наполняется ,). Приблизительный размер картинки указывал.
    Я тестировал ESP32CAM там 2-7 FPS. Я считаю, что у меня очень не плохой результат.

    Есть альтернативные прошивки , чтобы еще чуточку выжать?Или 3Мегабита, это придел из-за низко скоростной шины.

    Может есть вариант прошивки,моста SPI-WIFI? И что из этого соединения можно получить ?

    Картинки идут в JPEG можно даже в браузере их "проигрывать" нужно просто необходимые заголовки дабовалять.
    Но в режиме моста не выйдет.А так картинки на лету обрабатываются openCV, у каждой картинки есть признак начало и конец JPEG .Программа ищет начало и конец показывает и удаляет обработанные из принятых TCP пакетов.
     
  6. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    На одном ядре что у esp8266, собрались и wifi и интенсивный поток с spi получать? Драйвер wifi всё может испортить. Начали на spi транзакцию и в это время драйвер wifi подожрал ресурсы и с spi получили каку.
     
  7. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Это как выйдет "кака" при SPI мастер на ESP?
    У ESP8266 есть конфигурация как у обычного внешнего модуля WiFi на шину типа "обгрызанной" SDIO (QSPI)...
    C Flash на шине QSPI ESP8266 без проблем передает непрерывный поток в 1 мегабайт в TCP, что есть к 8 Мбит в сек.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Разбор с SPI ESP8266 был в 2015 году и я уже многое не помню, но помню, что на Arduino вам не достичь даже 1 мегабайта в сек, т.к. необходимо корректировать всё, включая доп. команды компилятору и свои драйвера для SPI на чистом СИ (или ASM :))
     
  9. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    Нее, у меня esp32 слейвом работал, таск что с spi-ем работал, был на первом ядре, на нулевом ему wifi драйвер мешал.
    Без проблем и 2 мегабайта (точнее 1.8-1.9) получалось.
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    В чистом поле, с одним устройством у роутера в метре :)
    1.8-1.9 мегабайта - это пиковое значение при TCP у ESP32, примерно равное UDP, когда все ACK ложатся ровно и передается от двух полных пакетов на 1 ACK...
    При этом чип нехило греется, если AP удалена и возможен троттлинг.
     
  11. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    По этим причинам модуль заменен иа медиатек ;)
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Тут обещают в скором выложить OpenWRT -> Komikan - 8devices и там есть 5 ГГц.
    В продаже уже давно Tenda AC10 -> Tenda AC10 – обсуждение - 4PDA ...
     
  13. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    2Mbit в режиме transparent transmission mode моде работает практически без ошибок.Этого за глаза чтобы передать 6FPS 800x600, как у ESP32CAM но пока у меня 2-3 FPS.Где то есть проблемы , вопрос решается надеюсь все выгорит и сравним две камеры на разных архитектурах)
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    2Mbit это 195 килобайт в сек. 2000000/10/1024=195.3125
    195.3/14=13.95 кадров.

    При “transparent transmission mode” от Espressif с буфером в 2 килобайта (2048 байт) влезает в 2 TCP пакета. Один полный (1460 байт) и один заполнен на треть (588 байт).
    В итоге дикие потери на формирование, разбивку на пакеты, ожидания ACK... Ну это Espressif – у них всё так :)

    ESP8266 AT Instruction Set: Enter transparent transmission, with a 20-ms interval between each packet, and a maximum of 2048 bytes per packet.

    Если считать, что передача занимает нуль мс, то Espressif заявляет, что в секунду в их AT “transparent transmission mode” передается всего 5 пакетов по 2048 байт.
    2048*5 = 10240 байт в сек всего... :)

    Возьмите хотя-бы устаревшую Прошивка TCP2UART переходника с настройкой по Web и там без проблем сможете заливать в UART 3 мегабита сплошным потоком или 10 мегабит но уже блоками... но лучше найдите более современный вариант TCP-UART...
     
  15. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    Хотел обойтись АТ командами но все-таки придется пробовать другие прошивки.Залил сегодня фото в память МК(STM32) и гонял его на разных скоростях на 2Mbit с 20 ms на каждый 2048 байт более и менее но этого не достаточно для меня( Не хватает чуть чуть) судя по логам моей программы.
    До этого был написан тест передачи байт, каждый байт различался на единицу . На принимающей стороне контролировалась разница между байтами по модулю равна =1 либо 255 тест прошел нормально и без задержек на скорости 2 Мбита и я уперся, что все должно быть ОК 5 FPS не проблема для ESP01 и дело не в передаче пакетов.
     
  16. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    @pvvx но 2FPS она все таки выдает) и без задержек .Спасибо буду пробовать альтернативные прошивки.
     
  17. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    @pvvx скачал fullflash_and_webfs_054a залил оба файла.
    настройки не менял, кроме как Baud 2000000.Подключаюсь с компа к TCP серверу порт 12345 стандартные настройки .Пока все печально возможно, что из за того, что я использовал модуль см фото.(там UART_TTL переходник на плате его не отключить) либо еще чего надо в настройках? wifi.jpg uart.jpg FUHCR7XIVO7W21V.LARGE.jpg
     
  18. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    @pvvx дошел до 15 страницы, а там "Для ускорения работы Web до 1 Мегабайта в сек требуется отключать отладочные сообщения. Иначе скорость TCP падает ниж 500 кило в сек, даже если DEBUG UART выставлена на 3 000 000 Baud."

    Попробую ....
     
  19. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    Все печально.Перенастроил на 3076923

    Отключил все делаю простой тест с мк вывожу фото которое загрузил в память мк на скорости 3076923.


    Debug выключил в логах wireshark вроде все норм.не использую CTS/RTS так в ESP01 их не будет.На изображении дефекты. и обновляется как оч медленно.А должно около 5 FPS.
    Код (C):
    1. while(1){
    2.       if(DEBUG)printf("start tx %d ms\r\n",currentTimeMs);
    3.            for(i = 0; i < 16081; i++)    {//test 2
    4.              USART3_Transmit(foto[i]);
    5.              //if(i%2048==0)Delay(25);
    6.          }
    7.          if(DEBUG)printf("stop tx %d ms\r\n",currentTimeMs);  
    8.          Delay(100);
    9. }
    За секунду успевает приходить 10 пакетов 1514, 1460*10=14600 в секунду, а я вроде как передаю в 5 раз больше?
    Где я накосячил) похоже не настроен мой уарт на 3Мбита,
    да нет по логам все ок

    start tx 1913 ms
    stop tx 1980 ms
    start tx 2080 ms
    stop tx 2147 ms
    start tx 2247 ms
    stop tx 2314 ms
    start tx 2414 ms
    stop tx 2481 ms
    start tx 2581 ms
    stop tx 2648 ms
    start tx 2748 ms
    stop tx 2815 ms
    start tx 2915 ms
    stop tx 2982 ms
    start tx 3082 ms
    stop tx 3149 ms
    start tx 3249 ms
    stop tx 3316 ms
    start tx 3416 ms
    stop tx 3483 ms
    start tx 3583 ms
    stop tx 3650 ms
    start tx 3750 ms
    stop tx 3817 ms
    start tx 3917 ms
    stop tx 3984 ms
    start tx 4084 ms
    stop tx 4151 ms
    start tx 4251 ms
    stop tx 4318 ms
    start tx 4418 ms
    stop tx 4485 ms
    start tx 4585 ms
    stop tx 4652 ms
    start tx 4752 ms
    stop tx 4819 ms
    start tx 4919 ms
     

    Вложения:

    • uarttcp.rar
      Размер файла:
      22,3 КБ
      Просмотров:
      0
  20. BORISBRITWA

    BORISBRITWA Новичок

    Сообщения:
    20
    Симпатии:
    2
    Прочитал с 1 по последнюю)) https://esp8266.ru/forum/threads/proshivka-tcp2uart-perexodnika-s-nastrojkoj-po-web.146/
    автор проделал большую работу и все его зае... своими жалобами.
    Залил fullflash_and_webfs_061 для ESP01 все настройки по умолчанию, кроме скорости UART 3076923. Выдает 5 FPS работает замечательно, лаги иногда есть.Это скорее из за того, что не используются CTS/RTS и перезаписываю не отправленный буфер ESP01 .
    Спасибо автору за проделанную работу.
     

Поделиться этой страницей