Innholdsfortegnelse:

Magic Answers Ball med Arduino Pro Mini og TFT -skjerm: 7 trinn
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm: 7 trinn

Video: Magic Answers Ball med Arduino Pro Mini og TFT -skjerm: 7 trinn

Video: Magic Answers Ball med Arduino Pro Mini og TFT -skjerm: 7 trinn
Video: Leonard Cohen - Suzanne 2024, Juli
Anonim
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm

For en stund tilbake tok datteren min og jeg fra hverandre en Magic 8 -ball, slik at hun kunne erstatte de tjue svarene med svarene hun valgte. Dette var en gave til en venn av henne. Det fikk meg til å tenke på hvordan jeg skulle gjøre det i større skala. Kan vi ha mye mer enn 20 svar? Med en elektronisk versjon kan vi!

Så dette vil beskrive hvordan jeg demonterte en Mattel Magic 8 Ball (beklager, Mattel) og brukte en rund TFT-skjerm for å vise utrolig mange ekstra svar (det minste mikro-SD-kortet jeg kunne finne var 8 GB, så det er virkelig overkill for hva den brukes til). Ballen bruker et Sparkfun Wake-on-shake-brett for å utløse responsen og for å slå av ballen etterpå for å spare på batteriet. Et ladekort brukes for å la batteriet lades opp fra en USB -tilkobling.

Rekvisita

Deler:

Arduino Pro Mini 328 - 3.3V/8MHz

SparkFun Wake on Shake

Litiumionbatteri - 400mAh

Organizer 12pcs TP4056 Lademodul 5V Micro USB 1A 18650 Litiumbatteriladerkort med beskyttelsesladermodul (du trenger bare en av disse, men 12 -pakningen var mindre enn $ 9)

DAOKI 5Pcs Micro SD Storage Board (igjen, du trenger bare en, men 5 -pakken var fortsatt mindre enn $ 9)

DFRobot 2,2 tommers TFT LCD -skjermmodul

Kingston 8 GB microSD (du kan ha en gammel av disse liggende rundt huset ditt)

Perma-Proto Quarter-sized Breadboard PCB (du kan også bare bruke hvilken PCB du liker)

Magic 8 Ball

FTDI Basic breakout 3.3V (du kan allerede ha en av disse hvis du har gjort et lignende prosjekt med Arduino Pro Mini eller lignende brett)

4 -pinners hus med 2,54 mm JST XH mannlig/kvinnelig pinnehodet Dupont Wire Connector Kit (valgfritt, men anbefales for tilkobling av batteriet)

Andre grunnleggende forsyninger:

Sugru Moldable Lim (kan bruke duct tape og varmt lim, men jeg liker dette bedre)

Duct tape

Dobbeltsidig skumtape

Metalltråd

Verktøy:

Loddejern

Valgfritt roterende verktøy (dvs. Dremel)

Møbelklemme

Trinn 1: Skjær Magic 8 -ballen i to

Skjær Magic 8 -ballen i to
Skjær Magic 8 -ballen i to
Skjær Magic 8 -ballen i to
Skjær Magic 8 -ballen i to

Først må du dele Magic 8 Ball i to. Jeg festet mitt til et arbeidsbord med den flate siden ned med en møbelklemme. Ved hjelp av en Dremel med en grunnleggende skjæreskive festet, kuttes langs sømmen på ballen. Du må kutte dypt, så langt som skjæreskiven tillater det. Ta det rolig. Selv etter at du har kuttet helt rundt, må du kanskje bruke en flat skrutrekker eller meisel for å gjøre den siste separasjonen. Det er en sylinder som holder den "magiske" væsken og icosahedron (tjuehodet form - ja, jeg måtte se det opp) inne. Bare kast det eller bruk det i et annet prosjekt. Gi meg beskjed om hva du gjorde, hvis du bruker det i et annet prosjekt, så vet jeg hva jeg skal gjøre med mitt.

Du sitter igjen med to halvdeler som vist på bildene. Jeg har gjort dette tre ganger nå, og den siste gangen var den hvite leppen glatt i stedet for å ha rygger, så ballen din kan se litt annerledes ut enn den på bildet.

Det vil fortsatt være noe plastslagg rundt ytterkanten (den smeltede og etterherdede plasten). Bremse den med hendene, hvis du kan; Hvis du bruker et verktøy, risikerer du å skru opp finishen på ballen og slagget kommer ganske lett av.

Trinn 2: Forbered ballen

Forbered ballen
Forbered ballen
Forbered ballen
Forbered ballen
Forbered ballen
Forbered ballen

Det er to modifikasjoner vi må gjøre på plasthalvdelene av ballen.

Først, i den åpne halvdelen, den som har "8" malt på den, må vi barbere ut et område som er stort nok til at USB -ladekortet vårt kan sitte med USB -porten stikkende ut. Jeg brukte Dremel med en grov slipetrommel festet. Du vil ha dette så tynt du kan få uten å gå rent gjennom. Skjær deretter en liten åpning som er akkurat stor nok til at USB -porten kan stikke til utsiden. Jeg brukte en tykkelse for å måle USB -porten, men du kan sannsynligvis se dette hvis du trenger det. Igjen brukte jeg Dremel med et lite skjæreutstyr for å lage åpningen. De to første bildene viser åpningen og hvordan det ser ut med USB -kortet bak.

For det andre, i den andre halvdelen, den med hull på begge sider og den hvite plastleppen, forbereder du et sted for skjermen å sitte. Like innenfor åpningen der skjermen skal sitte, er det plastkanter og en gummiflens (?) På innsiden av åpningen. Ta flensen ut og sett den til side. Vi kommer til å sette det tilbake senere, men vi vil at det skal være av veien for dette trinnet. Skjermen har en rektangulær ekstrudering på den ene siden som ikke lar den sitte flatt i åpningen hvis noen av disse åsene ikke fjernes. Ved å bruke den grove slipetrommelen på Dremel igjen, bør du barbere dem så mye som mulig. Kom inn fra hullet der skjermen vil være for den beste vinkelen. Det skal se ut som bildene når de er ferdige. Vær oppmerksom på at bildene viser displayet på plass, men IKKE FESTE DET enda.

Trinn 3: Forbered svarene på Micro-SD-kortet

Dette trinnet er litt mer komplisert enn du kanskje tror. Hvis du ikke vil lage din egen liste med svar, går du til siste avsnitt i dette trinnet.

Intensjonen er at vi kan gi ballen en liste over strenger som skal brukes som mulige svar, og de vil være sentrert på skjermen uten pauser i midten av ord. Vi ønsker ikke å gjøre denne behandlingen på mikrokontrolleren, og vi vil ha en fil med statisk poststørrelse for å kunne finne en bestemt linje raskt.

Selv om skjermen er rund, er den funksjonelt en virtuell rektangulær skjerm med bare piksler i sirkelen synlig. Displayet kan vise tekst i flere størrelser, men vi bruker bare den minste versjonen som er 6 x 8 piksler. Med denne størrelsen er det 315 tegn som displayet kan sette på en skjerm (21 tegn per linje ganger 15 linjer), men bare 221 er synlige og hver linje har et annet antall synlige tegn. Ser du problemet?

Jeg skrev et Java -program for å ta inn en fil med uformaterte svar og konvertere dem til fullt sentrerte poster som enkelt kan vises på den runde TFT. (lenke for å laste ned filen "FormatToPicksFileFullyCentered.java").

Uten å gå inn på en forklaring av hele koden, er den generelle ideen at vi jobber oss bakover fra midten (ish) og setter inn mellomrom for å sikre at vi ikke bryter ord på tvers av synlige linjer, så gjør vi det samme fra senter fremover. Til slutt går vi gjennom alle linjene og sentrerer hver linje inne i de hele 21 tegnlinjene for å lage en post på nøyaktig 316 byte (315 alfanumeriske tegn pluss et nytt linjetegn). Koden fungerer faktisk gjennom tre fonter, x 3, x 2 og x 1 for å se hvilken som er den største skriften som kan brukes og fortsatt passer til teksten. Sentreringen er litt for x 2 og x 3 fonter, beklager. Vær forsiktig med tegn som tar mer enn en byte, disse kan kaste ut filen som sendes ut.

Kopier "picks.txt" -filen til micro-SD-kortet.

Hvis du ikke vil gå gjennom bryet med å lage din egen liste med plukker, har jeg tatt med listen min over plukker som du bare kan kopiere til SD -kortet og bruke. Jeg kunne ikke laste opp en.txt -fil til instrukser for øyeblikket, så her er en lenke til hvor du kan laste ned picks.txt -filen.

Trinn 4: Last opp kode til Arduino Mini

Last opp kode til Arduino Mini
Last opp kode til Arduino Mini
Last opp kode til Arduino Mini
Last opp kode til Arduino Mini
Last opp kode til Arduino Mini
Last opp kode til Arduino Mini

For det første, hvis du aldri har brukt Arduino Pro Mini før, kan du ikke bare koble til en USB -kabel og laste ned; du må bruke et FTDI -kort og koble ledningene til de riktige pinnene på mini. Jeg vil ikke gi en opplæring om det her, det er mye ute på nettet. For meg ønsket jeg ikke å lodde en permanent kontakt på mikrokontrollerkortet som bare ville bli brukt en gang for å laste ned koden, så jeg laget et lite klipp som kan brukes til å programmere mini uten lodding (se bilder). Dette var inspirert av produkter som Fiddy, men jeg har ikke lett tilgang til en 3D -skriver, så jeg lagde min egen av et potetgullklipp. Hvis folk er interessert, lager jeg en instruerbar bare for det.

Over til koden. Det er et par interessante deler av denne koden, men det er stort sett rett frem.

I oppsettfunksjonen er det en anstendig mengde kode som handler om å få et godt tilfeldig frø. Den typiske metoden for å bruke den analoge lesingen fra en ikke -tilkoblet pin gir ikke variert nok respons i min erfaring. Jeg får et tall mellom 477 og 482. Siden Arduino tilfeldig funksjon har en og bare en sekvens og seedet bestemmer hvor den skal begynne i den sekvensen, vil et så smalt område ikke gi nok mulige svar til slutt. Husk at denne koden i hovedsak starter på nytt hver gang Wake-on-shake-bordet slår av og på igjen, så den opprinnelige sekvensposisjonen som er bestemt av frøet er avgjørende. For å hjelpe med dette, skriver jeg en veldig liten fil til SD -kortet for å holde oversikt over det siste frøet og legge det til en ny verdi som kommer fra den ikke -tilkoblede pinnen.

Når et valg er valgt i sløyfefunksjonen og lest inn i en tegnmatrise, kan vi ikke bare skrive ut hele strengen. Displayet har en grense for hvor lang streng det kan håndtere om gangen. Av den grunn må vi gå gjennom hver av de femten linjene og sende dem til displayet en om gangen.

Nødvendige eksterne biblioteker:

ST7687S bibliotek

DFRobot-displaybibliotek

Trinn 5: Koble sammen komponentene

Koble sammen komponentene
Koble sammen komponentene
Koble sammen komponentene
Koble sammen komponentene

På tide å gjøre alt lodding av ledninger. Jeg hadde en tendens til å ta feil på siden av litt lengre ledninger enn jeg egentlig trengte, men det endte godt med.

I den vedlagte skjematikken er TFT -skjermen representert av en kontakt i stedet for et bilde av hele skjermen (som jeg ikke kunne finne en Fritzing -del for). Jeg har merket ledningene/pinnene basert på hvordan de er merket på delen. På samme måte er ikke SD -kortet det eksakte jeg brukte, men jeg merket ledningene/pinnene for delen som er oppført.

Det er en komponent jeg ikke loddet sammen på dette trinnet: batteriet. I stedet brukte jeg en firepinners kontakt med de to midtre pinnene fjernet (andre bilde). Dette lot meg teste alle komponentene som var koblet sammen og deretter koble fra batteriet mens jeg festet alt til ballen.

Til slutt brukte jeg en permanent PCB i fjerdedel for å gjøre strømmen og delte tilkoblinger enklere. Det ser du på monteringsbildene.

Test at alt fungerer

Trinn 6: Fest komponenter til ballen

Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen
Fest komponenter til ballen

Sett først skjermen på plass og bruk litt Sugru for å sikre den (de to første bildene). Ikke glem flensen du fjernet tidligere. Du bør ha den på plass før du fester skjermen på plass.

Deretter teipet jeg proto-brettet inn i bunnen av den tomme halvdelen av ballen. Jeg beholdt alle soldatene mine på den ene siden av brettet, så jeg hadde fremdeles halvparten av brettet som jeg kunne tape over. Jeg teipet deretter batteriet oppå den samme halvdelen av protokortet (tredje bilde).

Begge halvdelene er nå forbundet med ledninger. Finn ut hvor USB -hullet vil ende når du setter de to halvdelene sammen. Hvis den hvite leppen har piggene som stikker opp, må du huske på at den må komme ned sentrert i en av kilene på den hvite leppen fordi vi skal sikre USB -ladekortet mellom to av plastryggene på leppen.

Fest et USB-ladekort med et lite dobbeltsidig skumteip. Det dobbeltsidige båndet skal ikke dekke hele bunnen av ladekortet fordi enden med ledningene festet vil henge over senterkanten av den hvite leppen. Så båndet skal dekke omtrent tre fjerdedeler av den nedre overflaten av brettet. Sett tapen på bunnen av brettet først, og trykk den deretter inn på stedet du har bestemt deg for. USB -kontakten skal være i kanten av ballen, stikke inn i det svarte området på plasten uten å gå utenfor ballen. Til slutt, bruk litt mer Sugru over toppen av brettet og fest på begge sider. Dette gir bare ekstra styrke når en kabel skyves inn i USB -porten.

Sett mikro-SD-kortet inn i SD-kortmodulen nå

Du kan feste de andre komponentene til den hvite leppen hvis du ønsker det. Jeg gjemte bare de resterende komponentene bak skjermen.

Trinn 7: Sett de to halvdelene sammen igjen

Sett de to halvdelene sammen igjen
Sett de to halvdelene sammen igjen
Sett de to halvdelene sammen igjen
Sett de to halvdelene sammen igjen

Dobbeltsjekk at du har satt inn SD -kortet og at du har testet alle komponentene sammen.

Ok, hvis du er klar, lag en lang slange av litt Sugru -lim og kjør den hele veien rundt kanten av ballen med den hvite leppen (første bilde). Limet skal legges rett på krysset der de svart -hvite delene av plasten kommer sammen. Å sette limet her sørger for at du har en sterk binding mens du minimerer mengden lim som klemmer ut fra sprekken etter at de to halvdelene er sammenføyd.

Trykk de to halvdelene sammen og sørg for at USB -porten stikker gjennom hullet som tidligere var kuttet for den. Bruk møbelklemmen til å klemme de to halvdelene sammen akkurat tett nok til å holde halvdelene sammen, du trenger ikke å klemme den hardt ned. Sugru -limet vil herde på omtrent 24 timer.

Hvis du har noe av limet som klemmes ut av skjøten, kan du skrape det av med fingeren eller en glatt klut/papirhåndkle.

Anbefalt: