Indholdsfortegnelse:

Homunculus - the Mechanical Mystical Oracle Fortune Teller: 15 trin (med billeder)
Homunculus - the Mechanical Mystical Oracle Fortune Teller: 15 trin (med billeder)

Video: Homunculus - the Mechanical Mystical Oracle Fortune Teller: 15 trin (med billeder)

Video: Homunculus - the Mechanical Mystical Oracle Fortune Teller: 15 trin (med billeder)
Video: Hatred Outlives the Hateful | Magic's Best Flavor Text 2024, November
Anonim
Image
Image
Homunculus - Mechanical Mystical Oracle Fortune Teller
Homunculus - Mechanical Mystical Oracle Fortune Teller

Ok - så hvad skal dette være … baghistorien om dette, jeg fortæller folk, er, at kraniet er fra en mystiker fra det 19. århundrede, hvem graven blev røvet, og at hans kranium, der endte i en karnevalside, viste sig tilbage i begyndelsen af 1900'erne. Jeg fandt den i en kælder i et nedslidt victoriansk hus og ombyggede rekvisitten til en spåkone fra det 21. århundrede-'hvem kan nå ud til internettets æter, fortælle din formue, hvem dine venner og fjender er, fortæl en joke og læs min e -mail og kalender for dagen '.

Hvad er det egentlig - Nå, det er den fantastiske Jasper -software, der kører på en Raspberry pi, og jeg har lavet en 2 -kanals talende Linburg -kranium, der taler sammen med en masse klokker og fløjter (og en tamburin) for at tilføje til det.

Dette var et super ambitiøst projekt. Masser af forskellige medier at arbejde med - flere tærter, træbearbejdning, maling, masser af ledninger, masser af kodning i python, ardunio -kodning, masser af små ledninger, 120v ledninger, pi 'hatte' eksterne tavler, relæ drivere og relæer, 24v strømforsyninger, der får tingene til at bevæge sig - et kranium med 2 akser og tamburinen banker.

Jeg går ikke i detaljer i detaljer for hver del for hver del, især python -kodningen, men jeg vil prøve at beskrive hver komponent kort og inkludere billeder.

Også på Python-eksemplerne-ja, jeg kunne have været meget mere objektorienteret på kodningen, men min Python-oplevelse, da jeg startede projektet, var temmelig grundlæggende, og det er selvfølgelig lettere at klippe og indsætte, når du har travlt vs. stop hvad du laver, skriv det korrekt igen, og fortsæt derefter.

Trin 1: Hovedkomponenter - Ting, jeg skulle finde/få/købe

Større komponenter - Ting jeg skulle finde/få/købe
Større komponenter - Ting jeg skulle finde/få/købe
Større komponenter - Ting jeg skulle finde/få/købe
Større komponenter - Ting jeg skulle finde/få/købe
Større komponenter - Ting jeg skulle finde/få/købe
Større komponenter - Ting jeg skulle finde/få/købe

Hindbær Pi

To af dem

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

Jasper

"Jasper er en open source-platform til udvikling af stemmestyrede applikationer, der altid er tændt"

jasperproject.github.io/

Adafruit 'øjne'

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

Teensy - Hjerne til øjnene

www.adafruit.com/product/2756

Sådan oprettes ‘øjnene ved hjælp af teenage- og 1-44 farve tft-skærme

learn.adafruit.com/animated-electronic-eye…

16 kanals Serveo hat

learn.adafruit.com/adafruit-16-channel-pwm…

Det klassiske Lindbergskalle

www.amazon.com/Lindberg-scale-Pirate-skull…

4 -kanals relækort, der fungerer med en Raspberry Pi

www.amazon.com/Sizet-Channel-Module-Arduin…

Skub magnet

(Denne fås mange forskellige steder)

www.aliexpress.com/item/High-quality-DC-12…

USB -mikrofon

Dette fås mange forskellige steder

www.samsontech.com/samson/products/micropho…

Diverse

To servoer, jeg havde liggende, servohorn, jeg fandt i kurven på $ 1 i hobbybutikken. Servo forlængerkabler, USB/Bluetooth højttaler, møtrikbolte, MDF, Hot Lim, gamle vakuumrør, forskellige lampestykker og bits, en gammel Samsung S5 mobiltelefon, stålplader, kobbertråd, kobberbånd, søm, almindelig lim osv. etc.

Trin 2: Hvorfor to hindbær tærter?

Hvorfor to hindbær tærter?
Hvorfor to hindbær tærter?

Oprindeligt havde jeg ønsket at synkronisere kranierne, der talte med talen, men efter at have installeret Jasper og bestemt alt, hvad jeg ville gøre, alle de ting, der bevæger sig rundt, tænkte jeg, at det kunne være bedre at dele alt arbejde op i to tærter. Jeg havde en deadline for at få dette udført, og jeg ønskede ikke at skulle gå tilbage, hvis jeg havde en form for ydelsesproblem. Nu hvor arbejdet er udført, tror jeg, at jeg kunne have gjort det med en enkelt Pi, på det tidspunkt syntes jeg, at det var bedst at lade en pi styre Jasper og en anden pi drive servoer og relæer, så jeg kunne have en klar afgrænsning mellem arbejde. Det var også lettere for udviklingen. Jeg kunne få alt rigtigt i, at Jasper ikke skulle bekymre sig om servoer og relæer. På den anden pi kunne jeg fokusere på at køre servoer, timing af ting - tænde lys, flytte servoer osv. Og ikke skulle bekymre mig om nogen stemme/højttaler/mikrofonrelaterede problemer.

Den negative side ved dette er, at jeg mistede muligheden for at få kraniet til at synkronisere bevægelsen i kæben med talen, men efter at have set på Grant Imaharas arbejde for The Late Late Show, der skabte 'Geoff', regnede jeg med, at ting ville se godt nok ud.

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

Trin 3: Hvordan kommunikerer de to tærter?

Hvordan kommunikerer de to tærter?
Hvordan kommunikerer de to tærter?
Hvordan kommunikerer de to tærter?
Hvordan kommunikerer de to tærter?

Der er et par forskellige måder, du kan gøre dette på. Jeg gik på old school og besluttede at gå med en seriel forbindelse. Det behøver kun tre ledninger mellem de to tærter (Tx, Rx & gnd) og en lille mængde kode for at åbne en seriel forbindelse fra Pi#1 til Pi#2 og sende noget over til den. Pi#2 åbner en seriel forbindelse for at læse data og indsætter en stram loop -læsning fra dens serielle forbindelse. Når den modtager noget tekst, ser den, om den matcher en kommando (Talk, lights on, lights off, talk off, etc.) og gør, hvad den skal gøre. Den nedre side af den serielle forbindelse er, at der er en lille forsinkelse, fra kommandoen sendes og processen med kommandoen. Pi#2 er i en loop med en lille forsinkelse på læsningen. Så jeg var nødt til lidt at sætte gang i tingene. Også for fremtidige multi-pi-projekter er det godt at vide, at jeg kan få to tærter til at kommunikere og IKKE har brug for internettet for at gøre det.

Trin 4: Python -tråde

Python -tråde
Python -tråde

For at tilføje noget ekstra kompleksitet til alt, endte jeg med at skulle bruge Python -tråde på Pi#2, så jeg kunne håndtere flere anmodninger og behandle dem på samme tid. For eksempel havde jeg brug for at kunne begynde at tale - flytte kranierne hovedet til venstre/højre, mens kæben går op og ned, men hvad nu hvis Pi#1 af en eller anden grund har en fejl og ikke kan fortælle Pi#2 for at stoppe med at tale, ville kraniet tale for evigt. Så jeg havde brug for at få kraniet til at sige til sig selv at skulle lukke af efter et stykke tid. For at gøre dette var det nemmest at spinde en tråd af. Inde i trådrutinen til at tale er der en kode, der efter noget maks. Tid skal stoppe med at tale, nulstille hovedet og kæben og afslutte. Samme for tamburinen, jeg havde brug for, at den startede lige før kraniet holdt op med at tale, så jeg spinder en anden tråd til tamburinen, og alt fungerer sammen, og koden for hovedbevægelsen er helt adskilt fra tamburinen, der banker - det samme for at tænde lysene og øjnene alle trådene kan alle køre samtidigt.

Mængden af kode, der er nødvendig i Python for at bruge tråde, er temmelig lille, men den er stump og tog lidt tid at få hovedet omkring det, men som det viser sig, fungerer det meget godt. Evnen til at bruge tråde er et godt værktøj at have i værktøjskassen, hvis du er en Raspberry Pi -udvikler.

Trin 5: Jasper & Jasper -ændringer

Jasper -webstedet er Ressourcen til at få det installeret på et pi, hvilke stemmeoptagelser der skal bruges, hvordan man konfigurerer, skriver nye moduler, alt - og det er gratis! Det er dog ikke en simpel installation. Masser af trin, masser af pakker, der skal installeres og derefter konfigureres. Jeg udfører denne form for arbejde, og det var stadig noget, jeg ville betragte som en udfordring. Da jeg var færdig med dette projekt, kom jeg temmelig dybt ind i Japer og lavede mange ændringer for at imødekomme det, jeg forsøgte at gøre.

Nogle ændringer jeg har foretaget:

Fjernede passiv lytning og brugte en GPIO -port til at starte aktiv lytning med en hjemmelavet cut -switch. Dette skabte mere en slags "arkade" i forhold til at bruge den passive lytning.

Ændrede parametrene efter behov for at arbejde med min mikrofon - jeg skulle igennem tre forskellige USB -mikrofoner, indtil jeg fandt en, der ville fungere korrekt for mig. Jeg var også nødt til at justere nogle af tærskelværdierne i koden. Dette var den mest smertefulde del af at bruge Jasper for mig personligt.

Tilføjede den serielle forbindelseskode i alle modulerne for at åbne en seriel forbindelse, fortæl slaven pi, hvad han skal gøre 'øjne på', 'snak', 'bang tambourine'

Tilføjet modulerne "hvem er mine venner", "fortæl mig en vittighed", "læs min tidsplan fra min CRM -kalender", "fortæl mig min formue". Nogle af dem krævede at foretage REST -opkald til cloud -baseret software for at få data. Der er mange out -of -box -moduler, som jeg udnyttede som eksempler sammen med dokumentation på webstedet for at hjælpe mig med at få gjort, hvad jeg havde brug for.

Trin 6: Tilføjelse af to akser til kraniet

Tilføjelse af to akser til kraniet
Tilføjelse af to akser til kraniet
Tilføjelse af to akser til kraniet
Tilføjelse af to akser til kraniet
Tilføjelse af to akser til kraniet
Tilføjelse af to akser til kraniet

Jeg startede med det grundlæggende Lindberg -kranium. Jeg havde oprindeligt tænkt på en kranium med 4/5 akser, men den tid det ville tage at skrive pythonkoden for at koordinere bevægelserne sammen med at bygge hardware til bevægelsen ville overstige den tid, jeg havde til at afslutte resten af projektet. (Jeg ved ikke, om det allerede findes, men et stykke software på en Pi eller Ardunio til at køre et flerakset kranium, der ville være et ret fedt projekt i sig selv.) Så en akse-kæben, der bevægede sig, var for halt, så Jeg tilføjede hovedbevægelsen, og med LCD -øjnene, der virker, er jeg tilfreds med resultaterne.

Så ved at se på arbejde, andre har gjort med talende kranier, fandt jeg ud af, hvad jeg skulle gøre, to servoer og servohorn, et stykke MDF, varm lim, lynlåse, forsøg og fejl - jeg havde den fysiske del af dette på plads. Grundlæggende Pi -programmering af bevægelsen tog faktisk længere tid. Jeg var nødt til at finde ud af værdierne for PWM for begge servoer. Jeg startede med den grundlæggende helt åben/lukket drejningshoved helt til venstre/højre. Men det så ikke godt ud. Så jeg lavede mellemliggende bevægelser, kæben fuld åben, forsinkelse.1, kæbe delvist lukket, ingen forsinkelse, krukke delvist åben, forsinkelse, osv. Osv. Samme for hovedbevægelsen, smækkede frem og tilbage så skøre ud, så mellemliggende bevægelser og forsinkelser gør det ser bedre ud.

En uheldig ting, som jeg ikke havde tid til at arbejde igennem, er, at alt det materiale, jeg lagde på kraniet, - metalstrimlen, pigge, kobberkrone og ledninger gjorde det samlede kranium tungere og giver servoen en hård tid inde så det bevæger sig langsommere og ikke så langt. Et servomoment med højere drejningsmoment ville sandsynligvis hjælpe her, men jeg var ude af tid og midler …

Trin 7: Adaifruit Hat Servo Driver

Adaifruit Hat Servo Driver
Adaifruit Hat Servo Driver

Adafruit har gode eksempler på, hvordan de bruger deres produkter. Det udfordrende var at finde ud af, hvad nøjagtigt værdierne var for hver af servoerne - center, yderst til venstre og højre. Det er ikke 0, 90, 180 som du skulle tro. Det var kun et par linjer langt python -program, men det tog nogle timers tweaking at komme igennem dette for begge servoer.

Trin 8: Relæbræt

Stafetavle
Stafetavle

Jeg hentede dette på Amazon. Mange websteder sælger det, der ser ud til at være nøjagtig den samme enhed. Det tog nogle eksperimenter her, men at vende relæerne tager kun et par linjer kode, og du har en NC og NO -forbindelser på relæerne, hvilket gør det endnu lettere. En anden udfordring her er en GPIO -port/pin er ikke en 1: 1 match med stiften ude på Pi. Det tog lidt arbejde at få hovedet omkring det.

Trin 9: Teensy og øjnene

Teensy og øjnene
Teensy og øjnene

Jeg tog dette 100% fra Adafruit -webstedet. Oprindeligt havde jeg nogle lamme LED -tændte bordtennisbolde, jeg skulle bruge, men da jeg så dette på deres websted, måtte jeg have det. Jeg havde ingen Ardunio -erfaring før dette, men jeg fulgte blindt eksemplerne på deres websted og fik dem til at virke på cirka en halv dag. Også - siden jeg blinkede programmet til teenageren, bevarer det det, og når du tænder det. Ardunio starter på cirka 3 sekunder og lyser op i øjnene. Så alt hvad jeg skulle gøre for at få øjnene til at fungere var at tilslutte 12v til et af relæerne og tænde teenage og øjne og magi sker!

Montering af LCD -skærme i kraniet var SUPER smertefuldt. 7 små ledninger på hver LCD så 14 ledninger i alt og forsøg på at slibe kraniet ud og få dem monteret lige og ikke bryde en ledning - hvilket sker meget var meget smertefuldt. Så programmering moderat besvær - montering hårdt. Lige det modsatte af, hvad jeg forventede. Teensy satte sig bag øjnene under MDF -pladen, der holder de to servoer.

Trin 10: Tamburin

Tamburin
Tamburin
Tamburin
Tamburin

Jeg husker altid hovedet i krystalkuglen i Haunted Mansion og tambourinen flyder rundt og bankede, da hun kontaktede ånderne, så jeg var nødt til at have sådan noget til dette projekt. Da kraniet var fra en tidligere tankelæser/seer, har ånderne brug for at lade folk vide, når de er til stede J. Jeg fandt det største, mest kraftfulde push pull -relæ, jeg kunne finde. Overspændte den derefter fra sin 12v til 24v med en ekstra bærbar oplader, jeg havde. Jeg var nødt til at lave et par forskellige versioner af mekanismen, men min tredje iteration fungerede bedst. Jeg var nødt til at rode med håndtagets længde, justering osv. Min store fejl var at gøre alt dette med træ/MDF. Da jeg første gang satte dette sammen ved at køre ved 24v, ville solenoiden slå tamburinen så hårdt, at den rev sig i stykker. (Ved 12v var det ikke stærkt nok) Over tid med at have en træskaft monteret i MDF og male ting blev det hele sværere / sværere at flytte, hvilket betød, at solenoiden havde sværere ved at skubbe ud, når enegerized OG en sværere tid vendte tilbage. Så jeg var nødt til at tilføje en ekstra returfjeder - som kræver, at solenoiden spilder energi, når den får strøm. Så det endte med at bankede tamburinen på den langsomme side. Næste gang bygger jeg den del af den i metal - bronzebøsning, metalskaft osv. Og undgår dette problem.

Trin 11: Plasmalampe

Plasmalampe
Plasmalampe
Plasmalampe
Plasmalampe

Da jeg ikke ville bygge en Jacobs stige eller en anden ond gal forsker energikilde til projektet, havde jeg brug for en eller anden form for ‘energi’ for at drive kraniet. Jeg tog min gamle Samsung Galaxy S5, lavede en fabriksnulstilling og indlæste en energibold -app på den. Jeg var nødt til at indlæse en anden app, der ikke ville lade telefonen gå i pauseskærmtilstand for at holde den aktiv i appen.

Trin 12: Sådan får du 120v lys til at flimre

Sådan får du 120v lys til at flimre
Sådan får du 120v lys til at flimre

ADVARSEL -

Dette roder med 120v AC -stik i væggen her. Hvis du ikke ved, hvad du laver, skal du ikke gøre det

ADVARSEL -

halloweenpropmaster.com/u-build-it3.htm

Dette websted giver den bedste forklaring på, hvordan du gør dette. Prisen på starteren er super billig, og jeg sløjede en ekstra forlængerledning, jeg havde. Jeg har et par af disse bygget og har brugt dem i Halloween -tiden, og de har fungeret meget godt, ingen sikringer er sprunget, ingen overophedning osv. Jeg har kørt dem i timevis ad gangen uden problemer. Så til dette projekt tog jeg en af forlængerledningerne med starteren inline og tilsluttede den en af de fire relæer på tavlen. Et par linjer med GPIO -kode slukker og tænder den. Det begynder også at fungere med det samme, ingen opvarmningstid.

Trin 13: Platformen/bordet

Platformen/bordet
Platformen/bordet
Platformen/bordet
Platformen/bordet

Jeg har set en del 'kraniet på et bord', 'Frankensteins hoved på et bord' gale videnskabsmand slags rekvisitter, og jeg besluttede, at jeg ville gå den vej. Det ville give mig en chance for at prøve mere end bare den talende kranium. Jeg fandt ud af den grundlæggende bordstørrelse og byggede den ud af ¼ MDF. Det gør det ret let at bruge en bordsav. Mine projekter er typisk metalting, så at bygge med træ var noget nyt for mig. Jeg skar de grundlæggende stykker ud og fik mine 4 sider af kassen og en top lavet ret hurtigt. Hvor jeg lærte en hård lektion med, brugte jeg en limpistol til at samle dem. Hvad jeg fandt ud af er, at - det er ikke måden at gøre det på. Alle stykker gik fra hinanden, så snart jeg tog den fandeme ting op! Så jeg skar nogle ekstra stykker på 1”firkant for at forstærke hjørnerne og træ limede/spikrede det sammen. Lektion lært. Jeg lagde noget trim mellem toppen og siderne af platformen, limede og spikrede den på plads. Spot spartlet for at fylde hullerne, og den var klar til at få resten af komponenterne monteret på den.

For resten fik jeg inspiration fra billeder, jeg har set på nettet. Til at 'antik' kraniet forsøgte jeg at bruge en mørk plet. Det virkede ikke; det holdt ikke fast i plasten. Så jeg forsøgte at male kraniet med en råhvid og lagde derefter pletten på. Det fungerede meget bedre. Jeg ved, at der er mange teknikker til at gøre dette, og jeg er glad for, hvordan det blev. Kobberbånd havde jeg liggende fra et andet projekt, jeg brugte til kraniet og omkring kindbenene. Jeg malede på pletten på resten af de ikke-sorte malede genstande for at give det det forældede/gamle look.

Resten af stykkerne og boblerne havde jeg liggende fra andre projekter. Alle messingstykker er fra en lampeforretning. Jeg lavede skærekontakten ud af nogle skrotmaterialer, og knappen på enden er endnu et lampestykke. Rørene fandt jeg på et elektronisk overskudssted sammen med isolatorerne. Punk rocker pigge havde jeg fra et andet post-apokalyptisk projekt. Stål- og kobbertråd fra isenkræmmeren og noget PVC -rør til hans ryghvirvler.

Til plakaten fandt jeg og gamle tryllekunstners plakatbillede på nettet og med noget Photo Shop ændrede magi navnet.

Trin 14: Resten

Resten
Resten
Resten
Resten
Resten
Resten
Resten
Resten

Jeg fik inspiration fra billeder, jeg har set på nettet. Til at 'antik' kraniet forsøgte jeg at bruge en mørk plet. Det virkede ikke; det holdt ikke fast i plasten. Så jeg forsøgte at male kraniet med en råhvid og lagde derefter pletten på. Det fungerede meget bedre. Jeg ved, at der er mange teknikker til at gøre dette, og jeg er glad for, hvordan det blev. Kobberbånd havde jeg liggende fra et andet projekt, jeg brugte til kraniet og omkring kindbenene. Jeg malede på pletten på resten af de ikke-sorte malede genstande for at give det det forældede/gamle look.

Resten af brikkerne og boblerne havde jeg liggende fra andre projekter. Alle messingstykker er fra en lampeforretning. Jeg lavede skærekontakten ud af nogle skrotmaterialer, og knappen på enden er endnu et lampestykke. Rørene fandt jeg på et elektronisk overskudssted sammen med isolatorerne. Punk rocker pigge havde jeg fra et andet post-apokalyptisk projekt. Stålplade og kobbertråd fra isenkræmmeren og noget PVC -rør til hans ryghvirvler.

Trin 15: Montering/Tuning/Tweaking

Montering/Tuning/Tweaking
Montering/Tuning/Tweaking

Så her var min byggeproces:

#1 Installer Jasper på en Pi og få det til at fungere.

#2 Købte flere mikrofoner og tweak, indtil jeg har en vis succes.

#3 På den anden Pi skal du installere Adafruit -hatten og forstå, hvordan du flytter servoerne. Få servoerne ind i kraniet og forstå de værdier, jeg skulle bruge til at flytte dem.

#4 Byg en testbase til kraniet, så jeg kan arbejde med det på mit kontor. Tweak, re-tweak, tweak noget mere.

#5 Monter alle de elektriske komponenter på et plexiglasbræt. Tærter, relækort, USB -strømforsyninger og tilhørende ledninger.

#6 Byg Adafruit øjne. Bevis for mig selv, at de bare har brug for spænding for at få alt til at fungere. Jeg vidste ikke dette, da jeg startede denne del.

#7 Lav et bevis på konceptet om at sende og modtage serielle data mellem de to tærter. Skriv en loop -rutine for 2. Pi med de kommandoer, jeg havde brug for - tal til/fra osv. Test den med en prøvekode på Pi#1. Ingen Jasper endnu.

#8 Tilføj seriekoden til Jasper -koden - bevis, at jeg kan få grundlæggende bevægelse, når Jasper taler.

#9 Begynd at rode med relæbrættet. Tilføj koden for at tænde for øjnene.

#10 Tilføj kode for at tænde 120v. Byg magnetventilen og tamburinen på en separat platform for at finde ud af, hvordan det skal fungere.

#11 Få øjnene monteret i kraniet.

#12 Byg den platform, som alt skal samles på. Saml alle brikkerne på platformen, lav stålbunden af kraniet til at holde den, tilføj tamburinkomponenterne.

#13 Prøv at få tærterne og brættet fra i huset ind i garagen og find ud af, hvordan du får det inde i platformen.

#14 Start tuning. Mere tuning, fortsæt med at stille ind. Indse, at jeg skal lave Python-koden multi-threaded, så alle handlingerne kan fungere sammen.

#15 Beslut dig for at tilføje energikuglen under vakuumrørene. Find ud af, at jeg kan gøre dette med en gammel mobiltelefon. Fik det til at fungere på mindre end en dag.

#16 Fortsæt med at tilføje detaljer. Spikes, kobbertråd, rør, antik kraniet. Bliv ved med at stemme og teste. Mal, rør op og ret ting, der bliver ved med at løsne sig, ombyg/forstærk ting, der falder fra hinanden.

#17 Test og tweak Gør dig klar til at vise det til andre mennesker.

Anbefalede: