INHOUDSOPGAWE:

Klein LED -matrikskerm: 8 stappe
Klein LED -matrikskerm: 8 stappe

Video: Klein LED -matrikskerm: 8 stappe

Video: Klein LED -matrikskerm: 8 stappe
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, Julie
Anonim
Image
Image
Klein LED -matriks -horlosie
Klein LED -matriks -horlosie
Klein LED -matriksklok
Klein LED -matriksklok
Klein LED -matriksklok
Klein LED -matriksklok

Ek wou nog altyd 'n outydse lessenaarhorlosie hê, wat lyk soos iets uit die rolprente van die 90's, met 'n redelik nederige funksie: intydse klok, datum, veranderende agtergrondlig, piep en 'n alarmopsie. Ek het 'n idee gekry om een te bou: 'n Digitale toestel, gebaseer op 'n mikrobeheerder met al die funksies wat ek hierbo genoem het, en aangedryf deur USB - óf 'n rekenaar óf 'n mobiele USB -laaier. Aangesien ek dit programmeerbaar wou maak, met spyskaarte en instellingsaanpassing, was die plasing van MCU in hierdie projek onvermydelik. ATMEGA328P IC (waaruit elke Arduino Uno -bord bestaan) is gekies om die 'brein' van die stroombaan te wees (waarvan ek net genoeg gehad het). Deur die kombinasie van 'n paar elektroniese onderdele as RGB LED, tydelike chip-drukknoppies en drukknoppies, is die hele projek moontlik gemaak-'n programmeerbare klein skerm met 'n LED-skerm.

Dus, nadat ons die entiteit van die projek gedek het, laat ons dit bou

Stap 1: Die idee

Die idee
Die idee

Soos voorheen genoem, bevat ons toestel 'n paar mooi LED-matriksskerms, kleurveranderende RGB LED-agterligte, tydsbepaalde tydskyfie-chip, handige USB-kragbron en klein omhulsel.

Kom ons beskryf die blokdiagram van die toestelbedryf volgens dele:

1. Kragtoevoer -eenheid:

Aangesien die toestel op 5 Volt DC werk, bestaan die kragtoevoerkomponent uit twee afsonderlike stroombane:

  • Mikro -USB -invoer - Vir direkte laaier / rekenaar -kragtoevoer.
  • 5V Lineêre spanningsreguleerkring gebaseer op LM7805 IC.

Die LM7805 IC -stroombaan is opsioneel, tensy u verkies om verskillende beskikbare insette van kragtoevoer toe te pas. In ons toestel word 'n mikro-USB-PSU gebruik.

2. Mikrobeheerder -eenheid:

Die mikrokontroleerder ATMEGA328P dien as 'n 'brein' van die hele toestel. Die doel daarvan is om met al die perifere stroombane te kommunikeer, die nodige data te verskaf en die gebruikerskoppelvlak van die toestel te beheer. Aangesien die gekose mikrobeheerder ATMEGA328P is, benodig ons Atmel Studio en basiese C -kennis (skema's en programmeerreekse word in die verdere stappe beskryf).

3. Real-Time Clock kring:

Die tweede belangrikste stroombaan in die toestel. Die doel daarvan is om datum- en tyddata te verskaf, met die vereiste om dit te stoor, sonder afhanklikheid van ingangskragverbinding, dit wil sê dat tyddata in real-time modus verfris word. Om die RTC-komponent in staat te stel om voort te gaan met die verandering van tyd- / datumdata, word 'n 3V muntcelbattery by die kring gevoeg. Die IC is DS1302, die werking daarvan word in verdere stappe beskryf.

4. Invoerkoppelvlak - drukknopskakelaars:

Invoer PB skakelaars bied insette koppelvlak vir die gebruiker. Hierdie skakelaars word verwerk in die MCU en die beheerde toestel gedefinieerde program.

5. LED Matrix Display

Toestelvertoning bestaan uit twee IC-toegedraaide HCMS-2902 Alfanumeriese LED-matrikse, elke IC het 4 karakters van 5x7 klein LED-matriks. Hierdie skerms is eenvoudig om te gebruik, 3-draads kommunikasie ondersteun en klein-alles wat ons nodig het in hierdie projek.

6. RGB -agtergrond:

Kleurveranderende agtergrond is gebaseer op eksterne RGB LED, beheer deur PWM -seine wat van die MCU af kom. In hierdie projek het RGB LED altesaam 4 penne: R, G, B en common, waar R, G, B kleurpalet via PWM deur MCU beheer word.

7. Gonser:

Gonserikring word as klankuitset gebruik, hoofsaaklik vir alarmdoeleindes. Die BJT -skakelaar word gebruik om genoeg stroom aan die buzzer -komponent te verskaf, sodat die volume hard genoeg is om 'n lewende persoon wakker te maak.

Stap 2: Onderdele en instrumente

Onderdele en instrumente
Onderdele en instrumente

I. Elektronika:

A. Geïntegreerde en aktiewe komponente:

  • 1 x ATMEGA328P - MCU
  • 2 x HCMS2902 - AVAGO -skerms
  • 1 x DS1302 - RTC
  • 1 x 2N2222A - BJT (NPN)

B. Passiewe komponente:

  • Weerstande:

    • 5 x 10K
    • 1 x 180R
    • 2 x 100R
  • Kapasitors:

    • 3 x 0.1uF
    • 1 x 0.47uF
    • 1 x 100 uF
    • 2 x 22 pF
  • 1 x 4-pins RGB LED
  • 1 x gonser
  • 1 x 32.768KHz kristal

C. Verbindings:

  • 1 x mikro-USB-aansluiting
  • 2 x 6-pins standaard-aansluiting (100mil).
  • 2 x 4-pins standaard-aansluiting (100mil).
  • 1 x Muntselbatteryhouer.

D. Diverse:

  • 3 x SPST-drukknopskakelaars
  • 1 x 3V muntselbattery.

E. Opsionele PSU:

  • 1 x LM7805 - Lineêre reguleerder
  • 2 x 0.1uF Kap
  • 2 x 100uF Kap

II. Meganiese:

  • 1 x plastiek omhulsel
  • 4 x rubber aanhegsels
  • 1 x prototipe soldeerbord
  • 1 x MCU -kop (in die geval van 'n mislukking van die mikrobeheerder)
  • 2 x klein boute van 8 mm
  • 2 x 8 mm ringe

III. Instrumente en materiale:

  • Soldeerdrade
  • Krimpende buise
  • Soldeerblik
  • Soldeerbout
  • Snyer
  • Tang
  • Pincet
  • Boorpunte
  • Klein lêer
  • Verskeie skroewedraaiers
  • Remklauw
  • Multimeter
  • Broodbord (opsioneel)
  • Mikro -USB -kabel
  • Medium grootte lêer
  • Warm gom geweer
  • AVR ISP programmeerder

IV. Programmering:

  • Atmel Studio 6.3 of 7.0.
  • ProgISP of AVRDude
  • Microsoft Excel (vir die skep van skermkarakters)

Stap 3: Skematiese beskrywing

Skematiese beskrywing
Skematiese beskrywing

Om die werking van die stroombaan makliker te verstaan, is die skematiese stap in sewe subgroepe verdeel. U moet daarop let dat netname in die skematiese bladsy gedefinieer word, en ook verbindings tussen aparte subbane van die toestel definieer.

A. Raad op hoofkomponente:

Soos reeds genoem, word al die toepaslike sub-stroombane wat ons binne-in die toestel wil hê, op 'n enkele snitprototipe bord geplaas. Kom ons gaan na die verduideliking van die werking van die hoofbordplate:

1. Mikrobeheerkring:

MCU wat in hierdie projek gebruik word, is 'n ATMEGA328P. Dit word aangedryf deur 'n eksterne 5V -kragtoevoer, in hierdie geval - 'n mikro -USB -aansluiting. Al die toepaslike I/O -penne word volgens die ontwerpvereistes verbind. Ports I/O -kartering is maklik om te verstaan, aangesien al die netname presies gedefinieer word soos dit in die programmeringsstap gebruik sal word. MCU het 'n eenvoudige RC -herstellingskring, wat gebruik word in die programmeervolgorde en die inisialisering van die krag.

Die belangrikste deel van MCU is die programmeringskringe. Daar is 'n 6 -pins programmeringskoppelstuk - J5, maak seker dat VCC-, GND- en RESET -nette algemeen is vir die eksterne ISP -programmeerder en die hoofkomponentbord.

2. Intydse klokbaan:

Die volgende kring is 'n belangrike perifere deel van die projek. DS1302 is 'n druppel tydtyd IC, wat verwerkte tyd- en datumwaardes aan ons verwerkingseenheid verskaf. DS1302 kommunikeer met MCU via 'n 3-draads koppelvlak, soortgelyk aan die 3-draads SPI-kommunikasie, op die volgende reëls:

  • RTC_SCK (uitset): voer bestuur en monsterneming van data wat op die SDO -lyn oorgedra word, uit.
  • RTC_SDO (I/O): data -rylyn. Tree op as insette in die MCU wanneer tyd/datum -data ontvang word en as uitvoer wanneer data oorgedra word (sien Programming Essentials -stap vir verdere verduideliking).
  • RTC_CE: (Uitset): lyn vir datatransmissie. As dit deur MCU HOOG gestel is, is data gereed om te stuur/ontvang.

DS1302 benodig 'n eksterne 32.768KHz kristal ossillator vir die voldoende kringgedrag. Om groot dryfkrag op die stroomtellingstelsel te vermy (dryfverskynsels is net onvermydelik in hierdie tipe geïntegreerde stroombane), moet twee kalibreringskondensators op elke kristalpen geplaas word (sien dele X1, C8 en C9 in die skemas). 22pF was 'n optimale waarde na baie eksperimente met tydsberekening van maatreëls in hierdie projek, dus as u die stroombaan heeltemal wil soldeer, moet u seker maak dat daar 'n opsie is om hierdie kondensators te vervang deur die met ander waardes. Maar 22pF vir klein bordjies het redelik goed gewerk vir baie klein drywing (7 sekondes per maand).

Die laaste, maar nie die minste komponent in hierdie stroombaan-'n 3V muntcelbattery moet op die bord geplaas word om genoeg energie aan die DS1302 IC te verskaf, sodat dit met sy tydtelling kan voortgaan.

4. 8 karakters LED Matrix:

Toestelvertoning is gebaseer op 2 x 4 karakters LED Matrix-skerm IC's, geprogrammeer via 'n 3-draads koppelvlak, soortgelyk aan die DS1302 van die RTC-kring, met 'n enkele verskil, dat data-verskaffingslyn (SDI) gedefinieer word as MCU se uitset (tensy u wil byvoeg statuskontrole -vermoë vir u vertoonbaan). Skerms word gekombineer in 'n reeks 3-Wire-uitbreiding, en beide IC's dien dus as 'n enkele vertoontoestel, waar dit moontlik is om dit vir alle definisies van die skermkarakters te programmeer (sien SPI-reekskombinasie). Al die netname van die stroombaan pas by die toepaslike verbindings van die MCU - let op dat daar algemene nette is wat kommunikasie tussen die skerms tot stand bring, en dit is nie nodig om beide skerms se kommunikasie -koppelvlakke aan die MCU te koppel nie. Die volgorde van programmering en karakterbou word in verdere stappe gedefinieer. Gebruikerskoppelvlak kring:

Gebruikerskoppelvlak is verdeel in twee subgroepe-In- en uitsetstelsels: Invoerstelsel: Toestel self het ingang van die gebruiker gedefinieer as drie SPST-drukknopskakelaars, met bykomende optrekweerstands, om gedefinieerde logika HIGH of LOW tot die MCU. Hierdie skakelaars bied 'n beheerstelsel vir die hele geprogrammeerde algoritme, aangesien tyd/datumwaardes, spyskaartbeheer, ensovoorts nodig is.

6. Uitsetstelsel:

A. Gonserikring bied klankuitset in beide state, spyskaartskakeling erken klank en alarmalgoritme. NPN -transistor word gebruik as 'n skakelaar, wat genoeg stroom aan die zoemer gee, sodat dit in 'n gepaste intensiteit klink. Gonser word direk beheer deur die sagteware van MCU. B. RGB LED word as deel van die toestel as agtergrond gebruik. Dit word regstreeks deur die MCU beheer, met vier opsies vir die keuse van agterlig: ROOI, GROEN, BLAUW, PWM of AF. Let op dat weerstande wat in serie gekoppel is aan die LED R-, G- en B -penne verskillende waardes het, aangesien elke kleur verskillende intensiteit oor 'n konstante stroom het. Vir groen en blou LED's is daar dieselfde eienskappe, as rooi effens groter is. So word rooi LED gekoppel aan die groter weerstandswaarde - in hierdie geval: 180Ohm (sien RGB LED -verduideliking).7. Verbindings:

Konnekteerders word op die hoofbord geplaas om kommunikasie tussen eksterne koppelvlakkomponente moontlik te maak, soos: Display, RGB LED, Power input en drukknoppies en hoofbord. Elke aansluiting is toegewy aan verskillende stroombane, en die kompleksiteit van die samestelling van toestelle daal dramaties. Soos u in die skema kan sien, is elke volgorde van aansluitnette opsioneel en kan dit omgeruil word as dit die bedradingproses baie makliker maak. Nadat ons al die skematiese konsepte behandel het, gaan ons na die volgende stap.

Stap 4: Soldeer

Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer

Vir sommige van ons is dit waarskynlik die moeilikste stap in die hele projek. Om die apparaat so gou as moontlik te laat werk, moet die soldeerproses in die volgende volgorde voltooi word:

1. MCU en programmeringskonneksie: dit word aanbeveel om nie 'n 28 -pen kopstuk te soldeer in plaas van MCU self nie, om MCU IC te kan vervang in geval van mislukking. Maak seker dat die toestel geprogrammeer en aangeskakel kan word. Dit word aanbeveel om 'n pin -beskrywing -plakker op die programmeringskonneksie te plaas (sien derde prentjie).

2. RTC -kring: nadat u al die benodigde onderdele gesoldeer het, moet u seker maak dat kalibreringskondenseerders maklik vervang kan word. As u 'n 3V muntbatterykas wil gebruik - maak seker dat dit ooreenstem met die afmetings van die toestel.

3. Display: Twee skerm IC's moet op die aparte klein bord gesoldeer word (prent 1). Nadat al die nodige nette gesoldeer is, is dit nodig om buiteborddrade voor te berei (foto 4): hierdie drade moet aan die kant van die vertoonbord gesoldeer en gelei word, let op dat spanning en meganiese spanning wat op die drade toegedien word, nie beïnvloed soldeerverbindings op die skerm.

4. Op die drade van die vorige stap moet etiketplakkers geplaas word - dit sou die monteerproses in die verdere stap baie makliker maak. Opsionele stap: voeg 'n manlike enkelpuntaansluiting by elke draad (Arduino-styl).

5. Soldeer oorblywende verbindings op die hoofbord, insluitend randapparatuur. Weereens word dit aanbeveel om plakkers met 'n penbeskrywing vir elke aansluiting te plaas.

6. Gonserikring: 'n Gonser is binne -in die toestel geleë, dus dit moet op die hoofbord gesoldeer word; daar is geen verbinding nodig nie.

7. RGB -LED: Om ruimte op die hoofbord te bespaar, het ek die reeksweerstande aan die LED -penne gesoldeer, waar elke weerstand ooreenstem met sy eie kleur en gepaste MCU -pen (prent 5).

Stap 5: Monteer

Montering
Montering
Montering
Montering
Montering
Montering

Hierdie stap definieer die voorkoms van die projek - elektries en meganies. As al die aanbevole aantekeninge in ag geneem is, word die monteerproses baie maklik om uit te voer. Die volgende stap-vir-stap volgorde bied volledige prosesinligting:

Deel A: Omhulsel

1. Boor drie gate volgens die knoppie se deursnee (3 mm in hierdie geval).2. Boor een gat met 'n buzer wat aan die kant van die omhulsel geplaas is. Enige gewenste boorpuntdiameter kan gebruik word. Boor 'n klein gaatjie as basis vir die maal volgens die USB -aansluiting wat u moet gebruik (in hierdie geval mikro -USB). Voer daarna af met die klein lêer, volgens die aansluitingsafmetings. Boor 'n relatief groot gat as basis vir die maal. Slyp volgens 'n mediumgrootte lêer volgens die afmetings van die skerm. Maak seker dat IC's aan die buitekant van die omhulsel teenwoordig is. Boor mediumgrootte gat aan die onderkant van die toestel volgens die RGB LED -deursnee. Deel B - Aanhangsels:

1. Soldeer twee drade aan elk van die drie drukknoppies (GND en sein). Etiketplakkers en enkelpenverbindings op drade word aanbeveel. Heg vier voorbereide drade aan die RGB LED -penne vas. Plaas etiketplakkers en krimpbuise op die soldeerverbindings. Heg vier rubberpote aan die onderkant van die toestel aan. Deel C - Koppel die onderdele:

1. Plaas die RGB -LED onderaan die omhulsel, verbind dit met 'n spesiale aansluiting op die hoofbord. Heg dit vas met die warm gom.2. Plaas drie drukknopskakelaars, verbind dit met 'n spesiale aansluiting op die hoofbord, plak dit met die warm gom. Plaas die USB -aansluiting, verbind dit met die penne van die programmeerkonnekteerder (VCC en GND). Maak seker dat die polariteit van die kragtoevoerlyne ooreenstem met gesoldeerde dele. Heg dit met warm gom vas.4. Plaas die skerm, koppel dit aan 'n spesiale aansluiting. Heg dit vas met die warm gom.

1. Dit word aanbeveel om bout-moerpare by die hoofbord-omhulsel en boonste deksel te voeg (soos in hierdie geval getoon).2. Om te voorkom dat stukkende drade breek, moet u dit met hul voorkoms in die omhulsel in ag neem.

Stap 6: Inleiding tot die kort programmering

Kort programmering Inleiding
Kort programmering Inleiding
Kort programmering Inleiding
Kort programmering Inleiding
Kort programmering Inleiding
Kort programmering Inleiding

Nadat al die dele gesoldeer is, word dit aanbeveel om die eerste toesteltoetsing uit te voer voordat u na die finale monteerstap gaan. MCU -kode word in C geskryf, en ATMEGA328P word geprogrammeer via enige ISP -programmeerder (Daar is verskillende tipes Atmel -programmeertoestelle: AVR MKII, AVR DRAGON, ens. - Ek het 'n goedkoop USB ISP -programmeerder van eBay gebruik, wat beheer word deur ProgISP- of AVRDude -sagteware). Die programmeringsomgewing moet Atmel Studio 4 en hoër wees (ek beveel die nuutste weergawes van sagteware sterk aan). As 'n eksterne, nie -Atmel Studio inherente programmeerder gebruik word, moet die.hex -lêerpad na die programmeersagteware gegee word (gewoonlik in die ontfoutings- of vrystellingsmap van die projek). Maak seker dat die toestel geprogrammeer kan word voordat die monteringstap aangegaan word, en dat enige basiese AVR -toegewyde projekbou- en samestellingsproses gebaseer is op die ATMEGA328P -mikrobeheerder (sien Atmel Studio -tutoriaal).

Stap 7: Die kodebeskrywing

Die kodebeskrywing
Die kodebeskrywing
Die kodebeskrywing
Die kodebeskrywing

Dekkode-algoritme is in twee semi-aparte lae gelaag: 1. Kernlaag: Kommunikasie met perifere stroombane, definisie van apparaatbewerkings, inisialisering en komponentverklarings. Interface laag: Interaksie tussen gebruiker en toestel, spyskaart funksie, klok/zoemer/kleur/alarm aanpassing. Die program volgorde word in die prent beskryf. 1, waar elke blok ooreenstem met die MCU -toestand. Beskrywe program dien as 'n basiese 'bedryfstelsel' wat 'n koppelvlak tussen hardeware en die buitewêreld bied. Die volgende verduideliking beskryf die noodsaaklike werking van die program deur dele: Deel A: Kernlaag:

1. Initialisering van MCU I/O: Eerstens moet hardeware-komponente geïnitialiseer word:- konstantes wat deur kode gebruik word.- I/O-poorte- koppelvlak.- Perifere kommunikasieverklarings.

2. Basiese algemene funksies: Sommige funksies word deur afsonderlike kodeblokke gebruik, die definieerbewerkings op penne wat deur die sagteware beheer word:- Aktiveer/deaktiveer RTC- en displaybordkommunikasie.- Gonser klankopwekking aan/af.- 3-draads klok up/Clock down funksies.- Vertoon funksies vir die skepping van karakters.3. Perifere initialisering: Nadat die I/O -poorte gekonfigureer is, vind kommunikasie tussen die funksies van die stroombane plaas. As dit klaar is - begin die MCU met die inisialisering van RTC- en vertoonstroombane met behulp van funksies wat hierbo gedefinieer is.

4. Definisie van kernfunksies: In hierdie stadium is die toestel ingestel en gereed om kommunikasie met sommige perifere stroombane uit te voer. Hierdie funksies definieer:- skakelaarbediening- RGB LED-werking (veral PWM)- Gonser vierkantsgolfopwekker

5. Vertoonfunksies: Ek het nie veel op die internet gevind oor die HSMS IC's wat ek gebruik het nie, en ek het die biblioteek daarvan self geskryf. Vertoonfunksies bied volledige funksies om karakters te vertoon, insluitend die vertoning van ASCII -karakters en enige heelgetalle. Funksies word op 'n algemene manier geskryf, dus as dit nodig is om vertoningsfunksies uit enige deel van die kode te ontbied, is dit maklik om dit te gebruik, aangesien dit veralgemeen word deur die operasie (byvoorbeeld: String -vertoning, enkele tekens, ens.).

6. RTC -funksies: Al die RTC -funksies word op 'n algemene manier geskryf (soortgelyk aan die stel funksies wat vertoon word) volgens die werking van DS1302 IC. Die kode is gebaseer op die geskrewe biblioteek, wat in baie variasies op gitHub beskikbaar is. Soos u in die finale kode sal sien, is die stel en RTC -funksies in die aparte.c- en.h -lêers ingesluit. Deel B - Interface Layer:

1. Hooffunksie: in die leegte hoof () -afdeling is daar 'n verklaring van al die kerninitialiseringsfunksies. Direk na die inisialisering van al die komponente, betree MCU oneindige lus, waar die funksionaliteit van die toestel deur 'n gebruiker beheer word.

2. Intydse skakelaars, agtergrond en skermbeheer: terwyl MCU in 'n oneindige kring loop, verfris dit op elke deel van die toestel. Dit kies watter data om te vertoon, watter knoppie is ingedruk en watter agtergrondmodus is gekies.

3. Funksies in die gebruikersmenu: Hierdie funksies het 'n boomagtige vorm (sien foto X), waar die spyskaartstelsel en hiërargie as 'n staatsmasjien gedefinieer word. Elke staatsmasjien wat beheer word deur 'n gebruiker se invoer - drukknoppies skakelaars, en sodra die toepaslike drukknoppie ingedruk word, verander die staatsmasjien die waarde daarvan. Dit is so ontwerp dat enige van die veranderinge in die toestel wat in die spyskaart uitgevoer word, onmiddellik verander word.

4. Wissel van gebruikerskieslys: as die gebruikersinvoer verskaf word, moet die spyskaartstatus sy toestand verander. Hierdie funksies bied dus gebruikerafhanklike beheer oor 'n staatsmasjien. In hierdie spesifieke geval: volgende, vorige en OK.

Stap 8: Finale kode en nuttige lêers

En dit is dit! In hierdie stap vind u al die lêers wat u benodig:- Elektriese skemas- Volledige bronkode- Vertoonkarakterbouer Opsionele kenmerk: Daar is 'n verskeidenheid karakters wat in die IC-biblioteek vertoon kan word, maar sommige is nie ingesluit nie. As u self karakters wil bou, moet u 'n hoofletter byvoeg met 'n ASCII -verwysing in Print_Character ('') - funksie (sien display.c funksies). Hoop dat u hierdie instruksies nuttig sal vind:) Dankie dat u gelees het!

Aanbeveel: