ADC (A0) на NodeMcu V3 (Ver 0.1)

IKSIK67

New member
у меня он должен звук передавать по wi-fi, поэтому выключать нельзя)))
мне надо на него повесить АЦП и ЦАП, вот только не совсем понимаю, куда их подключать? есть какие уже функции, библиотеки для работы с ними? не могли бы подсказать?
 

Юрий Ботов

Moderator
Команда форума
Не я... Подключать их вероятно по i2c но лучше подождите пока кто то конкретно ответит...
 

pvvx

Активный участник сообщества
вопрос по поводу ACD,
не могли бы подсказать, читал, что ACD на модуле дает большую погрешность и лучше ставить свой внешний. Кто с ним работал, не могли бы сказать, какие с ним проблемы и пойдет он для декодирования звука?
Лучше внешний.
у меня он должен звук передавать по wi-fi, поэтому выключать нельзя)))
Можно попробовать в TCP2UART прошивке. Там есть тестовый драйвер WDRV Разработка ‘библиотеки’ малого webсервера на esp8266. передающий данные с ADC в UDP до 192 ksps. Скорость опроса (sps) и адрес куда шлет управляются по UDP и/или на веб странице данной прошивки.
мне надо на него повесить АЦП и ЦАП, вот только не совсем понимаю, куда их подключать? есть какие уже функции, библиотеки для работы с ними? не могли бы подсказать?
Нет никаких библиотек из-за глюкавости и специфичности ADC.
 

IKSIK67

New member
Лучше внешний.
Можно попробовать в TCP2UART прошивке. Там есть тестовый драйвер WDRV Разработка ‘библиотеки’ малого webсервера на esp8266. передающий данные с ADC в UDP до 192 ksps. Скорость опроса (sps) и адрес куда шлет управляются по UDP и/или на веб странице данной прошивки.
Нет никаких библиотек из-за глюкавости и специфичности ADC.
Благодарю, посмотрю, что там есть)
Не могли бы подсказать, есть ли пример работы с ЦАП по I2c?)
Рылся в инете, так ничего толком не нашёл..
 

Сергей_Ф

Moderator
Команда форума
@IKSIK67может имеется ввиду КОДИРОВАНИЕ, а не декодирование?
Ответ в любом случае один - платформа неподходящая.
 

pvvx

Активный участник сообщества
Не могли бы подсказать, есть ли пример работы с ЦАП по I2c?)
Рылся в инете, так ничего толком не нашёл..
По I2C обычно подключат только градусники, где реакция до 20 тысяч считываний в переделе, непрерывного чтения 8 бит с адресом по I2C 400 кГц. На Arduino и это недостижимый предел, т.к. ESP8266 не имеет аппаратного I2C и процу уже при пару тысяче запросов не останется время на исполнение других задач...
Например градусник INA219 более тысячи раз не прочитать с отдачей замеров в websocket... Хотя он дает замер в 12 бит за 500 us.
В web-свалке есть тест вывода графика с INA219 в websocket. Там ограничено до 2 ms точка и такой фильтр установлен у INA219 для более правильного отображения пиков. Он у меня постоянно включен и на нем смотрю как потребляют другие модули при отладке... Но при таких подключения постоянно у ESP8266 виснет station, а AP работает... Очень неудобно и скоро выкину этот ESP8266, а прикручу туда RT8710AF. Пока лень...
 
Последнее редактирование:

IKSIK67

New member
По I2C обычно подключат только градусники, где реакция до 20 тысяч считываний в переделе, непрерывного чтения 8 бит с адресом по I2C 400 кГц. На Arduino и это недостижимый предел, т.к. ESP8266 не имеет аппаратного I2C и процу уже при пару тысяче запросов не останется время на исполнение других задач...
Например градусник INA219 более тысячи раз не прочитать с отдачей замеров в websocket... Хотя он дает замер в 12 бит за 500 us.
В web-свалке есть тест вывода графика с INA219 в websocket. Там ограничено до 2 ms точка и такой фильтр установлен у INA219 для более правильного отображения пиков. Он у меня постоянно включен и на нем смотрю как потребляют другие модули при отладке... Но при таких подключения постоянно у ESP8266 виснет station, а AP работает... Очень неудобно и скоро выкину этот ESP8266, а прикручу туда RT8710AF. Пока лень...
А верно, что можно использовать библиотеку SPI Arduino API для обмена данными с АЦП и ЦАП и просто читать из порта, ку да подключен АЦП через каждые n мс и отправлять на сервер MQTT (его использую)?
И аналогично читать с сервера и писать с помощью этой библиотеки в ЦАП ? или не все так просто?))
 

pvvx

Активный участник сообщества
А верно, что можно использовать библиотеку SPI Arduino API для обмена данными с АЦП и ЦАП и просто читать из порта, ку да подключен АЦП через каждые n мс и отправлять на сервер MQTT (его использую)?
И аналогично читать с сервера и писать с помощью этой библиотеки в ЦАП ? или не все так просто?))
Если на MQTT, то они все тормоза - минимум между одним принимаемым замером от 1 сек. На многих значительно больше. Хранят данные они в текстовом виде и кучей заголовков на каждую точку. Сеть не справиться, если будете передавать хоть одну точку в несколько секунд... Денег попросят точно. :)
Они все сделаны для детей - поиграть в одну точку в пять минут :)
Усредняйте замеры сами за период передачи на сервер, иначе это не замеры, если только вы не измеряете температуру под водой с низкой точностью (она там медленно меняется :)).
 

Сергей_Ф

Moderator
Команда форума
pvvx, как всегда очень категорично. От локального mqtt-сервера легко получаю до сотни сообщений в секунду на esp. Да, не передаю, но не думаю что будет принципиальная разница. И это на Ардуино ИДЕ, между прочим. И сообщения не маленькие - до 2000 байт. Не обрабатываю их, правда. Мне важен только факт приема и роут.
 

pvvx

Активный участник сообщества
pvvx, как всегда очень категорично. От локального mqtt-сервера легко получаю до сотни сообщений в секунду на esp. Да, не передаю, но не думаю что будет принципиальная разница. И это на Ардуино ИДЕ, между прочим. И сообщения не маленькие - до 2000 байт. Не обрабатываю их, правда. Мне важен только факт приема и роут.
Дык он локальный, собственный. На него вы можете натравить и Гегабит Изернет :)
А теперь покажите сервера MQTT с гегабитным трансфером в инете, или хотя-бы которые могут показывать точку с точностью менее секунды :) Вам придется туда слать и идентификатор времени точки, кроме её данных измерения. Т.е. трафик ещё увеличится :) Внешний MQTT фиксирует принятое время с точностью принятой в инет - 20 сек :) Так положено гулять пакету по свету :)
Вы уж так и пишите, что для игры "в программирование" вас это всё устраивает :)
PS: Ну а на подумать, я вам приведу циферку: 5Mbit/s– предел трансфера в TCP с UART, при этом UART имеет FIFO, используемое за 100 байт (полное 128) и CPU не надо дергать каждый приемный бит :) Это предел мощи CPU ESP8266. Надеюсь сможете поделить Mbits (baud) UART на кол-во символов в секунду и сравнить с данными вами циферками :) :) :) (Скорее всего у вас Arduino на каком-то другом модуле :))
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
@pvvx мне не нужен чужой удаленный сервер. И игры не нужны. А для работы все устраивает, так как написал. Привык решать свои задачи тем что есть. Может и автору нужно со своим сервером общаться.? Пусть знает, что локально возможно. А гигабит ну ни как esp не поможет. Нет его в esp, а жаль :)
 

pvvx

Активный участник сообщества
@pvvx мне не нужен чужой удаленный сервер. И игры не нужны. А для работы все устраивает, так как написал. Привык решать свои задачи тем что есть. Может и автору нужно со своим сервером общаться.? Пусть знает, что локально возможно. А гигабит ну ни как esp не поможет. Нет его в esp, а жаль :)
Если свой MQTT - то зачем он, как не для увеличения трансфера в своей локальной сети? Он ничего не делает, кроме как пересылает текущие текстовые сообщения, да ещё в ужасном формате. Графики он не рисует, базу данных не ведет.
Соответственно вывод - он в локалке нужен, чтобы поиграться.
Для датчиков и устройств "умного дома" существуют другие сервера, которые держат последние сообщения и статусы временно "заснувшых" устройств и предоставляя интерфейс более высокому уровню... Им лет эдак за дцать, как были разработаны :) Отличаются "умом и сообразительностью" в разных нативных (бинарных) форматах, экономя трафик и электроэнергию :p К ним и базы данных подключатся, для расчетов и построения графиков, а к MQTT нужен ещё один переходник и другой сервер, чтобы в итоге поиграться :) MQTT - это пародия на телефонные SMS и рождена автором, любителем их :) К 95% функциональности в MQTT скопировано из SMS, но ещё не всё :)
Скольких там усилий стоит, чтобы передать так, чтобы точки пришли последовательно, а не в шахматном порядке c такими-же метками времени прихода, от балды роуминга в сети :) Эт как с древними SMS – при отсылке 2-х неизвестно, какая придет первой и ещё надо уведомление, о приходе до адресата :) Хорошая игра. Как раз для Arduin-щиков :)
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
свой MQTT - то зачем он, как не для увеличения трансфера в своей локальной сети? Он ничего не делает
я про умный дом вообще ничего не говорил.
Mqtt у меня был поднят на сервере идентификаций для передачи сообщений из rabbitmq (amqp) для вспомогательных устройств, сделанных на AVR и ESP.
Может помните, я Вас спрашивал потянет ли rtl-ка протокол amqp? Хотел приспособить для прямого взаимодействия с сервером по amqp.
Если для Вас это кажется безсмысленным, то для серьезных задач использование системы сообщений такого типа довольно естественно.
Если хотите подробности, прошу в личку.
 

nikolz

Well-known member
для тех кому интересно.
Кое-что про АЦП в ESP.
Как известно для уменьшения помех используется несколько последовательных измерений от 1 до 8.
Так вот, в реализованной программе АЦП используется ариф среднее ( у pvvx тоже самое).
Из своего опыта знаю что это не эффективный метод оценки значения при малой выборке и наличии выбросов.
Более эффективным является медианный фильтр.
Вот результат измерения значения АЦП nodemcu при КЗ на входе проводом длинной 30 см.
----------------------
Провел эксперимент. 32 тысячи замеров по 8 .
По существующей программе это 32 тысячи отсчетов какждый - среднее по 8 измерениям:
upload_2017-4-16_0-39-38.png
5 единиц смещение систематическое.
-----------------------------------------------
А вот медианный фильтр по этим же данным.
upload_2017-4-16_0-42-34.png
 

pvvx

Активный участник сообщества
я про умный дом вообще ничего не говорил.
Но в большинстве случаев хотят получить именно "умный дом", а получают датчик, измеряющий какие-то внутренние не нужные "умному дом" параметры или удаленный выключатель :)

Mqtt у меня был поднят на сервере идентификаций для передачи сообщений из rabbitmq (amqp) для вспомогательных устройств, сделанных на AVR и ESP.
Может помните, я Вас спрашивал потянет ли rtl-ка протокол amqp? Хотел приспособить для прямого взаимодействия с сервером по amqp.
Если для Вас это кажется безсмысленным, то для серьезных задач использование системы сообщений такого типа довольно естественно.
Если хотите подробности, прошу в личку.
Уверен, что amqp не решит ничего. Отличий то там нуль, очередной брокер, сложности с разными версиями и добавлено всего "очередь"... Новая модная игрушка? Или не потянул на моду у блоггеров? :)
 

Сергей_Ф

Moderator
Команда форума
Уверен, что amqp не решит ничего. Отличий то там нуль, очередной брокер, сложности с разными версиями и добавлено всего "очередь".
а что он должен решать? Он уже работает в системе и через него ходят все сообщения между модулями. Мне mqtt пришлось поднимать поверх него, поскольку ни avr, ни esp сами работать с amqp не могут. Любой инструмент хорош там, где он нужен. Бессмысленно пихать микроскоп на кухню, да и кувальде там не место. Но это не значит что микроскоп и кувалда - дерьмо. Не так ли?
 
Сверху Снизу