Inhoudsopgave:

Space Invaders Clock (met een beperkt budget!): 6 stappen (met afbeeldingen)
Space Invaders Clock (met een beperkt budget!): 6 stappen (met afbeeldingen)

Video: Space Invaders Clock (met een beperkt budget!): 6 stappen (met afbeeldingen)

Video: Space Invaders Clock (met een beperkt budget!): 6 stappen (met afbeeldingen)
Video: Online marketing voor beginners: In 6 stappen aan de slag (2022 | Nederlands) 2024, Juli-
Anonim
Image
Image
Onderdelen verzamelen
Onderdelen verzamelen

Onlangs zag ik een gave build van GeckoDiode en ik wilde hem meteen zelf bouwen. De Instructable is Space Invaders Desktop Clock en ik raad je aan er eens naar te kijken nadat je dit hebt gelezen.

Het project is bijna uitsluitend opgebouwd uit onderdelen afkomstig van Adafruit met een 3D-geprinte behuizing en een lasergesneden dashboard. Alles bij elkaar optellen bij de bouwkosten wordt erg kostbaar! (ongeveer € 100 of meer). Het probleem is dat als je geen 3D-printer hebt, je moet betalen om je model te laten printen, of een lelijke behuizing van eBay moet kopen die vaak net iets te klein, te smal, te kort of juist het tegenovergestelde is.

De meeste van mijn builds moeten worden gedaan met een budget voor hobbyisten en behuizingen zijn altijd het duurste onderdeel. Dus besloot ik dezelfde klok te bouwen, maar met een behoorlijk budget.

Als je graag naar rare klokken kijkt, bekijk dan mijn Steampunk Voltmeter Clock, die dezelfde bouwmaterialen gebruikt voor de behuizing:-)

Stap 1: Verzamel onderdelen

Om dit project te maken heb je het volgende nodig. Houd er rekening mee dat je met de materialen voor de behuizing VEEL overblijfselen zult hebben die je in andere projecten kunt gebruiken (waardoor de kosten van toekomstige builds nog goedkoper worden). Ik heb PDF's geüpload van de spullen die je nodig hebt als je de prijs enz. op eBay wilt controleren.

Tools (ik neem aan dat je deze al hebt)

  • Soldeerbout
  • Soldeer
  • Soldeerpomp (als je een fout maakt en soldeer moet verwijderen)
  • Heet lijmpistool
  • Hete lijmsticks
  • Ambachtsmes (ook bekend als stanleymes)
  • Liniaal / meetlint / schuifmaat
  • Accuboormachine + boren (1 mm tot 13 mm)
  • Roterende multitool met doorslijpschijf (ook bekend als Dremel)
  • Reinigingsvloeistof zoals isopropylalcohol (goedkope aftershave werkt ook)
  • Veiligheidsmasker (gebruikt bij verfspuiten)

Elektronica (Kosten van elektronica = £ 13,05)

Sommige daarvan had ik gratis. In oud elektronisch speelgoed zitten deze mooie Mylar-luidsprekers als je ze uit elkaar haalt. Terwijl je daar bent, kun je waarschijnlijk ook een DC-cilinder en een drukknop krijgen.

  • Dupont / startkabels - £ 0,99
  • DS1307 Real-time klokmodule - £ 0,99 (ik raad aan om in plaats daarvan DS3231 te kopen, indien beschikbaar)
  • Arduino nano + usb-kabel - £ 2,23
  • 8 Ohm Mylar-luidspreker - £ 0,99
  • SPST tijdelijke drukknop - £ 1,49
  • 5,5 mm DC-cilinderbus - £ 1,26
  • 5v, 0,5A gelijkstroomvoeding - £ 2,83
  • MAX7219 Dot matrix-display - £ 3,76

Behuizing (kosten van behuizingsmaterialen = £ 17,19)

  • 60 mm vierkante afvoerpijp - £ 5,99 (je hebt hier VEEL van over voor meer projecten)
  • Zwarte spuitverf - £ 4,85
  • Zwart PVC (schuimplaat) - £ 2,99
  • Superlijm - £ 0,99
  • 60 mm eindkappen - £ 2,37

Totale kosten = £30,24:-) ……..vanaf vandaag is dit het equivalent van 38 USD voor alle internationale lezers.

Ik werk graag met de vierkante PVC-buis. Ze zijn gemakkelijk te boren, snijden, schilderen en ik gebruikte er een voor mijn Steampunk-klok.

Stap 2: bereid je afvoerpijp voor

Bereid je afvoerpijp voor
Bereid je afvoerpijp voor

Markeer waar je dingen wilt neerzetten

Dit was zo gemakkelijk. Ik heb niets bijzonders gebruikt. Eerst heb ik de lengte van 2,5 m met een ijzerzaag teruggebracht tot een redelijke maat voor mijn bank thuis (ongeveer 30 cm). Ik heb dit later met een dremel ingekort om de randen mooi recht te maken. Daarna liet ik de componenten op het oppervlak van de buis rusten en gebruikte een permanente markt om te markeren waar ik wilde boren en snijden. Ik volgde de buitenkant van de LED-matrix en gebruikte een roterende multitool om een vierkant gat te maken zodat het vlak paste. Ik heb een digitale schuifmaat gebruikt om de diameter van de drukknop en de DC-cilinder te meten om de juiste maat gaten in de achterkant en bovenkant te snijden.

Snijd een bezel

Ik heb heel veel PVC-schuimplaten liggen van eerdere projecten. Ze zijn geweldig voor het monteren van circuits in behuizingen, gebruiken om epoxy samen te mengen en andere stukjes en beetjes te maken. Neem een stuk A4- of A5-formaat en snij een vierkante rand of rand van 5 mm om de LED-matrix in te kaderen. Dit verbergt eventuele wankele uiteinden die u hebt gemaakt bij het snijden van het vierkante gat voor de matrix. Hiervoor tekende ik een klein sjabloon op Inkscape en printte het uit (SVG-bestand bijgevoegd). Ik heb het vervolgens met plakband op het foamboard geplakt en er voorzichtig omheen gesneden met een knutselmes. Het is lastig om het goed te krijgen, ik raad aan eerst de binnenkant te snijden en dan de buitenkant.

Verf alles

Zodra alle gaten zijn geboord en gesneden, verwijdert u eventuele braamranden. Reinig de oppervlakken met wat alcoholdoekjes om stof of vervuiling te verwijderen (of een goedkope aftershave als je geen IPA hebt). Probeer te sprayen in een goed geventileerde ruimte en gebruik waar mogelijk een masker. Ik deed dit buiten met wat karton op de vloer maar het is niet ideaal, zelfs een klein briesje kan ervoor zorgen dat verf terug in je gezicht vliegt. Wees voorzichtig en draag waar mogelijk beschermende uitrusting.

Spuit de pijp, ring en eindkappen in zodat ze allemaal van hetzelfde type zwart zijn en laat ze vervolgens een paar uur drogen.

Stap 3: Programmeer de Arduino

Programmeer de Arduino
Programmeer de Arduino

Wat informatie over de code:

Met dank aan GeckoDiode omdat ik zijn code heb genomen en deze heb aangepast om te werken met de MAX7219-chip. De Adafruit-versie gebruikt de I2C-bus en de MAX gebruikt de SPI-bus. Hiervoor gebruikte ik de MaxMatrix-bibliotheek, die ik heb gedownload en geïnstalleerd in de Arduino IDE. Als u meer wilt weten over MaxMatrix en hoe de LED-matrix in principe werkt, is er een zeer korte tutorial op HowToMechatronics.com. De LED-matrix bestaat uitsluitend uit een enkele kleur LED's in plaats van een meerkleurig display.

Een frustratie die ik had, is dat er GEEN duidelijke definities zijn van wat de functies van de bibliotheek zijn en welke argumenten in elk ervan moeten worden doorgegeven. Gelukkig kon ik er met vallen en opstaan achter komen wat wat deed en uiteindelijk was het niet al te moeilijk om het goed werkend te krijgen. Het eerste dat u moet begrijpen, is dat u moet definiëren hoeveel 8x8-modules zich in uw matrix bevinden. In mijn code wordt dit opgeslagen in een geheel getal dat "modules" wordt genoemd, zoals dit:

"int-modules = 4;"

Dit is het AANTAL 8x8 modules dat u in uw display aan elkaar hebt gekoppeld. Niet het aantal LED's of welke pin je de verzendgegevens gebruikt. Het volgende dat je moet onthouden is dat als je "sprite" of wat dan ook alle vier de matrices dekt, de byte-array als volgt moet worden gedefinieerd:

"byte text_start_bmp = {32, 8, …*sommige bytegegevens*…};"

De cijfers geven het aantal rijen en kolommen in de matrix aan. Bij deze gelegenheid wordt de byte met de naam "text_start_bmp" weergegeven over 32 kolommen en 8 rijen. De getallen worden alleen weergegeven op één enkele 8x8-matrix, dus het minuutnummer 10 ziet er als volgt uit:

"byte minute_ten_bmp = {8, 8, …*sommige bytegegevens*…};"

De indringers beslaan twee matrices, dus de byte krijgt 16, 8 in de bytegegevens.

Het andere dat me opviel, was de positionering van de sprite-gegevens. Je kunt de Arduino vragen om de sprite in een andere X/Y-positie op de matrix weer te geven dan de standaard startpositie. De code ziet er als volgt uit voor de minuut nul:

"matrix.writeSprite(8, 0, minute_zero_bmp);"

Het ene getal is de X-aanpassing en het andere is Y. Ik weet nu niet meer welke dat is, maar als je de sprite 1 rij of kolom omhoog of omlaag wilt bewegen, verhoog je het getal positief of min. Eenvoudig genoeg voor een 8x8-matrix, maar als uw sprite meer dan één matrix beslaat, moet u de startpositie dienovereenkomstig instellen. De "POP" sprite wordt hieronder weergegeven:

"matrix.writeSprite(16, 0, invader_pop_bmp);"

Merk nu op dat de thuispositie 16 is en niet 8? Hier geeft de code aan dat de sprite van links naar rechts wordt weergegeven vanaf positie rij/kolom 16. Het beschouwt twee 8x8-displays als één 16x8-display, ook al zijn er 4! Daarom is het belangrijk om na te denken over hoeveel schermen de sprite zal worden weergegeven en om de bytearray van elke sprite dienovereenkomstig aan te passen. Anders heb je een aantal zeer interessante sprites!

DS1307 RTC

Hoewel de DS1307 prima werkt met de Adafruit RTClib.h-bibliotheek, kun je de tijd niet handmatig instellen, wat alleen lastig is. Ik ging hier gewoon mee akkoord omdat het minder code betekende om te veranderen. De DS1307 stelt de tijd in met behulp van de tijd en datum waarop de code is samengesteld uit de tijd van uw computer. Leer in plaats daarvan hoe u de DS3231-bibliotheek gebruikt en stel deze in de toekomst een of twee minuten vooruit in. Het heeft ook minder "drift", dus het houdt de tijd beter na verloop van tijd. Beide modules gebruiken de I2C-bus en ik geloof dat de DS3231 kan worden gebruikt met de RTClib.h als je hem wilt blijven gebruiken.

Upload de code

Zodra u tevreden bent met de code, uploadt u deze naar de Arduino. Ik heb mijn Arduino-schets ter overweging bijgevoegd.

Stap 4: Elektronica monteren

Elektronica monteren
Elektronica monteren

Tijdens het uploaden van de code zou ik aanraden om de elektronica eerst met dupont/jumper-draden op een breadboard te laten monteren, dus als je de code uploadt, weet je dat alles werkt zoals bedoeld. Dit stelt je in staat om eventuele problemen met het weergeven van de sprites enz. glad te strijken voordat je begint met lijmen en plakken. In mijn code kun je zien dat ik digitale pinnen 4, 5, 6, 7, 9 gebruik, maar je kunt deze indien nodig wijzigen. Mogelijk moet u kabels op de knop, de DC-aansluiting en de luidspreker solderen, maar de meeste moeten eenvoudige connectoren in push-fit-stijl zijn.

Als u eenmaal tevreden bent dat de elektronica werkt zoals bedoeld, kunt u overwegen de verbindingen te solderen. Dit kan met koperstripboard/veroboard, maar voor de kleine hoeveelheid componenten kun je direct op de pinnen van de Arduino solderen. Het ziet eruit als een rattennest, maar niemand kan in de behuizing kijken als het eenmaal is gemonteerd, zorg er gewoon voor dat alle metalen onderdelen gescheiden zijn, je wilt niet dat er iets kortsluiting in de behuizing komt.

Ik heb de drukknop laten werken wanneer de pin "mainButton" laag wordt getrokken. Ik ontdekte dat de Arduino een valse drukknop herkende die werd ingedrukt toen zwevende elektronica erop afkwam. Het gebruik van een 10K pulldown-weerstand op de drukknop en het instellen van de pin op "INPUT_PULLUP" loste dat probleem voor mij op.

Bijgevoegd is het schema in PDF en PNG, zodat u weet waar u de pinnen moet aansluiten.

Stap 5: Monteer de elektronica en sluit omhoog

Monteer de elektronica en close-up
Monteer de elektronica en close-up
Monteer de elektronica en close-up
Monteer de elektronica en close-up

Voor mijn klok heb ik de elektronica met hete lijm gemonteerd, maar pas op dat je niet te veel aanbrengt (elektronica houdt niet van te lang opwarmen). Ik gebruikte een kleine druppel superlijm gestippeld rond de ring en drukte deze tegen de voorkant. Ik heb de behuizing afgemaakt door de eindkappen aan elk uiteinde in te drukken. Natuurlijk kun je de eindkappen lijmen om de assemblage volledig te omsluiten, maar ik heb een kant van de mijne opengelaten zodat ik nog steeds toegang heb tot de USB-poort van de arduino om de datum en tijd in de toekomst opnieuw in te stellen.

Stap 6: Geniet ervan

Genieten van
Genieten van
Genieten van
Genieten van

Over het algemeen ben ik tevreden met de manier waarop dit uitkwam, aangezien het slechts een gootpijp en spuitverf was. Ik hoop dat je het leuk vindt en laat het me weten als je coole upgrades kunt bedenken die kunnen worden toegevoegd. Ik zou graag willen weten of iemand dit goedkoper kan maken of dat er een andere zuinige manier is om een behuizing te maken die ik in mijn volgende project kan proberen.

Aanbevolen: