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

С чего начать создание спортивного секундомера (1 сенсор запускает секундомер, 2 останавливает)

Тема в разделе "Раздел для начинающих", создана пользователем nikilex, 17 май 2019.

  1. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    Все предложения от nikolz сильно страдают неопределенностью времени приема от события вызова пакета передачи, а так-же тем, что глушат сами себя и всю внешнюю сеть, включая BT и WiFi.

    Предположим, что имеется сто-пятьсот устройств. Событие необходимое к передаче на них возникает практически одновременно – старт сто-пятьсот участников. Все сто-пятьсот устройств заорут одновременно :)

    Аналогично nikolz строит и схему передачи UDP c deep-sleep :) Устройство просыпается и не глядя на эфир передает его любимый пакет, убивая в этот момент всю синхронизацию окружающих сетей. Потом пользователи орут не хватает полосы – нужен 5 ГГц чтобы смотреть смарт-TV :) Побольше ESP8266 с Arduino в сеть и скорость такой сети будет как у древнего модема… Но наш гуру nikolz предлагает глушаки ещё покруче :)

    Наличие нормальной AP в сети позволяет принимать от неё beacon всем кто её видит и без соединения, что не ограничивает кол-во устройств.
     
  2. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    У смартфона температура ходит ходуном от нагрузки на АКБ и CPU. У простого нормального кварца точность хода обычно принимается до 6 дес. знаков. При этом считают, что температура стабильна. Остальное надо смотреть в PDF и проверять на каждый случай.
    Для привязки к абсолютному времени и домашних/спортивных задач достаточен простейший модуль GPS с аппаратным выходом секундного строба...
     
  3. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    На C++ и Arduino сложно “узаконить” джиттер срабатывания прерывания от внешнего сигнала, связанный с запретом прерываний где не попадя в системе. К примеру, на всё время поиска и выделения свободного куска памяти прерывания запрещены... По эму время отработки запроса памяти, вставляемое транслятором C++ неопределенно где (для новичков) и создает большие неконтролируемые задержки на отработку внешних прерываний… С режимом AP в Arduino ещё хуже. Т.к. исполняется пользовательский код, а время на работу драйвера WiFi отдается как попало, то ESP8266 не в состоянии выдавать beacon в необходимое окно с необходимой точностью… Хотя передаваемый счетчик TSF корректируется при формировании пакета на такие задержки, но если система использует множественные прерывания, то процесс между формированием пакета и его реальной передачей может быть разорван на неопределенный срок. Такое устройство никогда не пройдет сертификации WiFi, что и показывают многие годы отсутствия таких сертификатов на ESP8266. Только специальная закрытая тестовая версия ПО от производителя на ESP32 кое как это проходит... Ждем от nikolz таковую или как это исправить :)
    Короче всё это и составляет большую ошибку чем +-5 us.
     
  4. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.162
    Симпатии:
    226
    А что будет при наличии нескольких AP в сети? Это не помешает работе?
    Ещё раз прошу не переходить на личности. Форум существует не для этого.
     
  5. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    По практике это зависит от производителя и исполнения (есть ли производитель в списке "держателей" стандарта WiFi (в коалиции WiFi и у разработчика была доступна вся инфа) ).
    Обычно две AP синхронизируются и выдают свои маяки последовательно друг за другом, чтобы оставить большее окно для передач у устройств. Это если пользователь не накрутит свой шаг beacon и прочее. Но и так глупо ставить AP рядом и на один и тот-же канал.
    Я не разработчик WiFi и не подписывал NDA для получения полной документации... Где-то мелькала инфа, что AP должна учитывать и BT...
     
  6. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    Как пример работы двух AP рядышком и простое детектирование их "беконов" на СВЧ диоде на щуп осла + внешний синхро с приемника по типу TSF или DDS генератора на 0.1024 сек (точно уже не помню):
     
  7. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    А так "гуляет" время вывода beaconа у ESP8266:

    Иногда он убегает достаточно далеко от внешнего синхро и налезает на beacon соседних AP...
    При работе ES8266 в режиме AP+STA, beacon AP ESP8266 четко синхронизирован с внешней AP, куда подключена STA ESP8266. Написать по другому ПО (асинхронно) очень сложно :)
    Но и в мануале написано - ESP8266 имеет недо-soft-AP.
     
  8. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
    То, что время вывода beacon колбасит - это не самое главное, т.к. счетчик TSF в нем указывает правильное время, скорректированное на запаздывание. Разрешено только запаздывание выдачи beacon - иначе спящие устройства потеряют синхро. А при запаздывании - подождут, пожрут батарейку и синхронизируются. Запаздывание выдачи beacon предусмотрено стандартом и возникает из-за нерадивых устройств в сети, типа ESP8266 :)
     
  9. pvvx

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

    Сообщения:
    8.699
    Симпатии:
    1.282
  10. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    Все о чем так негодующе кричит pvvx не решает вопрос измерения.
    Это решения вопроса синхронизации - одновременности.
    Я Вам написал простейшую задачу которая наглядно это показывает.
    Повторю еще раз.
    С какой погрешностью можно измерить интервал времени в 1000 секунд на AP?
    Если бы погрешность была как кричит pvvx 5 мкс, то не надо было никаких серверов времени.
    ----------------
    Суть в том что в сети вам нужна синхронизация устройств для их последовательной работы и не важно равномерность этой синхронизации В сети не измеряется точно время а синхронизируются устройства.
    -----------------
    Но в системе спортивных хронометров надо измерять точно время.
     
  11. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
  12. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
  13. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    --------------------
    Начните с реализации секундомера на ESP
    Прикручиваете кнопку к ESP
    По нажатию кнопки первый раз запоминаете системное время
    при нажатии второй раз вычитаете из системного времени первое значение.
    Результат пересылаете на комп
    ----------------------
    После того как реализуете эту задачу, можно определить следующую.
    В процессе решения этой задачи разберетесь с сенсорами.
     
  14. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    относительно использования BLE, то можно как и в WiFi поставить маяк около компа, который будет синхронизировать часы других модулей.
    При этом потребление, нагрев и вес секундомеров будет в десятки раз меньше.
     
  15. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.162
    Симпатии:
    226
    Вроде был ответ
    Лучше спросить у ТС, какая точность необходима для соревнования по скалолазанью. @nikilex ?
    Ну и логика подсказывает, что измерять время разных участников лучше по одному источнику отсчётов в рамках одного этапа соревнований. В данном случае TSF AP. Иначе бы всех спортсменов оснащали бы собственным секундомером на соревнованиях, а такого не происходит.
     
  16. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    рассуждение о мгновенной стабильности частоты кварца не является ответом на конкретный вопрос о погрешности измерения интервала в 1000 секунд.
    Вот вариант возможного ответа:
    У кварца для генераторов без термокомпенсации и подстройки частоты (именно такой в ESP) нестабильность составляет порядка 30 ppm это 3*10^-5.
    Если кварц 1 Мггц т е импульс 1 мкс, то длительность каждого последующего импульса случайным образом будет отличаться от длительности предыдущего на величину 3*10^-5.
    Для измерения интервала в 1000 секунд надо счетчиком подсчитать 1000/(10^-6) = 10^9 импульсов.
    при этом максимальная ошибка измерения интервала может составить (3*10^-5)*(10^9) = 30 ms.
     
  17. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    если AP будет реализован на одном из ESP то ошибки измерения времени составят мс а не мкс.
    если сделать синхронизацию с NTP то надо компенсировать запаздывание и реализовывать подстройку времени на AP и еще следить чтобы не забили эфир
    В результате сильно сомневаюсь, что погрешность будет измеряться в единицах мкс.
    с другой стороны при соревнованиях не требуется такой точности измерения
    судя по продаваемому оборудованию погрешность в 0.1 0.01 секунды вполне хватает.
    Так зачем что-то городить если такую погрешность можно достигнуть за 2-5 долларов на ардуине без особых заморочек
     
  18. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.162
    Симпатии:
    226
    такой вариант вроде и не рассматривался
     
  19. nikolz

    nikolz Гуру

    Сообщения:
    4.698
    Симпатии:
    452
    ну пока вообще никаких вариантов, кроме тех что написал я, не рассматривались.
    pvvx рассказал про работу маяков в WiFi и сделал патч для того что бы прочитать полученное значение.
    но это лишь использование синхронизации устройств WIFI
    т е часы ESP заменяются значениями счетчика AP с дискретом 100 мс.
    а внутри 100 мс считается импульсами ESP.
    джиттеры эфира и коллизии не учитываются.
    я не против такой синхронизации, но что это решает в данном вопросе?
    -----------------
    можно сделать с вытаскиванием этого счетчика,
    а можно (это я и показал экспериментально)
    просто на пин завести сенсор
    при срабатывании сенсора отослать сигнал другому ESP
    тот запомнит системное время и при срабатывании сенсора у него вычтет запомненное время из системного.
    Все!!!
    -------------------
    если полученная точность будет недостаточна, то потом можно вместо системного
    делать патч библиотеки аля pvvx вытаскивать счетчик и кывыряться с ним до как бы мкс точности.
     
  20. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.162
    Симпатии:
    226
    такой вариант вроде и не рассматривался
    @nikolz вопрос в вашей схеме, только в том какой джиттер будет при передачи срабатывания по ESPnow в условиях реального эфира. Ну и точность внутренних часов мастер-esp может вызывать сомнение.
    То что Виктор не предложил решения задачи - не соглашусь.
     

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