Подскажите алгоритм управления для 2ух шаговиков (Camera Slider)

bort707

★★★★★★✩
21 Сен 2020
3,064
912
@kDn, не стесняюсь, вебинтерфейсы на есп32 (да и вообще нигде:)никогда не писал.Потому и советую Нрф.

@Андрей К., вы на самом деле на эту перепалку не обращайте внимания, это личное :)
просто когда будете планировать, рассмотрите вариант с нрф, мне кажется для вашего проекта он подходит не плохо.
Удачи.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Ребята, а что не так с jdy-40?
Пока все так, рассматриваем разные варианты.

как вариант можно поковырять esp32cam на нашем же фреймворке, давайте проект расшарю, если есть желание. Я там накидал заготовку, которую можно и нужно причесать, а у вас будет возможность накатить и сразу поглядеть что и как :) . Так сразу двух зайцев пристрелим - и с камерой поглубже поиграетесь и с фреймворком познакомитесь. Интересно или сейчас не до того?
Конечно посмотрю, если в этом проекте не получится, может в другом. Я тут кстати пробовал добавить к ESP32 проводной ethernet, но столкнулся с проблемой ограничения скорости по SPI, ни на форуме ESP32 ни на eevblog вразумительного ответа не получил. Пока висит в воздухе. Но это вообще другая тема.

Еслиб ситуация была сделать побыстрее, я бы 10 проводов кинул, и управлял с основного пульта драйверами...
Ну это уже совсем ужас ужас 😱

Не знаю, что вы Нрф24 отбросили, для коротких расстояний самое то и отклик быстрый.
Пока еще ничего не бросили, рассматриваем варианты.

Насчет решения, если выносной проводной пульт не вариант, пока видится два решения

  1. Радиоканал на "Нрф24" или "jdy-40". Плюс такого решения - меньше переписывать в прошивке, можно просто добавить к текущему железу.
  2. ESP32 и телефон/планшет. Плюс такого решения - больше памяти и мозгов. Можно добавить и интерфейс к енкодеру/экрану. Минус - гораздо больше переписывать.
Я понимаю, что решение 2 более правильное, но получится, что большой объем выполненной работы пойдет в корзину 😭 - жалко.
 
  • Лойс +1
Реакции: Андрей К.

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Я понимаю, что решение 2 более правильное, но получится, что большой объем выполненной работы пойдет в корзину 😭 - жалко.
Почему вы так решили? Фреймворк Arduino есть и под esp32, сразу переписывать под идеологию freertos через таски, не обязательно. Впрочем даже такое переписывание не сильно большая проблема. ИМХО весь ваш код можно за пару дней перенести, библиотеки и для дисплея, и для энкодера есть, подбираете подходящие и все. При возникновении вопросов/проблем - помогу, если что ;).
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Почему вы так решили? Фреймворк Arduino есть и под esp32, сразу переписывать под идеологию freertos через таски, не обязательно.
Я в курсе насчет фреймворка. Просто из-за ограничения памяти и вычислительных возможностей пришлось имплементировать свое меню и управление шаговиками, причем последнее довольно близко к железу. Хотя надо попробовать, может и не так страшен черт, как его малютка...
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Я тут кстати пробовал добавить к ESP32 проводной ethernet, но столкнулся с проблемой ограничения скорости по SPI, ни на форуме ESP32 ни на eevblog вразумительного ответа не получил. Пока висит в воздухе. Но это вообще другая тема.
Ну если речь идет о репозитории "Ethernet camera for OpenPNP based on AI-Thinker ESP32-CAM with ENC28J60 ethernet module and WS2812B LEDs. " у вас, то как раз поглядев на него я и решил выложить проект, поскольку вижу, что у вас есть на чем тестировать ;). По поводу же SPI на ESP32, то насколько я помню там реализация не сильно полноценная и полупрогрограммная... Правда подробно тему не изучал. :)
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
По поводу же SPI на ESP32, то насколько я помню там реализация не сильно полноценная и полупрогрограммная...
Там проблема похоже в железе, не в реализации - при скорости SPI более 8МГц там сигнал портится. Но это уже оффтопик.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Пока жду радиомодули, решил спросить, Понадобилось только перемещение по Х оси. Вращение по Y в другом исполнении не нужно. Достаточно ли закомментировать в закладке MOVES, строки с Y, для того чтоб они исчезли из меню, но остальное сохранилось и работало?
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
остаточно ли закомментировать в закладке MOVES, строки с Y, для того чтоб они исчезли из меню, но остальное сохранилось и работало?
Нет, так просто не получится, нужно делать условную компиляцию через макро.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
Спасибо. Понял. Это для меня даже не совсем понятно о чем речь...
Пока мыслей по поводу радио управления не было ? В смысле на чем это реализовать с минимальными переделками ?
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Это для меня даже не совсем понятно о чем речь...
К примеру
#define DRIVE_Y_DISABLED
#ifdef DRIVE_Y_DISABLED
...
#endif

И прочие радости. Гляну по быстрому, не должно быть много.
В смысле на чем это реализовать с минимальными переделками ?
С минимальными переделками я уже говорил, вас это не устраивает. А так скорее всего ESP32 и гуй на телефоне через BT и/или WIFI. Только подыскать бы кого, кто гуй согласился запилить, у меня с ним обычно не ладится, я по серверной части больше.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Я вам уже предлагал использовать наш фреймворк, но уговаривать естественно не буду.
Да я не против его использовать, только за. Проблема для меня с гуи не с программированием, а с дизайном интерфейса. А его нужно делать с фреймворком или без.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Да я не против его использовать, только за. Проблема для меня с гуи не с программированием, а с дизайном интерфейса. А его нужно делать с фреймворком или без.
Вы видимо не совсем понимаете... Дизайном как раз вам не придется заниматься вообще, т.к. используется дизайн фреймворка, с уже имеющимися css и контролами. Вы просто на стороне ESP описываете какие вам контролы нужны и все. Если потребуется украшалки в будущем, то это тоже можно сделать, но для рабочего прототипа совершенно не нужно.

Все как раз и делалось для того, чтобы быстро создавать функционал совершенно не задумываясь о браузерах, компьютерах и том как все будет выглядеть. Генерацией страниц занимается сам движок. Примеры же есть, просто откройте пример и поглядите. К примеру, чтобы нарисовать форму из вот этого сообщения нужен лишь этот код:
C++:
/**
 *  BasicUI блок интерфейса настроек WiFi/MQTT
 */
void BasicUI::block_settings_netw(Interface *interf, JsonObject *data){
    if (!interf) return;
    Task *_t = new Task(
        500,
        TASK_ONCE, [interf](){
            BasicUI::set_scan_wifi(interf, nullptr);
            TASK_RECYCLE; },
        &ts, false);
    _t->enableDelayed();
    interf->json_frame_interface();

    // Headline
    interf->json_section_main(FPSTR(T_OPT_NETW), FPSTR(T_DICT[lang][TD::D_WIFI_MQTT]));

    // форма настроек Wi-Fi Client
    interf->json_section_hidden(FPSTR(T_SET_WIFI), FPSTR(T_DICT[lang][TD::D_WiFiClient]));
    interf->spacer(FPSTR(T_DICT[lang][TD::D_WiFiClientOpts]));
    interf->text(FPSTR(P_hostname), FPSTR(T_DICT[lang][TD::D_Hostname]));
    interf->json_section_line();
    interf->select_edit(FPSTR(P_WCSSID), String(WiFi.SSID()), String(FPSTR(T_DICT[lang][TD::D_WiFiSSID])));
    interf->json_section_end();
    interf->button(FPSTR(T_SET_SCAN), FPSTR(T_DICT[lang][TD::D_Scan]), FPSTR(P_GREEN), 21);
    interf->json_section_end();
    interf->password(FPSTR(P_WCPASS), String(""), FPSTR(T_DICT[lang][TD::D_Password]));
    //interf->json_section_line();
    //interf->button(FPSTR(T_SET_SCAN), FPSTR(T_DICT[lang][TD::D_Scan]), FPSTR(P_GREEN));
    interf->button_submit(FPSTR(T_SET_WIFI), FPSTR(T_DICT[lang][TD::D_CONNECT]), FPSTR(P_GRAY));
    //interf->json_section_end();
    interf->json_section_end();

    // форма настроек Wi-Fi AP
    interf->json_section_hidden(FPSTR(T_SET_WIFIAP), FPSTR(T_DICT[lang][TD::D_WiFiAP]));
    interf->text(FPSTR(P_APhostname), embui.param(FPSTR(P_hostname)), String(FPSTR(T_DICT[lang][TD::D_Hostname])));
    interf->spacer(FPSTR(T_DICT[lang][TD::D_WiFiAPOpts]));
    interf->comment(FPSTR(T_DICT[lang][TD::D_MSG_APOnly]));
    interf->checkbox(FPSTR(P_APonly), FPSTR(T_DICT[lang][TD::D_APOnlyMode]));
    interf->password(FPSTR(P_APpwd),  FPSTR(T_DICT[lang][TD::D_MSG_APProtect]));
    interf->button_submit(FPSTR(T_SET_WIFIAP), FPSTR(T_DICT[lang][TD::D_SAVE]), FPSTR(P_GRAY));
    interf->json_section_end();

    // форма настроек MQTT
    interf->json_section_hidden(FPSTR(T_SET_MQTT), FPSTR(T_DICT[lang][TD::D_MQTT]));
    interf->text(FPSTR(P_m_host), FPSTR(T_DICT[lang][TD::D_MQTT_Host]));
    interf->number(FPSTR(P_m_port), FPSTR(T_DICT[lang][TD::D_MQTT_Port]));
    interf->text(FPSTR(P_m_user), FPSTR(T_DICT[lang][TD::D_User]));
    interf->password(FPSTR(P_m_pass), FPSTR(T_DICT[lang][TD::D_Password]));
    interf->text(FPSTR(P_m_pref), FPSTR(T_DICT[lang][TD::D_MQTT_Topic]));
    interf->number(FPSTR(P_m_tupd), FPSTR(T_DICT[lang][TD::D_MQTT_Interval]));
    interf->button_submit(FPSTR(T_SET_MQTT), FPSTR(T_DICT[lang][TD::D_CONNECT]), FPSTR(P_GRAY));
    interf->json_section_end();

#ifdef EMBUI_USE_FTP
    // форма настроек FTP
    interf->json_section_hidden(FPSTR(T_SET_FTP), FPSTR(T_DICT[lang][TD::D_FTP]));
    interf->text(FPSTR(P_ftpuser), FPSTR(T_DICT[lang][TD::D_User]));
    interf->password(FPSTR(P_ftppass), FPSTR(T_DICT[lang][TD::D_Password]));
    interf->button_submit(FPSTR(T_SET_FTP), FPSTR(T_DICT[lang][TD::D_SAVE]), FPSTR(P_GRAY));
    interf->json_section_end();
#endif

    interf->spacer();
    interf->button(FPSTR(T_SETTINGS), FPSTR(T_DICT[lang][TD::D_EXIT]));

    interf->json_section_end();

    interf->json_frame_flush();
}
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
С минимальными переделками я уже говорил, вас это не устраивает. А так скорее всего ESP32 и гуй на телефоне через BT и/или WIFI.
Предлагалось несколько вариаций...
Мне хотелось бы убрать блок управления со слайдера, он получился большой и не совсем удобный, при съемках на грунте. Я это видел так - сделать маленькую коробочку, в которой будут 2 драйвера и приемник-передатчик. Эту маленькую коробочку разместить на слайдере.
А в руках чтоб был пульт, аналогичный тому, что был ранее на слайдере но уже без драйверов.
Я почему то думал что это самое простое решение.
ESP32 вот такие уже добрались до Екатеринбурга... почти месяц идут... Скоро и до меня доберутся...
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Вы видимо не совсем понимаете... Дизайном как раз вам не придется заниматься вообще, т.к. используется дизайн фреймворка, с уже имеющимися css и контролами. Вы просто на стороне ESP описываете какие вам контролы нужны и все. Если потребуется украшалки в будущем, то это тоже можно сделать, но для рабочего прототипа совершенно не нужно.
Да нет, как раз понимаю. Дизайн ведь еще подразумевает, к примеру, какие контролы использовать. Вот в данном случае, чтобы двигать оси, какие лучше использовать? Вбивать позицию в мм цифрами? Ползунок для относительного движения? Ползунок для абсолютной позиции? И так далее. Оно вроде просто, но хороший дизайн сложен и требует навыка, а у меня его нет.

Я почему то думал что это самое простое решение.
"У каждой сложной проблемы, есть простое, легкое для понимания и неправильное решение". Это решение может и выглядит простым, но оно не рабочее. У радио канала нет достаточной надежности, чтобы такое реализовывать. Для передачи команд высокого уровня проблем нет, там задержки не важны, можно и повторить, а для передачи импульсов на шаговики, не, не реально.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Да нет, как раз понимаю. Дизайн ведь еще подразумевает, к примеру, какие контролы использовать. Вот в данном случае, чтобы двигать оси, какие лучше использовать? Вбивать позицию в мм цифрами? Ползунок для относительного движения? Ползунок для абсолютной позиции? И так далее. Оно вроде просто, но хороший дизайн сложен и требует навыка, а у меня его нет.
Выбор контрола к дизайну отношения не имеет, а имеет отношение к логике. Впрочем какая разница? Сделали поле ввода для числа, затем заменили на ползунок, не понравилось - выпадающий список с пресетами добавили. Логика работы от этого не меняется, а сами правки интерфейса и замена контролов - пару строк поменять. Но ок, я закругляюсь расписывать это в данной теме, будет желание - приходите в соседнюю с вопросами, не будет желания - без проблем, мне вообще-то без разницы. :)
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
"У каждой сложной проблемы, есть простое, легкое для понимания и неправильное решение". Это решение может и выглядит простым, но оно не рабочее. У радио канала нет достаточной надежности, чтобы такое реализовывать. Для передачи команд высокого уровня проблем нет, там задержки не важны, можно и повторить, а для передачи импульсов на шаговики, не, не реально.
Вот теперь понятно. Тогда нужно сделать на проводе. В качестве соединительного использовать изернет кабель, 8 жил, из них 2 на питание пойдут, а 6 оставшихся на нормальную передачу данных между блоками, достаточно ? Если кабель будет в пределах 2ух метров, то можно реализовать ? И какова его максимальная длинна может быть? И как оно будет выглядеть ? Что будет в блоке управления и что будет в блоке исполнения ? Предполагаю что будет использовано 2 ардуинки, по одной и там и тут... В целом и этот вариант пойдет.
 

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Выбор контрола к дизайну отношения не имеет, а имеет отношение к логике.
Ну здрасте, как раз это и есть дизайн гуи - как расставить контролы, в каком порядке, какие и в каком виде контроллировать. Протокол то сделать не сложно, можно передавать как команду двигать в абсолютную позицию, так и двигаться в определенном направлении.

Логика работы от этого не меняется, а сами правки интерфейса и замена контролов - пару строк поменять.
Да я понимаю и пытался сделать интерфейсы раньше, не мое это. Оно выглядит просто - хороший интерфейс, а сделать не так просто. У меня обычно коряво получается. Примерно как здесь вначале меню было, многоуровневое со многими вложенными командами, потратил время на разработку, а оно оказалось не нужно от слова совсем.

В качестве соединительного использовать изернет кабель, 8 жил, из них 2 на питание пойдут, а 6 оставшихся на нормальную передачу данных между блоками, достаточно ?
На передачу данных хватит двух, а то и одним можно обойтись. Не уверен, подойдет ли тут обычный эзернет - он довольно жесткий и одножильный, может переломиться при изгибах. Лучше использовать тогда уж патч-корд. Но тут пробовать надо. В принципе вариант довольно простой, ардуинка с таким же экраном и энкодером в пульте, ардуинка с шаговыми контроллерами в блоке. Ставим два разъема RG-45, они стоят копейки. Переделки в фирмаре минимальные.

Ну а по нормальному можно сделать беспроводной, тут уже использовать ESP32 только надо над интерфейсом все таки подумать. Художники - народ гуманитарный, им наши настройки с цифрами в наборе наврядли подойдут.
 

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Может я что то не понимаю, но у меня возникла идея, по поводу радиомодуля и потеряных шагов.... Если сделать так, из пульта по радиоканалу мы как бы програмируем исполняемый модуль. Нам нужна 2ух сторонняя связь только в режиме настроек положения камеры. А при нажатии на старт, фактически пульт уже не работает... Работает программа непосредственно в исполняемом модуле, и тогда мы не имеем проводов, и пропуски шагов исключены. Отображение числовых значений положения камеры, во время работы, можно исключить... Остается только режим пауза, который мы активируем с пульта по радио каналу.
Таким образом на устройстве будет маленькая коробочка, и отдельный пульт.
Такое решение имеет недостатки ?
В качестве радиомодулей используем то, что будет оптимально. Или ардуину с приставкой или ЕСП32
 
Изменено:

Андрей К.

★✩✩✩✩✩✩
25 Май 2019
287
23
Москва. Щукино
@rGlory,
Тогда я не понял, а почему я от него отказался ? Или что мне не понравилось ? Видимо у меня небольшая каша в голове... Стоит он вообще копейки... Но повторюсь, мне хочется убрать блок управления со слайдера, я не хочу дублировать 2 блока, один на нем а второй радио...
И какие недостатки у него имеются ?
 
Изменено:

rGlory

★✩✩✩✩✩✩
11 Май 2021
200
20
Тогда я не понял, а почему я от него отказался ?
Ну для этого вам внимательнее надо перечитать две последние страницы, с того момента, где я предлагал несколько вариантов.

И какие недостатки у него имеются ?
Смотря с чем сравнивать. Если с ESP32 - необходимость дополнительного железа (телефон то у всех уже есть) и питание 3.3В. Это так, на вскидку.

Давайте еще раз распишу, чтобы было понятнее:

  1. проводной пульт. Выносим дисплей и энкодер с ардуино в выносной пульт на проводах. В основном модуле можно оставить енкодер с дисплеем, получив универсальное устройство, можно не оставлять, получив более компактное (но это не точно, что оно станет сильно компактнее).
  2. беспроводной пульт. Практически предыдущий вариант, только управление по радио через NRF24. Также, как в предыдущем можно оставить управление в основном блоке, можно не оставлять. Недостаток по ср с п1 - дополнительное питание на пульт и два модуля NRF24. Нужно также поглядеть, что там с питанием 3.3В
  3. ESP32 управление с телефона или компа по WIFI/BT. Недостаток по сравнению с п1 и п2 - нужно довольно сильно переделывать фирмварь под новое железо. Как и в п1 или п2 можно сделать управление на самом блоке, можно и не делать. Из достоинств - более мощная платформа, можно улучшить показатели управления двигателями и гораздо больше места для новой функциональности. Также можно улучшить интерфейс с пользователем, но это требует продуманного дизайна.
 
Изменено: