Съдържание:

Хомункулус - механичният мистичен гадател на Оракул: 15 стъпки (със снимки)
Хомункулус - механичният мистичен гадател на Оракул: 15 стъпки (със снимки)

Видео: Хомункулус - механичният мистичен гадател на Оракул: 15 стъпки (със снимки)

Видео: Хомункулус - механичният мистичен гадател на Оракул: 15 стъпки (със снимки)
Видео: Сумасшедшим быть ВЫГОДНО! 2024, Ноември
Anonim
Image
Image
Хомункулус - механичният мистичен гадател на Оракул
Хомункулус - механичният мистичен гадател на Оракул

Добре - така че какво би трябвало да бъде това… последната история на това, което разказвам на хората, е, че черепът е от мистик от 19 -ти век, чийто гроб е ограбен и че черепът му, който се озова в някаква карнавална страна, се показва в началото на 1900 -те. Намерих го в мазето на някоя запусната викторианска къща и преустроих реквизита в гадателка от 21-ви век-„който може да протегне ръка в етера на интернет, да ви каже късмета ви, кои са вашите приятели и врагове, кажете шега и прочетете имейла и календара ми за деня “.

Какво е всъщност - Е, това е невероятният софтуер на Jasper, работещ на Raspberry pi и направих 2 -канален говорещ линбургски череп, който говореше заедно с много камбани и свирки (и тамбура), за да го добавя.

Това беше супер амбициозен проект. Много различни медии за работа - множество пайове, дървообработване, боядисване, много окабеляване, много кодиране в python, кодиране ardunio, много малки кабели, 120v окабеляване, външни платки pi 'hats, релейни драйвери и релета, 24v захранвания, каращи нещата да се движат - череп с 2 оси и тропане на тамбура.

Няма да навлизам в супер детайли на парче за всяка част, особено кодирането на python, но ще се опитам да опиша накратко всеки компонент и да включа снимки.

Също така, в примерите на Python-да, можех да съм много по-обектно ориентиран по кодирането, но опитът ми с Python, когато стартирах проекта, беше доста елементарен и разбира се е по-лесно да го изрежете и поставите, когато бързате срещу. спиране на това, което правите, пренапишете го правилно и след това продължете.

Стъпка 1: Основни компоненти - неща, които трябваше да намеря/взема/купя

Основни компоненти - неща, които трябваше да намеря/взема/купя
Основни компоненти - неща, които трябваше да намеря/взема/купя
Основни компоненти - неща, които трябваше да намеря/взема/купя
Основни компоненти - неща, които трябваше да намеря/взема/купя
Основни компоненти - неща, които трябваше да намеря/взема/купя
Основни компоненти - неща, които трябваше да намеря/взема/купя

Малина Пи

Два от тях

www.adafruit.com/products/1914?gclid=CjwKE…

Джаспър

„Jasper е платформа с отворен код за разработване на постоянно включени, гласово контролирани приложения“

jasperproject.github.io/

"Очи" на Adafruit

learn.adafruit.com/adafruit-1-44-color-tft…

Teensy - Мозък за очите

www.adafruit.com/product/2756

Как да създадете „очи с помощта на малки и 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 високоговорители, болтове с гайки, MDF, горещо лепило, стари вакуумни тръби, различни лампи и битове, стар мобилен телефон Samsung S5, стоманена ламарина, медна тел, медна лента, пирони, редовно лепило и др. и т.н.

Стъпка 2: Защо две банички с малини?

Защо две банички с малини?
Защо две банички с малини?

Първоначално исках да синхронизирам черепите, говорещи с речта, но след като инсталирах Jasper и определих всичко, което исках да направя, всички неща, които се движат наоколо, си помислих, че може би е по -добре да разделя цялата работа на две банички. Имах краен срок за това и не исках да се връщам назад, ако имах някакъв проблем с производителността. Сега, когато работата е свършена, вярвам, че бих могъл да го направя с един -единствен Pi, по това време мислех, че е най -добре да оставя едно pi да управлява Jasper, а второто pi да управлява сервомоторите и релетата, за да мога да имам ясно разграничение между работа. Също така беше по -лесно за развитие. Бих могъл да направя всичко правилно в Jasper, без да се притеснявам за серво и релета. От друга страна, бих могъл да се съсредоточа върху задвижването на сервомоторите, времето на нещата - включване на светлините, преместване на серво и др. И не трябва да се притеснявам за проблеми, свързани с глас/високоговорител/микрофон.

Недостатъкът на това е, че загубих способността синхронизирането на черепа да движи челюстта си с речта, но след като разгледах работата на Грант Имахара за The Late Late Show, създавайки „Geoff“, реших, че нещата ще изглеждат достатъчно добре.

www.popularmechanics.com/science/a5473/4350…

Стъпка 3: Как комуникират двете пити?

Как комуникират двете пити?
Как комуникират двете пити?
Как комуникират двете пити?
Как комуникират двете пити?

Има няколко различни начина, по които можете да направите това. Отидох в старо училище и реших да отида със серийна връзка. Нужни са само три проводника между двете пити (Tx, Rx & gnd) и малко количество код, за да се отвори серийна връзка от Pi#1 до Pi#2 и да се изпрати нещо към него. Pi#2 отваря серийна връзка за четене на данни и задава четене от тясна верига от нейната серийна връзка. Когато получи някакъв текст, той вижда дали отговаря на команда (Talk, светва, изключва светлината, talk off и т.н.) и прави каквото трябва. Долната страна на серийната връзка е, че има леко забавяне от момента на изпращане на командата и процеса на нея. Pi#2 е в цикъл с малко закъснение при четенето. Така че трябваше да ускоря нещата. Също така за бъдещи мулти-пи проекти е добре да знам, че мога да комуникирам два банички и НЕ се нуждая от интернет, за да го направя.

Стъпка 4: Теми на Python

Теми на Python
Теми на Python

За да добавя допълнителна сложност към всичко, накрая се наложи да използвам нишки на Python на Pi#2, за да мога да обработвам множество заявки и да ги обработвам едновременно. Например, трябваше да мога да започна да говоря - преместване на черепната глава наляво/надясно, докато челюстта се издига нагоре и надолу, но какво ще стане, ако Pi#1 има грешка по някаква причина и не може да каже Pi#2 за да спре да говори, черепът ще говори вечно. Така че трябваше да накарам черепа да се изключи след известно време. За да направите това, беше най -лесно да отделите нишка. Вътре в рутинната нишка за говорене има някакъв код, който след известно максимално време спира да говори, нулира главата и челюстта и излиза. Същото и за тамбура, имах нужда от него, за да стартира точно преди черепът да спре да говори, затова завъртя още един конец за тамбура и всичко работи заедно и кодът за движението на главата е напълно отделен от удара на тамбура - същото за захранване на светлините и очите всички нишки могат да работят едновременно.

Количеството код, необходимо в Python за използване на нишки, е доста малко, но е тъпо и отне известно време, за да го заобиколя, но както се оказа, работи много добре. Възможността да използвате нишки е добър инструмент, който да имате в кутията с инструменти, ако сте разработчик на Raspberry Pi.

Стъпка 5: Модификации на Jasper & Jasper

Сайтът на Jasper е ресурсът за инсталирането му на пи, какъв глас трябва да се използва, как да се конфигурира, да се пишат нови модули, всичко - и то безплатно! Това обаче не е проста инсталация. Много стъпки, много пакети за инсталиране и конфигуриране. Аз се занимавам с този вид работа, за да си изкарвам прехраната и това все още беше нещо, което бих считал за предизвикателство. Докато приключих с този проект, навлязох доста дълбоко в Japer и направих много модификации, за да отговоря на това, което се опитвах да направя.

Някои промени направих:

Премахна пасивното слушане и използва GPIO порт, за да стартира активното слушане с домашен прекъсвач. Това направи нещо повече от „аркадни“неща срещу използването на пасивно слушане.

Промених параметрите, колкото е необходимо, за да работя с микрофона си - трябваше да премина през три различни USB микрофона, докато не намеря такъв, който да работи правилно за мен. Също така трябваше да коригирам някои от праговите стойности в кода. Това беше най -болезнената част от използването на Jasper лично за мен.

Добавен е кодът на серийната връзка във всички модули, за да се отвори серийна връзка, да се каже на slave pi какво да прави „очи в очите“, „говорене“, „взрив тамбура“

Добавени са модули „кои са ми приятели“, „разкажи ми виц“, „прочети графика ми от календара ми за CRM“, „кажи ми богатството“. Някои от тях изискват извършване на REST извиквания към облачен софтуер за получаване на данни. Има много нестандартни модули, които използвах като примери, заедно с документацията на сайта, за да ми помогнат да свърша това, което трябва.

Стъпка 6: Добавяне на две оси към черепа

Добавяне на две оси към черепа
Добавяне на две оси към черепа
Добавяне на две оси към черепа
Добавяне на две оси към черепа
Добавяне на две оси към черепа
Добавяне на две оси към черепа

Започнах с основния череп на Линдберг. Първоначално мислех за череп с ос 4/5, но времето, необходимо за писане на кода на python за координиране на движенията, заедно с изграждането на хардуера за движението, ще надхвърли времето, което трябваше да завърша с останалата част от проекта. (Не знам дали вече съществува, но софтуер на Pi или Ardunio за задвижване на многоосов череп, който сам по себе си би бил доста готин проект.) Така че една ос-движението на челюстта беше твърде куцо, така че Добавих движението на главата и с работещите LCD очи, доволен съм от резултатите.

Така че, като гледах работата, която другите са свършили с говорещи черепи, разбрах какво трябва да направя, две серво и серво рога, парче MDF, горещо лепило, ципове, проба и грешка - имах физическата част от това. Основното програмиране на Pi на движението всъщност отне повече време. Трябваше да разбера стойностите за PWM и за двата серво. Започнах с основното отворено/затворено завъртане на главата докрай наляво/надясно. Но не изглеждаше добре. Така че направих междинни движения, челюстта е напълно отворена, закъснение.1, частично затворена челюст, няма забавяне, бурканът е частично отворен, забавяне,. И т.н. и т.н. изглежда по -добре.

Едно нещастно нещо, което нямах време да преработя, е, че целият материал, който сложих върху капачката на черепа - металната лента, шиповете, медната корона и окабеляването направиха цялостния череп по -тежък и затруднява серво вътре движи се по -бавно и не толкова далеч. Серво с по -голям въртящ момент вероятно би помогнало тук, но нямах време и средства …

Стъпка 7: Серво драйвер Adaifruit Hat

Серво драйвер Adaifruit Hat
Серво драйвер Adaifruit Hat

Adafruit има страхотни примери за това как да използват своите продукти. Предизвикателството беше да се установи какви точно са стойностите за всеки от сервомоторите - център, крайно ляво и дясно. Не е 0, 90, 180, както си мислите. Това беше само няколко реда с дълга програма за python, но отне няколко часа промяна, за да преминем през това и за двете серво.

Стъпка 8: Релейна дъска

Релейна дъска
Релейна дъска

Взех това в Amazon. Много уеб сайтове продават това, което изглежда като същата единица. Тук бяха необходими някои експерименти, но прелистването на релетата отнема само няколко реда код и имате NC и NO връзки на релетата, което го прави още по -лесно. Друго предизвикателство тук е, че GPIO портът/щифтът не е съвпадение 1: 1 с извода на Pi. Трябваше малко работа, за да се ориентирам в това.

Стъпка 9: Тийнейджъри и очите

Тийнси и очите
Тийнси и очите

Взех това 100% от сайта Adafruit. Първоначално щях да използвам куца топка за пинг -понг, осветена с LED, но след като видях това на техния сайт, трябваше да го имам. Преди това имах нулев опит с Ardunio, но сляпо следвах примерите на техния сайт и работех за около ½ от деня. Също така - откакто пуснах програмата на тийнейджърска възраст, тя я запазва и когато я включите. Ardunio се стартира за около 3 секунди и осветява очите. И така, всичко, което трябваше да направя, за да заработят очите, беше да свържа 12v към едно от релетата и да захранвам тийнейджърите и очите и магията се случва!

Монтирането на LCD екраните в черепа беше СУПЕР болезнено. 7 малки проводника на всеки LCD, така че общо 14 проводника и се опитват да изстържат черепа и да ги монтират направо и да не скъсат проводник - което се случва много, беше много болезнено. Така че програмиране умерена трудност - монтаж трудно. Точно обратното на това, което очаквах. Teensy се намира в задната част на очите под MDF плочата, която държи двете серво.

Стъпка 10: Тамбура

Тамбурина
Тамбурина
Тамбурина
Тамбурина

Е, винаги си спомням главата в кристалната топка в имението с духове и тамбурата, която се носеше наоколо, докато тя се свързваше с духовете, така че трябваше да имам нещо подобно за този проект. Тъй като черепът е от бивш четец на мисли/гледач, духовете трябва да уведомят хората, когато присъстват J. Открих най -голямото най -мощно реле за натискане, което можех да намеря. След това го пренастроих от 12v на 24v с резервно зарядно устройство за лаптоп, което имах. Трябваше да направя няколко различни версии на механизма, но третата ми итерация работи най -добре. Трябваше да се забъркам с дължината на лоста, подравняването и т.н. Моята голяма грешка беше да направя всичко това с дърво/MDF. Когато за първи път сглобих това, работещо при 24v, соленоидът щеше да удари тамбурата толкова силно, че се разкъсваше. (При 12v не беше достатъчно силен) С течение на времето, когато дървеният вал беше монтиран в MDF и боядисваше нещата, всичко стана по -трудно / по -трудно да се премести, което означаваше, че соленоидът по -трудно се изтласква, когато се генерира и по -трудно се връща. Затова трябваше да добавя допълнителна възвратна пружина - която изисква соленоида да губи енергия, когато е под напрежение. Така че в крайна сметка удари тамбурата от бавната страна. Следващия път, когато изграждам тази част от метал - бронзова втулка, метален вал и т.н., и избягвам този проблем.

Стъпка 11: Плазмена лампа

Плазмена лампа
Плазмена лампа
Плазмена лампа
Плазмена лампа

Тъй като нямаше да изграждам стълба на Джейкъбс или някакъв друг зъл източник на енергия на луд учен за проекта, имах нужда от някакъв вид „енергия“, за да управлявам черепа. Взех стария си Samsung Galaxy S5, направих фабрично нулиране и заредих на него приложение за енергийна топка. Трябваше да заредя друго приложение, което не позволява на телефона да премине в режим на скрийнсейвър, за да го поддържа активен в приложението.

Стъпка 12: Как да накарате 120V светлината да трепти

Как да накараме 120V светлината да трепти
Как да накараме 120V светлината да трепти

ВНИМАНИЕ -

Това се бърка със 120v AC щепсела в захранването на стената тук. Ако не знаете какво правите, не го правете

ВНИМАНИЕ -

halloweenpropmaster.com/u-build-it3.htm

Този сайт дава най -доброто обяснение как да направите това. Цената на стартера е супер евтина и изкопах резервен удължителен кабел, който имах. Имам няколко такива построени и ги използвам по време на Хелоуин и те работят много добре, без изгорели предпазители, без прегряване и т.н. Работих ги с часове без проблем. Така че за този проект взех един от удължителите с вграден стартер и го свързах към едно от четирите релета на платката. Няколко реда GPIO код ще го изключат и включат. Той също започва да работи веднага, без време за загряване.

Стъпка 13: Платформата/таблицата

Платформата/масата
Платформата/масата
Платформата/масата
Платформата/масата

Виждал съм доста „череп на маса“, „глава на Франкенщайн на маса“луд учен вид реквизит и реших, че искам да тръгна по този път. Това би ми дало шанс да изпробвам нещо повече от говорещия череп. Разбрах основния размер на масата и я изградих от ¼ MDF. Използването на настолен трион прави това доста лесно. Моите проекти обикновено са метални неща, така че изграждането с дърво беше донякъде ново за мен. Изрязах основните парчета и направих моите 4 страни на кутията и плот доста бързо. Там, където научих труден урок, използвах пистолет за лепило, за да ги сглобя. Това, което разбрах, е, че това не е начинът да го направя. Всички парчета се разпаднаха веднага щом взех проклетото нещо! Затова изрязах някои допълнителни парчета от 1”квадрат, за да подсиля ъглите и дървото, залепено/заковано заедно. Научен урок. Поставих някаква тапицерия между горната и страничната част на платформата, залепих я и я заковах на мястото си. Точкова шпакловка за запълване на празнините и беше готова останалите компоненти да бъдат монтирани върху нея.

За останалите получих вдъхновение от изображения, които съм виждал в мрежата. За да „антикваризирам“черепа, се опитах да използвам тъмно петно. Не работи; не залепна за пластмасата. Затова се опитах да нарисувам черепа с почти бял цвят и след това сложих петното върху него. Работи много по -добре. Знам, че има много техники за това и съм доволен от начина, по който се получи. Медна лента, която сложих наоколо от друг проект, който използвах за капачката на черепа и около костите на бузите. Рисувах върху петното върху останалите нечерно боядисани предмети, за да му придам този античен/стар вид.

Останалите парчета и бобове, които имах от други проекти. Всички месингови парчета са от магазин за лампи. Направих превключвателя за рязане от някои скрап материали и копчето на края е друго парче лампа. Тръбите, които намерих на електронно излишно място заедно с изолаторите. Пънк рокерски шипове, които имах от друг постапокалиптичен проект. Ламарина и медна тел от железарията и малко PVC тръба за прешлените му.

За плаката намерих снимка на плакат на стар магьосник в мрежата и с някаква магия на Photo Shop променихме името.

Стъпка 14: Почивка

Остатъка
Остатъка
Остатъка
Остатъка
Остатъка
Остатъка
Остатъка
Остатъка

Вдъхнових се от изображения, които видях в мрежата. За да „антикваризирам“черепа, се опитах да използвам тъмно петно. Не работи; не залепна за пластмасата. Затова се опитах да нарисувам черепа с почти бял цвят и след това сложих петното върху него. Работи много по -добре. Знам, че има много техники за това и съм доволен от начина, по който се получи. Медна лента, която сложих наоколо от друг проект, който използвах за капачката на черепа и около костите на бузите. Рисувах върху петното върху останалите нечерно боядисани предмети, за да му придам този античен/стар вид.

Останалите парчета и бобове, които имах от други проекти. Всички месингови парчета са от магазин за лампи. Направих превключвателя за рязане от някои скрап материали и копчето на края е друго парче лампа. Тръбите, които намерих на електронно излишно място заедно с изолаторите. Пънк рокерски шипове, които имах от друг постапокалиптичен проект. Ламарина и медна тел от железарията и малко PVC тръба за прешлените му.

Стъпка 15: Монтаж/Настройка/Промяна

Сглобяване/настройка/ощипване
Сглобяване/настройка/ощипване

Ето моят процес на изграждане:

#1 Инсталирайте Jasper на Pi и го накарайте да работи.

#2 Купих множество микрофони и ощипвам, докато постигна известен успех.

#3 На 2 -ри Pi инсталирайте шапката Adafruit и разберете как да премествате сервомоторите. Вкарайте сервомоторите в черепа и разберете стойностите, които трябваше да използвам, за да ги преместя.

#4 Изградете тестова база за черепа, за да мога да работя върху него в офиса си. Променете, пренастройте, оправете още.

#5 Монтирайте всички електрически компоненти на дъска от плексиглас. Пайове, релейна платка, USB захранвания и свързани проводници.

#6 Изградете очите на Adafruit. Докажете си, че просто се нуждаят от напрежение, за да работят всичко. Не знаех това, когато започнах тази част.

#7 Направете доказателство за концепцията за изпращане и получаване на серийни данни между двете пити. Напишете цикъл на цикъл за 2 -ри Pi с командите, от които се нуждаех - включете/изключете разговори и др. Тествайте го с някакъв примерен код на Pi#1. Още няма Джаспър.

#8 Добавете серийния код към кода на Jasper - докажете, че мога да получа основно движение, когато Jasper говори.

#9 Започнете да бъркате с релейната платка. Добавете кода, за да включите Eyes.

#10 Добавете код, за да включите 120v. Изградете соленоида и тамбурата на отделна платформа, за да разберете как трябва да работи.

#11 Поставете очите си в черепа.

#12 Изградете платформата, на която всичко ще бъде сглобено. Сглобете всички парчета на платформата, направете стоманената основа на черепа, за да го задържите, добавете компонентите на тамбура.

#13 Опитайте се да вкарате пайовете и бордовете от къщата в гаража и да разберете как да ги вкарате в платформата.

#14 Започнете настройка. Още настройване, продължете да настройвате. Осъзнайте, че трябва да направя кода на Python многопоточен, така че всички действия да работят заедно.

#15 Решете да добавите енергийната топка под вакуумните тръби. Разберете, че мога да направя това със стар мобилен телефон. Направи тази работа за по -малко от ден.

#16 Продължете да добавяте подробности. Шипове, медна тел, тръби, античен череп. Продължавайте да настройвате и тествате. Боядисвайте, поправяйте и поправяйте нещата, които продължават да се разхлабват, реинженерирайте/подсилвайте нещата, които се разпадат.

#17 Тестване и ощипване Пригответе се да го покажете на други хора.

Препоръчано: