68

E-Learning. Часть 12. Тестирование схемы на ESP8285

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

Давно ничего не постил, но это связано с событиями в посте.


Кратко: разрабатываю специальную робо-накидку на одежду, которая сможет оцифровывать часть двигательных навыков мастеров своего дела и передавать это тем, кто только учится.


О чем этот пост: о том как я тестировал схему получения данных, чтобы она выдавала практическую частоту выше 120Гц для каждого из 45 сенсоров на базе ESP8285.


ОСТОРОЖНО! ЭТО РЕАЛЬНО ДЛИННОПОСТ. Возможно для прочтения потребуется хороший вид из окна на метель, кружка горячего кофе\шоколада (опционально), плед и кресло качалка.


Содержание:

1) общие положения;

2) проведение экспериментов;

3) схема работы всей системы по уточненным данных из эксперимента.


Подпункт 1. Общие положения.

В носимой электронике необходимо выдержать баланс между следующими величинами:

1) компактность схемы;

2) время разработки самой схемы;

3) энергопотребление схемы;

4) производительность системы.


Компактность в данном случае особенно важна в виду специфического расположения сенсоров и микроконтроллеров. В моем случае это фаланги пальцев. Посмотрите на свои пальцы и подумайте какова площадь кожи с одной стороны? Так вот, для расположения всей электроники использовать можно не всю поверхность, а только её часть. Это связано с тем что пальцы у нас во-первых не плоские, а во-вторых с тем, что при большей площади зацепиться электроникой становится проще. Как аналогию можно привести аэродинамику, где есть сопротивление воздуха. Так тут тоже есть сопротивление "движению". Не знаю как лучше сказать.


Время разработки тоже играет большую роль. Если Вы думаете, что можно взять и по документации сразу все запустить на новом для себя микроконтроллере, то это не совсем верно. Есть варианты работы с готовыми SoC (system on chip). Например, NodeMCU - это плата насадка на существующую плату ESP8266-12e. Т.е. обвешиваешь своими элементами обвес самого чипа ESP.

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Это позволяет с одной стороны иметь стабильную базовую схему, а с другой стороны без сильного увеличения объема схемы (именно объема, так как можно сделать многослойную плату-сендвич). Я пробовал работать сразу с нуля и с ESP8285 и с радиомодулями - в итоге получил только образовательные результаты для себя. Хотя самостоятельное производство плат с нуля позволит теоретически сэкономить до 40% площади платы с одной стороны. Но учитывая размеры модуля ESP8285 - это оказалось незначительно по времени разработки платы, так как базовая версия вписывается в нужную площадь при помощи некоторых манипуляций. Но об этом позже.


Энергопотребление - это ключевой момент любой темы из Интернета вещей и носимой электроники. Все наперегонки стараются снизить энергопотребления. Кто-то развивает Wi-Fi директ, кто-то внедряет новые версии синего зуба, кто-то как ESP32 не определился и запихивает и то и другое себе, с возможностью переключения. Конкретно я пробовал снизить энергопотребление модуля различными режимами работы. И мне удалось снизить среднее потребление одного чипа с 80-90mA до 23mA. Правда для этого пришлось отрезать антенну и отключить Wi-Fi. О том почему - далее.


Производительность системы. Сенсор может выдавать хоть 1600Гц данных, но какая разница, если вы пытаетесь делать матричные вычисления на ESP8266 или чип имеет верхнее ограничение в передаче по Wi-Fi в 120Гц?

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Собственно из-за этого я и пошел по пути построения системы с множеством микроконтроллеров. И знаете что? В ходе поисков понял, что не я один так мыслю, снова зашел к своим любимым Бош сенсортек, посмотреть их новинки. И таки да, они пошли по этому пути тоже. Они начали встраивать в свои сенсоры MCU (Microcontroller Unit - микроконтроллер).

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

С минимальным обвесом это выглядит и стоит так у наших азиатских друзей (18.03.18).

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Это мега круто, что они такое смогли сделать, суперкомпактность. Но цена кусается, если тебе надо 45 таких. В моем случае себестоимость одной платы BMX055+ESP8285+стеклотекстолит+расходники+стоимость монтажа элементов+создание корпуса выйдет порядка 400р. Приятнее. Конечно можно сказать, что за стоимость в полтора раза дороже, зато скорость разработки значительно меньше. Можно. Если не учесть, что на момент заказа элементов я не знал про это и у меня уже лежит примерно 60 (до отправки парочки штук в Вальгаллу) BMX055. А буквально в начале этой недели крупный инвестор прекратил финансирование проекта в связи с кризисом в компании. (вопрос что я с этим делаю позже может быть отдельно буду освещать, когда будут какие-то результаты, пока я только прорабатываю их). В будущем я перейду на них, если подтвердится общая гипотеза о принципиальной возможности создания мягкого робо-ассистента для обучения моторным навыкам.


Подпункт 2. Проведение экспериментов.

Первое что нужно сделать - это составить план тестирования, чтобы потом вести журнал его ведения. Буду писать в формате - что нужно было сделать, что получилось, как делал.


а) Сделать первый замер потребления одного модуля. Все по даташиту. При передаче Wi-Fi примерно 90мА, при подключении к точке доступа порядка 25mA (включается режим, который некоторые функции отрубает у модуля. Включить его можно двумя способами: подключиться к точке доступа. И чем больше там установлен Интервал DTIM, тем меньше потребляет модуль. Но как оказалось есть еще замечательная функция, которая просто все сама отрубает и превращает модуль в обычный (и очень хороший) микроконтроллер.

#include <ESP8266WiFi.h>
WiFi.forceSleepBegin();

Есть функция включения Wi-Fi, мне она не нужна, поэтому я её не запомнил.

Причем есть неявная особенность. Просто по себе функция не работает на снижение энергопотребления. Нужно в цикле loop (arduino ide) в конце сделать так:

delay(1);

Иначе будет среднее потребление в 80-90mA. Причем если сделать так:

delayMicroseconds(1000)

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


б) Подключить BMX055 к пинам i2c по даташиту ESP8285. Прошил еспешку прошивкой, которая сканирует пины. Неожиданно для себя открыл, что шина i2c на других пинах, нежели указано в документации.

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Ладно. Зря я сделал схему по даташиту выходит :(

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

в) Настроить работу магнитометра. Подключаю свой BMX055. Гироскоп, акселерометр - бесперебойно работают. Магнитометр то включается, то не включается, то работает, то нет. Еще не решил вопрос, сделал новую схему включения, еще не успел проверить из-за небольшой неприятности в потери части финансирования. Цитата из журнала:

(убрал конденсатор 100мкФ и магнитометр заработал) после выключения и включения снова престал работать. Идут нули по всем осям. Выключил и включил – заработало. После того как порт был занят – выключения из порта программатора – без перепрошивки идут нули. С прошивкой все хорошо. Возможно это связано с тем, что после препрошивки идет инициализация устройства, а при отключении сетап больше не запускается. Были нули в начале, подвигал – заработал магнитометр. Магнитометру нужно больше времени для запуска, чем гироскопу и акселерометру. Пересобрал спустя неделю – не работает. Не помогает включение и выключение. Буду плату переделывать с проведенной адресацией и двумя конденсаторами.
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Первую схему на макетке собрал - не завелась. Сделал насадку на готовую плату ESP8285-M1.

Буду позже проверять.

г) Вычислить максимальную реальную частоту передачи без подключенного BMX055.

109-160Гц передача на сервер по хотспоту виндовз, 77Гц по роутеру домашнему. 530-630Гц – по проводу на скорости 1000000Бод. С повышением частоты CPU – немного повышается частота приема сервера. Примерно на 15-30Гц.

д) Сделать прошивку по Wi-Fi. Ардуино ота - привет. Причем есть особенность. Если вы подключились к точке доступа, а потом используете скетч без подключения к точкам доступа, то ESP все равно подключится к последней точке доступа.

е) Проверить влияние магнитной кнопки на магнитометр. Не выполнено.

ё) Отрезать антенну и проверить работоспособность модуля. Отрезал. Работает не просто модуль, но и Wi-Fi. Не сильно хуже, чем было. Обычными бокорезами. Площадь нормально еще уменьшилась.

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

ж) Проверить прошивку NodeMCU при 2.3V. Может до 1.9V нестабильно. Общий трент производителей элементов - переход на новый стандарт меньшего напряжения. Сейчас это 5v и 3.3v, а многие производители переходят на 1.7V. Сами понимаете, что батарея так живет дольше. Если прошиваете по воздуху, то там надо минимум 2.4V. Иначе будет сбой прошивки (когда питания не станет доставать) и больше по воздуху вы не сможете прошивать.

з) Проверить скетч для SPI передачи данных. Есть два скетча с гитхаба для SPI передачи данных сенсора BMX055, но один только рабочий для гироскопа, а второй я не проверил еще. Может и не буду. SPI - слишком много проводов.


Есть еще пункты для тестирования, но пока я не дошел до них.


Подпункт 3. Схема работы всей системы по уточненным данных из эксперимента.

а) Для начала шагом 0 скажем, что нам некогда делать обвес на все модули, чтобы их прошивать. Значит надо разработать специальный зажим, в который мы будем вставлять наши модули ESP8286 для быстрой и массовой прошивки. Сказано - сделано.

E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост
E-Learning. Часть 12. Тестирование схемы на ESP8285 Исследования, Диссертация, Mocap, Motion capture, Длиннопост

Все очень хорошо. Только после прошивки у нас на тесте в COM-порт идут кракозябры, вместо тестовых данных. 3 дня собирал, пересобирал, делал разные другие схемы прошивки, пока не понял, что недавно обновил ядро прошивки ESP8285 до последней версии. Откат помог. Но стул знатно подгорел подо мной.

б) Надоело вылавливать момент ручной прошивки и постоянно жать резет для сотен прошивок. Автопрошивальщика нет. Есть обычный. Нашёл документацию на него. Нашел где нужные выводы. Феном снял чип, переместил, чтобы можно было подпаяться. Добавил ножки. Зафиксировал суперклеем. Работает.

в) Конечная схема выглядит сейчас так: на каждый обрезанный модуль ESP8285 сзади запаивается двусторонняя насадка с нужным сенсором. Насадка двусторонняя. Затем данные на скорости 1000000БОД улетают по TX на мультиплексор. Про формат данных и подробнее про саму схему в следующих постах, тут я только идею намечу. И так пост огромен. Потом данные собираются на не обрезанным ESP8286 и отправляется с частотой в 120Гц в виде пакетов с уплотненными данными. Получается (пока теоретически), что можно передавать данные от 100 до 600 Гц для каждой точки генерации данных.

Почему я взял то ограничение? В глубинах поиска я встретил пост на пикабу https://pikabu.ru/story/znakomimsya_s_esp32_chast_5_wifi_544... где описывается работа с ESP32, на котором я хотел сделать хаб сбора данных и отправки на сервер. Там написано следующее.

В первой части я упомянул, что у ESP32 два ядра. Для чего это нужно? Те, кто работали мучились с ESP8266 знают, что такое Wi-Fi. Это такая штука, которая даёт доступ в интернет, но пожирает всё процессорное время. В ESP32 эта проблема решена: одно ядро занимается задачами Wi-Fi, а на другом крутится прошивка.

Так же я вспомнил, что в документации на чип написано, что Wi-Fi жрет 80% времени ядра. Сравните. По проводу данные идут с частотой 600Гц, по Wi-Fi ~120. Не видите совпадений? Я тоже не видел. В итоге после того как понял отчего падает частота отправки данных - то полностью отказался от множественного Wi-Fi (и жрет как конь энергии и занимает ядро непотребствами лишними). И да, ESP32 я запустил, но не смог подключиться к точке доступа из-за того что напряжения слишком сильно падало и вообще с питанием надо было разбираться.


Начинаю писать свой "кирпич", диссертацию. Попутно решаю дальше вопросы. Спасибо всем, кто осилил хотя бы 20% моего текста. Пишу редко так как есть куча других дел, да и не профессиональный блогер я, адаптировать контент под маленькие порции нет времени. А поделиться хочется. Всем спасибо за комментарии, за вызовы в другие посты со смежными темами. Вы помогаете мне быть более осведомленным, что творится в моей сфере профессиональных интересов!

Наука | Научпоп

8.6K постов81.6K подписчиков

Добавить пост

Правила сообщества

Основные условия публикации

- Посты должны иметь отношение к науке, актуальным открытиям или жизни научного сообщества и содержать ссылки на авторитетный источник.

- Посты должны по возможности избегать кликбейта и броских фраз, вводящих в заблуждение.

- Научные статьи должны сопровождаться описанием исследования, доступным на популярном уровне. Слишком профессиональный материал может быть отклонён.

- Видеоматериалы должны иметь описание.

- Названия должны отражать суть исследования.

- Если пост содержит материал, оригинал которого написан или снят на иностранном языке, русская версия должна содержать все основные положения.


- Посты-ответы также должны самостоятельно (без привязки к оригинальному посту) удовлетворять всем вышеперечисленным условиям.

Не принимаются к публикации

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

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

- Посты с вопросами околонаучного, но базового уровня, просьбы о помощи в решении задач и проведении исследований отправляются в общую ленту. По возможности модерация сообщества даст свой ответ.


Наказывается баном

- Оскорбления, выраженные лично пользователю или категории пользователей.

- Попытки использовать сообщество для рекламы.

- Фальсификация фактов.

- Многократные попытки публикации материалов, не удовлетворяющих правилам.

- Троллинг, флейм.

- Нарушение правил сайта в целом.


Окончательное решение по соответствию поста или комментария правилам принимается модерацией сообщества. Просьбы о разбане и жалобы на модерацию принимает администратор сообщества. Жалобы на администратора принимает @SupportComunity и общество Пикабу.

Чтобы оставить комментарий, необходимо или