Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Fusion 360 Layihələri »
Tarixi olan saat, yuxu sayğacı və gecə işığı kimi işləyən OLED ekranı olan Arduino əsaslı bir saatdır. Fərqli "funksiyalar" bir akselerometr tərəfindən idarə olunur və kub saatı fırladaraq seçilir.
Yeni bir komidin saatı istədim, amma istifadə etməyəcəyim tonlarla funksiyaya malik olan xülya saata pul xərcləmək istəmədim. Əlavə olaraq, yeni düzülən komponentlər və sensorlar toplayırdım, buna görə də öz saatımı hazırlamaq üçün istifadə etməyə qərar verdim!
Bu layihə üçün bir neçə məqsədim var idi:
- O vaxtı söndürmək imkanı ilə göstərin
- Bir gecə işığı funksiyası daxildir
- Zəngli 15 dəqiqəlik yuxu sayğacı əlavə edin
- Tarixi göstərə bilmək
Təchizat
- Arduino Pro Mini 5V
- ADXL335 3 Eksenli Akselerometr
- DS3231 AT24C32 IIC dəqiqliyi Real vaxt saatı
- Mini Dinamik
- OLED Ekran SSD1306 IIC 0.96in
- 5V DC enerji təchizatı
- LED x 2
- Rezistorlar 220 ohm x 2
- DC barel yuvası
- Tel
-
Alətlər
- Tel kəsicilər/soyucu
- Lehimləmə dəmir/lehim
- 3D printer (isteğe bağlı)
- Pro mini ilə Arduino IDE arasında interfeys qurmaq üçün FTDI proqramçısı
Addım 1: Prototip və Dövrəni Test edin
Komponentləri Arduino -ya qoşun. Çörək taxtasının düzeni və ya sxemi yuxarıda göstərilmişdir. RTC və OLED, Arduino ilə əlaqə qurmaq və A4 və A5 pinlərindən istifadə etmək üçün I2C protokolundan istifadə edir. Accelerometer 3 analoq pin istifadə edir. A0, A1, A2 istifadə etdim. LEDlər və Piezo hər hansı bir rəqəmsal pindən istifadə edə bilər, mən müvafiq olaraq 4 və 8 istifadə etmişəm.
Hər bir komponentlə əlaqəli interfeys. Hər bir komponentlə əlaqə qurmaq üçün bəzi Arduino kitabxanalarını quraşdırmalı oldum. Yuxarıdakı şəkildə göstərilirlər.
Arduino IDE istifadə edərək kod. İstədiklərimə əsaslanaraq hər bir komponent üçün uyğun sintaksisi anlamaq üçün hər kitabxana tərəfindən verilən bir neçə nümunə eskizdən keçdim. Hər bir komponenti ayrı -ayrılıqda sınamaq üçün bir eskiz hazırladım. Onlar aşağıda verilmişdir. Piezo spikeri ilə başladım, çünki ən asan idi. Əslində xüsusi bir kitabxanaya ehtiyac yoxdu, yalnız tezliyi və səsi təyin edən xüsusi bir funksiyaya ehtiyac var idi. LED -lərin işləməsi üçün rəqəmsal pinlərdən birini aşağı və yuxarı çəkmək kifayətdir. Sonra, OLED -ə keçdim və bunun da qurulması olduqca sadə idi. Aşağıdakı eskiz, nümayiş etdirilə bilən bütün animasiyalardan/mətnlərdən keçən Adafruit demosudur. Sonra RTC -ni işə salmağa çalışdım. Təqdim etdiyim eskiz kitabxanada cari vaxtı alan və onu seriyalı monitora yazdıran nümunənin bir hissəsidir. Nəhayət, akselerometri sınamaq üçün verilən nümunəni istifadə etdim. Hər bir oxun çıxışı serial monitorda çap olunur.
İndi hər şeyi bir yerə yığmağın vaxtı gəldi!
Addım 2: Əsas Proqram
İndi hər şeyin fərdi şəkildə işlədiyini bildiyim üçün hər şeyi bir araya gətirən bir proqram hazırlamağa başlaya bilərəm. Proqramı yazma prosesimi aşağıda müzakirə edəcəyəm, ancaq öz layihəniz üçün istifadə etmək üçün aşağıda göstərilən tam kodu yükləməkdən çekinmeyin. Xüsusi şərhlər yazmağa çalışdım ki, kodu özünüz gəzə biləsiniz.
OLED -də olduqca sadə olan vaxtı və tarixi göstərməli idim. Sadəcə, serialın yerinə indiki vaxtı ekrana yazdırmalı oldum. 24 saat əvəzinə 12 saatlıq bir format göstərməsi və uyğun olduğu yerə 0 -ı əlavə etmək/silmək üçün hesablamalı olduğum bir neçə formatlaşdırma işi var idi. Ekranda çəkilmiş düzbucaqlılar içərisində ay və günün göstərilməsi də tarixə bənzəyirdi. Taymer yaratmaq və döngə bitdikdən sonra piezonu işə salmaq üçün yuvalı FOR döngəsindən istifadə etdim. Adafruit demosundan alınan əsas bir animasiya olan səs siqnalı sönərkən ekranı flaş etmək qərarına gəldim. Zulu söndürməyin yeganə yolu olaraq kubu saat mövqeyinə qaytarmağı etdim. Nəhayət, ekranı söndürmək üçün bir yol istədim ki, bu da yalnız ekranı təmizləməklə həyata keçirildi. İndi, akselerometr çıxışlarına əsaslanaraq işləmək üçün bütün bu funksiyalara ehtiyacım var idi. Hər bir funksiyanın işləməsini istədiyim hər mövqenin ox koordinatlarını təyin etmək üçün Accel_Test skriptindən istifadə etdim. Akselerometr çipini əl ilə gəzdirdim və oxunuşları serial monitorda qeyd etdim. Yuxarıdakı diaqram, GRAY -da hər bir mövqenin çıxış koordinatlarını verir. QIRMIZI koordinatlar hər bir mövqe arasındakı sərhədlərdir və bu nömrələri proqramım üçün istifadə etdim. 4 ekran mövqeyində yalnız X və Y ox koordinatlarına ehtiyac var. Gecə işığı üçün beşinci mövqe Z oxundan istifadə edir. Hər bir funksiya blokundan əvvəl akselerometr mövqeləri üçün sadə IF ifadələrindən istifadə etdim. Fərqli bir akselerometrdən istifadə edirsinizsə, bu koordinatlar dəyişə bilər və proqramda düzəliş edilməlidir.
Addım 3: Kubu 3D çap edin
Saatın necə işləməsini istədiyimə uyğunlaşdırmaq üçün bir kubun ən yaxşı dizayn olacağını düşündüm. Modeli hazırlamaq üçün fusion360 istifadə etdim. OLED və barel jakı üçün bir kəsik lazım idi. Həm də hər şey telli olduqdan sonra RTC -də mobil batareyanı dəyişdirmək üçün asan bir giriş istədim. Arduino'yu lazım olduqda yenidən proqramlaşdırmaq asan olacaq bir istiqamətdə saxlamaq üçün bir yuvaya ehtiyacım var idi. Bundan əlavə, Arduino -ya daxil ola biləcəyim üçün korpus asanlıqla çıxarıla bilər. CAD modelini yuxarıda görə bilərsiniz və STL faylları aşağıda.
Bədəni 20% doldurma, 0,2 mm qətnamə ilə qara PLA ilə çap etdim.
Korpus və ya qol 100% doldurma, 0.3 mm qətnamə ilə Solutech çevik filamentdə çap edilmişdir. Bədənin üzərində uzanmağı asanlaşdıran bəzi elastikliyə malik olduğu üçün bu materialdan istifadə etdim. Saatı döndərərkən daha yumşaq hiss edir. Nəhayət, gecə işıqları üçün LED -lərin parlaması üçün aydın bir filament seçdim.
Addım 4: Montaj
Adım 1 -in sxemini istifadə edərək hər şeyi bir yerdə bağladım. Arduinonun bir pininə birdən çox teli lehimləmək məcburiyyətində qalmamaq üçün bütün ümumi telləri birləşdirmək üçün kiçik bir taxta parçası istifadə etdim. İsti yapışqan Arduino istisna olmaqla hər şeyi öz yerində təmin etmək üçün istifadə edilmişdir. Sadəcə olaraq təyin olunmuş yuvasına sıxışdırıldı. Koddakı koordinatların dəyişdirilməsinə ehtiyac qalmaması üçün akselerometr lövhəsinin bədənin aşağı hissəsində dik və düz olduğundan əmin oldum.
Addım 5: Yükləyin və bitirdiniz
İndi düzgün proqramı təyin etmək üçün son proqram saata yüklənə bilər. Hüceyrə batareyası elektrik enerjisi çıxarıldıqda belə vaxtı saxlamalıdır. Bütün komponentləri gizlətmək üçün 3D çaplı qolu bədənin üzərinə sürüşdürün və tam bir kub saatınız var!
Ümid edirəm bu layihəni etməkdən zövq alırsınız və mənim kimi faydalı hesab edirsiniz. Bu layihənin gözəl tərəfi çox özelleştirilebilir olmasıdır. Zəngli bir funksiya kimi öz fərqli funksiyalarınızı əlavə etməkdən, daha böyük OLED, FM radio qəbuledicisi və s. Kimi fərqli komponentlərdən istifadə etməkdən çekinmeyin Xoşbəxt olun!