Оглавление:
- Шаг 1. Основные компоненты - вещи, которые мне нужно было найти / получить / купить
- Шаг 2: Почему два малиновых пирога?
- Шаг 3. Как общаются два пирога?
- Шаг 4: потоки Python
- Шаг 5: модификации Джаспера и Джаспера
- Шаг 6: добавление двух осей к черепу
- Шаг 7: сервопривод Adaifruit Hat
- Шаг 8: Релейная плата
- Шаг 9: Юность и глаза
- Шаг 10: Бубен
- Шаг 11: плазменная лампа
- Шаг 12: Как заставить световой сигнал 120 В мерцать
- Шаг 13: Платформа / стол
- Шаг 14: Остальное
- Шаг 15: Сборка / настройка / настройка
Видео: Гомункул - механический мистический гадалка-оракул: 15 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Итак, что это должно быть … предыстория этого, которую я рассказываю людям, заключается в том, что череп принадлежит мистикам 19-го века, могила которого была ограблена, и что его череп, который оказался на каком-то карнавальном фоне, был показан еще в начале 1900-х годов. Я нашел его в подвале какого-то ветхого дома викторианской эпохи и переделал его в гадалку 21-го века - `` которая может проникнуть в эфир Интернета, сказать вам вашу судьбу, кто ваши друзья и враги, рассказать пошутить и прочитать мою электронную почту и календарь на день ».
Что это на самом деле? Ну, это потрясающее программное обеспечение Jasper, работающее на Raspberry Pi, и я сделал двухканальный говорящий череп Линбурга, который разговаривает вместе с множеством наворотов (и бубном), чтобы добавить к нему.
Это был супер амбициозный проект. Множество различных сред для работы - несколько пирогов, деревообработка, покраска, много проводки, много кодирования на python, кодирование ardunio, множество мелких проводов, проводка 120 В, внешние платы пи-шляп, драйверы реле и реле, 24 В. блоки питания, заставляющие вещи двигаться - череп с 2 осями и бубен.
Я не буду вдаваться в подробности по частям для каждой части, особенно кодирования на Python, но я постараюсь кратко описать каждый компонент и включить изображения.
Кроме того, в примерах Python - да, я мог бы быть гораздо более объектно-ориентированным в кодировании, но мой опыт Python, когда я начинал проект, был довольно простым, и, конечно, его легче вырезать и вставлять, когда вы торопитесь. остановив то, что вы делаете, перепишите правильно и продолжайте.
Шаг 1. Основные компоненты - вещи, которые мне нужно было найти / получить / купить
Raspberry Pi
Двое из них
www.adafruit.com/products/1914?gclid=CjwKE…
Джаспер
«Jasper - это платформа с открытым исходным кодом для разработки постоянно работающих приложений с голосовым управлением»
jasperproject.github.io/
Адафрут "глаза"
learn.adafruit.com/adafruit-1-44-color-tft…
Teensy - мозг за глаза
www.adafruit.com/product/2756
Как создать "глаза" с помощью дисплеев Teensy и 1-44 цветных tft-дисплеев
learn.adafruit.com/animated-electronic-eye…
16-канальная шляпа Serveo
learn.adafruit.com/adafruit-16-channel-pwm…
Классический череп Линдберга
www.amazon.com/Lindberg-scale-Pirate-skull…
4-канальная релейная плата, которая будет работать с Raspberry Pi
www.amazon.com/Sizet-Channel-Module-Arduin…
Толкать соленоид
(Это доступно во многих разных местах)
www.aliexpress.com/item/High-quality-DC-12…
USB-микрофон
Это доступно во многих разных местах
www.samsontech.com/samson/products/micropho…
Разное
Два сервопривода, которые у меня лежали, сервоприводы, которые я нашел в корзине за 1 доллар в магазине для хобби. Удлинительные кабели для сервоприводов, динамик USB / Bluetooth, гайки, болты, МДФ, горячий клей, старые вакуумные трубки, различные детали и насадки ламп, старый сотовый телефон Samsung S5, листовая сталь, медная проволока, медная лента, гвозди, обычный клей и т. Д. и т.п.
Шаг 2: Почему два малиновых пирога?
Первоначально я хотел синхронизировать черепа, говорящие с речью, но после установки Джаспера и определения всего, что я хочу делать, всего, что движется вокруг, я подумал, что может быть лучше разбить всю работу на два пирога. У меня был крайний срок, чтобы это сделать, и я не хотел, чтобы мне приходилось отступать, если у меня были какие-то проблемы с производительностью. Теперь, когда работа сделана, я считаю, что мог бы сделать это с одним пи, в то время я считал, что лучше всего позволить одному пи управлять Джаспером, а второму пи управлять сервоприводами и реле, чтобы у меня было четкое разграничение между Работа. Это было также проще для разработки. Я мог все исправить в Джаспере, не беспокоясь о сервоприводах и реле. На другом пи я мог бы сосредоточиться на управлении сервоприводами, синхронизации вещей - включении света, перемещении сервоприводов и т. Д. И не беспокоиться о каких-либо проблемах, связанных с голосом / динамиком / микрофоном.
Обратной стороной этого является то, что я потерял способность синхронизировать движения челюсти черепа с речью, но, посмотрев на работу Гранта Имахары для The Late Late Show, создающую «Джеффа», я решил, что все будет выглядеть достаточно хорошо.
www.popularmechanics.com/science/a5473/4350…
Шаг 3. Как общаются два пирога?
Есть несколько способов сделать это. Я пошел по старой школе и решил использовать последовательное соединение. Требуется всего три провода между двумя пирогами (Tx, Rx и gnd) и небольшой объем кода, чтобы открыть последовательное соединение от Pi # 1 к Pi # 2 и отправить что-то на него. Pi # 2 открывает последовательное соединение для чтения данных и устанавливает замкнутый цикл чтения из своего последовательного соединения. Когда он получает какой-либо текст, он видит, соответствует ли он команде (говорить, светится, светится, говорить и т. Д.), И делает то, что ему нужно. Обратной стороной последовательного подключения является небольшая задержка между отправкой команды и ее выполнением. Pi # 2 находится в цикле с небольшой задержкой чтения. Так что мне пришлось в некотором роде следить за происходящим. Также для будущих многопи-пи-проектов хорошо знать, что у меня могут связываться два пирога, и для этого НЕ нужен Интернет.
Шаг 4: потоки Python
Чтобы добавить немного сложности ко всему, мне пришлось использовать потоки Python на Pi # 2, чтобы я мог обрабатывать несколько запросов и обрабатывать их одновременно. Например, мне нужно было начать говорить - перемещать голову черепа влево / вправо, в то время как челюсть поднимается и опускается, но что, если Pi # 1 по какой-то причине имеет ошибку и не может сказать Pi # 2 чтобы перестать говорить, череп будет говорить вечно. Так что мне нужно было, чтобы череп сказал себе отключиться через некоторое время. Для этого проще всего было открутить нить. Внутри подпрограммы потока для разговора есть некоторый код, который по прошествии некоторого максимального времени прекращает говорить, сбрасывает голову и челюсть и завершает работу. То же самое и с бубном, мне нужно было, чтобы он запустился непосредственно перед тем, как череп перестал говорить, поэтому я закручиваю другую нить для бубна, и все работает вместе, и код движения головы полностью отделен от удара бубном - то же самое для включения света и глаза все нити могут работать одновременно.
Объем кода, необходимого в Python для использования потоков, довольно невелик, но он непонятен, и мне потребовалось некоторое время, чтобы разобраться в нем, но, как оказалось, он работает очень хорошо. Возможность использовать потоки - хороший инструмент в наборе инструментов, если вы разработчик Raspberry Pi.
Шаг 5: модификации Джаспера и Джаспера
Сайт Jasper - это САМЫЙ ресурс, где можно установить его на пи, какой голосовой реко использовать, как настраивать, писать новые модули, все - и это бесплатно! Однако это не простая установка. Множество шагов, множество пакетов для установки и настройки. Я зарабатываю на жизнь такой работой, и это все равно я считаю проблемой. К тому времени, когда я закончил этот проект, я довольно глубоко погрузился в Japer и сделал множество модификаций, чтобы приспособить то, что я пытался сделать.
Некоторые изменения, которые я сделал:
Удалено пассивное прослушивание и использовался порт GPIO для запуска активного прослушивания с помощью самодельного выключателя. Это больше походило на «аркадные» вещи по сравнению с пассивным прослушиванием.
При необходимости изменил параметры для работы с моим микрофоном - мне пришлось перебрать три разных USB-микрофона, пока я не нашел тот, который будет работать правильно для меня. Мне также пришлось скорректировать некоторые пороговые значения в коде. Это была самая болезненная часть использования Джаспера лично для меня.
Добавлен код последовательного соединения во все модули, чтобы открыть последовательное соединение, сообщить подчиненному пи, что делать, «смотреть в глаза», «говорить», «бубнить в бубен».
Добавлены модули «Кто мои друзья», «Расскажи анекдот», «Прочти мое расписание из календаря CRM», «Расскажи мне мою судьбу». Некоторые из них требовали вызова REST в облачное программное обеспечение для получения данных. Есть много готовых модулей, которые я использовал в качестве примеров вместе с документацией на сайте, чтобы помочь мне сделать то, что мне нужно.
Шаг 6: добавление двух осей к черепу
Я начал с базового черепа Линдберга. Первоначально я думал о черепе 4/5 осей, но время, необходимое для написания кода Python для координации движений вместе с созданием оборудования для движения, превысило бы время, которое мне пришлось бы завершить остальной частью проекта. (Я не знаю, существует ли он уже, но часть программного обеспечения на Pi или Ardunio для управления многоосевым черепом, который сам по себе был бы довольно крутым проектом). Итак, одна ось - движение челюсти было слишком хромым, поэтому Я добавил движение головы, и с работающими ЖК-глазами я доволен результатами.
Итак, посмотрев на работу, которую другие проделали с говорящими черепами, я понял, что мне нужно сделать, два сервопривода и сервоприводы, кусок МДФ, горячий клей, стяжки, метод проб и ошибок - у меня была физическая часть этого на месте. На самом деле базовое программирование движения на Pi заняло больше времени. Мне нужно было вычислить значения ШИМ для обоих сервоприводов. Я начал с основного, полностью открывая / закрывая, повернув голову полностью влево / вправо. Но это выглядело не очень хорошо. Итак, я сделал промежуточные движения: полностью открытая челюсть, задержка 0,1, частично закрытая челюсть, без задержки, частично открытая банка, задержка и т.д. это выглядит лучше.
К сожалению, у меня не было времени поработать над тем, что весь материал, который я надел на черепную шапку - металлическая полоса, шипы, медная коронка и проводка, сделали череп в целом тяжелее и затруднили работу сервопривода внутри, поэтому он движется медленнее и не так далеко. Возможно, здесь помог бы сервопривод с более высоким крутящим моментом, но у меня не было времени и средств …
Шаг 7: сервопривод Adaifruit Hat
У Adafruit есть отличные примеры того, как использовать их продукты. Было непросто выяснить, какие именно значения были для каждого из сервоприводов - центрального, крайнего левого и правого. Это не 0, 90 или 180, как вы думаете. Это была программа на Python, состоящая всего из пары строк, но потребовалось несколько часов для настройки обоих сервоприводов.
Шаг 8: Релейная плата
Я купил это на Amazon. Многие веб-сайты продают то, что кажется одним и тем же устройством. Здесь потребовались некоторые эксперименты, но переключение реле занимает всего пару строк кода, и у вас есть соединения NC и NO на реле, что еще больше упрощает работу. Еще одна проблема здесь заключается в том, что порт / вывод GPIO не совпадает 1: 1 с выводом на Pi. Мне пришлось немного поработать, чтобы понять это.
Шаг 9: Юность и глаза
Я взял это 100% с сайта Adafruit. Изначально у меня были несколько хромых шариков для пинг-понга со светодиодной подсветкой, которые я собирался использовать, но как только я увидел это на их сайте, мне пришлось их купить. До этого у меня не было опыта работы с Ardunio, но я слепо следовал примерам на их сайте, и они работали примерно за ½ дня. Кроме того, поскольку я прошил программу до подростка, она сохраняет ее и при включении. Ardunio запускается примерно через 3 секунды и загорается глазами. Итак, все, что мне нужно было сделать, чтобы заставить глаза работать, - это подключить 12 В к одному из реле и подать питание на малышку, и глаза, и волшебство произойдет!
Монтаж ЖК-экранов в черепе был СУПЕР болезненным. 7 маленьких проводов на каждом ЖК-дисплее, так что всего 14 проводов, и попытка размолоть череп и установить их прямо, не повредив провод - что случается очень часто, было очень болезненно. Так что программирование средней сложности - монтаж тяжёлый. Прямо противоположное тому, что я ожидал. Teensy установлен в задней части глаз под пластиной из МДФ, на которой находятся два сервопривода.
Шаг 10: Бубен
Что ж, я всегда помню голову в хрустальном шаре в Особняке с привидениями и бубен, плавающий вокруг, стучащий, когда она контактировала с духами, поэтому мне нужно было что-то подобное для этого проекта. Поскольку череп принадлежал бывшему читателю мыслей / провидцу, духам нужно сообщать людям, когда они присутствуют. J. Я нашел самое мощное, самое мощное двухтактное реле, которое я смог найти. Затем перегрузил его с 12 В до 24 В с помощью запасного зарядного устройства для ноутбука, которое у меня было. Мне пришлось сделать несколько разных версий механизма, но моя третья итерация сработала лучше всего. Мне пришлось повозиться с длиной рычага, выравниванием и т. Д. Моя большая ошибка заключалась в том, что я делал все это с деревом / МДФ. Когда я впервые собрал его при напряжении 24 В, соленоид так сильно стучал по бубну, что разрывался на части. (При 12 В он был недостаточно силен). Со временем, когда деревянный вал был установлен в МДФ, и все было покрашено, все это стало труднее / труднее перемещать, что означало, что соленоиду было труднее вытолкнуть при возбуждении И труднее было вернуться. Поэтому мне пришлось добавить дополнительную возвратную пружину, которая требует от соленоида тратить энергию, когда он находится под напряжением. Так что в итоге получилось ударить по бубну на медленной стороне. В следующий раз я сделаю эту часть из металла - бронзовую втулку, металлический вал и т. Д. И избежу этой проблемы.
Шаг 11: плазменная лампа
Поскольку я не собирался строить лестницу Джейкобса или какой-либо другой источник энергии для этого проекта, мне понадобился какой-то тип «энергии», чтобы управлять черепом. Я взял свой старый Samsung Galaxy S5, сделал сброс настроек и загрузил на него приложение Energy Ball. Мне пришлось загрузить другое приложение, которое не позволяло телефону переходить в режим заставки, чтобы он оставался активным в приложении.
Шаг 12: Как заставить световой сигнал 120 В мерцать
ПРЕДУПРЕЖДЕНИЕ -
Здесь проблема с розеткой переменного тока на 120 В в розетке. Если не знаешь, что делаешь, не делай этого
ПРЕДУПРЕЖДЕНИЕ -
halloweenpropmaster.com/u-build-it3.htm
Этот сайт дает лучшее объяснение того, как это сделать. Стоимость стартера супер дешевая, и я выпотрошил запасной удлинитель, который у меня был. У меня есть пара таких, и я использую их во время Хэллоуина, и они работают очень хорошо, без перегоревших предохранителей, без перегрева и т. Д. Я без проблем запускал их часами. Поэтому для этого проекта я взял один из удлинителей со стартером и подключил его к одному из четырех реле на плате. Пара строк кода GPIO выключит и включит его. Тоже сразу начинает работать, времени на прогрев нет.
Шаг 13: Платформа / стол
Я видел довольно много «черепов на столе», «головы Франкенштейна на столе», вроде реквизита сумасшедшего ученого, и я решил, что хочу пойти по этому пути. Это дало бы мне возможность попробовать нечто большее, чем просто говорящий череп. Я определил базовый размер стола и построил его из ¼ МДФ. Использование настольной пилы позволяет сделать это довольно легко. Мои проекты, как правило, представляют собой металлические предметы, поэтому строительство из дерева было для меня чем-то новым. Я вырезал основные части и довольно быстро сделал 4 стороны коробки и верхнюю часть. Я извлек тяжелый урок из этого: я использовал клеевой пистолет, чтобы собрать их. Я обнаружил, что это не способ делать это. Все части разлетелись на части, как только я поднял эту чертову штуку! Поэтому я вырезал несколько дополнительных квадратов размером 1 дюйм, чтобы укрепить углы, и склеил их вместе гвоздями. Урок выучен. Я проложил обрезку между верхом и сторонами платформы, приклеил и прибил гвоздями. Пятно зашпаклевали, чтобы заполнить зазоры, и он был готов к установке на него остальных компонентов.
В остальном я черпал вдохновение из изображений, которые видел в Интернете. Чтобы «состарить» череп, я попытался использовать темное пятно. Это не сработало; он не прилипал к пластику. Итак, я попробовал нарисовать череп не совсем белым, а затем наложил пятно. Это сработало намного лучше. Я знаю, что есть много способов сделать это, и доволен тем, как все получилось. Медная лента, которую я лежал из другого проекта, который я использовал для черепа и вокруг скул. Я закрасил пятно на остальных предметах, не окрашенных в черный цвет, чтобы придать им вид старины / старины.
Остальные кусочки и шарики, которые у меня были из других проектов. Все латунные детали из лампового магазина. Я сделал вырезанный переключатель из некоторых подручных материалов, а ручка на конце - еще одна деталь лампы. Трубки, которые я нашел в электронном избытке вместе с изоляторами. Шипы панк-рокера были у меня из другого постапокалиптического проекта. Листовая сталь и медная проволока из хозяйственного магазина и трубка из ПВХ для его позвонков.
Что касается плаката, я нашел и старый плакат фокусника в Интернете, и с помощью некоторой магии Photo Shop изменил название.
Шаг 14: Остальное
Я черпал вдохновение из изображений, которые видел в Интернете. Чтобы «состарить» череп, я попытался использовать темное пятно. Это не сработало; он не прилипал к пластику. Итак, я попробовал нарисовать череп не совсем белым, а затем наложил пятно. Это сработало намного лучше. Я знаю, что есть много способов сделать это, и доволен тем, как все получилось. Медная лента, которую я лежал из другого проекта, который я использовал для черепа и вокруг скул. Я закрасил пятно на остальных предметах, не окрашенных в черный цвет, чтобы придать им вид старины / старины.
Остальные кусочки и шарики, которые у меня были из других проектов. Все латунные детали из лампового магазина. Я сделал выключатель из обрезков, а ручка на конце - еще одна деталь лампы. Трубки, которые я нашел в электронном избытке вместе с изоляторами. Шипы панк-рокера были у меня из другого постапокалиптического проекта. Листовая сталь и медная проволока из хозяйственного магазина и трубка из ПВХ для его позвонков.
Шаг 15: Сборка / настройка / настройка
Итак, вот мой процесс сборки:
# 1 Установите Jasper на Pi и заставьте его работать.
# 2 Купил несколько микрофонов и настраивал, пока не добился успеха.
# 3 На 2-м Пи установите шляпу Adafruit и поймите, как перемещать сервоприводы. Вставьте сервоприводы в череп и поймите значения, которые мне нужно было использовать для их перемещения.
# 4 Постройте тестовую базу для черепа, чтобы я мог работать над ней в своем офисе. Настроить, перенастроить, еще немного поправить.
# 5 Установите все электрические компоненты на плату из оргстекла. Пироги, плата реле, блоки питания USB и соответствующие провода.
# 6 Создайте глаза Adafruit. Докажи себе, что им просто нужно подать напряжение, чтобы все работало. Я не знал этого, когда начал эту часть.
# 7 Сделайте доказательство концепции отправки и получения последовательных данных между двумя пирогами. Напишите процедуру цикла для 2-го Pi с нужными мне командами - включение / выключение разговора и т. Д. Протестируйте его с помощью некоторого образца кода на Pi # 1. Джаспера еще нет.
# 8 Добавьте серийный код к коду Джаспера - докажите, что я могу получить базовое движение, когда Джаспер говорит.
# 9 Начни возиться с платой реле. Добавьте код, чтобы включить глаза.
# 10 Добавьте код для включения 120в. Постройте соленоид и бубен на отдельной платформе, чтобы понять, как они должны работать.
# 11 Установите глаза в череп.
# 12 Постройте платформу, на которой все будет собрано. Соберите все части на платформу, сделайте стальную основу черепа, чтобы она держалась, добавьте компоненты бубна.
# 13 Попытайтесь достать пироги и доску из дома в гараж и выяснить, как получить их внутри платформы.
# 14 Начать настройку. Больше тюнинга, продолжайте тюнинговать. Поймите, что мне нужно сделать код Python многопоточным, чтобы все действия могли работать вместе.
# 15 Решите добавить энергетический шар под вакуумными трубками. Выясни, я могу сделать это со старым сотовым телефоном. Сделал это менее чем за день.
# 16 Продолжайте добавлять детали. Шипы, проволока, трубки, античный череп. Продолжайте настраивать и тестировать. Раскрашивайте, подкрашивайте и чините то, что продолжает выходить из строя, переделывайте / укрепляйте то, что разваливается.
# 17 Тестирование и настройка Будьте готовы показать это другим людям.
Рекомендуемые:
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: 7 шагов (с изображениями)
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: я планирую использовать этот Rapsberry PI в кучу забавных проектов еще в моем блоге. Не стесняйтесь проверить это. Я хотел вернуться к использованию своего Raspberry PI, но у меня не было клавиатуры или мыши в моем новом месте. Прошло много времени с тех пор, как я установил Raspberry
Анна-гадалка: 3 шага (с картинками)
Анна, Гадалка: Это вдохновение от Золтара, существует так много версий, и я хотела сделать свою собственную версию для кабинета. У нас есть гадалка в будке, которая смотрит на свой хрустальный шар и рассказывает ваше будущее :) Сборка представляет собой смесь бумажных поделок, света
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
MicroBit: Гадалка: 17 шагов
MicroBit: Fortuneteller: С гадалками весело! Но они стоят дорого и их сложно использовать. Сегодня я покажу вам, как создать свою собственную гадалку! Вы можете задать ему любой вопрос «да», «нет» или, может быть, вопрос, и он даст вам ответ. Это может
Мистический хрустальный шар (он буквально говорит вам вашу судьбу!): 3 шага (с изображениями)
Мистический хрустальный шар (он буквально предсказывает вам судьбу!): Узнайте, как сделать хрустальный шар, который открывает ваше будущее при прикосновении! Проект состоит из трех основных частей и может быть построен примерно за четыре часа. Материалы: 1. Емкостной сенсорный датчик: 1 - микроконтроллер Arduino Uno 1