Квант WiFi
#61
(11-02-2025, 01:53)KEN : Наконец запихал плату в корпус, уже можно на пробный коп...
Что особо радует - при изменении прошивки не надо разбирать, по WiFi прошивается за секунды. Можно менять прошивку прямо на копе - если файлы разных вариантов прошивки закинуть на телефон.
[attachment=8003]
Всем здравствуйте! Если интересно могу подсказать как на ESP вывести два меандра со сдвигом 90 градусов.В схеме микросхем поубавится. Только не знаю сработает ли на ESP8266. На ESP32 работает прекрасно.
#62
(11-02-2025, 18:38)I_on : не знаю сработает ли на ESP8266
Не сработает, доступен только один таймер и напрямую управлять выводами он не может, там даже ШИМ программно реализован. Если повесить прерывание на таймер то при записи в EEPROM контроллер перезагружается, там вообще много подводных камней.
А про ESP32 интересно... Я вообще много раз пожалел что не использовать ESP32, ESP8266 это какой-то огрызок от ESP32, но я дожал... Как WiFi сервер ESP8266 работает отлично, ESP8266 достаточно шустрый, с математикой float всё на уровне... полноценных 32 бита.
На ESP8266 просто стабильную частоту на аппаратном уровне получить - уже проблема, там только через i2s DMA передавая данные по кругу, а по другому никак.

(11-02-2025, 20:14)-vlad- : Нагородил.....
Вроде норм...
#63
А как насчет баланса грунта? Для него нужно третий канал с регулировкой фазы, а здесь только два канала ?
Перед сборкой платы хорошо бы было посматреть меню прибора.

(11-02-2025, 18:38)I_on : два меандра со сдвигом 90 градусов
Вот два, надо добавить ещё один
Код:
pinMode(PA8,PWM);
pinMode(PA9,PWM);
TIMER1_BASE->CCER=(1<<4)|(1<<0);//cc1e/cc2e enable
TIMER1_BASE->CCMR1=(1<<13)|(1<<12)|(1<<5)|(1<<4);//toogle mode
TIMER1_BASE->PSC=0;
//TIMER1_BASE->ARR=2879;
TIMER1_BASE->ARR=1181*2;// 15.2kHz
TIMER1_BASE->CCR1=0 ;
//TIMER1_BASE->CCR2=1439 ;//
TIMER1_BASE->CCR2=1181 ;
TIMER1_BASE->CR1=1;

}

void loop() {}
#64
(12-02-2025, 00:05)KEN : там даже ШИМ программно реализован
Действительно огрызок. Код для ESP32.Может кому пригодится.

Код:
#include <driver/ledc.h>
// Настройка PWM
void setupPWM() {
    // Конфигурация таймера
    ledc_timer_config_t timerConfig = {
        .speed_mode = LEDC_LOW_SPEED_MODE, // Режим работы (низкая скорость)
        .duty_resolution = LEDC_TIMER_10_BIT, // Разрешение ШИМ (10 бит = 0-1023)
        .timer_num = LEDC_TIMER_0, // Номер таймера
        .freq_hz = 10000, // Частота PWM (10 кГц)
        .clk_cfg = LEDC_AUTO_CLK // Автоматический выбор источника тактирования
    };
    ledc_timer_config(&timerConfig);

    // Конфигурация канала 1 (первый меандр)
    ledc_channel_config_t channelConfig1 = {
        .gpio_num = 18, // GPIO для первого меандра (например, GPIO18)
        .speed_mode = LEDC_LOW_SPEED_MODE,
        .channel = LEDC_CHANNEL_0, // Номер канала
        .timer_sel = LEDC_TIMER_0, // Связать с таймером 0
        .duty = 512, // Коэффициент заполнения 50% (512 для 10 бит)
        .hpoint = 0 // Начальная точка (0 для начала периода)
    };
    ledc_channel_config(&channelConfig1);

    // Конфигурация канала 2 (второй меандр со сдвигом фазы)
    ledc_channel_config_t channelConfig2 = {
        .gpio_num = 19, // GPIO для второго меандра (например, GPIO19)
        .speed_mode = LEDC_LOW_SPEED_MODE,
        .channel = LEDC_CHANNEL_1, // Номер канала
        .timer_sel = LEDC_TIMER_0, // Связать с таймером 0
        .duty = 512, // Коэффициент заполнения 50% (512 для 10 бит)
        .hpoint = 256 // Сдвиг фазы на 25% периода (256 для 10 бит)
    };
    ledc_channel_config(&channelConfig2);
}
#65
(12-02-2025, 07:21)dima79 : А как насчет баланса грунта? Для него нужно третий канал с регулировкой фазы, а здесь только два канала ?
Совсем не обязательно крутить фазу физически, это всё пережитки аналоговых приборов - там по другому никак... После квадратурного детектора у нас мнимое и реальное значения и их можно простой тригонометрией преобразовывать в любой нужный вектор, но на самом деле можно ещё проще... и никакой разницы между физическим кручением фазы и математическим - не будет.

(12-02-2025, 07:21)dima79 : хорошо бы было посматреть меню прибора.
https://tehnodium.ru/thread-1039-post-23...l#pid23552 второе видео.
Меню отличается от меню любого Кванта только тем что оно реализовано на Web странице.

(12-02-2025, 12:43)I_on : Действительно огрызок.
Да но ESP8266 точно так-же хорошо работает как сервер, у меня получилась достаточно большая web страница с обменом данными с частотой 83Гц, 8266 тянет без проблем, практически в реальном времени, а вот устройство не всякое тянет, старые смартфоны тормозят.
#66
(12-02-2025, 14:50)KEN : Да но ESP8266 точно так-же хорошо работает как сервер, у меня получилась достаточно большая web страница с обменом данными с частотой 83Гц, 8266 тянет без проблем, практически в реальном времени, а вот устройство не всякое тянет, старые смартфоны тормозят.
Можно связать две ESP между собой.Смысла правда особого нет.Плата в катушку не влезет,а впрочем можно наушники с небольшим экраном и кнопками сделать.
#67
(12-02-2025, 14:50)KEN : оно реализовано на Web странице.
Вот и её хотел загрузить.
#68
(12-02-2025, 23:02)dima79 : Вот и её хотел загрузить.
Её загружает ESP8266.

(12-02-2025, 20:57)-vlad- : https://disk.yandex.ru/d/yaJj4tAzccYcuw
А отверстия для крепления платы по углам?
#69
(13-02-2025, 00:41)KEN : крепления
Я ещё завтра ею заниматься буду, что то двигать... и повороты на дорожках(углы)более плавными делать.
#70
Замучил я таки ESP8266, после нескольких десятков прошивок - перестал прошиваться по воздуху, после прошивки зависал с постоянным сообщением по UART -  Fatal exception (0)  и куча разных чисел адресов и тд...
Что интересно - по UART прошивался нормально. Думал уже перепаивать контроллер но оказалось это частая проблема и лечиться перешивкой загрузчика, к счастью нашлась простенькая утилита для этого, там ничего настраивать ненужно, прошивается по UART как при обычной прошивке ESP8266.
Ссылка на утилиту.

Ещё реализовал тёмную тему, вроде должно экономить батарею.