Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sveiki dar kartą, mokomieji žmonės!:-P
Dėl siuntimo problemų negalėjau tęsti savo ABTW projekto, todėl nusprendžiau parodyti jums kitą, savo naujausią kūrinį.
Manau, kad daugeliui iš mūsų, kaip ir man, patinka tos gražios adresuojamos LED juostos (dar vadinamos NEOPIXEL LED). Juos galite gauti iš ADAFRUIT. Kiti pardavėjai taip pat pateiks panašius produktus. ADAFRUITS - GitHub (spustelėkite mane) yra biblioteka, įskaitant tam tikrą kodo pavyzdį. Taigi kodavimas turėtų būti tiesioginis…
Pamačiau tuos NEOPIXELES mintis, ką aš galiu padaryti su tomis blizgančiomis smulkmenomis.
- LED matricos ekranas? -> Sudėtinga ir aš jo nenaudoju (šiuo metu)
- „X-Mas“apšvietimas? -> Tai tinka sezonui, bet būtų pigiau nusipirkti:-P
- laikrodis? -> Kodėl gi ne! Bet tai turėtų būti stilinga ir neįprasta
Taigi, pasidarykime sieninį laikrodį.
Jei atidžiai pažvelgsime į savo rankinį laikrodį (jei turite analogą kaip aš), pastebėsime, kad turime 12 valandų ir 60 minučių (tikiuosi). Tai reiškia, kad mums reikia 60 adresuojamų šviesos diodų, phu! Jei paimsime juostą su 60 šviesos diodų / metru, gausime ~ 318 mm skersmenį (spindulys = apimtis / (2*Π)), tai tikrai per didelis.
Tiesa, jei ko nors paprašysite laiko, niekas nepasakys, kad yra 2 minutės po 3! Jūs gausite atsakymą „Tai yra 5 praeityje 3“. Taigi kodėl neturėtume viską sumažinti iki 5 minučių? Tam mums reikės tik 12 šviesos diodų, o tai reiškia, kad gauname 63,6 mm skersmens. Mes taip pat galime atskirti valandas ir minutes, suteikdami jiems atskirą spalvą. Mes taip pat galėsime suteikti „trūkstamus“vienos minutės žingsnius su papildoma 4 šviesos diodų juosta (arba vienu adresuojamu šviesos diodu).
TAI PLANAS! Pažiūrėkime, kaip aš viską padariau. Kaip visada, pateiksiu medžiagų sąrašą/sąskaitą ir instrukcijas, kaip ją sukurti.
Jei manote, kad tik Šveicarijos žmonės gali gaminti šaunius laikrodžius, įrodykime, kad klystate (atsiprašau, Šveicarija:-P)
1 žingsnis: dizainas ir medžiagų pasirinkimas
Dizainas:
Jei dar kartą atidžiai pažvelgsime į savo analoginį laikrodį, pamatysime, kad apskritimas yra padalintas į 12 * 30 ° žingsnius, kuriuos mes žinome, kad mums reikia 63,6 mm LED juostelės. Taigi turėtų būti įmanoma kažkaip sulyginti juostelę aplink vamzdelį. Aš nusprendžiau naudoti akrilo stiklą, nes jis atrodo gražiai ir į jį galima įterpti LED šviesą, o kiekviename stiklo trūkume atsiras šviesos išsklaidymas. Taigi, tarkime: daugiau priemaišų sukels daugiau šviesos išsklaidymo! Mes būtent to ir norime. Taigi drąsiai griebkite savo graviravimo įrankius ir būkite kūrybingi:-)
Jei remiatės mano „BoM“sąrašu ir pavadinimu, kurį daviau laikrodžiui, pasirinkau dizainą, panašų į saulę. Visas akrilo detales gavau iš vokiečių pardavėjo „E-Bay“(nuoroda pateikta dokumente). Jums reikės:
- akrilo šlifavimo plokštė, skaidrus storis = 6 mm, skersmuo = 300 mm
- akrilo vidurinė plokštė, skaidrus storis = 3 mm, skersmuo = 150 mm
- priekinė akrilo plokštė, satinas, storis = 3 mm, skersmuo = 90 mm
- akrilo vamzdis, skaidrus, išorinis skersmuo = 64 mm (tai reiškia, kad turėsime šiek tiek pataisyti su LED juostele)
- akrilo strypas, skaidrus, skersmuo = 5 mm (tai bus mūsų sijos); Taip pat yra akrilo strypų, kurių viduje yra burbuliukų, aš juos rekomenduoju, bet aš jų neturiu.
- akrilo klijai
Elektronika (žr. „Fritzing“failus):
- „Arduino mini“(arba panašus)
- 1 adresuojama LED juostelė (12 šviesos diodų valandoms ir 5 minutėms)
- 4 adresuojami šviesos diodai (vienos minutės)
- 2 330 omų rezistoriai
- 1 1000µF kondensatorius
- 1 maitinimo šaltinis (5V/500mA)
- RTC DS-1307 (neprivaloma!)
- „Bluetooth“modulis (neprivaloma! Taip, laiką galite nustatyti per „BT“ir „Android“išmanųjį telefoną)
Jei paklaustumėte savęs, kodėl mano „BoM“turi MAX485 lustų. Atsakymas yra tas, kad noriu sinchronizuoti laikrodį su namų automatikos sistema, kurią ketinu sukurti (niekada daugiau nebereikės nustatyti laikrodžio, kad taptų vasaros laikas:-P). Tai aprašysiu savo dienoraštyje kitame pora savaičių/mėn.
Kaip pastebėjote, aš taip pat bandysiu išjungti laikrodį iš tinklo su kai kuriomis saulės baterijomis ir „LiPo“, tačiau to neaprašau šioje instrukcijoje, nesivaržykite to išbandyti patys.
2 žingsnis: Paruoškite akrilo dalis
Priemonės:
Visų pirma, tai tikrai naudinga, jei atspausdinsite DWG planą, kurį pridėjau 1: 1 skalėje. Tai padės suderinti visas dalis ir taps gręžimo planu. Toliau jums reikės:
- hobbyknife
- nuolydžio matuoklis
- pjūklas
- spaustukai
- Rankinis grąžtas
- gali gręžti, skersmuo 65 mm
- metalinių grąžtų rinkinys
- maža metalinė dildė
- akrilo klijai
Pradėkime:
Paimkite įžeminimo plokštę ir sulygiuokite ją su planu, kad gautumėte apskritimo centrą. Dabar paimkite rankinį gręžtuvą su ant jo pritvirtintu skardinės gręžtuvu ir gręžkite (labai lėtai! Ne per didelį spaudimą!) Skylę įžeminimo plokštės centre, išorinis apskritimas turėtų būti ~ 2-3 mm gylio. Tai reiškia, kad LED juostelė turi būti įdėta į įžeminimo plokštę (LED juosta ~ 10 mm pločio, sijos yra tik 5 mm skersmens) ir sulygiuojamos su spinduliais (žr. 1 paveikslą).
Dabar mums reikia pjūklo, pjovimo matuoklio ir akrilo vamzdžio. Tiesiog supjaustykite jį į gabalus, aš nusprendžiau padaryti korpusą (vamzdelį) 40 mm ilgio (2 pav.). Dabar vėl paimkite pjūklą ir padarykite mažą rabiną vienoje vamzdžio pusėje, kad jis būtų lygus su metaline dilde. Čia laidai išeis;-) (žr. 3 paveikslą)
Laikas šiek tiek klijuoti … Paimkite vidurinę plokštę (d = 150 mm) ir priekinę plokštę (satinuotą). Dar kartą suderinkite jas su planu, uždėkite šiek tiek klijų ant vidurinės plokštės centro, sulygiuokite priekinę plokštę ir palaukite, kol klijai yra šiek tiek sukietėję. Klijai, kuriuos naudojau, yra lengvai kietėjantys ir gali užtrukti iki 2-3 valandų, todėl mybe norite naudoti spaustuką … (3 ir 4 paveikslas)
Tą patį padarykite klijuodami mėgintuvėlį ant įžeminimo plokštės, įsitikinkite, kad juostelė nukreipta į plokštę ir pritvirtinta ten, kur norite, kad būtų pirmasis šviesos diodas (12 val.).
Palaukite, kol jis sukietės!
Dabar galime suderinti 2 dalis (sukonfigūruotas pagal planą) ir išgręžti 4 vienos minutės skyles (5 mm skersmens arba jūsų pasirinkto šviesos diodo skersmens; gręžkite lėtai, nespausdami). Gręžkite apie 8-9 mm gylio. Būkite atsargūs, satinuota plokštė yra labai trapi ir gali sustoti, jei gręžiate giliai. Dabar galite juos klijuoti arba nuspręsti, kaip ir aš, kaip įpjauti grėsmę į įžeminimo plokštę ir pritvirtinti varžtu.
Vėlgi, palaukite, kol klijai sukietės. Dabar sulygiuokite ir klijuokite sijas ant įžeminimo plokštės. (6 pav.) Atspėk, kas … palauk, kol klijai sukietės:-) Pereikime prie elektronikos …
3 žingsnis: Elektronika
Priemonės:
- lituoklis
- lydmetalis
- pomėgio peilis
- mažas PCB prototipų kūrimo gabalas
- emaliuota viela ar bet kokia kita jums patinkanti viela
- karšti klijai
Aš pasakiau su atskirais šviesos diodais. Jei naudojate emaliuotą vielą, nepamirškite prieš litavimą nubraukti lako. Tam galite naudoti pomėgio peilį. Prijunkite juos, galite pamatyti paveikslėlį su „flikto.de“pinout. Atminkite, kad DOUT pereina prie DIN kitame šviesos diode! (žr. 2 paveikslą) Po to LED juostą galite supjaustyti į 4 elementus, kurių kiekvienas turi 3 šviesos diodus. Atminkite, kad mes turime 63,6 mm LED juostelę ir 64 mm išorinį vamzdžio skersmenį, todėl mums reikia šiek tiek „papildomo ilgio, kad jis būtų tiksliai suderintas su sijomis. Sujunkite jį emaliuota viela, kaip parodyta 4 paveiksle. kaip „maitinimo diržas“ir jame bus LED juostų komponentai (du 330 omų rezistoriai ir 1000 µF kondensatorius, 7 pav.).
Dabar pritvirtinkite juostelę aplink vamzdelį, priskirkite šviesos diodus prie sijų. Pirmasis „Pixel“atitinka 12 val. Jei apvertėte savo būstą, nepamirškite, kad viskas yra veidrodis. Tęskite prieš laikrodžio rodyklę! Norėdami pritvirtinti jį prie vamzdžio, naudokite karštus klijus. Mažas lašas kiekvienam segmentui tai padarys!
Tą patį galite padaryti ir su atskirais šviesos diodais (galiausiai veidrodiniais), tiesiog įpilkite karštų klijų ir įspauskite juos į iš anksto išgręžtas skyles.
Dar nejunkite laido į „Arduino“, BT ryšiui naudosime techninę seriją, todėl pirmiausia patikrinkite kitus veiksmus, kuriuose aprašau programinę įrangą.
4 žingsnis: kodas
Dabar galite įkelti eskizą į „Arduino“. Dabar taip pat galite prijungti šviesos diodų juosteles. Nejunkite BT modulio !!! Pirmiausia norime pažvelgti į kodą, turėtumėte žinoti, kur galite pataisyti kelis dalykus …
Atsisiųskite „Arduino IDE“ir bibliotekas. „Arduino IDE“, „Adafruit“„NeoPixel“, laikas, DS1307RTC
Įdiekite IDE ir įdėkite bibliotekas į bibliotekos aplanką. Atidarykite pridėtą INO failą ir įkelkite jį į savo arduino. Čia aprašytas kodas yra tas pats, bet su papildomais komentarais! Jei viską padarėte teisingai, dabar galite pamatyti „įkrovos“vaizdą. Galima nustatyti serijinio monitoriaus laiką. Tiesiog įveskite @"valanda"/"min"/"sek", pvz. @10/33/00 (10:33).
Nesivaržykite žaisti su kodu … Čia ne trumpas kodo aprašymas (sąranka be RTC!)
APIBRĖŽIMAI:
#define PIN 6 // Hour LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Pikselių skaičius valandai #define MINNUMPIXELS 4 // Vienos minutės taškų skaičius #define BAUDRATE 115200 // Baudrate BT modulio duomenų perdavimo sparta #define utch '@' // start BYTE of TimeSync
int laikas = 0; // vėliava saugoti, jei laikas buvo nustatytas po bootint delayval = 20; // išnykstančios animacijos uždelsimas int laikrodis = 10000; // laiko atnaujinimas int timebright = 250; // valandos ryškumas Strip int mtimebright = 50; // ryškumas singelminint inicializuoti = 0; // vėliava, norint iškviesti „clearpixels“funkciją po įkrovos pradžios; int oldahour = 0; // parduotuvės ankst. valandos aminute; int oldamin = 0; // išsaugo ankstesnę minutę atnaujinimui asecond; int aday; viduryje; per metus; int mmin; tmElements_t tm;
// 2 „NeoPixel“LED matricų sąranka (PAVADINIMAS = TIPAS (PIXELIŲ SKAIČIUS, KURIO PIN kodas, FORMATAS RGB AR GRB, DAŽN.); Daugiau informacijos rasite „Adafruit“vadove.); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);
NUSTATYMAS:
void setup () {
Serial.begin (BAUDRATE); Wire.begin (); // Inicijuokite juosteles, visos OFFpixels.begin (); minpixels.begin (); pixels.show (); minpixels.show ();
// Padarykite mažą animacijąSerial.println ("SUNRISE"); saulėtekis (); vėlavimas (1000); Serial.println ("SUNSET"); saulėlydis (); pixels.show (); Serial.println ("READY"); }
KURPAS:
void loop () {// patikrinkite, ar nėra laiko sinchronizavimo, o (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // jei eilutėje yra @, perskaitykite būsimus baitus /colius {readtime (); }} // inicijuokite šviesos diodus, išvalykite įkrovos animaciją
if (inicializuoti == 0) {clearpixels (); inicijuoti = 1; }
ahour = valanda ();
aminute = minutė (); if (timeset == 1 || timeset == 0) // čia galite patikrinti, ar buvo nustatytas laikas, čia galite sustabdyti programą, jei Timeset = FALSE, tiesiog pašalinkite "|| timeset == 0"!
{
jei (oldamin <aminute || oldahour visi nustatyti į OFF, rodyti naują laiką {clearpixels (); ClockDisplay ();}}}
Rodyti laikrodį:
void ClockDisplay () {
oldahour = ahour;
oldamin = aminute; int xhour, xmin;
if (ahour> = 12) {xhour = ahour-12; // 24 valandas rodome tik 12 šviesos diodų} else {xhour = ahour; } // padalykite jį į 5 min žingsnius xmin = (aminute /5); if (oldamin <aminute) {oldamin = aminute; aiškūs pikseliai (); } // paimk likusią padalijimo dalį dor singelmin LED mmin = (aminute % 5); // modulo operatorius pvz. 24 % 5 = 4! labai naudinga: -Ppixels.setBrightness (timebright); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // čia galite pakeisti spalvas! žaisti aplink! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixels.show ();
// rodyti singel minsfor (int m = 0; m
minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixels. Color (255, 255, 0)); minpixels.show (); }} Skaitykite ir apdorokite TIME informaciją iš serijos
void readtime () // jei jau gavome pirmaujantį „@“, apdorojame ateinančius duomenis ir saugome TIME Lib laiką
ahour = Serial.parseInt (); aminute = Serial.parseInt (); asecond = Serial.parseInt (); aday = Serial.parseInt (); mėnuo = Serial.parseInt (); metai = Serial.parseInt (); Serial.println ("TIMESET"); Serial.print (ahour); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }
Išvalyti viską
void clearpixels () // išjunkite kiekvieną PIXEL, kad atnaujintumėte ekraną {
pixels.begin (); minpixels.begin (); (int i = 0; ipixels.setPixelColor (i, pixels. Color (0, 0, 0))); minpixels.setPixelColor (i, pixels. Color (0, 0, 0)); pixels.show (); minpixels. Rodyti(); } }
5 veiksmas: „Android APP“ir „BT“ryšys
Jei jums pavyko atlikti ankstesnius veiksmus, dabar galite prijungti savo BT modulį. (Tikiuosi, kad įsitikinote, kad baudos greičiai sutampa). nepamirškite kirsti TX ir RX linijų:-)
Atsisiųskite ir įdiekite programą, suporuokite ją su savo BT raktu, paleiskite programą, prisijunkite prie rakto ir sinchronizuokite laiką su savo mobiliuoju telefonu. APP iš esmės daro tą patį, ką ir anksčiau. Jis tiesiog siunčia @hh/mm/ss/dd/mm/YYYY, sukurtą pagal sistemos laiką. Aš taip pat pateikiau „APPInventor AIA“failą ir paaiškinimą apie kitą veiksmą (tiems, kurie domisi).
6 veiksmas: „APPInventor“
„APP Inventor“yra gana paprasta naudoti ir verta pastangų dėl tokios paprastos programos.
Jei kuriate naują projektą, DESIGNER ekrane rasite save. (1 pav.) Čia mes pridedame lenteles, mygtukus, jutiklius ir kitus elementus tolesniam naudojimui. Mūsų atveju mums reikia:
- lentelė (visiems elementams pažymėti)
- sąrašo parinkiklis (norint pasirinkti BT įrenginį, prie kurio prisijungiame)
- mygtukas (norint įjungti TIME per BT)
- kai kurios etiketės (rodyti tikrąjį laiką ir datą)
- laikrodžio jutiklis (atnaujinkite laiką)
- „Bluetooth“kliento jutiklis (ryšys)
Pridėti juos taip pat paprasta, kaip vilkite ir numeskite! 2 paveikslėlyje galite matyti „APP“apžvalgą BLOKŲ ekrane. Na, iš esmės čia ir įvyksta visa „magija“. Viršuje sukūriau keletą kintamųjų, kad būtų galima išsaugoti laiką ir datą. Pirmasis blokas viršutiniame kairiajame kampe inicializuos sąrašo parinkiklio elementą su susietų BT įrenginių sąrašu. antrame bloke mes nusprendžiame, ką daryti su anksčiau pasirinktu elementu. Na, mes norime prie jo prisijungti.
Jei atidžiai pažvelgsite į kitą bloką, pamatysite, kad mes sukuriame BT pranešimą, jei BT būsena „prijungta“. Tai tas pats, ką mes įvedėme į „SerialMonitor“anksčiau. Paskutinis blokas kairėje suteiks mums pirmaujančius nulius, kad būtų rodomas laikas (pvz., 01:08). Dešinėje pusėje rasite paskutinį mūsų bloką, kuriame mes naudojame laikrodžio elementą. Čia mes atnaujiname kintamuosius ir sujungiame juos su skaitmenų procedūra, tai atsitiks kas 1000 ms (numatytasis nustatymas, pakeiskite jį dizainerio režimu) ir rodyti atnaujintas vertes su etikete. Tai tik trumpas aprašymas, tačiau APPInventor yra tikrai taip paprasta:-) Galbūt bendruomenėje yra kas nors, norintis parašyti „iOS“ar „WindowsPhone“programinę įrangą. (Būtų puiku)
Tikiuosi, kad jums patiko mano „Instructable“! Linksminkitės su savo naujuoju sieniniu laikrodžiu! Galbūt norite padovanoti mylimam žmogui (X-Mas sezonas):-)
Ir jei turite kokių nors klausimų, nedvejodami klauskite manęs!
Linkėjimai ir linksmi Kalėdų seneliai.