Annons

Julen är här igen, och oavsett om det är din favoritsemester under året eller om det tar dig ut i en kall svett, börjar dekorationerna gå upp. I år, varför inte integrera lite DIY-teknik i dina dekorationer så att de sticker ut?

I detta projekt kommer vi att bygga en väderbeständig, rörelseaktiverad 8 x 8 LED-matris från början... för under 20 dollar. Den är utformad för att passa i mitten av en vanlig juldörrkrans, även om den kan användas var som helst runtom i huset. Och eftersom det är batteridrivet, var som helst bort från huset också!

Dellista

För detta projekt behöver du:

  • Arduino.
    • Jag använde nano för den är liten, men du kan använda nästan vilken som helst Arduino-kompatibel mikrokontroller Arduino Buying Guide: Vilket styrelse ska du få?Det finns så många olika typer av Arduino-brädor där ute, du skulle bli förlåten för att du är förvirrad. Vilket ska du köpa för ditt projekt? Låt oss hjälpa till med denna Arduino-köpguide! Läs mer .
  • 64 x röda lysdioder.
  • 8 x 220 Ohm-motstånd.
  • PIR rörelsessensor.
    instagram viewer
    • Många Arduino-startpaket Vad ingår i ett Arduino-startpaket? [MakeUseOf Explains]Jag har tidigare introducerat Arduino-open source-hårdvaran här på MakeUseOf, men du kommer att behöva mer än bara själva Arduino för att bygga något ur det och faktiskt komma igång. Arduino "startpaket" är ... Läs mer kom med dessa. Jag köpte en multi-pack från Amazon för 10 dollar.
  • 1 bit av prototypertavla.
    • Den som användes här var 9 x 7 cm, men du kan använda valfri storlek.
  • 7-12v batteri.
    • Ett enkelt batteripaket används här av budgetskäl, men a mobil bankladdare De bästa Pokémon Go Power BanksPokemon Go slår hecket ur telefonens batteri. För att pressa lite mer Pokemon-fångande juice ur telefonen krävs en powerbank. Men vad är det bästa batteriet där ute? Läs mer kan hålla ännu längre.
  • Blandade korta bitar av tråd.
  • Tupperware-box eller liknande väderbeständig kapsling.
    • Se till att den ska vara tillräckligt stor för att passa alla dina komponenter inuti!
  • Julkrans.
    • Någon kommer att göra, bara se till att kapslingslådan passar inuti den.
  • Lödkolv och löd.

Även om det inte är absolut nödvändigt eftersom du kunde löda komponenterna direkt till Nano, tyckte jag också att en liten brödskiva var mycket användbar när jag testade. En varm limpistol hjälper också till att sätta ihop alla delar.

julkrans ledde matrisdelar

Detta projekt kräver en hel del lödning, och som nybörjare kan det verka skrämmande. Jag är personligen fortfarande mycket nybörjare i lödning och tyckte att det inte var så utmanande eller tidskrävande som det verkar. Om du också är ny på lödning här är några bra tips för att hjälpa Lär dig att löda med dessa enkla tips och projektÄr du lite skrämd av tanken på ett varmt järn och smält metall? Om du vill börja arbeta med elektronik kommer du att behöva lära dig att löda. Låt oss hjälpa till. Läs mer .

Om du verkligen inte är intresserad av idén om lödning är det här projektet också möjligt med LED-remsor Helgprojekt: Bygg en jätte LED-pixeldisplayJag älskar LED-pixlar: ljusa, enkla att kontrollera, billiga och så mångsidiga. Idag kommer vi att förvandla dem till en stor pixeldisplay som kan hängas på väggen. Läs mer , eller en färdiggjord LED-matris som du kan ha i ditt startpaket. Vissa kodjusteringar kommer att krävas om du bestämmer dig för att gå den vägen.

Ställa in Arduino

Vi börjar med kretsschemat för Arduino och ledningarna vi kommer att fästa till vår PIR-sensor och LED-matris.

kransfritzing

Inuti matrisen

Nu för att göra vår 8 x 8 LED-matris. Det är en bra idé att börja med att skapa en rad och en kolumn i matrisen, för att se till att det är exakt var du vill ha det på prototyptabellen.

testa var man ska placera leds

På bilden ovan är alla lysdioder placerade så att anoderna (det längre, positiva benet) är mot toppen av protobordet. Detta är viktigt, eftersom vi kommer att skapa kolumner med vanliga anoder genom att förena dem och rader med vanliga katoder (det kortare, negativa benet). Att få detta just nu kommer att spara huvudvärk senare!

Vi kommer att bygga en gemensam radkatodmatris, detta diagram visar hur det hela är anslutet.

tvivel diag

Det kan se lite skrämmande ut i början, men det är en ganska enkel konfiguration. I varje rad förenas alla katoderna från höger till vänster och fästas sedan till en av våra Arduino-stift. Efter detta gör vi samma sak för varje kolumn med anoder. På detta sätt, beroende på vilken kolumn vi tillämpar ström på, och vilken rad vi förenar oss till marken, kan vi slå på varje individuell LED i matrisen.

Låt lödningen börja

Börja med att placera din första rad med lysdioder. Se till att alla anoder är vända mot toppen och vänd över den. Jag upptäckte att att lägga till en ny LED i varje hörn och att fästa en annan bit protobord på toppen med en elastisk sladd hjälpte till att hålla allt på plats.

proto elastisk

Böj nu en efter en katod (kort) ben på varje lysdiod till vänster så att de överlappar varandra. Det är lättast att starta från vänster och arbeta åt höger. Om du använder ett större stycke protobord kan du först lödda dem till brädet och ansluta dem tillsammans med kuddarna. Var försiktig så att du inte går med på någon av katoderna till några andra linjer på brädet eller någon av anoderna!

katodviktslöd

Upprepa den här processen för alla åtta raderna, och när du är klar ska du ha något som ser ut så här:

bild av färdiga rader

Hoppande anoder!

Kolumnerna med anoder är lite mer fiddly. I diagrammet ovan kurvor anoderna varje gång de korsar en rad katoder. Det beror på att de inte kan röra raderna alls. Vi måste böja anoderna över katodraderna och fästa dem till varandra. Det kan hända att du använder en penna för att böja benen.

benlödanoder

Gör detta för varje rad med anoder och fäst ett motstånd till varje övre anod. Du kommer förmodligen att ha det lättare att sätta motståndet i nästa hål i protobordet och gå i kuddarna med löd. Du borde nu ha något liknande:

färdig lödning

Grattis! LED-matrisen är klar. Kontrollera din lödning noggrant i detta skede för att se till att det inte finns några pauser och att ingen av kolumnerna rör vid raderna. Oroa dig inte om den inte ser snygg ut, vi behöver bara att den fungerar! Du kan kontrollera varje lysdiod individuellt nu genom att fästa 5v till någon av kolumnändarna och slipa till någon av radändarna.

testmatris

Förutsatt att allt är bra, fäst anslutna ledningar till varje kolumn och varje rad och fäst dem på din Arduino som visas i diagrammet ovan.

Låt oss få kodning

Öppna Arduino IDE och välj ditt kort och port. Om du är ny med Arduino, kolla in detta Uppstartnings Guide. Komma igång med Arduino: En nybörjarguideArduino är en open-source elektronikprototypplattform baserad på flexibel, lättanvänd hårdvara och mjukvara. Den är avsedd för konstnärer, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer

Ange den här koden i redigeraren. Det är ganska tätt kod om du inte känner till den, men den är tillgänglig här helt kommenterad för att hjälpa till att förstå hur det fungerar.

const int rad [8] = {2,3,4,5,6,7,8,9}; const int col [8] = {10,11,12,14,15,16,17,18}; int pirPin = 19; int pirState = LÅG; int val = 0; bool pirTrigger = falsk; const int pirLockTime = 12000; int pirCountdown = pirLockTime; int-pixlar [8] [8]; const int refreshSpeed ​​= 500; int countDown = refreshSpeed; int strömCharIndex = 0; typedef bool CHAR_MAP_NAME [8] [8]; const CHAR_MAP_NAME blank = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const CHAR_MAP_NAME threedownthreein = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const int noOfFrames = 5; const CHAR_MAP_NAME * charMap [noOfFrames] = { & blank, & threedownthreein, & blank, & blank, & threedownthreein. }; ogiltig installation () {för (int i = 0; i <8; i ++) {pinMode (rad [i], UTGÅNG); pinMode (col [i], OUTPUT); // rörelsessensor pinMode (pirPin, INPUT); digitalWrite (col [i], LOW); } } void screenSetup () {const CHAR_MAP_NAME * thisMap = charMap [currentCharIndex]; för (int x = 0; x <8; x ++) {för (int y = 0; y <8; y ++) {bool on = (* thisMap) [x] [y]; if (på) {pixlar [x] [y] = HÖG; } else {pixlar [x] [y] = LÅG; }}} currentCharIndex ++; if (currentCharIndex> = noOfFrames) {currentCharIndex = 0; }} void refreshScreen () {för (int currentRow = 0; nuvarande rad <8; currentRow ++) {digitalWrite (rad [currentRow], LOW); för (int strömCol = 0; strömCol <8; currentCol ++) {int thisPixel = pixlar [currentRow] [currentCol]; digitalWrite (col [currentCol], thisPixel); if (thisPixel == HÖG) {digitalWrite (col [currentCol], LOW); }} digitalWrite (rad [currentRow], HIGH); }} void loop () {val = digitalRead (pirPin); if (val == HÖG) {pirTrigger = true; } annat om (val == LOW && pirCountdown <= 0) {pirTrigger = falsk; pirCountdown = pirLockTime; } if (pirTrigger == true && pirCountdown> 0) {refreshScreen (); nedräkning--; pirCountdown--; if (countDown <= 0) {countDown = refreshSpeed; screenSetup (); } } }

De viktiga delarna att förstå är:

De refreshSpeed variabel. Denna variabel avgör hur tiden mellan varje skärm uppdateras. Ett större antal betyder en längre väntetid.

Konst CHAR_MAP_NAMEs. Det är här du placerar varje karaktärskarta (eller ram om det är lättare att tänka på dem på det sättet) du vill visa.

De noOfFrames variabel. Detta avgör hur många ramar som ska visas i en hel uppspelning. Observera att det kan skilja sig åt antalet karaktärskartor. Om du till exempel vill visa "A CAT" skulle du bara behöva definiera fyra distinkta ramar: tomma, en EN, a C och a T.

När rörelsessensorn upptäcker rörelse bör LED-skärmen blinka lysdioden tre nedåt och tre inifrån uppe till vänster. Om det inte visas korrekt ska du kontrollera dina ledningar igen för att se till att allt är på rätt plats! När du lägger till din egen bild eller ett meddelande kan det bli avbrutet tidigt eller spela för länge. Försök ändra pirLockTime variabel tills den spelar så länge du vill.

Processen att lägga till varje ram till LED-skärmen kan vara lite tråkig, så vi har skapat det här kalkylbladet för att göra det lite enklare att skapa text och bilder för din LED-matris (skapa en kopia av Google Sheet så att du kan redigera den).

Med kalkylbladet kan du kopiera dina skapelser direkt till koden.

Make It Brave the Elements

Nu när vi har en fungerande LED-matris behöver vi ett sätt att överleva vintervädret. Medan denna metod kanske inte står emot en tropisk storm eller dunkas i poolen, borde det vara tillräckligt för att hålla all elektronik säker från elementen.

Jag använde en rund Tupperware-låda som är 15 cm i diameter och 6 cm djup eftersom den passade perfekt till mina komponenter. Skär ett fönster i locket som är något större än din LED-matris och fäst en klar plastfilm på den och se till att det inte finns några utrymmen för vätska att komma in. Robust plast från vissa förpackningar skulle fungera bäst, men det var allt jag hade. Du kan också fästa några fästen för protobordet, även om båda jobben lätt kan utföras med starkt vattentätt tejp.

väderbeständig

Därefter gör du ett litet hål under fönstret, och sedan försiktigt och långsamt breddas ut tills din PIR-sensor bara kan passa igenom. Du vill att den ska passa så tätt som möjligt.

skär hålet

Sätt fast din PIR-sensor och fyll i eventuella luckor du kan se med tejp eller hetlim.

lim pir

Rensa tejp eller lim som kan hindra rutan från att stängas ordentligt och lägg till alla dina komponenter i lådan tillsammans med ditt batteri. Här användes ett enkelt AA-batteripaket, anslutet direkt till Vano-stiftet på Nano. Några små bitar av kork tillsattes utsidan av höljet för att hjälpa till med att hänga byggnaden i mitten av kransen.

Och vi är klar

När lådan är förseglad, hänga den med din julkrans och vänta på dina besökares reaktioner på din högteknologiska under $ 20 personliga välkomst! Du kan till och med gå ett steg längre och skapa fantastiskt DIY-dekorationer 3D-tryckta juldekorationer för perfekta nördiga semestrarVarför inte spara lite pengar i julen och 3D-tryckta några festliga prydnader för ditt hem? Läs mer för någon annanstans runt huset också!

färdig led matris julkrans diy

I det här projektet har vi byggt ett fristående LED-matrissystem från grunden, som är rörelseaktiverat och kan överleva att vara utomhus i alla utom det mest vackra vädret. Denna byggnad kommer att komma till nytta långt efter semestersäsongen är över i andra projekt, och samma teknik kan användas för att skapa billiga väderbeständiga kapslingar för andra projekt också.

Har du byggt något för att ge din jul en DIY-twist? Planerar du några DIY-julklappar i år? Låt oss veta i kommentarerna nedan!

Ian Buckley är frilansjournalist, musiker, artist och videoproducent bosatt i Berlin, Tyskland. När han inte skriver eller på scenen tänker han på DIY-elektronik eller kod i hopp om att bli en gal forskare.