Wi-Fi Eye, часть 4: Power System и неопиксельные огни
В четвертой части нашего проекта Wi-Fi мы 3D печатаем некоторые роботизированные тела и подключаем наши сервомашины, огни и батареи к контроллеру, который мы подготовили ранее.
Добро пожаловать в проект Wi-Fi Eye! Перед продолжением ознакомьтесь с предыдущими частями этой серии.
Содержание
- Часть 1: Введение и спецификация проекта
- Часть 2. Прошивка, подключение и подключение
- Часть 3: Сервоприводы
- Часть 4: Силовые и неопиксельные огни
Кроме того, ознакомьтесь с этими статьями по DIY Hacking, которые проведут вас через 3D-печать вашего собственного дела:
- Введение в 3D-печать
- Глаз кожи агамотто
- Призрачная кожа
Если все прошло хорошо в предыдущих частях этой серии, у вас должен быть крошечный микроконтроллер, запрограммированный со всей необходимой нами прошивкой, и вы сможете настроить его по Wi-Fi. Но на самом деле это не «робот», если он физически не что-то вращает. Кроме того, все знают, что у роботов есть светящиеся огни, особенно для глаз. (Нет, я тоже не знаю, как они видят.)

Мы могли бы использовать прямой пульт дистанционного управления, но это означает, что нам нужно будет сидеть и вручную кукловать нашего робота все время. Если мы дадим ему набор предварительно запрограммированных действий в цикле, который быстро стареет и не передает много информации. Чтобы действительно получить «характер», аниматроника нуждается в случайности, а также цели.
Кроме того, на состояние робота должны влиять внешние стимулы, которые в нашем случае являются наличием сигналов Wi-Fi, поэтому движения имеют некоторое значение. Вы были бы удивлены, как хорошие люди извлекают смысл из нескольких мигающих огней и странного подергивания. Это что-то вроде нашей.
Источник питания
ESP-12 предпочитает чистый источник питания 3, 3 В @ 150 мА, который может работать с мощными импульсами 300-500 мА при включении радиопередатчика Wi-Fi. Поставки переключающего режима иногда не нравятся этим условиям (импульсы запутывают), поэтому линейный регулятор LDO (low drop-out) идеален здесь. Нам нужно только сбрить вольт, поэтому мы не рассеиваем много энергии.
Я был доволен регулятором AMS1117 3.3v, который вы можете получить на предварительно построенных модулях из Интернета менее чем за доллар. У них есть ужасная жара для заявленного 1-амперного потенциала, но это хорошо для наших целей. У них также нет регулировки напряжения, поэтому они в основном надежны. И те, что у меня есть, имеют красный светодиод, чтобы вы знали, что они работают, и я, как правило, убираю их через некоторое время.

Этот регулятор имеет выпадение 1 В (так, не так низко), а это означает, что даже с полностью заряженной батареей 4, 2 В мы получаем только 3, 2 В для микроконтроллера (в лучшем случае), а не всего 3, 3 В. И это будет стоить всего 2, 2 В при разряде батареи. К счастью, ESP8266 хорошо работает в диапазоне 2, 5-3, 3 В со стандартной частотой 80 МГц.
ESP много предпочитает работать ниже 3, 3 В до уровня выше - по мере увеличения до 5 В, он будет перегреваться и медленно поджариваться до смерти. (Угадайте, как я знаю «коричневые выходы» в энергосистеме, что приводит к поврежденным последовательным данным или ошибочным сигналам ШИМ. Это может привести к сбою сервоприводов или светодиодов, которые могут быть неправильно изменены (что может привести к их собственным небольшим шипам мощности). когда источник питания может обеспечить только средний 100-200 мА для ESP, и в этом случае вам понадобятся огромные конденсаторы «байпас» для хранения достаточного тока для радиопакетов.
Крайне важно обеспечить, чтобы ваш источник питания имел oomph (это технический термин), чтобы обеспечить половину усилителя для ESP-12, в то же время он подает еще один усилитель на сервоприводы во время движения с высоким крутящим моментом. Поставка не нуждается в ее поддержке, но это произойдет сразу же, и возможность «взломать» через усилитель не то, с чем могут справиться все батареи (или даже силовые адаптеры). Это только увеличивается, если вы начинаете штабелировать больше светодиодов и сервомеханизмов (т. Е. Если вы не укажете свой источник питания в самый худший момент в жизни устройства, это тот момент, когда он сбой).
Литиевые элементы, будь то Li-Ion или Li-Po, очень хороши при подаче импульсов тока, которые в 10 раз превышают базовую нагрузку. Они делают идеальные батареи для такого рода применения. Мне лично нравится перепрофилировать «банки USB-аккумуляторов», которые вы можете получить за несколько долларов по нескольким причинам:
- Обычно они содержат защищенную одноячеечную батарею Li-Ion 25500 1800-2400 мАч.
- Плюс конвертер 5 В постоянного тока.
- И зарядное устройство USB.
- Они дешевы, потому что они на самом деле довольно ужасны по их заявленной цели (перезарядка телефонов).
- Их легко заменить или обновить с помощью идентичного форм-фактора позже.
- Это меньше хлопот, когда батареи загружаются внутри продукта, потому что некоторые носители больше не будут принимать пакеты с «литиевыми батареями».

Поэтому я рекомендую выбрать пару из интернета или торгового магазина. Они будут управлять проектом, таким как Eye of Agomotto, в течение более 20 часов непрерывно, и не имеет значения, какие сервоприводы вы получаете.
Вам понадобится способ зарядки (или замены) батареи. Я подключил модуль зарядного устройства USB непосредственно на задней панели моего Wi-Fi Eye, чтобы я мог просто подключить USB-кабель, исходя из предположения, что если бы я сделал отдельное зарядное устройство, я потерял бы его. Здесь много вариантов.
Подключение Neopixels
Единственный сложный выбор заключается в том, следует ли запускать светодиоды со стороны источника питания или с регулируемой мощности. Проблема здесь в том, что WS2812b «Neopixels» не нравится получать бит «1» управляющего сигнала, который больше, чем напряжение ниже его рельсов питания.
Если мы не хотим добавить конвертер логического уровня (мы этого не делаем), мы не сможем запускать светодиоды не более чем на 4, 3 В, если ESP находится на 3, 3 В. Это идеально, если мы работаем от батареи 4, 2 В, но не выше.

В частности, если вы запускаете Neopixel на 5V (их «номинальное» напряжение), они не будут надежно принимать данные от ESP. К счастью, если у вас есть 5V, тогда регулятор AMS1117 будет обеспечивать полный 3.3V, который достаточно хорош для нескольких огней.
Другими словами, больше вольт не обязательно здесь лучше. Мы не можем дрейфовать слишком далеко от шины питания микроконтроллеров, или светодиоды будут странными.

На принципиальных схемах показан Neopixel, подключенный к выходу регулятора (те же рельсы, питающие ESP-12), потому что это должно работать во всех случаях. Тем не менее, если вы хотите сделать сверхэффективное использование вашей батареи (или получить максимальную яркость), тогда используйте питание от батареи / входной стороны, как и сервоприводы. Это на самом деле то, как Eye Agomotto был подключен - и поверьте мне, это супер яркий!
Если вы хотите, чтобы несколько огней работали одинаково, вы можете подключать их параллельно. Если одни и те же последовательные данные отправляются во многие Neopixels (или полоски), они будут действовать одинаково, и вам даже не придется сообщать программное обеспечение.
Ударная поза
Прошивка имеет набор внутренних состояний, которые он выбирает в ответ на события. Многие из этих состояний связаны с позами. Вот краткий обзор того, когда позы активируются:

Каждая поза хранится в файле в SPIFFS (SPI File Flash System, флэш-файловая система для встроенных устройств) и содержит набор свойств, которые изменяют текущие выходы, где бы ни были добавлены новые значения. Если значение не задано, оно остается на все, что было установлено последней позой. Таким образом, позы являются инкрементальными. Поза могла изменять скорость пульсации светодиода без изменения его цвета или наоборот.

Вкратце, Neopixels можно назначить базовый цвет, который он перейдет в течение короткого периода времени (в секундах). Он также может случайным образом мерцать, фильтроваться вторым цветом. Таким образом, вы можете иметь зеленый свет, который мерцает немного голубым.
Neopixels также может пульсировать. Они будут тускнуть от их обычного цвета до минимальной яркости, используя гамма-кривую для регулировки линейного рампы, чтобы иметь немного больше символов. Скорость пульсации определяется временем завершения одного цикла плюс количество, основанное на RSSI (индикаторе уровня принимаемого сигнала) текущей отслеживаемой точки доступа. Это означает, что некоторые состояния (например, бездействующие) могут быть определены для импульсов с постоянной скоростью, в то время как другие (например, обнаружение) могут пульсировать со скоростью, зависящей от уровня сигнала, принимаемого от отслеживаемой цели.
Каждый сервопривод имеет положение (в градусах), на которое он должен двигаться, со скоростью, измеренной примерно в градусах в секунду. Угол сервопривода может также иметь случайное количество подергиваний, добавленных к нему.
Сдержанное поведение применяется ко всем выбранным сервомоторам одновременно, и это произойдет случайно в течение заданного времени. Таким образом, время триггера «8» означает, что вы получите хотя бы одно дергание каждые восемь секунд.
Одно замечание: редактор поза использует другой способ передачи данных обратно на сервер. Он фактически записывает файлы непосредственно в флэш-файловую систему, используя HTTP POST, вместо использования специализированной команды вызова или обновления AJAX, как это делает большинство других вещей. Это экономит много сложного повторного анализа JSON в прошивке (клиентский браузер выполняет всю работу, и у нее больше памяти), но это означает, что редактор позы не будет работать на некоторых старых / мобильных браузерах, которые не имеют некоторых функций HTML5. Кроме того, когда вы сохраняете позу (в первый раз), вас попросят аутентифицировать HTTP с именем пользователя и паролем (те, которые установлены в конфигурации системы).
Роковое поведение
Ограничения на количество светодиодов и сервоприводов могут помешать более крупной и сложной аниматронике, но можно разделить задачу и несколько ESP-12 прослушивать одни и те же события. Они не будут точно синхронизированы (что может добавить символ), но вы сэкономите на проводе путем «распределения» приемников вокруг большого костюма или установки.
Помните, что вы можете создать Wi-Fi-устройство без каких-либо сервоприводов или огней, и он будет действовать как маяк при включении. Просто его присутствие может быть как удаленный коммутатор для других устройств.
В какой-то будущей версии было бы интересно, если бы узлы переименовали себя в зависимости от их настроения. Это будет служить сигнальным каналом для других узлов, без каких-либо других причудливых TCP-протоколов.
Ограничения, продолжение
Честно говоря, ESP8266 не является самым большим сервоконтроллером в реальном времени, и я не буду доверять ему, чтобы выполнить что-либо критическое, острое или что-нибудь, что необходимо для обеспечения безопасности. Сигнал PWM генерируется программным прерыванием, а не выделенным оборудованием, и он уязвим для всего, что бесполезно с прерываниями.
Если вы хотите надежно контролировать более чем пару сервомеханизмов (четыре должны быть возможны, если вы увеличиваете SERVO_COUNT), есть специальные чипы, такие как PCA9685, которые будут приводить в действие 16 сервомашин с 12-разрядной точностью по шине I2C. Это то, что я буду изучать в будущем. Цель здесь заключалась в том, чтобы увидеть, как много мы можем сделать с ESP-12 без дополнительного оборудования.
В программном обеспечении довольно просто увеличить количество Neopixels (просто увеличить LEDS_COUNT в прошивке и веб-интерфейсе), но даже короткие цепи WS2812b очень проголодались, и я не хотел фокусироваться на этом. Одного было достаточно, чтобы показать принципы и дать вам отправную точку.
Надеемся, что программное обеспечение выходит за рамки обычного «минимального» подхода и обеспечивает полный пример нескольких передовых методов, включая аутентификацию и связь в реальном времени, сразу. Изменение этого должно быть больше об удалении ненужного вам материала.
Я думаю, что я подтолкнул веб-сервер довольно близко к его пределам, с точки зрения количества файлов, которые он может одновременно обслуживать, когда браузер забивает устройство с начальной загрузкой страницы. Он уже должен обслуживать файлы html, jQuery и bootstrap страницы (css, js и font) сразу, поэтому я не хотел разорвать части html-файла на меньшие файлы css и javascript, поскольку хорошая практика диктует, Фактически, объединение всего javascript вместе в один файл, вероятно, было бы хорошей идеей.
Существует огромная возможность улучшить изощренность системы анимации, с постами или по времени, или с предварительно записанным захватом движения. Флэш-файловая система ESP-12 имеет мегабайты пространства, которые могут содержать файлы анимации, но это свяжет прошивку с конкретным программным обеспечением для аниматроники / редактора, поэтому я не выбрал этот маршрут.

Подтверждения
Огромное спасибо за то, что Наоми Ву (производитель экстраординарного и трехмерного печатного светила) познакомил меня с OpenSCAD и помог с некоторыми элементами дизайна для Eye. Ее терпение и поощрение были больше, чем я заслуживал. Вы можете следить за ней в Twitter, если вы можете идти в ногу с ее удивительностью.
Оригинальный фильм «Враг Странный глаз» фильма «Агамотто» был спроектирован Александрой Бирн и Барри Гиббсом, которые создали множество знаковых реквизитов и героев Marvel. Это произведение искусства, и я пытался отдать дань уважения его многочисленным элементам и тонким слоям, не будучи прямой копией. (Вы заметили, что я сменил имя на одного персонажа?)
Спасибо также Биллу и Бритту Дорану из Punished Props (и) за то, что я одержим Судьбой и Эми Эми (), в частности, за то, что я понял, что Призрак - это просто летающий глаз-бот. Хотел бы я подумать об этом.
И, наконец, благодаря многим замечательным людям в сообществе 3D Printing, в том числе Томасу Санладереру (@ toms3dp), Джоэл Теллинг (), Ангусу Девесону () и Наоми Ву, которые вложили столько полезной информации в Интернет и позволил нам всем легче проникнуться этим полезным хобби.