Saņēmusi pāris dēļus Arduino, un dažādi radio komponenti, lai iepazītos ar mikrokontrolleriem, autore nolēma izdarīt kaut ko interesantu un vienlaikus noderīgu. Tā kā krājumā ir liels skaits gaismas diožu, radās ideja izveidot bināro pulksteni.
No elektronikas puses binārais pulkstenis nav īpaši sarežģīts, bet autors sarežģīja uzdevumu un nolēma nesaglabāt pogas un gaismas diodes. Sākotnēji projektā bija paredzēts izmantot 22 gaismas diodes, 6 pogas un vienu skaļruņu. Bija arī ideja komplektēt pulksteni uz Arduino Mega lielāka tapu skaita dēļ, taču maiņu reģistri 74HC595 izrādījās glābiņš.
Materiāli:
- Arduino Uno
- 2 pilna izmēra maizes dēļi
- sarkanas gaismas diodes 7 gab
- zaļas gaismas diodes 7 gab
- zilas gaismas diodes 6 gab
- 2 dzeltenas un baltas gaismas diodes
- Rezistori 220 omi 25 gab
- pjezo signāls 1 gab
- 6 pogas taustes pogas
- Shift izvades reģistri 74HC595 DIP-16 paketē 3 gab
- savienojošie vadi 90 gab
- Reālā laika pulksteņa modulis, kura pamatā ir DS1307 RTC mikroshēma
Kā viss darbosies.
Ir aptuveni 10 bināro pulksteņu veidi. Daži rāda laiku binārā decimālā (BCD) formātā, citi kā bināros skaitļus. Tā kā autoram īpaši nepatīk BCD pulkstenis, viņš nolēma padarīt tīru bināro. Dažiem cilvēkiem ir grūtāk lasīt, taču atšķirība nav liela, jo numuru tulkošana no binārā uz decimāldaļu ir vienkārša. Arī priekšnosacījums pulksteņa veidotājam bija sekunžu norāde pulkstenī.
Turklāt pulkstenim ir 6 pogas:
Iestatīt - ir atbildīgs par pulksteņa / modinātāja iestatīšanas režīmu un parametra saglabāšanu iestatīšanas režīmā.
Režīms - atbildīgs par pārslēgšanos starp pulksteņa, modinātāja un taimera režīmu.
Uz augšu - pulksteņa / modinātāja / taimera iestatījumā palielina parametru par vienu. Modinātājā un taimerī tas ir atbildīgs par izvēlētā režīma aktivizēšanu un deaktivizēšanu. Kad tiek iedarbināts signāls, tas izslēgs trauksmes / taimera signālu.
Uz leju - pulksteņa / modinātāja / taimera iestatījumā tas samazinās parametru par vienu. Taimeris to apturēs, neatiestatot atpakaļskaitīšanu. Kad modinātājs izslēdzas, tas 5 minūtes pārsūtīs signālu.
24/12 - mainiet laika formātu.
Dim - atbild par gaismas diožu ieslēgšanu un izslēgšanu (kad gaismas diodes nedeg, atlikušās pogas pārstāj darboties).
LED novietojuma shēma:
Detaļu savienojums
Autore savienos visas gaismas diodes virknē un ar rezistoru. Rezistors ir pielodēts pie viena no gaismas diožu spailēm, nav svarīgi, kurš no tiem. Gaismas diodes tiks savienotas, izmantojot maiņu reģistrus, šai mikroshēmai ir 16 kontakti.Šis tapu skaits ļauj izmantot lielu skaitu tapu, ņemot tikai 3 tapas uz Arduino.
Shift register Pinout 74HC595:
Q0-Q7 ir tā reģistra atradumi, pie kura tiks pieslēgtas gaismas diodes.
Vcc - tam tiks uzlikts 5 V barošanas avots.
GND - zeme, kas savienota ar GND uz Arduino.
OE - tapa ir atbildīga par tapu apgrieztu ieslēgšanu, bet tā netiks izmantota, tā vienkārši ir saīsināta uz zemi.
MR ir apgriezts reģistra klīrings, tas nav jākontrolē, tāpēc tas tiks savienots ar 5 V barošanas avotu.
ST_CP - pin ir atbildīga par reģistra statusa atjaunināšanu. Ierakstot stāvokli, tam ir jāpiemēro LOW, pēc ierakstīšanas - HIGH, lai atjauninātu izeju statusu. Tam jābūt savienotam ar Arduino tapu. Šo tapu var savienot trīs reģistros paralēli.
SH_CP - tapa, kas atbild par nobīdi par 1 bitu reģistrā. Tam jābūt savienotam ar Arduino tapu. Tie ir savienoti arī mikroshēmās arī paralēli.
DS - dati tiek nosūtīti uz šo tapu, tie ir savienoti ar tapu Arduino.
Q7 '- šo tapu izmanto kaskādes savienojumam ar citiem reģistriem 74HC595.
Elektroinstalācijas shēma:
Pjezo signāls virknē ar rezistoru tiks savienots ar trešo Arduino tapu. Pirms tviterī iekļaušanas shēmā autore apskatīja, kuras piespraudes atbalsta PWM, jo tas viņai ir obligāts. Arduino Uno PWM atbalsta 3, 5, 6, 9, 10 un 11 tapas.
Pogas ir savienotas, izmantojot rezistorus, kas iebūvēti Arduino, ar vienu pogu pogu piestiprinot pie zemes, bet otru - ar Arduino tapām.
Tātad, galīgais dizains izskatās:
Veidojiet uz maizes dēļa
Pēc papildu informācijas iegūšanas autore sāka montēt projektu uz maizes tāfeles atbilstoši shēmām. Izskats bija gaidāms, jo Breadboard ierobežo brīvību detaļu izvietošanā, un stiepļu pielīmēšana neradīja estētisku prieku. Bet galdiņš ir paredzēts maizes dēļu modeļiem, bet ne gatavām ierīcēm.
Programmas kods.
Izveicīgi izvēloties programmēšanu, autors nolēma pats rakstīt kodu, neizmantojot citu cilvēku attīstību. Pirmais solis bija apakšprogrammas uzrakstīšana, tā ir atbildīga par visu diožu mirgošanu un ieslēgšanas laikā dod pjezo signālu. Šī funkcija palīdz pārbaudīt shēmas integritāti, līdzīgi tai, kas ieviesta daudzās ierīcēs.
Skice iznāca diezgan liela, tad jūs varat apsvērt tās galvenās iezīmes.
LED darbs.
Tā kā gaismas diodēm var piekļūt, izmantojot maiņu reģistru, pirmkārt, bija nepieciešams ieviest vairāk gaismas diožu režīmu. Vienkāršākai darbībai ar diodēm ir ieviestas vairākas papildu funkcijas. Tiek ieviesti dažādi diožu animācijas efekti. Kad pulkstenis nav iestatīts, par stundām un minūtēm atbildīgās diodes sāks mirgot (jo parasts pulkstenis mirgo, ja tas nav iestatīts). LED, kas atbild par sekundēm, ir arī ar savu animāciju, diode var darboties pa kreisi un pa labi modinātāja režīmā vai pulksteņa iestatīšanas režīmā.
Galvenā cilpa.
Programma ir konfigurēta darbam šādi: pulkstenis parāda informāciju atkarībā no pašreizējā stāvokļa un maina tās stāvokli atkarībā no pogu un notikumu izmantošanas. Tas viss izskatās pēc ievērojama daudzuma ligzdotu apstākļu. Diožu stāvoklis tiek atjaunināts katru reizi pēc taimeru un pogu statusa pārbaudes, piezvanot to apstrādātājam.
Arī autore paveica lielisku darbu, lai pareizi darbinātu ievades pogas un taimerus. Skices avota kodu var lejupielādēt zem raksta.
Palaidiet izkārtojumu
Pēc projekta ieslēgšanas, pēc pirmā acu uzmetiena, ierīce darbojās pareizi un stabili. Bet autors atrada trūkumu, pulkstenis atpalika par vienu sekundi stundā, ilgu laiku tā būtu liela kļūda.
Izpētot šo problēmu, tika atklāts, ka oriģinālajā Arduino Uno izmanto keramikas rezonatoru, un tam trūkst precizitātes laika mērīšanai ilgos periodos. Racionālākais risinājums bija iegādāties reālā laika pulksteni, kā arī šī moduļa dēļ pulksteņa laiks netiks izslēgts, izslēdzot to. Autore iegādājās Grove RTC moduli no Seeed Studio. Tas ir gatavs dēlis ar pulksteņa mikroshēmu. Autore savienoja SDA un SCL moduļa tapas ar Arduino uz A4 un A5, GND tapām ar zemējumu. Tā kā 5 V jaudu aizņem pulksteņa tāfele, moduli nekur nebija jāpieslēdz. Autore nolēma moduļa barošanu no viena no ciparu tapām, kas tiks nepārtraukti barota.Autorei bija arī jāmaina avota kods un jāpievieno reālā laika pulksteņu bibliotēka.
Pulksteņu montāža
Pabeidzot ilgu darbu pie koda, ir pienācis laiks piešķirt ierīcei pilnīgu izskatu un pārsūtīt to no maizes tāfeles uz iespiedshēmas plati. Pirmkārt, bija nepieciešams izgatavot dēļa vadu. Tam tika izmantota frēzēšana, jo autoram jau bija priekšstats par pulksteņa izskatu un viņš izveidoja ierīces diagrammu. Autore arī manuāli izsekoja dēli, tas prasīja daudz laika.
Iespiesto shēmu plates ražošanas projekts:
PCB izgatavošana tika pasūtīta Ķīnā. Seeed Studio piedāvā Fusion PCB plates pakalpojumu. Izmantojot Fritzing, fails tika eksportēts uz paplašināto Gerbera formātu, daudzi plātņu ražotāji ar to strādā. Pēc divām nedēļām autore pa pastu saņēma ilgi gaidīto maksu.
Atlika tikai pielodēt jau nedaudz putekļainās detaļas uz tāfeles. Gatavais rezultāts pēc lodēšanas izskatījās daudz labāk nekā izkārtojums uz Breadboard.
Projekta autors ilgu laiku smagi strādāja un ieguva to, ko gribēja - unikālu bināro pulksteni ar taimeri un modinātāju. Izmantojot akumulatora nodalījumu, pulksteni var novietot jebkur. Arduino attaisnoja cerības un pilnībā tika galā ar uzdevumu.