• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Arduino +esp8266-12е send data to NodeMCU v3(AP)

GinoWalker

New member
Добрый день! Задача стоит такая: Имеются 2 ардуины про мини, 2 esp8266-12e и 3 платы NodeMCU v3. Надо измерить частоту сигнала поступающего на порт ардуины (на ардуине сделал и работает норм, но надо пока не придумал как померить частоту на Ноде, можно было бы просто заменить все на ноду) частота мереется каждые 100мкс, и каждое значение надо отправить на главный аппарат(server) для уже моих вычислений.
Вопрос каким способом лучше всего и быстрее передавать данные с ардуинки на Ноду(лолин). (если есть примеру буду признателен)
Или же если кто знает как замерить частоту на гпио порту Йоды(лолин) по типу FreqCount и так же передать её на сервер.
 

nikolz

Well-known member
Добрый день! Задача стоит такая: Имеются 2 ардуины про мини, 2 esp8266-12e и 3 платы NodeMCU v3. Надо измерить частоту сигнала поступающего на порт ардуины (на ардуине сделал и работает норм, но надо пока не придумал как померить частоту на Ноде, можно было бы просто заменить все на ноду) частота мереется каждые 100мкс, и каждое значение надо отправить на главный аппарат(server) для уже моих вычислений.
Вопрос каким способом лучше всего и быстрее передавать данные с ардуинки на Ноду(лолин). (если есть примеру буду признателен)
Или же если кто знает как замерить частоту на гпио порту Йоды(лолин) по типу FreqCount и так же передать её на сервер.
какой диапазон измеряемой частоты?
 

NeoroN

Member
Я бы подкулючил по последовательному порту и регулярно слал в него "f=5656\n" а в скрипте(lua) на esp8266 UDP подключение, которое раз в 100мс отпраляет эту переменную по сети. Или сервер TCP который по запросу отдает это значение.

P.S. 5656 это измеренное значение частоты, которое обработает интерпритатор Lua и присвот глобальной переменной f
 
Последнее редактирование:

GinoWalker

New member
Я бы подкулючил по последовательному порту и регулярно слал в него "f=5656\n" а в скрипте(lua) на esp8266 UDP подключение, которое раз в 100мс отпраляет эту переменную по сети. Или сервер TCP который по запросу отдает это значение.

P.S. 5656 это измеренное значение частоты, которое обработает интерпритатор Lua и присвот глобальной переменной f
Почитаю про Ваш метод, Спасибо!
 

GinoWalker

New member
Вообще-то 1 кгц - это 1 мс, а у Вас написано что измерения каждые 100 мкс.
Как вы измеряете частоты с периодом 1 мс каждые 100 мкс?
Спасибо что обратили внимание, я как-то вообще не обращал внимание.
Немного пересмотрел нужды уточнил что сигнал будет от 10кГц до 80кГц и предавать сигнал надо каждые 10мс
 

nikolz

Well-known member
Спасибо что обратили внимание, я как-то вообще не обращал внимание.
Немного пересмотрел нужды уточнил что сигнал будет от 10кГц до 80кГц и предавать сигнал надо каждые 10мс
правильно ли я понял задачу.
Есть некоторый источник импульсов частота которых меняется от 10 до 80 кГгц с какой-то неизвестной скоростью надо измерить частоту и передать ее по wifi Дискретность измерений 10 мс.
Возникает вопрос
Надо мерить частоту или можно мерить интервал между импульсами (период)?
 

GinoWalker

New member
правильно ли я понял задачу.
Есть некоторый источник импульсов частота которых меняется от 10 до 80 кГгц с какой-то неизвестной скоростью надо измерить частоту и передать ее по wifi Дискретность измерений 10 мс.
Возникает вопрос
Надо мерить частоту или можно мерить интервал между импульсами (период)?
Загвоздка в том что там наложение 2 сигналов меандров, и при их сложении получается другая частота. Так что периоды я и меряю :)
 

nikolz

Well-known member
Загвоздка в том что там наложение 2 сигналов меандров, и при их сложении получается другая частота. Так что периоды я и меряю :)
Если два меандра наложены то что Вы измеряете - среднее число пересечения нуля за 10 мс?
Если надо измерить частоты двух меандров то надо применить спектральный анализ либо синхронное детектирование
 

GinoWalker

New member
Если два меандра наложены то что Вы измеряете - среднее число пересечения нуля за 10 мс?
Если надо измерить частоты двух меандров то надо применить спектральный анализ либо синхронное детектирование
Мне то нужно померить получившуюся частоту, а не узнавать из каких двух она состоит.
(на картинке как будут выглядеть два меандра сложенных)
 

Вложения

kab

New member
Мне то нужно померить получившуюся частоту, а не узнавать из каких двух она состоит.
(на картинке как будут выглядеть два меандра сложенных)
Тут Вы, похоже, несколько слабы в теории (не обижайтесь :)).
Понятие "частота" определяется только для идеального бесконечного синусоидального сигнала. Реальный же сигнал описывается понятием "спектр частот". С этим спектром работают разными способами - в зависимости от задачи. Например, используют гармонический анализ - т.е. представляют сложный сигнал в виде суммы простых гармоник (нулевая - это постоянная составляющая, основная - первая гармоника и остальные, вторая, третья и т.д.). Каждая гармоника характеризуется частотой, амплитудой (ну, там, для некоторых задач существенна еще фаза).

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

GinoWalker

New member
Тут Вы, похоже, несколько слабы в теории (не обижайтесь :)).
Понятие "частота" определяется только для идеального бесконечного синусоидального сигнала. Реальный же сигнал описывается понятием "спектр частот". С этим спектром работают разными способами - в зависимости от задачи. Например, используют гармонический анализ - т.е. представляют сложный сигнал в виде суммы простых гармоник (нулевая - это постоянная составляющая, основная - первая гармоника и остальные, вторая, третья и т.д.). Каждая гармоника характеризуется частотой, амплитудой (ну, там, для некоторых задач существенна еще фаза).

Так что, говоря про частоту сложного сигнала, обычно имеют в виду частоту первой гармоники. И переходами через ноль, я думаю, эту частоту не определишь...
На обосновую критику никогда не обижусь:) Спасибо за разъяснение!
Я делал как: на ардуинке мерил частоту библиотекой Freqcount.h эти два сложенных сигнала. И узнав что например 78кГц + 10кГц ардуинка подсчитывает 45кГц (точно не помню) то я мог узнать исходя из этих данных какие контакты соединены и какие нет. И работает вполне норм. и я подумал может можно повторить то-же самое на NodeMCU (Lolin), но понял что надо переделывать библиотеку, а математическим способом высчитать не получилось.
 

nikolz

Well-known member
Мне то нужно померить получившуюся частоту, а не узнавать из каких двух она состоит.
(на картинке как будут выглядеть два меандра сложенных)
что-то не увидел двух меандров. Возможно мы с вами по-разному понимаем это.
У вас на картинке меандр и его гармоники , но нет двух меандров с разной частотой
Есть один меандр который прошел по искажающей его спектр системе.
Поясните что за источник этого сигнала
-----------------------------
Что же касается понятия "частота" то это как определить.
Можно как один из параметров синусоиды (два других фаза и амплитуда)
Можно как среднее в единицу времени число пересечения нулевого уровня знакопеременным сигналом.
В вашем случае библиотека измеряет именно это т е число импульсов за единицу времени.
Очевидно у Вас есть два меандра (в идеале две синусоиды) и на выходе вы получаете их смесь
измеряете среднее число пересечений
Потом по этому значению определяете ЧТО?
 
Последнее редактирование:

GinoWalker

New member
что-то не увидел двух меандров. Возможно мы с вами по-разному понимаем это.
У вас на картинке меандр и его гармоники , но нет двух меандров с разной частотой
Есть один меандр который прошел по искажающей его спектр системе.
Поясните что за источник этого сигнала
Картинку брал просто похожую для наглядности, если пустите в Мультисиме 2 меандра на осцилограф увидите какое наложение будет. Сам не могу сделать ибо сейчас полностью на Маке сижу.
Потом по этому значению определяете ЧТО?
зная что получена частота 10кГц то соединен первый контакт, если частота 78кГц то контакт второй. А когда выдавало мне их смесь 48кГц то я знал что оба контакта соеденены
 

nikolz

Well-known member
Картинку брал просто похожую для наглядности, если пустите в Мультисиме 2 меандра на осцилограф увидите какое наложение будет. Сам не могу сделать ибо сейчас полностью на Маке сижу.

зная что получена частота 10кГц то соединен первый контакт, если частота 78кГц то контакт второй. А когда выдавало мне их смесь 48кГц то я знал что оба контакта соеденены
оба контакта соединены - т е к з между ними?
Т е Вы подаете на контакты на входе разные частоты
На другой стороне смотрите частоту и по ее значению определяете номер провода(контакта) или кз
верно?
 

kab

New member
Картинку брал просто похожую для наглядности, если пустите в Мультисиме 2 меандра на осцилограф увидите какое наложение будет. Сам не могу сделать ибо сейчас полностью на Маке сижу.

зная что получена частота 10кГц то соединен первый контакт, если частота 78кГц то контакт второй. А когда выдавало мне их смесь 48кГц то я знал что оба контакта соеденены
:eek:Сложнее систему, чтобы определить состояние двух контактов (4 возможных сочетания) - я еще не встречал...
 

nikolz

Well-known member
Тогда Вы можете просто измерять среднее число фронтов в единицу времени - Как собственно Вы и делали.
Алгоритм примерно такой:
Устанавливаем таймер на 10 мс с автозагрузкой
В колбеке GPIO считаем в счетчике число вызовов данной функции
В колбеке таймера отсылаем значение счетчика по WiFi и обнуляем счетчик
Собственно весь алгоритм.
 

kab

New member
Тогда Вы можете просто измерять среднее число фронтов в единицу времени - Как собственно Вы и делали.
Алгоритм примерно такой:
Устанавливаем таймер на 10 мс с автозагрузкой
В колбеке GPIO считаем в счетчике число вызовов данной функции
В колбеке таймера отсылаем значение счетчика по WiFi и обнуляем счетчик
Собственно весь алгоритм.
Могу только добавить, что в ARDUINO IDE для ESP8266 этот алгоритм реализуется тоже...
 
Сверху Снизу