Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Pozdravljeni spet učitelji!:-P
Zaradi težav pri pošiljanju nisem mogel nadaljevati projekta ABTW, zato sem se odločil, da vam pokažem drugo, najnovejšo stvaritev.
Mislim, da imamo mnogi, tako kot jaz, všeč lepe naslovljive LED trakove (imenovane tudi NEOPIXEL LED). Dobite jih pri ADAFRUIT -u. Podobne izdelke bodo ponudili tudi drugi prodajalci. Na voljo je knjižnica na ADAFRUITS - GitHub (kliknite me), vključno z nekaj vzorčne kode. Zato je kodiranje preprosto …
Videl sem te NEOPIXELE misel, kaj za vraga… lahko storim s temi sijočimi malenkostmi.
- Z matričnim LED zaslonom? -> Preveč zapleteno in ga ne uporabljam (trenutno)
- Božična razsvetljava? -> Primerno za sezono, vendar bi bilo ceneje kupiti enega:-P
- ura? -> Zakaj pa ne! Vendar bi moralo biti elegantno in nekonvencionalno
Torej, naredimo stensko uro.
Če natančno pogledamo zapestno uro (če imate analog, kot sem jaz), bomo opazili, da imamo 12 ur in 60 minut (upajmo). To bo pomenilo, da potrebujemo 60 naslovljivih LED diod, phu! Če vzamemo trak s 60 LED diodami / meter, bomo dobili premer ~ 318 mm (polmer = obseg / (2*Π)), kar je zagotovo prevelika.
Resnica je, da če nekoga vprašate za čas, nihče ne bo rekel, da sta 2 minuti čez 3! Kot odgovor boste dobili "To je 5 čez 3". Zakaj torej ne bi vsega zmanjšali na 5 -minutne korake? Za to potrebujemo le 12 LED, kar pomeni, da dobimo premer 63,6 mm. Prav tako lahko ločimo ure in minute tako, da jim dodelimo ločeno barvo. "Manjkajoče" enominutne korake bomo lahko zagotovili tudi z dodatnim trakom 4 LED (ali eno samo naslovljivo LED).
TO JE NAČRT! Poglejmo, kako sem vse naredil. Kot vedno bom predložil seznam/kosov materialov in navodila, kako ga zgraditi.
Če mislite, da lahko le Švicarji izdelujejo kul ure, potrdimo, da se motite (žal Švica:-P)
1. korak: Oblikovanje in izbira materialov
Oblikovanje:
Če ponovno natančno pogledamo analogno uro/uro, vidimo, da je krog razdeljen na 12 * 30 ° korake, ki jih poznamo, da za LED-trak potrebujemo 63,6 mm. Torej bi moralo biti mogoče nekako poravnati trak okoli cevi. Odločil sem se za akrilno steklo, ker izgleda lepo in je vanj mogoče vstaviti LED svetlobo in ob vsaki pomanjkljivosti v steklu se bo zgodilo nekaj razpršitve svetlobe. Torej, recimo: več nečistoč bo privedlo do večjega razprševanja svetlobe! To je točno tisto, kar želimo. Zato vas prosimo, da vzamete orodja za graviranje in bodite ustvarjalni:-)
Če se sklicujete na moj seznam BoM in ime, ki sem ga dal uri, sem izbral obliko, podobno soncu. Vse akrilne dele sem dobil pri nemškem prodajalcu na E-Bayu (povezava v BoM). Za moj dizajn boste potrebovali:
- akrilna talna plošča, prozorna debelina = 6 mm, premer = 300 mm
- akrilna srednja plošča, prozorna debelina = 3 mm, premer = 150 mm
- prednja plošča iz akrila, saten, debelina = 3 mm, premer = 90 mm
- akrilna cev, prozorna, zunanji premer = 64 mm (to bo pomenilo, da moramo malo prilagoditi LED trak)
- akrilna palica, prozorna, premer = 5 mm (to bodo naši nosilci); Okrog so tudi akrilne palice z mehurčki, priporočam jih, vendar jih nimam.
- akrilno lepilo
Elektronika (glejte datoteke Fritzing):
- Arduino mini (ali podoben)
- 1 naslovljiv LED trak (12 LED za eno uro in 5 minut korakov)
- 4 naslovljive LED (posamezne minute)
- 2 upori 330 Ohmov
- 1 1000µF kondenzator
- 1 napajalnik (5V/500mA)
- RTC DS-1307 (neobvezno!)
- Modul Bluetooth (neobvezno! Da, čas lahko nastavite prek BT in pametnega telefona Android)
Če se vprašate, zakaj imam čipe MAX485 na svojem BoM -u. Odgovor je, da želim sinhronizirati uro s sistemom za avtomatizacijo doma, ki ga nameravam narediti (nikoli več mi ne bo treba nastaviti ure za poletni čas:-P). To bom opisal v svojem spletnem dnevniku v naslednji nekaj tednov/mesec.
Kot ste opazili, bom tudi uro poskušal izklopiti z nekaterimi sončnimi celicami in LiPo-jem, vendar tega v tem Instructable-u ne zajemam, zato poskusite sami.
Korak: Pripravite akrilne dele
Orodja:
Najprej je zelo koristno, če natisnete načrt DWG, ki sem ga dodal v merilu 1: 1. To vam bo pomagalo pri poravnavi vseh delov in vam bo služilo kot načrt vrtanja. Nadalje boste potrebovali:
- hobi nož
- kosilec
- žaga
- objemke
- ročni vrtalnik
- vrtalnik, premer 65 mm
- komplet svedrov za kovine
- majhna kovinska pilica
- akrilno lepilo
Začnimo:
Vzemite talno ploščo in jo poravnajte po načrtu, tako da lahko dobite središče kroga. Zdaj vzemite ročni vrtalnik z vrtalnikom za pločevinke in izvrtajte (zelo počasi! Ne preveč pritiska!) Luknjo na sredini ozemljitvene plošče, zunanji krog pa naj bo globok ~ 2-3 mm. To je, da LED trak potopite v ozemljitveno ploščo (LED trak širine ~ 10 mm, žarki s premerom le 5 mm) in jih poravnate z nosilci (glejte sliko 1).
Zdaj potrebujemo žago, kosilo in akrilno cev. Samo narežite ga na koščke, odločil sem se, da bom ohišje (cev) naredil 40 mm dolgo (slika 2). Zdaj znova primite žago in na eni strani cevi naredite malo zajčka, da bo gladko s kovinsko pilico. Tam bodo izšle žice;-) (glej sliko 3)
Čas je za nekaj lepila … Vzemite srednjo ploščo (d = 150 mm) in sprednjo ploščo (satenasto). Ponovno ju poravnajte po načrtu, na sredino srednje plošče položite nekaj lepila, poravnajte sprednjo ploščo in počakajte, da se lepilo je rahlo utrjeno. Lepilo, ki sem ga uporabil, se rahlo strdi in lahko traja do 2-3 ure, zato lahko uporabite objemko … (sliki 3 in 4)
Enako naredite z lepljenjem cevi na talno ploščo, prepričajte se, da je zajc obrnjen proti plošči in da je poravnan nekam, kjer želite, da je prva LED (12 ur).
Počakajte, da se strdi!
Sedaj lahko 2 dela (z ujemanjem) poravnamo na načrt in izvrtamo naše 4 enojne minutne luknje (premer 5 mm ali premer LED, ki ste ga izbrali; počasi vrtajte brez prevelikega pritiska). Vrtajte približno 8-9 mm globoko. Bodite previdni, satenasta plošča je zelo krhka in se lahko zavre, če izvrtate globoko. Zdaj jih lahko zlepite skupaj ali pa se odločite, tako kot jaz, da groznjo zarežemo v talno ploščo in jo pritrdimo z vijakom.
Še enkrat počakajte, da se lepilo strdi. Zdaj poravnajte in lepite tramove na talno ploščo. (slika 6) Ugani kaj … počakaj, da se lepilo strdi:-) Gremo k elektroniki …
3. korak: Elektronika
Orodja:
- spajkalnik
- spajkalna žica
- nož za hobi
- majhen kos prototipa PCB
- emajlirano žico ali katero koli drugo žico, ki vam je ljubša
- vroče lepilo
Začel sem z enojnimi LED diodami. Če uporabljate emajlirano žico, ne pozabite strgati laka pred spajkanjem. Za to lahko uporabite nož za hobi. Priključite jih, si oglejte sliko z izpisom na flikto.de. Upoštevajte, da DOUT preide v DIN na naslednji LED! (glejte sliko 2) Po tem lahko LED trak razrežete na 4 elemente, vsak s po 3 LED. Ne pozabite, da imamo 63,6 mm LED trak in 64 mm zunanji premer cevi, zato potrebujemo "dodatno dolžino, da jo natančno poravnamo z nosilci. Ožičite jo z emajlirano žico, kot je na sliki 4. Naredil sem malo proto PCB, ki bo služil kot "napajalni pas" in bo vseboval komponente za LED trakove (dva upora 330Ohm in 1000µF kondenzator, slika 7). Za to glejte sliko Fritzing.
Zdaj pritrdite trak okoli cevi, poravnajte LED diode na nosilce. Prvi Pixel se ujema z 12. uro. Če ste obrnili svoje stanovanje, ne pozabite, da se vse zrcali. Nadaljujte v nasprotni smeri urinega kazalca! Za pritrditev na cev uporabite nekaj vročega lepila. Majhna kapljica za vsak segment bo uspela!
Enako lahko storite za posamezne LED diode (sčasoma zrcaljene), samo dodajte nekaj vročega lepila in jih pritisnite v predhodno izvrtane luknje.
Arduina še ne ožičite, za povezavo BT bomo uporabili serijsko strojno opremo, zato najprej preverite naslednje korake, kjer opisujem programsko opremo.
4. korak: Koda
Zdaj lahko skico naložite v Arduino. Zdaj lahko povežete tudi LED trakove. Ne povezujte modula BT !!! Najprej si želimo ogledati kodo, vedeti morate, kje lahko spremenite več stvari …
Prenesite Arduino IDE in knjižnice. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC
Namestite IDE in knjižnice vstavite v mapo knjižnice. Odprite priloženo datoteko INO in jo naložite v svoj arduino. Koda, opisana tukaj, je enaka, vendar z dodatnimi komentarji! Če ste vse naredili prav, lahko vidite "bootanimation". Čas je mogoče nastaviti preko serijskega monitorja. Samo vnesite @"ura"/"min"/"sek" npr. @10/33/00 (10:33).
Ne pozabite se igrati s kodo … Tukaj vam bom dal kratek opis kode (nastavitev brez RTC!)
DEFINICIJE:
#define PIN 6 // LED trak za uro #define MINPIN 5 // LED za posamezno minuto #define NUMPIXELS 12 // Število slikovnih pik za uro #define MINNUMPIXELS 4 // Število slikovnih pik za eno minuto #define BAUDRATE 115200 // Hitrost prenosa mora ustrezati hitrost prenosa modula BT #define utch '@' // začni BYTE TimeSync
int časovni nabor = 0; // zastavica za shranjevanje, če je bil čas nastavljen po zagonu delayval = 20; // zakasnitev za izginjanje animacije int clocktimer = 10000; // čas osveževanja int timebright = 250; // svetlost ure Strip int mtimebright = 50; // svetlost singelminint initialize = 0; // zastavica za klic funkcije clearpixels po zagonski uri; int oldahour = 0; // trgovina prev. urni minutni minut; int oldamin = 0; // shrani prejšnjo minuto za osvežitev za sekundo; int aday; int amonth; int leto; int mmin; tmElements_t tm;
// Nastavitev za 2 nizov LED NeoPixel (IME = TIP (ŠTEVILO PIXELOV, KI PIN, OBLIKA RGB ALI GRB, FREQ); Za več informacij si oglejte vodnik Adafruit. Adafruit_NeoPixel slikovnih pik = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_GRB +); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);
NASTAVITI:
void setup () {
Serial.begin (BAUDRATE); Wire.begin (); // Začetni trakovi, vsi OFFpixels.begin (); minpixels.begin (); piksli.show (); minpixels.show ();
// Naredite malo animationSerial.println ("SONČA"); sončni vzhod (); zamuda (1000); Serial.println ("SONČNI"); sončni zahod(); piksli.show (); Serial.println ("READY"); }
LOOP:
void loop () {// preveri za timesync while (Serial.available ()> 0) {char c = Serial.read (); če (c == utch) // če je na vrstici @, preberite prihajajoče bajte /inte {readtime (); }} // inicializirajte LED, počistite animacijo zagona
if (inicializira == 0) {clearpixels (); inicializiraj = 1; }
ura = ura ();
minuta = minuta (); če (timeset == 1 || timeset == 0) // tukaj lahko preverite, ali je bil čas nastavljen, lahko program ustavite tukaj, če je Timeset = FALSE, samo odstranite "|| timeset == 0"!
{
če je (oldamin <aminute || oldahour nastavljeno na OFF, prikaže nov čas {clearpixels (); ClockDisplay ();}}}
Prikažite uro:
void ClockDisplay () {
oldahour = ura;
oldamin = aminuta; int xhour, xmin;
če (ahour> = 12) {xhour = ahour-12; // imamo samo 12 LED za 24 -urni prikaz} else {xhour = ahour; } // ga povečamo na 5min xmin = (aminute /5); če (oldamin <aminute) {oldamin = aminute; jasne slikovne pike (); } // vzemite preostanek delitve na LED singelmin mmin = (aminute % 5); // modularni operater npr. 24 % 5 = 4! zelo uporabno: -Pixels.setBrightness (timebright); pixels.setPixelColor (xmin, slikovnih pik. Barva (5, 125, 255)); // tukaj lahko spremenite barve! play around! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); piksli.show ();
// prikažemo singel minsfor (int m = 0; m
minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, slikovnih pik. Colour (255, 255, 0)); minpixels.show (); }} Branje in obdelava informacij TIME iz Serial
void readtime () // če smo že dobili vodilni "@" proces prihajajočih podatkov in shranimo čas za TIME Lib {
ahour = Serial.parseInt (); aminute = Serial.parseInt (); asecond = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); ayear = Serial.parseInt (); Serial.println ("TIMESET"); Serial.print (ura); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }
Počisti vse
void clearpixels () // izklopite vsak PIXEL, da osvežite zaslon {
pixels.begin (); minpixels.begin (); za (int i = 0; ipixels.setPixelColor (i, slikovne pike. Color (0, 0, 0)); minpixels.setPixelColor (i, slikovne pike. Color (0, 0, 0)); pixels.show (); minpixels.show ();}}
5. korak: Povezava APP za Android in BT
Če ste bili s prejšnjimi koraki uspešni, lahko zdaj povežete svoj modul BT. (upam, da ste se prepričali, da se boudrate ujemajo). ne pozabite prečkati linij TX in RX:-)
Prenesite in namestite aplikacijo, se povežite z vašim ključem BT, zaženite aplikacijo, povežite se s ključem in sinhronizirajte čas z mobilnim telefonom. APP v bistvu dela enako kot mi prej. Pošilja samo @hh/mm/ss/dd/mm/LLLL, ustvarjeno iz njegovega sistemskega časa. Posredoval sem tudi datoteko APPInventor AIA in pojasnilo o naslednjem koraku (za tiste, ki jih zanima).
6. korak: APPInventor
APP Inventor je precej enostaven za uporabo in vreden truda za tako preprost program.
Če naredite nov projekt, se boste na zaslonu DESIGNER znašli. (slika 1) Tukaj dodamo tabele, gumbe, senzorje in druge elemente za nadaljnjo uporabo. V našem primeru potrebujemo:
- tabela (za poravnavo vseh elementov)
- izbirnik (za izbiro naprave BT, s katero se povežemo)
- gumb (za sprožitev časa preko BT)
- nekaj oznak (prikaz dejanskega časa in datuma)
- senzor ure (osvežite čas)
- senzor odjemalca bluetooth (povezljivost)
Dodajanje je tako preprosto kot povleci in spusti! Na sliki 2 si lahko ogledate pregled "APP" na zaslonu BLOK. No, v bistvu se tam zgodi vsa "čarovnija". Na vrhu sem ustvaril nekaj spremenljivk za shranjevanje časa in datuma. Prvi blok v zgornjem levem kotu bo inicializiral element listpicker s seznamom seznanjenih naprav BT. drugi blok se odločimo, kaj bomo naredili s predhodno izbranim elementom. No, želimo se povezati z njim.
Če natančno pogledate naslednji blok, lahko vidite, da generiramo sporočilo BT, če je stanje BT "povezano". To je isto, kar smo prej vnesli v SerialMonitor. Zadnji blok na levi nam bo zagotovil začetne ničle za prikaz časa (npr. 01:08). Na desni strani najdete naš zadnji blok, kjer uporabljamo element ure. Tu posodabljamo spremenljivke in jih združimo s številskim postopkom, to se bo zgodilo vsakih 1000 ms (privzeta nastavitev, jo spremenite v oblikovalskem načinu) in prikazati posodobljene vrednosti z oznako. To je le kratek opis, vendar je APPInventor res tako preprost:-) Morda je v skupnosti kdo, ki želi napisati programsko opremo za iOS ali WindowsPhone. (bilo bi dobro)
Upam, da vam je bil moj Instructable všeč! Uživajte v novi stenski uri! Morda ga želite podariti nekomu, ki ga imate radi (božična sezona):-)
In če imate kakršna koli vprašanja, me vprašajte!
Lep pozdrav in vesel božič.