INHOUDSOPGAWE:

TheSUN, Arduino Powered Design Wall Clock: 6 stappe (met foto's)
TheSUN, Arduino Powered Design Wall Clock: 6 stappe (met foto's)

Video: TheSUN, Arduino Powered Design Wall Clock: 6 stappe (met foto's)

Video: TheSUN, Arduino Powered Design Wall Clock: 6 stappe (met foto's)
Video: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, Julie
Anonim
TheSUN, Arduino -ontwerpte muurklok
TheSUN, Arduino -ontwerpte muurklok
TheSUN, Arduino -ontwerpte muurklok
TheSUN, Arduino -ontwerpte muurklok
TheSUN, Arduino -ontwerpte muurklok
TheSUN, Arduino -ontwerpte muurklok

Hallo weer Instructables-mense!:-P

As gevolg van probleme met die versending kon ek nie my ABTW-projek voortsit nie, en ek het besluit om u 'n ander, my nuutste skepping, te wys.

Ek dink dat baie van ons, soos ek, hou van die mooi aanspreekbare LED Stripes (ook NEOPIXEL LED genoem). U kan dit by ADAFRUIT kry. Ander verskaffers sal ook soortgelyke produkte verskaf. Daar is 'n biblioteek beskikbaar op ADAFRUITS - GitHub (klik my), insluitend 'n voorbeeldkode. So kodering moet eenvoudig wees …

Ek sien die NEOPIXELS 'n gedagte, wat die h … kan ek doen met die blink klein dingetjies.

  • 'N LED-matriksvertoning? -> Te ingewikkeld en ek gebruik dit nie (op die oomblik)
  • X-Mas beligting? -> Dit pas by die seisoen, maar dit sal goedkoper wees om een te koop:-P
  • n horlosie? -> Hoekom nie! Maar dit moet stylvol en onkonvensioneel wees

Laat ons dus 'n muurhorlosie maak.

As ons ons polshorlosie van naderby bekyk (as u 'n analoog soos ek het), sal ons sien dat ons 12 uur en 60 minute het (hopelik). Dit beteken dat ons 60 aanpasbare LED's nodig het, phu! As ons 'n streep met 60 LED's / meter neem, kry ons 'n deursnee van ~ 318 mm (radius = omvang / (2*Π)), dit is beslis te groot.

Die waarheid is, as jy iemand vir die tyd vra, sal niemand sê dit is 2 minute oor 3 nie! U kry 'Dit is 5 oor 3' as 'n antwoord. Waarom moet ons dan nie alles tot 5 minute stappe afskaal nie? Daarvoor benodig ons slegs 12 LED's, wat beteken dat ons 'n deursnee van 63,6 mm kry. Ons kan ook ure en minute onderskei deur 'n aparte kleur te gee. Ons kan ook die "ontbrekende" enkele minute stappe voorsien van 'n ekstra strook van 4 LED's (of enkele adresseerbare LED's).

DIT IS DIE PLAN! Kom ons kyk hoe ek alles gedoen het. Soos altyd sal ek 'n lys/stuk materiaal en instruksies verskaf oor hoe om dit te bou.

As u dink, kan slegs Switserse mense koel horlosies maak, laat ons bewys dat u verkeerd is (jammer Switserland:-P)

Stap 1: Ontwerp en keuse van materiaal

Ontwerp en keuse van materiaal
Ontwerp en keuse van materiaal
Ontwerp en keuse van materiaal
Ontwerp en keuse van materiaal

Ontwerp:

As ons weer na ons analoog horlosie/horlosie kyk, sien ons dat die sirkel verdeel is in 12 * 30 ° trappe wat ons ken, dat ons 63,6 mm nodig het vir die LED-strook. Dit moet dus moontlik wees om die strook op een of ander manier om die buis te plaas. Ek het besluit om akrielglas te gebruik, want dit lyk mooi en dit is moontlik om die LED -lig daarin te omhul en by elke gebrek in die glas sal daar ligstrooiing voorkom. Dus, laat ons sê: meer onsuiwerhede sal lei tot meer ligstrooiing! Dit is presies wat ons wil hê. Neem dus gerus u graveerwerktuie en wees kreatief:-)

As u na my BoM-lys verwys en na die naam wat ek aan die horlosie gegee het, het ek 'n son soos ontwerp gekies. Ek het al die akrielonderdele by 'n Duitse verkoper op E-Bay gekry (skakel in die BoM). Vir my ontwerp jy sal nodig hê:

  • akriel grondplaat, deursigtige dikte = 6 mm, deursnee = 300 mm
  • akriel middelplaat, deursigtige dikte = 3 mm, deursnee = 150 mm
  • akriel voorplaat, satyn, dikte = 3 mm, deursnee = 90 mm
  • akrielbuis, deursigtig, buitedeursnee = 64 mm (dit beteken dat ons 'n bietjie met die LED -strook moet aanpas)
  • akrielstaaf, deursigtig, deursnee = 5 mm (dit sal ons balke wees); Daar is ook akrielstawe met borrels binne, ek beveel dit aan, maar ek het dit nie.
  • akriel gom

Elektronika (verwys na die Fritzing-lêers):

  • Arduino mini (of soortgelyk)
  • 1 aanspreekbare LED -strook (12 LED's vir uur en 5 minute stappe)
  • 4 aanspreekbare LED's (enkele minute)
  • 2 330 Ohm weerstande
  • 1 1000µF kondensator
  • 1 voeding (5V/500mA)
  • 'n RTC DS-1307 (opsioneel!)
  • Bluetooth -module (opsioneel! Ja, u kan die tyd instel via BT en 'n Android -slimfoon)

As u uself afvra waarom ek MAX485 -skyfies op my BoM het. Die antwoord is dat ek die horlosie wil sinchroniseer met die tuisautomatiseringstelsel wat ek op die punt staan om te maak (ek hoef nooit weer 'n horlosie te stel nie:-P). Ek sal dit in die volgende blog in my blog beskryf paar weke/maand.

Soos u opgemerk het, sal ek ook probeer om die horlosie met 'n paar sonpanele en 'n LiPo van die netwerk af te skakel, maar ek behandel dit nie in hierdie instruksies nie, probeer dit gerus self.

Stap 2: Berei die akrielonderdele voor

Berei die akrielonderdele voor
Berei die akrielonderdele voor
Berei die akrielonderdele voor
Berei die akrielonderdele voor
Berei die akrielonderdele voor
Berei die akrielonderdele voor

Die gereedskap:

In die eerste plek is dit baie handig as u die DWG -plan druk wat ek in skaal 1: 1 bygevoeg het. Dit sal u help om al die dele in lyn te bring en sal u dien as 'n boorplan. Verder benodig u:

  • hobbyknife
  • verstekmeter
  • ystersaag
  • klampe
  • handboor
  • kan boor, deursnee 65 mm
  • 'n stel metaalbore
  • 'n klein metaallêer
  • akriel gom

Kom ons begin:

Neem die grondplaat en pas dit op die plan, sodat u die middelpunt van die sirkel kan kry. Neem nou u handboor met die blikboor daarop en boor (baie stadig! Nie te veel druk nie!) 'N gat in die middel van die grondplaat; die buitenste sirkel moet ongeveer 2-3 mm diep wees. Dit is om die LED -strook in die grondplaat te laat sak (LED -strook ~ 10 mm breed, balke slegs 5 mm in deursnee) en om dit in lyn te bring met die balke (verwys na prent 1).

Nou benodig ons die ystersaag, die verstekmeter en die akrielbuis. Sny dit net in stukke en ek het besluit om die behuising (buis) 40 mm lank te maak (prent 2). Gryp nou weer die ystersaag en maak 'n bietjie rabbery aan die een kant van die buis, maak dit glad met die metaallêer. Dit is waar die drade uitkom;-) (verwys na prent 3)

Tyd vir 'n bietjie gom … Neem die middelste plaat (d = 150mm) en die voorplaat (die versadigde) en plaas dit weer op die plan, plak 'n bietjie gom in die middel van die middelplaat, pas die voorplaat in en wag tot die gom is effens verhard. Die gom wat ek gebruik het, word ligter en kan tot 2-3 uur neem, dus u wil 'n klem gebruik … (foto 3 en 4)

Doen dieselfde om die buis op die grondplaat vas te plak, maak seker dat die lamppit na die bord gerig is en dat dit iewers geplaas is waar u die eerste LED (12 uur) wil hê.

Wag totdat dit verhard is!

Ons kan nou die twee dele (boekgemaak) op die plan inpas en ons vier gate van een minuut (5 mm in deursnee of die deursnee van die LED wat u gekies het, boor, stadig boor sonder te veel druk). Boor ongeveer 8-9 mm diep. Wees versigtig, die versadigde plaat is baie bros en kan rem as u diep boor. U kan dit nou aan mekaar plak of u besluit, soos ek, om 'n bedreiging in die grondplaat te sny en dit met 'n skroef vas te maak.

Wag weer totdat die gom verhard is en pas die balke op die grondplaat vas. (prent 6) Raai wat … wag tot die gom verhard is:-) Kom ons gaan na die elektronika …

Stap 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Die gereedskap:

  • soldeerbout
  • soldeerdraad
  • stokperdjie mes
  • 'n klein stukkie prototipe PCB
  • geëmailleerde draad of enige ander draad wat u verkies
  • warm gom

Ek gebruik die enkele LED's. As u geëmailleerde draad gebruik, vergeet dan nie om die lak te skraap voordat u soldeer nie. U kan 'n stokperdjemes hiervoor gebruik, en u kan dit na die prentjie verwys met die pinout op flikto.de. Let daarop dat DOUT op die volgende LED na DIN gaan! (sien prent 2) Daarna kan u die LED -strook in 4 elemente sny, elk met 3 LED's. Onthou, ons het 'n LED -strook van 63,6 mm en 'n buisdiameter van 64 mm, sodat ons 'n ekstra lengte nodig het om dit presies op die balke te pas. Bedek dit met geëmailleerde draad, soos in prentjie 4. Ek het 'n klein protokaart gemaak wat dien as 'n "kragboom" en bevat die komponente vir die LED Strips (die twee 330Ohm weerstande en die 1000µF kondensator, prent 7). Raadpleeg die Fritzing Image daarvoor.

Monteer nou die strook om die buis, pas die LED's aan die balke. Die eerste Pixel pas by 12 uur. As u u huis omgedraai het, moet u nie vergeet dat alles weerspieël word nie. Gaan linksom! Gebruik 'n bietjie warm gom om dit aan die buis vas te maak. 'N Klein druppel vir elke segment sal dit doen!

U kan dieselfde doen vir die enkele LED's (uiteindelik spieël), voeg net warm gom by en druk dit in die voorgeboorde gate.

Moet nog nie die Arduino bedraad nie; ons sal die hardeware-reeks gebruik vir die BT-verbinding, dus kyk eers na die volgende stappe waar ek die sagteware beskryf.

Stap 4: Kode

Kode
Kode
Kode
Kode

U kan die skets nou na die Arduino laai. U kan ook nou die LED -stroke verbind. Moenie die BT -module aansluit nie !!! Ons wil eers na die kode kyk, u moet weet waar u verskillende dinge kan aanpas …

Laai die Arduino IDE en die biblioteke af. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Installeer die IDE en plaas die biblioteke in die biblioteekmap. Maak die aangehegte INO-lêer oop en laai dit op na u arduino. Die kode wat hier beskryf word, is dieselfde, maar met addisionele kommentaar! As u alles reg gedoen het, kan u nou die 'bootanimasie' sien. Dit is moontlik om die tyd oor die seriemonitor in te stel. Tik net @"uur"/"min"/"sek", bv. @10/33/00 (10:33).

Speel gerus met die kode … Hier kan u 'n kort beskrywing van die kode gee (opstelling sonder RTC!)

DEFINISIES:

#definieer PIN 6 // Uur LED -strook #Definieer MINPIN 5 // Enkele minuut LED #definieer NUMPIXELS 12 // Aantal pixels vir uur #definieer MINNUMPIXELS 4 // Aantal pixels vir enkele minuut #definieer BAUDRATE 115200 // Baudrate, moet ooreenstem die baudrate van BT Module #define utch '@' // begin BYTE van TimeSync

int timeset = 0; // vlag om op te slaan as die tyd ingestel is na bootint delayval = 20; // vertraging vir vervaagende animasie int clocktimer = 10000; // time refresh int timebright = 250; // helderheid van uur Strip int mtimebright = 50; // helderheid van enkelminint inisialiseer = 0; // vlag om die clearpixels -funksie na bootint -uur aan te roep; int oldahour = 0; // winkel vorige. uur lank aminute; int oldamin = 0; // stoor die vorige minuut vir verversing as 'n tweede; int aday; int amonth; int jaar; int mmin; tmElements_t tm;

// Opstel vir die 2 NeoPixel LED -skikkings (NAAM = TIPE (AANTAL PIXELS, WATTER PIN, FORMAT RGB OF GRB, FREK); Raadpleeg die Adafruit -gids vir meer inligting.); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

STEL OP:

ongeldige opstelling () {

Serial.begin (BAUDRATE); Wire.begin (); // Begin die stroke, alle OFFpixels.begin (); minpixels.begin (); pixels.show (); minpixels.show ();

// Maak 'n bietjie animationSerial.println ("SUNRISE"); sonsopkoms (); vertraging (1000); Serial.println ("SONSONDERGANG"); sonsondergang (); pixels.show (); Serial.println ("GEREED"); }

LOOP:

void loop () {// kyk vir tydsinkronisering terwyl (Serial.available ()> 0) {char c = Serial.read (); as (c == utch) // as daar 'n @ op die lyn is, lees die komende grepe /ints {readtime (); }} // initialiseer die LED's, maak die opstartanimasie skoon

as (initialiseer == 0) {clearpixels (); inisialiseer = 1; }

uur = uur ();

aminute = minuut (); as (timeset == 1 || timeset == 0) // hier kan u kyk of die tyd ingestel is, kan u die program hier stop as Timeset = ONWAAR, verwyder "|| timeset == 0"!

{

as (oldamin <aminute || oldahour alles op OFF gestel het, vertoon nuwe tyd {clearpixels (); ClockDisplay ();}}}}

Wys die horlosie:

nietig ClockDisplay () {

oldahour = ahour;

oldamin = aminute; int xuur, xmin;

as (ahour> = 12) {xhour = ahour-12; // ons het net 12 LED's vir 24 uur vertoning} anders {xhour = ahour; } // skaal dit in stappe van 5 minute xmin = (aminute /5); as (oldamin <aminute) {oldamin = aminute; duidelike pixels (); } // neem die res van die afdeling deur die singelmin LED mmin = (aminute % 5); // modulo operateur bv. 24 % 5 = 4! baie handig: -Pixels.setBrightness (tydsverskyn); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // u kan die kleure hier verander! speel rond! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixels.show ();

// vertoon die enkele minute vir (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixels. Color (255, 255, 0)); minpixels.show (); }} Lees en verwerk TIME -inligting van Serial

leestyd leeg () // as ons reeds die voorste "@" het, verwerk die komende data en stoor die tyd vir die TIME Lib {

ahour = Serial.parseInt (); aminute = Serial.parseInt (); asekonde = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); ayear = Serial.parseInt (); Serial.println ("TIMESET"); Reeks.afdruk (ahour); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }

Maak alles skoon

void clearpixels () // stel elke enkele PIXEL af om die skerm te verfris {

pixels.begin (); minpixels.begin (); for (int i = 0; ipixels.setPixelColor (i, pixels. Color (0, 0, 0)); minpixels.setPixelColor (i, pixels. Color (0, 0, 0)); pixels.show (); minpixels. Wys(); } }

Stap 5: Die Android -APP en BT -verbinding

Die Android APP en BT -verbinding
Die Android APP en BT -verbinding
Die Android APP en BT -verbinding
Die Android APP en BT -verbinding
Die Android APP en BT -verbinding
Die Android APP en BT -verbinding

As u suksesvol was met die vorige stappe, kan u nou u BT -module aansluit. (ek hoop dat u seker gemaak het dat die baudrates ooreenstem). moenie vergeet om TX & RX lyne oor te steek nie:-)

Laai die app af en installeer dit, koppel dit aan u BT -dongle, begin die app, maak verbinding met die dongle en sinkroniseer die tyd met u selfoon. Die APP doen basies dieselfde as wat ons voorheen gedoen het. Dit stuur net @hh/mm/ss/dd/mm/YYYY gegenereer uit sy systemtime. Ek het ook die APPInventor AIA -lêer en 'n verduideliking gegee oor die volgende stap (vir diegene wat belangstel).

Stap 6: APPInventor

APP Uitvinder
APP Uitvinder
APP Uitvinder
APP Uitvinder

APP Inventor is redelik maklik om te gebruik en die moeite werd vir so 'n eenvoudige program.

As u 'n nuwe projek maak, vind u uself op die DESIGNER -skerm. (prent 1) Dit is waar ons tabelle, knoppies, sensors en ander elemente byvoeg vir verdere gebruik. In ons geval benodig ons:

  • 'n tabel (om alle elemente in lyn te bring)
  • 'n lyskeuse (vir die keuse van die BT -toestel waarmee ons gekoppel is)
  • 'n knoppie (om die TIME oor BT af te vuur)
  • sommige etikette (wys die werklike tyd en datum)
  • die kloksensor (verfris die tyd)
  • die Bluetooth -kliëntsensor (konneksie)

Dit is net so maklik om dit by te voeg soos sleep en sleep! Op prent 2 kan u 'n oorsig van die 'APP' in die BLOCKS -skerm sien. Wel, dit is eintlik waar al die "magie" gebeur. Bo -aan het ek 'n paar veranderlikes geskep om die tyd en datum op te slaan. Die eerste blok links bo sal die lys kieselement inisialiseer met die lys van gekoppelde BT -toestelle. Met die tweede blok besluit ons wat ons met die voorheen gekose element moet doen. Wel, ons wil daarby aansluit.

As u die volgende blok van naderby bekyk, kan u sien dat ons die BT -boodskap, as die BT -status 'gekoppel' is, genereer. Dit is dieselfde as wat ons voorheen in die SerialMonitor ingetik het. Die laaste blok aan die linkerkant bied ons die voorste nulle om die tyd te wys (bv. 01:08). Aan die regterkant kan u ons laaste blok vind, dit is waar ons die klokelement gebruik. en gee die bygewerkte waardes met die etiket. Dit is net 'n kort beskrywing, maar APPInventor is regtig so maklik:-):-) Miskien is daar iemand in die gemeenskap wat 'n sagteware vir iOS of WindowsPhone wil skryf. (sal goed wees)

Ek hoop dat u van my Instructable gehou het! Geniet u nuwe muurklok! Miskien wil u dit gee aan iemand wat u liefhet (die X-Mas seisoen):-)

En as daar enige vrae is, vra my gerus!

Vriendelike groete en Geseënde Kersfees.

Aanbeveel: