Julen er her igen, og om det er din yndlingsferie af året eller det bringer dig ud i en koldsweet, begynder dekorationerne at gå op. I år, hvorfor ikke indarbejde nogle DIY teknologi i dine dekorationer for at få dem til at skille sig ud?
I dette projekt vil vi bygge en vejrfast, bevægelsesaktiveret 8 x 8 LED matrix fra bunden ... til under $ 20. Den er designet til at passe midt i en standard juledørskranke, selvom den kan bruges overalt i huset. Og da det er batteridrevne, hvor som helst væk fra huset også!
Liste over dele
Til dette projekt skal du:
- Arduino.
- Jeg brugte Nano til den lille størrelse, men du kunne bruge næsten enhver Arduino-kompatibel mikrocontroller Arduino Buying Guide: Hvilket board skal du få? Arduino Købsvejledning: Hvilket bestyrelse skal du få? Der er så mange forskellige slags Arduino boards derude, du ville blive tilgivet for at være forvirret. Hvad skal du købe til dit projekt? Lad os hjælpe med denne Arduino købeguide! Læs mere .
- 64 x røde lysdioder.
- 8 x 220 ohm modstande.
- PIR bevægelsesføler.
- Mange Arduino starterpakker Hvad er inkluderet i et Arduino Starter Kit? [MakeUseOf Forklarer] Hvad er inkluderet i et Arduino Starter Kit? [MakeUseOf Forklarer] Jeg har tidligere introduceret Arduino open source hardware her på MakeUseOf, men du skal bruge mere end bare den faktiske Arduino at bygge noget ud af det og faktisk komme i gang. Arduino "starter kits" er ... Læs mere kom med disse. Jeg købte en multi-pakke fra Amazon for $ 10.
- 1 prototyperplade.
- Den her anvendte var 9 x 7 cm, selvom du kan bruge den ønskede størrelse.
- 7-12v batteri.
- En simpel batteripakke bruges her af budgetmæssige årsager, men en mobil bankoplader. Den bedste Pokemon Go Power Banks Den bedste Pokemon Go Power Banks Pokemon Gå slår hælen ud af telefonens batteri. Klemme lidt mere Pokemon-catching juice ud af din telefon kræver en strømbank. Men hvad er det bedste batteri derude? Læs mere kan vare endnu længere.
- Assorterede korte stykker wire.
- Tupperware kasse eller lignende vejrfast kabinet.
- Sørg for, at det vil være stort nok til at passe til alle dine komponenter indeni!
- Jul krans.
- Enhver vil gøre, bare sørg for, at kabinettet passer ind i det.
- Loddejern og loddemetal.
Selvom det ikke var strengt nødvendigt, da du kunne lodde komponenterne direkte til Nano, fandt jeg også et lille brødbræt meget nyttigt under testningen. En varm limpistol hjælper også med at sætte alle dele sammen.
Dette projekt kræver en hel del lodning, og som en begynder kan det virke skræmmende. Jeg er personligt stadig meget nybegynder ved lodning og fandt det ikke at være så udfordrende eller tidskrævende som det ser ud til. Hvis du også er ny til lodning her er nogle gode tips til at hjælpe Lær at lodde med disse enkle tips og projekter Lær at lodde med disse enkle tips og projekter Er du lidt skræmt af tanken om et varmt jern og smeltet metal? Hvis du vil begynde at arbejde med elektronik, skal du lære at lodde. Lad os hjælpe. Læs mere .
Hvis du virkelig ikke er interesseret i ideen om lodning, er dette projekt også muligt med LED-strips. Weekend Project: Byg et stort LED-pixelskærm Weekendprojekt: Byg en kæmpe LED-pixelskærm Jeg elsker LED-pixels: lyse, nemme at styre, billig og så alsidig. I dag vil vi gøre dem til en stor pixel skærm, der kan hænge på væggen. Læs mere, eller en færdig LED-matrix, som du måske har i startpakken. Nogle kodejusteringer vil være nødvendige, hvis du beslutter dig for at gå videre.
Opsætning af Arduino
Vi starter med kredsløbsdiagrammet til Arduino og de ledninger, vi vil vedhæfte til vores PIR sensor og LED matrix.
Inde i matrixen
Nu for at lave vores 8 x 8 LED matrix. Det er en god idé at begynde med at oprette en række og en kolonne af matrixen for at sikre, at det er præcis, hvor du vil have det på prototyperbrættet.
På billedet ovenfor er alle lysdioder placeret så at anoderne (det længere, positive ben) ligger mod toppen af protobordet. Dette er vigtigt, da vi vil skabe kolonner af fælles anoder ved at slutte dem sammen og rækker af fælles katoder (det kortere, negative ben). At få det lige nu vil spare hovedpine senere!
Vi skal bygge en fælles række katode matrix, dette diagram viser, hvordan det hele er forbundet.
Det kan måske se lidt skræmmende ud i starten, men det er en ganske enkel konfiguration. I hver række er alle katoderne forbundet fra højre mod venstre og derefter fastgjort til en af vores Arduino-ben. Herefter gør vi det samme for hver anodkolonne. På denne måde afhænger vi af hvilken kolonne vi anvender strøm til, og hvilken række vi deltager i jorden, kan vi tænde en enkelt LED i arrayet.
Lad loddet begynde
Start med at placere din første række af lysdioder. Sørg for at alle anoder står overfor toppen, og vend den over. Jeg fandt ud af at tilføje en anden LED i hvert hjørne, og vedhæfte et andet stykke protobord på toppen ved hjælp af en elastik hjalp med at holde alt på plads.
Nu bøjer hver for sig kathodens (korte) ben på hver LED til venstre, så de overlapper hinanden. Det er nemmest at starte fra venstre og arbejde rigtigt. Hvis du bruger et større stykke protobord, kan du lodde dem først til brættet og tilslutte dem sammen ved hjælp af puderne. Pas på ikke at tilslutte nogen af katoderne til andre linjer på tavlen eller nogen af anoderne!
Gentag denne proces for alle otte rækker, og når du er færdig, skal du have noget, der ser sådan ud:
Hoppende anoder!
Kolonnerne af anoder er lidt mere fiddly. I diagrammet ovenfor kurver anoderne hver gang de krydser en række af katoder. Dette skyldes, at de slet ikke kan røre rækkerne. Vi må bøje anoderne over katode rækker og fastgøre dem til hinanden. Du kan finde ud af, at ved hjælp af en pen til at bøje benene hjælper en masse.
Gør dette for hver række af anoder, og fastgør en modstand til hver topanode. Du vil nok finde det nemmere at sætte modstanden i det næste hul i protobordet og slutte med puden ved hjælp af loddet. Du skal nu have noget som dette:
Tillykke! LED-matrixen er komplet. Tjek din lodning grundigt på dette tidspunkt for at sikre, at der ikke er nogen pauser, og at ingen af kolonnerne rører rækkene. Bare rolig, hvis det ikke ser godt ud, vi har bare brug for det til at fungere! Du kan tjekke hver LED individuelt nu ved at vedhæfte 5v til en af kolonneenderne, og jord til en af de ender af rækken.
Forudsat at alt er godt, skal du vedhæfte kabler til hver søjle og hver række, og fastgør dem til din Arduino som vist i diagrammet ovenfor.
Lad os få kodning
Åbn Arduino IDE og vælg dit bord og port. Hvis du er ny til Arduino, skal du tjekke denne vejledning. Kom godt i gang med Arduino: En nybegyndervejledning Kom i gang med Arduino: En nybegyndervejledning Arduino er en open source elektronik prototypeplanlægning baseret på fleksibel, brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og alle interesserede i at skabe interaktive objekter eller miljøer. Læs mere
Indtast denne kode i editoren. Det er ret tæt kode, hvis du ikke er fortrolig med det, men det er tilgængeligt her fuldstændigt annoteret for at hjælpe med at forstå, hvordan det virker.
const int row[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 = LOW; 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 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 }; 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 =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) { refreshScreen(); countDown--; pirCountdown--; if(countDown<= 0) { countDown = refreshSpeed; screenSetup(); } } }
De vigtige dele at forstå er:
Opdateringshastigheden . Denne variabel bestemmer, hvordan tiden mellem hver skærm opdateres. Et større antal betyder længere ventetid.
Const CHAR_MAP_NAME s. Det er her, hvor du sætter hvert karakterkort (eller ramme, hvis det er lettere at tænke på dem på den måde) du vil vise.
Variablen noOfFrames . Dette bestemmer, hvor mange rammer der vises i ét fuldt spil gennem. Bemærk, at det kan være anderledes end antallet af karakterkort. For eksempel, hvis du ønskede at vise "A CAT", skulle du kun definere fire forskellige rammer: tomt, en A, a C og en T.
Nu, når bevægelsesføleren registrerer bevægelse, skal LED-skærmen blinke LED'en tre ned og tre ind fra øverst til venstre. Hvis det ikke vises korrekt, skal du kontrollere dit ledninger igen for at sikre, at alt er på det rigtige sted! Når du tilføjer dit eget billede eller din besked, kan det blive afskåret tidligt eller spille for længe. Prøv at ændre pirLockTime- variablen, indtil den afspilles i den tid, du ønsker.
Processen med at tilføje hver ramme til LED-skærmen kan være lidt kedelig, så vi har lavet dette regneark for at gøre det lidt lettere at lave tekst og billeder til din LED-matrix (lav en kopi af Google-arket, så du kan redigere det ).
Ved hjælp af regnearket kan du kopiere dine kreationer direkte til koden.
Gør det modig elementerne
Nu hvor vi har en fungerende LED matrix, har vi brug for en måde at overleve vintervejr. Mens denne metode måske ikke står op til en tropisk storm eller bliver dunked i poolen, bør det være nok at holde hele elektronikken sikker fra elementerne.
Jeg brugte en rund Tupperware kasse, der er 15 cm i diameter og 6 cm dyb, da den passer perfekt til mine komponenter. Skær et vindue i låget lidt større end din LED matrix, og fastgør en klar plastfilm til den, så sørg for ikke at give plads til væske for at komme ind. Stabil plastik fra nogle emballager virker bedst, men det var alt, hvad jeg havde. Du kan også vedhæfte nogle monteringer til protobordet, selvom begge job kan nemt gøres med stærkt vandtæt tape.
Dernæst lav et lille hul under vinduet, og skær det forsigtigt og langsomt, indtil din PIR-sensor kun kan passe igennem. Du vil have, at den passer så tæt som muligt.
Vedhæft din PIR-sensor, og udfyld eventuelle huller, du kan se med tape eller varm lim.
Rengør eventuelt tape eller lim, der kan forhindre, at kassen lukkes korrekt, og tilføj alle dine komponenter til kassen sammen med dit batteri. Her blev der brugt en simpel AA-batteripakke, der blev plugget direkte ind i Nano VCC-stiften. Et par små stykker kork blev lagt på ydersiden af kabinettet for at hjælpe med at hænge bygningen i midten af kransen.
Og vi er færdige
Når kassen er forseglet, hæng den med din julkrans, og vent til dine besøgende reaktioner på din højteknologiske under $ 20 personlig velkomst! Du kan endda gå et skridt videre og skabe fantastiske DIY dekorationer 3D-Trykte Juledekorationer til Perfekte Geekyferie 3D-Trykte Juledekorationer til Perfekte Geekyferier Hvorfor ikke spare dig selv nogle penge denne jul og 3D print nogle festlige udsmykninger til dit hjem? Læs mere for andre steder rundt i huset også!
I dette projekt har vi bygget et selvstændigt LED matrix system fra bunden, der er bevægelse aktiveret og kan overleve at være udenfor i alle, men det mest ubehagelige vejr. Denne bygning vil komme i brug længe efter at feriesæsonen er overstået i andre projekter, og den samme teknik kan bruges til at skabe billige vejrbestandige kabinetter til andre projekter.
Har du bygget noget for at give din jul et DIY twist? Planlægger du noget DIY tema julegave i år? Lad os vide i kommentarerne nedenfor!