Advertentie

Kerstmis is weer hier, en of het nu je favoriete vakantie van het jaar is of je er koud van wordt, de decoraties beginnen op te gaan. Waarom zou u dit jaar geen doe-het-zelftechnologie in uw decoraties opnemen om ze op te laten vallen?

In dit project bouwen we een weerbestendige, bewegingsgeactiveerde 8 x 8 LED-matrix helemaal opnieuw... voor minder dan $ 20. Het is ontworpen om in het midden van een standaard kerstdeurkrans te passen, hoewel het overal in huis kan worden gebruikt. En aangezien hij op batterijen werkt, ook overal buiten het huis!

Onderdelen lijst

Voor dit project heb je nodig:

  • Arduino.
    • Ik heb de Nano want het is klein, maar je zou bijna elk kunnen gebruiken Arduino-compatibele microcontroller Arduino Koopgids: welk bord moet je kopen?Er zijn zoveel verschillende soorten Arduino-kaarten dat het je vergeven zou worden als je in de war bent. Welke moet je kopen voor je project? Laat ons helpen met deze Arduino-koopgids! Lees verder .
  • 64 x rode leds.
  • 8 x 220 Ohm weerstanden.
  • PIR bewegingssensor.
    • Veel Arduino starterkits Wat zit er in een Arduino Starter Kit? [MakeUseOf Explains]Ik heb eerder de Arduino open-source hardware hier op MakeUseOf geïntroduceerd, maar je hebt meer nodig dan alleen de echte Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starterkits" zijn ... Lees verder kom met deze. Ik heb een multipack gekocht van Amazon voor $ 10.
  • 1 stuk prototyping bord.
    • De hier gebruikte was 9 x 7 cm, maar je kunt elke gewenste maat gebruiken.
  • 7-12v batterij.
    • Hier wordt om budgettaire redenen een eenvoudige batterij gebruikt, maar een mobiele banklader De beste Pokemon Go Power BanksPokemon Go verslaat de batterij van een telefoon. Om een ​​beetje meer Pokemon-vangen sap uit je telefoon te persen, heb je een powerbank nodig. Maar wat is de beste batterij die er is? Lees verder kan zelfs nog langer duren.
  • Diverse korte stukjes draad.
  • Tupperware-doos of vergelijkbare weerbestendige behuizing.
    • Zorg ervoor dat het groot genoeg is om al uw componenten in te passen!
  • Kerstkrans.
    • Iedereen zal het doen, zorg er gewoon voor dat de behuizingsdoos erin past.
  • Soldeerbout en soldeer.

Hoewel het niet strikt noodzakelijk was omdat je de componenten rechtstreeks op de Nano kon solderen, vond ik ook een kleine breadboard erg handig tijdens het testen. Een heet lijmpistool helpt ook bij het in elkaar zetten van alle onderdelen.

kerstkrans led matrix onderdelen

Dit project vereist nogal wat solderen en als beginner lijkt het misschien ontmoedigend. Ik ben persoonlijk nog steeds een beginner in solderen en vond het niet zo uitdagend of tijdrovend als het lijkt. Als u ook nieuw bent bij het solderen, vindt u hier enkele goede tips om te helpen Leer hoe u kunt solderen met deze eenvoudige tips en projectenBen je een beetje geïntimideerd door de gedachte aan een heet strijkijzer en gesmolten metaal? Als je met elektronica wilt gaan werken, moet je leren solderen. Laat ons helpen. Lees verder .

Als je echt niet van het idee van solderen houdt, is dit project ook mogelijk met Ledstrips Weekendproject: bouw een gigantisch LED-pixelschermIk ben dol op LED-pixels: helder, gemakkelijk te bedienen, goedkoop en zo veelzijdig. Vandaag zullen we ze veranderen in een groot pixelscherm dat aan de muur kan worden gehangen. Lees verder , of een kant-en-klare LED-matrix die je misschien in je starterkit hebt. Sommige codeaanpassingen zijn nodig als u besluit die route te gaan.

De Arduino instellen

We beginnen met het schakelschema voor de Arduino en de draden die we aan onze PIR-sensor en LED-matrix gaan bevestigen.

krans frituren

In de Matrix

Nu om onze 8 x 8 LED-matrix te maken. Het is een goed idee om te beginnen met het maken van één rij en één kolom van de matrix, om er zeker van te zijn dat het precies is waar u het wilt op het prototypebord.

testen waar leds moeten worden geplaatst

Op de foto hierboven zijn alle LED's zo geplaatst dat de anodes (het langere, positieve been) naar de bovenkant van het protoboard zijn gericht. Dit is belangrijk, omdat we kolommen met gemeenschappelijke anodes zullen maken door ze samen te voegen, en rijen met gemeenschappelijke kathodes (het kortere, negatieve been). Als u dit nu krijgt, bespaart u later hoofdpijn!

We gaan een gemeenschappelijke rij-kathodematrix bouwen, dit diagram laat zien hoe alles met elkaar is verbonden.

dubbele diag

Het ziet er in het begin misschien een beetje angstaanjagend uit, maar het is een vrij eenvoudige configuratie. In elke rij worden alle kathoden van rechts naar links samengevoegd en vervolgens aan een van onze Arduino-pinnen bevestigd. Hierna doen we hetzelfde voor elke kolom anodes. Op deze manier kunnen we, afhankelijk van op welke kolom we stroom zetten en op welke rij we de aarde aansluiten, elke individuele LED in de array inschakelen.

Laat het solderen beginnen

Begin met het plaatsen van uw eerste rij LED's. Zorg ervoor dat alle anodes naar boven wijzen en draai ze om. Ik ontdekte dat het toevoegen van een andere LED in elke hoek en het bevestigen van een ander stuk protoboard bovenop met een elastisch koord hielp om alles op zijn plaats te houden.

proto elastisch

Buig nu één voor één de kathode (korte) poot van elke LED naar links zodat ze elkaar allemaal overlappen. Het is het gemakkelijkst om vanaf de linkerkant te beginnen en naar rechts te werken. Als u een groter stuk protoboard gebruikt, kunt u deze eerst aan het bord solderen en ze met de pads met elkaar verbinden. Pas op dat u geen van de kathodes verbindt met andere lijnen op het bord of met een van de anodes!

kathode vouw soldeer

Herhaal dit proces voor alle acht rijen en als je klaar bent, zou je iets moeten hebben dat er ongeveer zo uitziet:

foto van voltooide rijen

Anodes springen!

De kolommen met anodes zijn iets lastiger. In het bovenstaande diagram buigen de anodes telkens wanneer ze een rij kathoden passeren. Dit komt omdat ze de rijen helemaal niet kunnen aanraken. We moeten de anodes over de kathoderijen buigen en aan elkaar bevestigen. Misschien merk je dat het veel helpt om de benen te buigen met een pen.

ben soldeeranodes

Doe dit voor elke rij anodes en bevestig een weerstand aan elke bovenste anode. U zult het waarschijnlijk gemakkelijker vinden om de weerstand in het volgende gat in het protoboard te plaatsen en de pads met soldeer te verbinden. Je zou nu zoiets als dit moeten hebben:

klaar met solderen

Gefeliciteerd! De LED-matrix is ​​compleet. Controleer in dit stadium uw soldeer grondig om er zeker van te zijn dat er geen breuken zijn en dat geen van de kolommen de rijen raakt. Maak je geen zorgen als het er niet mooi uitziet, we hebben het gewoon nodig om te werken! U kunt elke LED nu afzonderlijk controleren door 5v aan een van de kolomuiteinden te bevestigen en aan een van de rij-uiteinden te aarden.

testmatrix

Als alles in orde is, sluit u de aansluitdraden aan op elke kolom en elke rij en bevestigt u ze aan uw Arduino zoals weergegeven in het bovenstaande diagram.

Laten we coderen

Open de Arduino IDE en kies je bord en poort. Als je nieuw bent bij Arduino, bekijk dit dan aan de slag-gids. Aan de slag met Arduino: een beginnershandleidingArduino is een open-source prototypeplatform voor elektronica, gebaseerd op flexibele, gebruiksvriendelijke hardware en software. Het is bedoeld voor kunstenaars, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het maken van interactieve objecten of omgevingen. Lees verder

Voer deze code in de editor in. Het is een vrij dichte code als je er niet bekend mee bent, maar het is beschikbaar hier volledig geannoteerd om te helpen begrijpen hoe het werkt.

const int rij [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 = LAAG; int val = 0; bool pirTrigger = false; const int pirLockTime = 12000; int pirCountdown = pirLockTime; int pixels [8] [8]; const int refreshSpeed ​​= 500; int countDown = refreshSpeed; int currentCharIndex = 0; typedef bool CHAR_MAP_NAME [8] [8]; const CHAR_MAP_NAME leeg = {{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. }; ongeldige setup () {voor (int i = 0; i <8; i ++) {pinMode (rij [i], OUTPUT); pinMode (col [i], OUTPUT); // bewegingssensor pinMode (pirPin, INPUT); digitalWrite (col [i], LOW); } } void screenSetup () {const CHAR_MAP_NAME * thisMap = charMap [currentCharIndex]; voor (int x = 0; x <8; x ++) {voor (int y = 0; y <8; y ++) {bool on = (* thisMap) [x] [y]; if (aan) {pixels [x] [y] = HOOG; } anders {pixels [x] [y] = LAAG; }}} currentCharIndex ++; if (currentCharIndex> = noOfFrames) {currentCharIndex = 0; }} void refreshScreen () {for (int currentRow = 0; currentRow <8; currentRow ++) {digitalWrite (rij [currentRow], LOW); voor (int currentCol = 0; currentCol <8; currentCol ++) {int thisPixel = pixels [currentRow] [currentCol]; digitalWrite (col [currentCol], thisPixel); if (thisPixel == HIGH) {digitalWrite (col [currentCol], LOW); }} digitalWrite (rij [currentRow], HIGH); }} void loop () {val = digitalRead (pirPin); if (val == HIGH) {pirTrigger = true; } else if (val == LOW && pirCountdown <= 0) {pirTrigger = false; pirCountdown = pirLockTime; } if (pirTrigger == true && pirCountdown> 0) {refreshScreen (); countDown--; pirCountdown--; if (countDown <= 0) {countDown = refreshSpeed; screenSetup (); } } }

De belangrijke onderdelen die u moet begrijpen, zijn:

De refreshSpeed variabel. Deze variabele bepaalt hoe de tijd tussen elk scherm wordt vernieuwd. Een groter aantal betekent langer wachten.

De const CHAR_MAP_NAMEs. Hier plaats je elke karakterkaart (of frame als het gemakkelijker is om ze zo te zien) die je wilt weergeven.

De noOfFrames variabel. Dit bepaalt hoeveel frames worden weergegeven in één volledige play-through. Merk op dat het kan verschillen van het aantal karakterkaarten. Als u bijvoorbeeld "A CAT" wilt weergeven, hoeft u slechts vier verschillende frames te definiëren: leeg, an EEN, een C en een T.

Wanneer de bewegingssensor nu beweging detecteert, moet het LED-scherm de LED drie keer naar beneden en drie keer van linksboven knipperen. Als het niet correct wordt weergegeven, controleer dan nogmaals uw bedrading om er zeker van te zijn dat alles op de juiste plaats zit! Wanneer u uw eigen afbeelding of bericht toevoegt, wordt deze mogelijk vroegtijdig afgebroken of wordt deze te lang afgespeeld. Probeer de pirLockTime variabel totdat het gedurende de gewenste tijd wordt afgespeeld.

Het proces van het toevoegen van elk frame aan het LED-scherm kan een beetje vervelend zijn, dus hebben we gemaakt deze spreadsheet om het een beetje gemakkelijker te maken om tekst en afbeeldingen voor uw LED-matrix te maken (maak een kopie van het Google-blad zodat u deze kunt bewerken).

Met behulp van de spreadsheet kunt u uw creaties rechtstreeks in de code kopiëren.

Maak het dapper de elementen

Nu we een werkende LED-matrix hebben, hebben we een manier nodig om het winterweer te overleven. Hoewel deze methode mogelijk niet bestand is tegen een tropische storm of in het zwembad wordt ondergedompeld, zou het voldoende moeten zijn om alle elektronica tegen de elementen te beschermen.

Ik heb een ronde Tupperware-doos gebruikt met een diameter van 15 cm en een diepte van 6 cm omdat deze perfect op mijn componenten past. Snijd een venster in het deksel dat iets groter is dan uw LED-matrix en plak er een doorzichtige plastic film op, zorg ervoor dat er geen ruimte is voor vloeistof. Stevig plastic uit een verpakking zou het beste werken, maar dit was alles wat ik had. Je zou ook een aantal bevestigingen voor het protoboard kunnen bevestigen, hoewel beide taken gemakkelijk met sterke waterdichte tape kunnen worden gedaan.

weerbestendig

Maak vervolgens een klein gaatje onder het raam en verbreed het vervolgens voorzichtig en langzaam totdat uw PIR-sensor er nog maar net doorheen past. Je wilt dat het zo goed mogelijk past.

gat afgesneden

Bevestig uw PIR-sensor en vul eventuele openingen op die u kunt zien met tape of hete lijm.

lijm pir

Reinig alle tape of lijm die ervoor kan zorgen dat de doos niet goed sluit en voeg al uw componenten samen met uw batterij aan de doos toe. Hier werd een eenvoudige AA-batterij gebruikt, rechtstreeks aangesloten op de VCC-pin van de Nano. Aan de buitenkant van de behuizing zijn een paar kleine stukjes kurk toegevoegd om de constructie in het midden van de krans op te hangen.

En we zijn klaar

Zodra de doos is verzegeld, hangt u hem met uw kerstkrans en wacht u op de reacties van uw bezoekers op uw hightech sub $ 20 persoonlijk welkom! Je kunt zelfs nog een stap verder gaan en geweldige ontwerpen maken DIY-decoraties 3D-gedrukte kerstversiering voor perfecte geeky-vakantiesWaarom bespaar je jezelf wat geld deze kerst en 3D print je een aantal feestelijke versieringen voor je huis? Lees verder voor elders in huis ook!

afgewerkte led matrix kerstkrans diy

In dit project hebben we vanaf het begin een op zichzelf staand LED-matrixsysteem gebouwd, dat door beweging wordt geactiveerd en buiten kan overleven in bijna alle weersomstandigheden. Deze bouw zal nuttig zijn lang nadat het vakantieseizoen voorbij is in andere projecten, en dezelfde techniek zou kunnen worden gebruikt om ook voor andere projecten goedkope weerbestendige behuizingen te creëren.

Heb je iets gebouwd om je kerst een doe-het-zelf-draai te geven? Plant u dit jaar kerstcadeaus met DIY-thema? Laat het ons weten in de reacties hieronder!

Ian Buckley is freelance journalist, muzikant, artiest en videoproducent en woont in Berlijn, Duitsland. Als hij niet schrijft of op het podium staat, sleutelt hij aan doe-het-elektronica of code in de hoop een gekke wetenschapper te worden.