Upgrade je kerstkrans met een Motion Activated LED Matrix

Upgrade je kerstkrans met een Motion Activated LED Matrix / DIY

Kerstmis is er weer, en of het nu je favoriete feestdag van het jaar is of het brengt je in een koud zweet, de decoraties beginnen omhoog te gaan. Dit jaar, waarom zou u wat doe-het-zelftechnologie niet in uw decoraties opnemen om ze op te laten vallen?

In dit project bouwen we een weerbestendige, door beweging geactiveerde 8 x 8 LED-matrix vanaf nul ... voor minder dan $ 20. Hij is ontworpen om in het midden van een standaard kerstdeurkrans te passen, maar hij kan overal in huis worden gebruikt. En omdat hij op batterijen werkt, ook ergens ver van huis!

Onderdelen lijst

Voor dit project heb je nodig:

  • Arduino.
    • Ik heb de Nano gebruikt voor zijn kleine formaat, maar je kunt bijna elke Arduino-compatibele microcontroller gebruiken Arduino Koopgids: welke kaart moet je kopen? Arduino Koopwijzer: welk bord moet je kopen? Er zijn zoveel verschillende soorten Arduino-boards, dat je zou worden vergeven dat je in de war was. Welke moet je kopen voor je project? Laat ons helpen, met deze Arduino koopgids! Lees verder .
  • 64 x rode LED's.
  • 8 x 220 Ohm weerstanden.
  • PIR-bewegingssensor.
    • Veel Arduino-starterkits Wat zit er in een Arduino-starterkit? [MakeUseOf Explains] 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 zult meer nodig hebben dan alleen de echte Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starter kits" zijn ... Lees meer met deze. Ik kocht een multi-pack van Amazon voor $ 10.
  • 1 stuk prototypingbord.
    • De hier gebruikte is 9 x 7 cm, maar je kunt elke gewenste maat gebruiken.
  • 7-12 V batterij.
    • Om budgettaire redenen wordt hier een eenvoudig batterijpakket gebruikt, maar een mobiele banklader. The Best Pokemon Go Power Banks De beste Pokemon Go Power Banks Pokémon Go verslaat de batterij van een telefoon. Om een ​​beetje meer Pokemon-catching sap uit je telefoon te persen heb je een powerbank nodig. Maar wat is de beste batterij die er is? Meer lezen kan nog langer duren.
  • Geassorteerde korte stukjes draad.
  • Tupperware-doos of soortgelijke weerbestendige behuizing.
    • Zorg ervoor dat deze groot genoeg is om al je componenten in te passen!
  • Kerstkrans.
    • Alles wat je kunt doen, zorg ervoor dat de behuizingsdoos erin past.
  • Soldeerbout en soldeer.

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

Dit project vereist behoorlijk veel soldeerwerk, en als een beginneling 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 hier zijn enkele goede tips om te leren leren hoe te solderen, met deze eenvoudige tips en projecten leren solderen, met deze eenvoudige tips en projecten Ben je een beetje geïntimideerd door de gedachte aan een heet strijkijzer en gesmolten metaal? Als je wilt gaan werken met elektronica, zul je moeten leren solderen. Laat ons helpen. Lees verder .

Als je echt niet van plan bent om te solderen, dan is dit project ook mogelijk met LED-strips Weekend Project: Bouw een gigantisch LED Pixel-display Weekendproject: Bouw een gigantisch LED-pixeldisplay Ik ben dol op LED-pixels: helder, gemakkelijk te bedienen, goedkoop en zo veelzijdig. Vandaag zullen we ze veranderen in een groot pixel-display dat aan de muur kan worden opgehangen. Read More, of een kant-en-klare LED-matrix die u mogelijk in uw startpakket hebt. Sommige codeaanpassingen zijn nodig als u besluit om die route te nemen.

De Arduino instellen

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

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 op het prototypingbord wilt hebben.

In de bovenstaande foto 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 anoden zullen maken door ze samen te voegen en rijen gemeenschappelijke kathodes (het kortere, negatieve been). Door dit op dit moment te krijgen, kun je later hoofdpijn voorkomen!

We gaan een gemeenschappelijke rij kathodematrix bouwen, dit diagram laat zien hoe het allemaal verbonden is.

In het begin lijkt het misschien een beetje beangstigend, maar het is een vrij eenvoudige configuratie. In elke rij worden alle kathodes van rechts naar links samengevoegd en vervolgens aan een van onze Arduino-pinnen bevestigd. Hierna doen we hetzelfde voor elke kolom met anodes. Op deze manier kunnen we, afhankelijk van in welke kolom we power toepassen en in welke rij we meedoen met ground, elke afzonderlijke LED in de array inschakelen.

Laat het soldeerproces beginnen

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

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

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

Jumping Anodes!

De kolommen met anodes zijn iets ingewikkelder. In het bovenstaande diagram, krommen de anodes telkens wanneer ze een rij kathodes passeren. Dit komt omdat ze de rijen helemaal niet kunnen aanraken. We moeten de anodes om de kathoderijen buigen en aan elkaar vastmaken. Je zult misschien merken dat het gebruik van een pen om de benen te buigen veel helpt.

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

Gefeliciteerd! De LED-matrix is ​​voltooid. Controleer uw soldeer grondig in dit stadium om zeker te zijn dat er geen pauzes zijn en dat geen enkele kolom de rijen raakt. Maak je geen zorgen als het er niet mooi uitziet, we hebben het alleen nodig om te werken! U kunt nu elke led afzonderlijk controleren door 5v aan een van de kolomuiteinden te bevestigen en met een van de rijeinden te aarden.

Vooropgesteld dat alles goed is, bevestig hook-up draden aan elke kolom en elke rij, en bevestig ze aan je Arduino zoals weergegeven in het diagram hierboven.

Laten we coderen

Open de Arduino IDE en kies je bord en poort. Als je Arduino nog niet kent, lees dan deze introductiehandleiding. Aan de slag met Arduino: een beginnershandleiding Aan de slag met Arduino: een beginnershandleiding Arduino is een prototype-platform met open source-elektronica op basis van flexibele, eenvoudig te gebruiken 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 daar niet bekend mee bent, maar het is 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; void setup () for (int i = 0; i<8;i++) pinMode(row[i], OUTPUT); pinMode(col[i],OUTPUT); //motion sensor pinMode(pirPin, INPUT); digitalWrite(col[i], LOW);   void screenSetup() const CHAR_MAP_NAME *thisMap = charMap[currentCharIndex]; for (int x = 0; x < 8; x++)  for (int y = 0; y < 8; y++)  bool on = (*thisMap)[x][y]; if(on)  pixels[x][y] = HIGH;  else  pixels[x][y] = LOW;    currentCharIndex++; if(currentCharIndex>= noOfFrames) currentCharIndex = 0;  void refreshScreen () for (int currentRow = 0; currentRow < 8; currentRow++) digitalWrite(row[currentRow], LOW); for (int currentCol = 0; currentCol < 8; currentCol++) int thisPixel = pixels[currentRow][currentCol]; digitalWrite(col[currentCol], thisPixel); if (thisPixel == HIGH)  digitalWrite(col[currentCol], LOW);   digitalWrite(row[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 belangrijkste te begrijpen onderdelen zijn:

De refreshSpeed variabel. Deze variabele bepaalt hoe de tijd tussen elk scherm wordt vernieuwd. Een groter aantal betekent een langere wachttijd.

De const CHAR_MAP_NAMEs. Hier zet je elke personagekaart (of frame als het gemakkelijker is om ze op die manier te bedenken) die je wilt weergeven.

De noOfFrames variabel. Dit bepaalt hoeveel frames in één volledige weergave worden weergegeven. Merk op dat dit kan verschillen van het aantal tekenkaarten. Bijvoorbeeld als u wilt weergeven “EEN KAT” je zou maar vier verschillende frames hoeven te definiëren: leeg, een EEN, een C en een T.

Wanneer de bewegingssensor beweging detecteert, moet het LED-scherm de LED drie naar beneden en de linkerbovenkant drie keer knipperen. Als het niet correct wordt weergegeven, controleer dan opnieuw uw bedrading om te controleren of alles op de juiste plek zit! Wanneer u uw eigen afbeelding of bericht toevoegt, kan deze vroegtijdig worden afgesneden of te lang worden afgespeeld. Probeer de pirLockTime variabele totdat deze gedurende de gewenste tijd wordt afgespeeld.

Het proces van het toevoegen van elk frame aan de LED-display kan een beetje vervelend zijn, daarom hebben we deze spreadsheet gemaakt 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 het kunt bewerken ).

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

Make It Brave the Elements

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

Ik heb een ronde Tupperware-doos gebruikt met een diameter van 15 cm en een diepte van 6 cm, omdat mijn onderdelen perfect passen. Snij een venster in het deksel iets groter dan je LED-matrix en bevestig er een doorzichtige plastic film aan, en zorg ervoor dat er geen open ruimtes voor vloeistof achterblijven. Stevig plastic van sommige verpakkingen zou het beste werken, maar dit was alles wat ik had. Je zou ook een aantal mounts kunnen bevestigen voor het protoboard, hoewel beide taken gemakkelijk kunnen worden uitgevoerd met sterke waterdichte tape.

Maak vervolgens een gaatje onder het raam, en verdeel het voorzichtig en langzaam totdat je PIR-sensor er maar net doorheen past. Je wilt dat het zo goed mogelijk past.

Bevestig uw PIR-sensor en vul gaten in die u kunt zien met tape of hete lijm.

Reinig alle tape of lijm die de doos mogelijk niet goed sluit, en voeg al uw componenten samen met uw batterij toe aan de doos. Hier werd een eenvoudig AA-batterijpak gebruikt, dat rechtstreeks op de VCC-pin van de Nano werd aangesloten. Een paar kleine stukjes kurk werden toegevoegd aan de buitenkant van de behuizing om te helpen met het ophangen van de build in het midden van de krans.

En we zijn klaar

Zodra de doos is verzegeld, hang het met je kerstkrans, en wacht op je bezoekers reacties op je high-tech sub $ 20 persoonlijk welkom! Je zou zelfs een stap verder kunnen gaan en geweldige DIY-decoraties maken. 3D-gedrukte kerstversieringen voor perfecte geeky-vakanties 3D-gedrukte kerstdecoraties voor perfecte geeky-vakantie. Waarom zou je jezelf geen geld besparen met deze kerst en 3D een aantal feestelijke versieringen voor je huis printen? Lees meer ook elders in het huis!

In dit project hebben we een op zichzelf staand LED-matrixsysteem vanaf nul opgebouwd, dat wil zeggen beweging geactiveerd en kan overleven buiten in alles behalve de meest slechte weersomstandigheden. Deze build komt pas goed van pas nadat het vakantieseizoen voorbij is in andere projecten, en dezelfde techniek kan ook worden gebruikt om goedkope weersbestendige behuizingen voor andere projecten te maken.

Heb je iets gebouwd om je kerst een DIY-draai te geven? Plan je dit jaar kerstthema's met een doe-het-thema? Laat het ons weten in de comments hieronder!

Ontdek meer over: Arduino, elektronica.