Inhoudsopgave:

Magic Answers Ball met Arduino Pro Mini en TFT-display - Ajarnpa
Magic Answers Ball met Arduino Pro Mini en TFT-display - Ajarnpa

Video: Magic Answers Ball met Arduino Pro Mini en TFT-display - Ajarnpa

Video: Magic Answers Ball met Arduino Pro Mini en TFT-display - Ajarnpa
Video: Don't Do This At Home 2024, Juli-
Anonim
Magic Answers Ball met Arduino Pro Mini en TFT-display
Magic Answers Ball met Arduino Pro Mini en TFT-display
Magic Answers Ball met Arduino Pro Mini en TFT-display
Magic Answers Ball met Arduino Pro Mini en TFT-display
Magic Answers Ball met Arduino Pro Mini en TFT-display
Magic Answers Ball met Arduino Pro Mini en TFT-display

Een tijdje terug hebben mijn dochter en ik een Magic 8-bal uit elkaar gehaald, zodat ze de twintig reacties kon vervangen door een van haar keuze. Dit was een cadeau voor een vriendin van haar. Dat zette me aan het denken hoe ik dat op grotere schaal kon doen. Kunnen we veel meer dan 20 reacties krijgen? Met een elektronische versie kunnen we dat!

Dit zal dus beschrijven hoe ik een Mattel Magic 8 Ball heb gedemonteerd (sorry, Mattel) en een rond TFT-scherm heb gebruikt om een ongelooflijk aantal extra reacties te tonen (de kleinste micro-SD-kaart die ik kon vinden was 8 GB, dus het is echt overkill voor waarvoor het wordt gebruikt). De bal maakt gebruik van een Sparkfun Wake-on-shake-bord om de reactie te activeren en om de bal daarna uit te schakelen om de batterij te sparen. Een oplaadkaart wordt gebruikt om de batterij op te laden via een USB-verbinding.

Benodigdheden

Onderdelen:

Arduino Pro Mini 328 - 3.3V/8MHz

SparkFun Wake on Shake

Lithium-ionbatterij - 400mAh

Organizer 12st TP4056 Oplaadmodule 5V Micro USB 1A 18650 Oplaadkaart voor lithiumbatterijen met beschermingsladermodule (je hebt er maar één nodig, maar het pakket van 12 was minder dan $ 9)

DAOKI 5-delige Micro SD-opslagkaart (nogmaals, je hebt er maar één nodig, maar het 5-pack was nog steeds minder dan $ 9)

DFRobot 2,2 inch TFT LCD-schermmodule

Kingston 8 GB microSD (misschien heb je nog een oude in huis liggen)

Perma-Proto Quarter-sized Breadboard PCB (je kunt ook gewoon elke PCB gebruiken die je wilt)

Magische 8 Ball

FTDI Basic breakout 3.3V (misschien heb je er al een als je een soortgelijk project hebt gedaan met de Arduino Pro Mini of een vergelijkbaar bord)

4-pins behuizing met 2,54 mm JST XH mannelijke/vrouwelijke pin-header Dupont-draadconnectorkit (optioneel, maar aanbevolen voor het aansluiten van de batterij)

Andere basisbenodigdheden:

Sugru Moldable Glue (kan ducttape en hete lijm gebruiken, maar ik vind dit beter)

Duct tape

Dubbelzijdige schuimtape

Draad

Gereedschap:

Soldeerbout

Roterend gereedschap naar keuze (bijv. Dremel)

Meubelklem

Stap 1: Snijd de Magic 8 Ball doormidden

Snijd de Magic 8 Ball doormidden
Snijd de Magic 8 Ball doormidden
Snijd de Magic 8 Ball doormidden
Snijd de Magic 8 Ball doormidden

Eerst moet je de Magic 8 Ball in tweeën splitsen. Ik bevestigde de mijne aan een werktafel met de platte kant naar beneden met behulp van een meubelklem. Gebruik een Dremel waarop een standaard snijschijf is bevestigd om langs de naad van de bal te snijden. U moet diep snijden, zo ver als de snijschijf toestaat. Doe het langzaam aan. Zelfs nadat u helemaal rond hebt gesneden, moet u mogelijk een platte schroevendraaier of beitel gebruiken om de definitieve scheiding te maken. Er is een cilinder die de "magische" vloeistof en de icosaëder (twintigzijdige vorm - ja, dat moest ik opzoeken) erin bevat. Gooi dat gewoon weg of gebruik het in een ander project. Als je het in een ander project gebruikt, laat me dan weten wat je hebt gedaan, zodat ik weet wat ik met het mijne moet doen.

Je houdt twee helften over zoals op de foto's. Ik heb dit nu drie keer gedaan en de meest recente keer was de witte lip glad in plaats van ribbels, dus je bal kan er iets anders uitzien dan die op de foto.

Er zal nog wat plastic slak rond de buitenrand zitten (het gesmolten en opnieuw uitgeharde plastic). Rem dat af met je handen, als je kunt; het gebruik van een gereedschap loopt het risico dat de afwerking op de bal wordt beschadigd en de slak komt vrij gemakkelijk los.

Stap 2: Bereid de bal voor

Bereid de bal voor
Bereid de bal voor
Bereid de bal voor
Bereid de bal voor
Bereid de bal voor
Bereid de bal voor

Er zijn twee aanpassingen die we moeten maken aan de plastic helften van de bal.

Ten eerste, in de open helft, degene met de "8" erop geschilderd, zullen we een gebied moeten scheren dat groot genoeg is voor ons USB-oplaadbord om te zitten met de USB-poort die uitsteekt. Ik gebruikte mijn Dremel met een grove schuurtrommel eraan bevestigd. Je wilt dit zo dun als je kunt krijgen zonder er doorheen te gaan. Snijd vervolgens een kleine opening die net groot genoeg is om de USB-poort naar buiten te laten steken. Ik heb een schuifmaat gebruikt om de USB-poort te meten, maar je kunt dit waarschijnlijk in de gaten houden als dat nodig is. Nogmaals, ik gebruikte de Dremel met een klein snijhulpstuk om de opening te maken. De eerste twee foto's laten de opening zien en hoe dat eruit ziet met het USB-bord erachter.

Ten tweede, in de andere helft, degene met het gat aan BEIDE zijden en de witte plastic lip, maak een plek voor het display om te zitten. Net binnen de opening waar het scherm zal zitten, zijn er plastic ribbels en een rubberen (?) flens aan de binnenkant van de opening. Haal de flens eruit en leg deze opzij. We zullen dat later terugzetten, maar we willen dat uit de weg voor deze stap. Het scherm heeft aan één kant een rechthoekige extrusie waardoor het niet plat in de opening kan blijven zitten als sommige van deze richels niet worden verwijderd. Gebruik opnieuw de grove schuurtrommel op de Dremel om deze zoveel mogelijk af te scheren. Kom binnen vanuit het gat waar het scherm zal zijn voor de beste hoek. Het zou eruit moeten zien als de foto's als het klaar is. Let op, de afbeeldingen tonen het display op zijn plaats, maar BEVESTIG HET nog NIET.

Stap 3: bereid de antwoorden op de micro-SD-kaart voor

Deze stap is iets ingewikkelder dan je zou denken. Als u geen eigen lijst met antwoorden wilt maken, gaat u verder met de laatste alinea van deze stap.

Het is de bedoeling dat we de bal een willekeurige lijst met tekenreeksen kunnen geven die als mogelijke antwoorden kunnen worden gebruikt en dat ze gecentreerd op het scherm zullen zijn zonder onderbrekingen in het midden van woorden. We willen deze verwerking niet op de microcontroller doen en we willen een bestand met een statische recordgrootte om een bepaalde regel snel te kunnen vinden.

Hoewel het scherm rond is, is het functioneel een virtueel rechthoekig scherm met alleen pixels binnen de cirkel zichtbaar. Het display kan meerdere tekstformaten weergeven, maar we gebruiken alleen de kleinste versie van 6 x 8 pixels. Met deze grootte zijn er 315 karakters die het display op een scherm kan zetten (21 karakters per regel maal 15 regels), maar er zijn er slechts 221 zichtbaar en elke regel heeft een ander aantal zichtbare karakters. Zie je het probleem?

Ik heb een Java-programma geschreven om een bestand met ongeformatteerde antwoorden op te nemen en om te zetten in volledig gecentreerde records die gemakkelijk op de ronde TFT kunnen worden weergegeven. (link om het bestand "FormatToPicksFileFullyCentered.java" te downloaden).

Zonder in te gaan op een uitleg van de hele code, is het algemene idee dat we vanuit het midden achteruit werken en spaties invoegen om ervoor te zorgen dat we geen woorden over zichtbare lijnen breken, en dan hetzelfde doen vanaf de centrum naar voren. Ten slotte doorlopen we alle regels en centreren we elke regel binnen de volledige regels van 21 tekens om een record te creëren van precies 316 bytes (315 alfanumerieke tekens plus een teken voor een nieuwe regel). De code werkt in feite door drie lettertypen, x 3, x 2 en x 1 om te zien welk lettertype het grootste is dat kan worden gebruikt en toch in de tekst past. De centrering is een beetje uit voor de x 2 en x 3 lettertypen, sorry. Wees voorzichtig met karakters die meer dan één byte in beslag nemen, deze kunnen het bestand dat wordt uitgevoerd afschudden.

Kopieer het bestand "picks.txt" naar de micro-SD-kaart.

Als je niet de moeite wilt nemen om je eigen lijst met keuzes te maken, heb ik mijn lijst met keuzes toegevoegd die je gewoon naar de SD-kaart kunt kopiëren en gebruiken. Ik kon op dit moment geen.txt-bestand uploaden naar instructables, dus hier is een link naar waar je het picks.txt-bestand kunt downloaden.

Stap 4: Upload code naar de Arduino Mini

Upload code naar de Arduino Mini
Upload code naar de Arduino Mini
Upload code naar de Arduino Mini
Upload code naar de Arduino Mini
Upload code naar de Arduino Mini
Upload code naar de Arduino Mini

Ten eerste, als je de Arduino Pro Mini nog nooit eerder hebt gebruikt, kun je niet zomaar een USB-kabel aansluiten en downloaden; je moet een FTDI-bord gebruiken en de draden aansluiten op de juiste pinnen op de mini. Ik zal hier geen tutorial over geven, er zijn er genoeg op internet. Voor mij wilde ik geen permanente connector op het microcontrollerbord solderen die maar één keer zou worden gebruikt om de code te downloaden, dus heb ik een klein clipje gemaakt dat kan worden gebruikt om de mini te programmeren zonder te solderen (zie foto's). Dit werd geïnspireerd door producten zoals Fiddy, maar ik heb geen gemakkelijke toegang tot een 3D-printer, dus heb ik mijn eigen gemaakt van een aardappelchipclip. Als mensen geïnteresseerd zijn, zal ik daarvoor een instructable maken.

Op naar de code. Er zijn een aantal interessante onderdelen van deze code, maar het is meestal ongecompliceerd.

In de setup-functie is er een behoorlijke hoeveelheid code die te maken heeft met het verkrijgen van een goede willekeurige seed. De typische methode om de analoge uitlezing van een niet-verbonden pin te gebruiken, geeft naar mijn ervaring geen gevarieerd genoeg antwoord. Ik krijg een getal tussen 477 en 482. Aangezien de Arduino-random-functie één en slechts één reeks heeft en het zaad bepaalt waar te beginnen in die reeks, zal zo'n smal bereik uiteindelijk niet genoeg mogelijke antwoorden opleveren. Houd er rekening mee dat deze code in wezen opnieuw begint elke keer dat het Wake-on-shake-bord de stroom uit- en weer inschakelt, dus de initiële volgordepositie bepaald door de seed is cruciaal. Om hierbij te helpen, schrijf ik een heel klein bestand naar de SD-kaart om de laatste seed bij te houden en dat toe te voegen aan een nieuwe waarde die afkomstig is van de niet-verbonden pin.

Als een keuze eenmaal is geselecteerd in de lusfunctie en in een tekenreeks is ingelezen, kunnen we niet zomaar de hele tekenreeks afdrukken. Het display heeft een limiet voor de lengte van een string die het tegelijk aankan. Om die reden moeten we elk van de vijftien regels doorlopen en ze één voor één naar het scherm sturen.

Vereiste externe bibliotheken:

ST7687S Bibliotheek

DFRobot-Bibliotheek weergeven

Stap 5: Sluit de componenten aan

Sluit de componenten aan
Sluit de componenten aan
Sluit de componenten aan
Sluit de componenten aan

Tijd om al het solderen van draden te doen. Ik had de neiging om me te vergissen aan de kant van iets langere draden dan ik echt nodig had, maar dat kwam uiteindelijk goed uit.

In het bijgevoegde schema wordt het TFT-scherm weergegeven door een connector in plaats van een afbeelding van het hele scherm (waarvoor ik geen Fritzing-onderdeel kon vinden). Ik heb de draden / pinnen gelabeld op basis van hoe ze op het onderdeel zijn gelabeld. Evenzo is de SD-kaart niet de exacte die ik heb gebruikt, maar ik heb de draden / pinnen voor het vermelde onderdeel gelabeld.

Er is één onderdeel dat ik bij deze stap niet aan elkaar heb gesoldeerd: de batterij. In plaats daarvan gebruikte ik een vier-pins connector met de twee middelste pinnen verwijderd (tweede foto). Hierdoor kon ik alle componenten met elkaar testen en vervolgens de batterij loskoppelen terwijl ik alles aan de bal bevestigde.

Ten slotte heb ik een permanente breadboard-printplaat van kwartformaat gebruikt om de stroom en gedeelde verbindingen gemakkelijker te maken. Dat zie je op de montagefoto's.

Test of alles werkt

Stap 6: Bevestig componenten aan de bal

Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen
Onderdelen aan de bal bevestigen

Plaats eerst het display op zijn plaats en gebruik wat Sugru om het te beveiligen (eerste twee afbeeldingen). Vergeet de flens niet die u eerder hebt verwijderd, u moet die weer op zijn plaats hebben voordat u het scherm op zijn plaats bevestigt.

Vervolgens heb ik het proto-board in de onderkant van de lege helft van de bal geplakt. Ik hield al mijn soldeer aan één kant van het bord, dus ik had nog steeds de helft van het bord dat ik kon afplakken. Vervolgens heb ik de batterij op dezelfde helft van het proto-board geplakt (derde afbeelding).

Beide helften zijn nu verbonden door draden. Zoek uit waar het USB-gat zal eindigen als je de twee helften tegen elkaar legt. Als de witte lip de stekels omhoog heeft, houd er dan rekening mee dat deze gecentreerd naar beneden moet komen in een van de wiggen van de witte lip, omdat we het USB-oplaadbord tussen twee van de plastic richels op de lip zullen bevestigen.

Gebruik een klein stukje dubbelzijdig schuimtape om het USB-oplaadbord te bevestigen. De dubbelzijdige tape mag niet de hele onderkant van het laadbord bedekken, omdat het uiteinde met de bevestigde draden over de middenrand van de witte lip zal hangen. De tape moet dus ongeveer driekwart van de onderkant van het bord bedekken. Leg eerst de tape op de onderkant van het bord en druk het vervolgens op de plek die je hebt gekozen. De USB-connector moet zich aan de rand van de bal bevinden en in het zwarte gedeelte van het plastic steken zonder buiten de bal te gaan. Gebruik ten slotte wat meer Sugru over de bovenkant van het bord en zet het aan beide kanten vast. Dit voegt alleen maar extra kracht toe voor wanneer een kabel in de USB-poort wordt geduwd.

Plaats de micro-SD-kaart nu in de SD-kaartmodule

De overige onderdelen kunt u desgewenst aan de witte lip bevestigen. Ik heb gewoon de resterende componenten achter het scherm gestopt.

Stap 7: Zet de twee helften weer bij elkaar

Zet de twee helften weer bij elkaar
Zet de twee helften weer bij elkaar
Zet de twee helften weer bij elkaar
Zet de twee helften weer bij elkaar

Controleer nogmaals of u de SD-kaart hebt geplaatst en dat u alle componenten samen hebt getest.

Ok, als je klaar bent, maak dan een lange slang van wat Sugru-lijm en laat deze helemaal rond de rand van de helft van de bal lopen met de witte lip (eerste foto). De lijm moet precies op de kruising worden gelegd waar de zwarte en witte delen van het plastic samenkomen. Door de lijm hier aan te brengen, zorgt u voor een sterke hechting en minimaliseert u de hoeveelheid lijm die uit de scheur komt nadat de twee helften zijn samengevoegd.

Druk de twee helften tegen elkaar en zorg ervoor dat de USB-poort door het eerder gemaakte gat steekt. Gebruik de meubelklem om de twee helften net strak genoeg op elkaar te klemmen om de helften bij elkaar te houden, het is niet nodig om ze hard vast te klemmen. De Sugru-lijm zal in ongeveer 24 uur uitharden.

Als je wat van de lijm hebt die uit de verbinding is geperst, schraap het dan weg met je vinger of een gladde doek/papieren handdoek.

Aanbevolen: