Annonse
Julen er her igjen, og enten det er din favorittferie i året, eller det fører deg ut i en kald svette, begynner dekorasjonene å gå opp. I år, hvorfor ikke integrere litt DIY-teknologi i dekorasjonene dine for å få dem til å skille seg ut?
I dette prosjektet skal vi bygge en værbestandig, bevegelsesaktivert 8 x 8 LED-matrise fra bunnen av... for under $ 20. Den er designet for å passe i midten av en standard juledørkrans, selv om den kan brukes hvor som helst rundt i huset. Og siden det er batteridrevet, hvor som helst borte fra huset også!
Deleliste
For dette prosjektet trenger du:
- Arduino.
- Jeg brukte nano for den er liten, men du kan bruke nesten hvilken som helst Arduino-kompatibel mikrokontroller Arduino kjøpeguide: Hvilket brett bør du få?Det er så mange forskjellige typer Arduino-brett der ute, du vil bli tilgitt for å bli forvirret. Hvilket bør du kjøpe for prosjektet ditt? La oss hjelpe med denne Arduino-kjøpsguiden! Les mer .
- 64 x røde lysdioder.
- 8 x 220 Ohm-motstander.
- PIR bevegelsessensor.
- Mange Arduino startpakker Hva er inkludert i et Arduino Starter Kit? [MakeUseOf Explains]Jeg har tidligere introdusert Arduino-open source-maskinvaren her på MakeUseOf, men du trenger mer enn bare den faktiske Arduino for å bygge noe ut av det og faktisk komme i gang. Arduino "startpakker" er ... Les mer kom med disse. Jeg kjøpte en multipakke fra Amazon for 10 dollar.
- 1 stk prototypingstavle.
- Den som ble brukt her var 9 x 7 cm, selv om du kan bruke alle størrelser du ønsker.
- 7-12v batteri.
- En enkel batteripakke brukes her av budsjettmessige årsaker, men a mobil bank lader De beste Pokemon Go Power BanksPokemon Go slår pokker ut av telefonens batteri. For å klemme litt mer Pokemon-fangende juice ut av telefonen din, trenger du en strømbank. Men hva er det beste batteriet der ute? Les mer kan vare enda lenger.
- Assorterte korte ledninger.
- Tupperware-boks eller lignende værbestandig kabinett.
- Forsikre deg om at den blir stor nok til å passe alle komponentene dine inni!
- Julekrans.
- Alt vil gjøre, bare sørg for at kabinettboksen passer inn i den.
- Loddejern og lodde.
Selv om det ikke er strengt nødvendig, siden du kunne lodde komponentene direkte til Nano, fant jeg også et lite brødbord veldig nyttig under testing. En varm limpistol hjelper også med å sette sammen alle delene.
Dette prosjektet krever ganske mye lodding, og som nybegynner kan det virke skremmende. Jeg personlig er fremdeles veldig nybegynner i lodding og synes det ikke var så utfordrende eller tidkrevende som det virker. Hvis du i tillegg er ny på lodding her er noen noen gode tips for å hjelpe Lær hvordan du lodder med disse enkle tipsene og prosjekteneBlir du litt skremt av tanken på et varmt jern og smeltet metall? Hvis du vil begynne å jobbe med elektronikk, trenger du å lære å lodde. La oss hjelpe. Les mer .
Hvis du virkelig ikke er opptatt av ideen om lodding, er dette prosjektet også mulig med LED-strips Helgeprosjekt: Bygg en gigantisk LED-pikselskjermJeg elsker LED-piksler: lyse, enkle å kontrollere, billige og så allsidige. I dag skal vi gjøre dem om til et stort pikselskjerm som kan henges på veggen. Les mer , eller en ferdig LED-matrise som du måtte ha i startpakken. Noen kodejusteringer vil være nødvendige hvis du bestemmer deg for å gå den ruten.
Sette opp Arduino
Vi starter med kretsdiagrammet for Arduino og ledningene vi skal feste til PIR-sensoren og LED-matrisen vår.
Inni Matrix
Nå for å lage vår 8 x 8 LED-matrise. Det er en god ide å begynne med å lage en rad og en kolonne i matrisen, for å forsikre deg om at det er akkurat der du vil ha det på prototypetavlen.
På bildet over er alle lysdiodene plassert slik at anodene (det lengre, positive benet) er mot toppen av protobordet. Dette er viktig, ettersom vi vil lage kolonner med vanlige anoder ved å knytte dem sammen, og rader med vanlige katoder (det kortere, negative benet). Å få dette med en gang vil spare hodepine senere!
Vi skal bygge en vanlig radkatodematrise, dette diagrammet viser hvordan det hele er koblet sammen.
Det kan se litt skremmende ut i starten, men det er ganske enkel konfigurasjon. I hver rad er alle katodene skjøvet fra høyre til venstre, og festes deretter til en av Arduino-pinnene våre. Etter dette gjør vi det samme for hver kolonne med anoder. På denne måten, avhengig av hvilken kolonne vi bruker strøm på, og hvilken rad vi blir med på bakken, kan vi slå på en hvilken som helst individuell LED i matrisen.
La lodding begynne
Begynn med å plassere den første raden med lysdioder. Forsikre deg om at alle anodene vender mot toppen, og vend den over. Jeg fant ut at å legge til en ny LED i hvert hjørne, og feste et nytt stykke protobord på toppen ved hjelp av en elastisk ledning, bidro til å holde alt på plass.
Nå bøyer du en etter en katode (kort) ben på hver LED til venstre slik at de overlapper hverandre. Det er enklest å starte fra venstre side og jobbe til høyre. Hvis du bruker et større stykke protobord, kan du først lodde dem til brettet og koble dem sammen ved hjelp av putene. Vær forsiktig så du ikke blir sammen med noen av katodene til andre linjer på tavlen eller noen av anodene!
Gjenta denne prosessen for alle åtte radene, og når du er ferdig bør du ha noe som ser noe slik ut:
Hoppende anoder!
Kolonnene med anoder er litt mer fiddly. I diagrammet over kurver anodene hver gang de krysser en rad med katoder. Dette er fordi de ikke kan berøre radene i det hele tatt. Vi må bøye anodene over katodradene og feste dem til hverandre. Du kan finne ut at det å bruke en penn for å bøye bena hjelper mye.
Gjør dette for hver rad med anoder, og fest en motstand til hver toppanode. Du vil sannsynligvis synes det er lettere å sette motstanden i neste hull i protobordet og bli sammen med putene ved å bruke loddetinn. Du skal nå ha noe slikt:
Gratulerer! LED-matrisen er komplett. Kontroller lodding nøye på dette stadiet for å forsikre deg om at det ikke er brudd, og at ingen av kolonnene berører radene. Ikke bekymre deg hvis det ikke ser pent ut, vi trenger bare å fungere! Du kan sjekke hver LED individuelt nå ved å feste 5v til hvilken som helst av søyleendene, og jordes til en av radene.
Forutsatt at alt er bra, fest leddene til hver kolonne og hver rad, og fest dem til din Arduino som vist i diagrammet over.
La oss få koding
Åpne Arduino IDE og velg brett og port. Hvis du er ny på Arduino, sjekk ut dette komme i gang guide. Komme i gang med Arduino: En nybegynnerguideArduino er en åpen kildekode-prototypeplattform for elektronikk basert på fleksibel, brukervennlig maskinvare og programvare. Den er beregnet på kunstnere, designere, hobbyister og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer
Skriv inn denne koden i redigeringsprogrammet. Det er ganske tett kode hvis du ikke er kjent med den, men den er tilgjengelig her fullstendig merket for å hjelpe deg med å forstå hvordan det fungerer.
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 = LAV; int val = 0; bool pirTrigger = falsk; const int pirLockTime = 12000; int pirCountdown = pirLockTime; int piksler [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. }; tomromsoppsett () {for (int i = 0; i <8; i ++) {pinMode (rad [i], UTGANG); pinMode (col [i], OUTPUT); // bevegelsessensor 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 (på) {piksler [x] [y] = HØY; } else {piksler [x] [y] = LAV; }}} currentCharIndex ++; if (currentCharIndex> = noOfFrames) {currentCharIndex = 0; }} void refreshScreen () {for (int currentRow = 0; strømRow <8; currentRow ++) {digitalWrite (rad [currentRow], LOW); for (int currentCol = 0; strømCol <8; currentCol ++) {int thisPixel = piksler [currentRow] [currentCol]; digitalWrite (col [currentCol], dette Pixel); if (thisPixel == HIGH) {digitalWrite (col [currentCol], LOW); }} digitalWrite (rad [currentRow], HIGH); }} void loop () {val = digitalRead (pirPin); if (val == HIGH) {pirTrigger = true; } annet hvis (val == LAV && pirCountdown <= 0) {pirTrigger = falsk; pirCountdown = pirLockTime; } if (pirTrigger == true && pirCountdown> 0) {refreshScreen (); countDown--; pirCountdown--; if (countDown <= 0) {countDown = refreshSpeed; screenSetup (); } } }
De viktige delene å forstå er:
De refreshSpeed variabel. Denne variabelen bestemmer hvordan tiden mellom hver skjerm skal oppdateres. Et større antall betyr lengre ventetid.
Konstanten CHAR_MAP_NAMEs. Det er her du legger hvert tegnkart (eller ramme hvis det er lettere å tenke på dem på den måten) du vil vise.
De noOfFrames variabel. Dette bestemmer hvor mange bilder som skal vises i ett fullstendig spill gjennom. Merk at det kan være forskjellig fra antall karakterkart. Hvis du for eksempel ville vise "A CAT", trenger du bare å definere fire distinkte rammer: blank, an EN, a C og T.
Når bevegelsessensoren oppdager bevegelse, skal LED-skjermen blinke LED tre ned og tre inn fra venstre. Hvis den ikke vises riktig, må du sjekke ledningene igjen for å forsikre deg om at alt er på rett sted! Når du legger til ditt eget bilde eller melding, kan det hende at det blir avskåret tidlig, eller spiller for lenge. Prøv å endre pirLockTime variabel til den spiller så lenge du ønsker.
Prosessen med å legge hver ramme til LED-skjermen kan være litt kjedelig, så vi har laget dette regnearket for å gjøre det litt enklere å lage tekst og bilder for LED-matrisen din (lag en kopi av Google-arket slik at du kan redigere den).
Ved hjelp av regnearket kan du kopiere kreasjonene dine direkte i koden.
Make It Brave the Elements
Nå som vi har en fungerende LED-matrise, trenger vi en måte å overleve vinterværet på. Selv om denne metoden kanskje ikke tåler en tropisk storm eller blir dunket i bassenget, bør den være nok til å holde all elektronikken trygg for elementene.
Jeg brukte en rund Tupperware-boks som er 15 cm i diameter og 6 cm dyp, da den passet perfekt til komponentene mine. Skjær et vindu i lokket som er litt større enn LED-matrisen, og fest en klar plastfilm til den, og pass på at det ikke blir plass til væske å komme inn. Robust plast fra noen emballasje ville fungere best, men dette var alt jeg hadde. Du kan også feste noen monteringer til protobordet, selv om begge jobbene lett kan gjøres med sterk vanntett tape.
Deretter lager du et lite hull under vinduet, og utvider det forsiktig og sakte til PIR-sensoren din bare kan passe gjennom. Du vil at den skal passe så tett som mulig.
Fest PIR-sensoren, og fyll ut eventuelle hull du kan se med tape eller varmt lim.
Rens opp bånd eller lim som kan hindre at boksen lukkes ordentlig, og legg alle komponentene dine i esken sammen med batteriet. Her ble en enkel AA-batteripakke brukt, plugget direkte inn i VCC-pinnen på Nano. Noen få små korkbiter ble lagt til utsiden av kabinettet for å hjelpe til med å henge bygningen i midten av kransen.
Og vi er ferdige
Når esken er forseglet, kan du henge den med julekransen, og vent til de besøkende reaksjoner på din høyteknologiske under $ 20 personlige velkomst! Du kan til og med gå et skritt videre og lage kjempebra DIY-dekorasjoner 3D-trykte julepynt for perfekte nerdete ferierHvorfor ikke spare deg for litt penger denne julen og 3D-print noen festlige pryd til hjemmet ditt? Les mer for andre steder i huset også!
I dette prosjektet har vi bygget et selvforsynt LED-matrikssystem fra bunnen av, som er bevegelsesaktivert og kan overleve å være ute i alt annet enn det mest dårlige været. Denne konstruksjonen vil komme til nytte lenge etter høytidsperioden er over i andre prosjekter, og den samme teknikken kan brukes til å lage billige værbestandige innkapsler for andre prosjekter også.
Har du bygget noe for å gi julen din en DIY vri? Planlegger du noen DIY-julegaver i år? Gi oss beskjed i kommentarene nedenfor!
Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller på scenen, tisser han med DIY-elektronikk eller kode i håp om å bli en gal forsker.