Mündəricat:

Arduino Gecə/Şəfəq Saatı Taymeri: 15 addım
Arduino Gecə/Şəfəq Saatı Taymeri: 15 addım

Video: Arduino Gecə/Şəfəq Saatı Taymeri: 15 addım

Video: Arduino Gecə/Şəfəq Saatı Taymeri: 15 addım
Video: Dekorativ və təcili işıqlandırma üçün büdcəli USB ilə təchiz edilmiş Zigbee LED şeridi 2024, Noyabr
Anonim
Arduino Gecə/Şəfəq Saatı Taymeri
Arduino Gecə/Şəfəq Saatı Taymeri

Xülasə:

Bu Arduino əsaslı taymer, alacakaranlıq, şəfəq və ya müəyyən bir vaxtda bir 220V işığı dəyişə bilər.

Giriş:

Evimdəki bəzi işıqlar, qaranlıqda ya əvvəlcədən təyin olunmuş vaxta qədər, ya da şəfəqə qədər (bütün gecə) avtomatik olaraq açılır.

İşıqların yeri işıq sensoru istifadəsinə icazə vermir. Daimi mövcud saat sayğacları müəyyən bir zamanda açılır. Gecə qaranlıqda yandırmaq üçün zamanlayıcı proqram ayarını mütəmadi olaraq düzəltmək lazımdır.

Gözəl bir problem olaraq, bunun əvəzinə xüsusi bir Arduino əsaslı tək başına sayğac qurmağa qərar verdim. İşıqların yandırılmalı və ya söndürülməli olduğu vaxtı təyin etmək üçün real vaxt saatı və Dusk2Dawn kitabxanasından istifadə edir. Bu taymer üçün korpus 3D çapdır və Thingiverse -də tapıla bilər. Bu layihə üçün Arduino kodunu GitHub -da tapa bilərsiniz.

Bu taymerin yaradılmasında internetdəki bir çox dizayndan və sxemdən ilham aldım. Açıq şəkildə qeyd olunmayan bütün iştirakçılara təşəkkürümü bildirirəm.

Oxunaqlı olmaq üçün, tam bir dövrə diaqramı yerinə, lazım olduğu yerlərdə qismən diaqramlar göstərilir.

Alternativ həllər:

Müstəqil bir taymer əvəzinə ağıllı ev avtomatlaşdırma sisteminin işıqları idarə etdiyi bir çox həll var. Məqsədim, WIFI (və ya digər) bağlantıdan asılı olmayan müstəqil bir həll yolu əldə etmək idi.

Məhdudiyyətlər:

Bu layihə ilə təmin edilən kod, Avropa yaz işığı sisteminə əsaslanan yaz işığına dəyişikliklərin tətbiqini əhatə edir.

Addım 1: Parça siyahısı və alətlər

Parça siyahısı və alətlər
Parça siyahısı və alətlər

Parçalar:

Ümumi hissə xərcləri (3d çap istisna olmaqla) təxminən 30 avro, -.

  • Başlıq olmadan Arduino Nano V3 (uyğun)
  • Enerji təchizatı 5V 0.6A (34 x 20 x 15 mm)
  • Qatı hal rölesi 5V - Aktiv aşağı - 2A 230VAC
  • Real vaxt saatı DS3231 (kiçik)
  • 0.96”OLED ekran SPI 128*64 piksel
  • Döner kodlayıcı - EC11 - 20 mm
  • Düymə 6mm mil 15mm * 17mm
  • Çörək lövhəsi çap dövrə lövhəsi,
  • 4* M3x25mm vintlər
  • 3d çap korpusu
  • İstiliyi azaldan borular
  • Tellər
  • Vida terminal bloku (neytral telləri bağlamaq üçün)

Alətlər tələb olunur:

  • Lehimleme dəmir
  • Lehim teli
  • Sökülən nasos
  • Tel çıxarıcılar
  • Kəsicilər
  • 3D printer (korpus çap etmək üçün)
  • Müxtəlif kiçik alətlər

XƏBƏRDARLIQ

Bu dövrə 230v AC üzərində işləyir və şəbəkə gərginliyi ilə işləməyə öyrəşməmisinizsə və ya 230v AC Şəbəkə Gərginliyi ilə işləməkdə kifayət qədər təcrübəniz yoxdursa, bu layihədən uzaq durun

Bu layihəni izləmək nəticəsində və ya nəticəsi olaraq yaranan hər hansı bir itki və ya ziyana görə heç bir məsuliyyət daşımıram

AC Şəbəkə ilə işləyərkən hər zaman düzgün qayğı və tədbir görməyiniz tövsiyə olunur

Addım 2: OLED Ekran və Real Zaman Saatı hazırlayın

OLED Ekran və Real Zaman Saatı hazırlayın
OLED Ekran və Real Zaman Saatı hazırlayın

3D çaplı korpus minimum ölçü üçün nəzərdə tutulmuşdur. Nəticədə, OLED ekranın başlıqlarını və real vaxt saatını çıxarmaq lazımdır.

Növbəti addıma hazırlaşarkən, qalan lehimləri sökülmə pompası ilə deliklərdən təmizləyin.

Addım 3: Rotary Encoder hazırlayın

Rotary Encoder hazırlayın
Rotary Encoder hazırlayın

Döner kodlayıcıda zəif bağlayıcılar var. Zədələnmənin qarşısını almaq üçün bir ədəd çaplı lövhəni enkoderə bağlayın.

Şəkildə torpaq bağlantısı (yuxarı sağ və orta alt) artıq hazırlanmışdır.

Qeyd: Çaplı elektron lövhəsi olan fırlanan kodlayıcının Arduino -ya toxunmadan korpusa oturduğundan əmin olun. Sıx bir uyğunluq əldə etmək üçün çap edilmiş elektron lövhəni üyütmək tələb oluna bilər.

Addım 4: Qoşma

Mühafizə
Mühafizə
Mühafizə
Mühafizə

Kassanın üç hissəsini 3d printerlə çap edin. Thingiverse təlimatlarına baxın.

Addım 5: Arduino Power LED -i deaktiv edin (isteğe bağlı)

Arduino Power LED -i deaktiv edin (isteğe bağlı)
Arduino Power LED -i deaktiv edin (isteğe bağlı)

Taymerdə yaşıl bir parıltı olmaması üçün Arduinonun güc LED -i söndürülə bilər.

Qeyd edək ki, bu dəyişiklik isteğe bağlıdır.

Arduino Nano'nun modifikasiyası güc ledinin yanındakı rezistoru çıxarmaqdan ibarətdir (şəkildəki qırmızı dairəyə baxın).

Addım 6: Enerji Təchizatı + Qatı Röle

Güc Təchizatı + Qatı Hal Rölesi
Güc Təchizatı + Qatı Hal Rölesi

Bu mərhələdə enerji təchizatı və qatı hal rölesi birləşdirilir və korpusun alt hissəsinə quraşdırılır.

Enerji təchizatı ilə röle arasındakı əlaqələr bu komponentlərin altındadır. Rölenin vintli terminal bloku Arduino -ya qoşulmaq üçün istifadə olunacaq.

Qeyd: Bağlantılar qurarkən, qatı hal rölesinin montaj deliklərinin boş qalmasını təmin edin.

  • A1 bərk hal rölesi ilə enerji təchizatı AC əlaqələrindən birinə bir əlaqə telini lehimləyin
  • Güc qaynağının digər AC bağlantısına bir tel lehimləyin (bu, 7 -ci addımda neytral vida terminal blokuna bağlanacaq)
  • Enerji təchizatı arasında tel lehimləyin -DC rölesinə səs
  • Enerji təchizatına qoşulmaq üçün bir tel +lehim DC +rölesinə

Qeyd: Korpusa uyğunlaşmaq üçün enerji təchizatı və rölin uclarını qısaltmaq tələb oluna bilər.

Addım 7: Arduino Nano + Güc Təchizatı + Qatı Hal Rölesi

Arduino Nano + Güc Təchizatı + Qatı Hal Rölesi
Arduino Nano + Güc Təchizatı + Qatı Hal Rölesi

Bu addımda, Arduino Nano enerji təchizatı və qatı hal rölesinə bağlıdır.

  • Təxminən 70 mm uzunluğunda iki tel kəsin. Bir tərəfdən 30 mm, digər tərəfdən isə 4 mm izolyasiya şeridi çəkin.
  • Arduino +5V və GND -ə 30 mm soyulmuş izolyasiya ilə yan tərəfə tel keçərək lehimləyin
  • 20 mm uzunluğunda iki büzücü borunu kəsin və 25 mm soyulmuş hissənin üzərinə qoyun. Bu, telləri qatı hal rölesinin DC+ və DC- montaj vintli terminal bloku ilə əlaqəyə qədər izolyasiya edir.
  • Diqqət yetirin ki, GND və +5V telləri rölin vida terminal blokuna düzgün qoşulmaq üçün keçməlidir.
  • Təxminən 40 mm uzunluğunda bir tel kəsin və hər iki ucunu 4 mm izolyasiya edin. Bir tərəfi Arduinonun arxa tərəfindəki A2 bağlantısına lehimləyin, digər tərəfini isə bərk vəziyyətdə montaj vidalı terminal blokunun CH1 bağlantısına bağlayın.

XƏBƏRDARLIQ

Arduino, Arduino daxili güc tənzimləyicisini istifadə etmək əvəzinə, sabit +5V enerji təchizatı ilə işləyir. Buna görə, Arduino enerji təchizatından enerji alanda USB -yə qoşulmaq təhlükəsiz deyil.

Arduino USB bağlantısını istifadə etməzdən əvvəl həmişə 230VAC şəbəkəsini ayırın.

Addım 8: Arduino Nano + Real Zaman Saatı

Arduino Nano + Real vaxt saatı
Arduino Nano + Real vaxt saatı

Bu addımda real vaxt saatı qismən əvvəlki addımda hazırlanan kabellərdən istifadə etməklə Arduinoya qoşulur.

  • Arduino GND-dən (eyni zamanda rölenin DC- bağlantısı ilə) gələn teli real vaxt saatının '-' ilə lehimləyin.
  • Arduino+5V -dən (həmçinin rölin DC+-ına bağlıdır) gələn teli real vaxt saatının "+" işarəsinə lehimləyin.
  • Təxminən 40 mm uzunluğunda iki tel kəsin və hər iki ucunu 4 mm izolyasiya edin.
  • Arduino A4 və real vaxt saatı D (SDA) arasında bir tel lehimləyin.
  • Arduino A5 və real vaxt saatı C (SCL) arasında bir tel lehimləyin.
  • Dönən kodlayıcıya müdaxilə etməmək üçün real vaxt saatının tellərini düzəldin. Bunun üçün tellərin korpusun altında olması lazımdır.

Addım 9: OLED Ekranı bağlayın

OLED Ekranı birləşdirin
OLED Ekranı birləşdirin

Bu mərhələdə OLED SPI ekranı Arduinoya əlavə olunur.

  • 65 mm uzunluğunda 2 tel kəsin və hər iki ucu 4 mm izolyasiya edin.
  • OLED ekranın GND bağlantısına bir tel lehimləyin. Bu teli Arduino GND-dən gələn istilik büzücü borulardan izolyasiya edilmiş telə lehimləyin (4-cü addıma baxın) və hər iki teli qatı hal rölesinin DC-vidalı terminal blokuna qoşun.
  • OLED ekranın VCC bağlantısına bir tel lehimləyin. Bu teli Arduino + 5V-dən (4-cü addıma baxın) gələn istilik büzücü boru izolyasiya edilmiş telə lehimləyin və hər iki teli bərk hal rölesinin DC + montaj vintli terminal blokuna qoşun.
  • 65 mm uzunluğunda 5 teli kəsin və hər iki ucunu 4 mm izolyasiya edin.
  • D0 (CLK) Arduino D10 -a qoşulmaq üçün bir tel lehimləyin
  • D1 (MOSI / DATA) Arduino D9 -a qoşulmaq üçün bir tel lehimləyin
  • RES (RT) Arduino D8 -ə qoşulmaq üçün bir tel lehimləyin
  • DC -ni Arduino D11 -ə bağlamaq üçün bir tel lehimləyin
  • CS -ni Arduino D12 -ə bağlamaq üçün bir tel lehimləyin

Qeyd: Ekran tellərinin sırası məntiqli deyil. Bu, əvvəlcə Adafruit nümunəsini istifadə etmənin və sonra əlaqələri dəyişdirmənin nəticəsidir, çünki D13 -dən istifadə etməklə Arduino -da hər zaman qırmızı LED görünür.

Alternativ

SPI əlaqələri üçün 'normal' bir sifariş istifadə etmək mümkündür. Bunun üçün, oledcontrol.cpp -də Arduino proqramının rəqəmsal çıxış tərifi müvafiq olaraq tənzimlənməlidir:

// SPI proqramından istifadə

// pin tərifləri

#CS_PIN 12 təyin edin

#RST_PIN 8 təyin edin

#DC_PIN 11 təyin edin

#MOSI_PIN 9 təyin edin

#CLK_PIN 10 təyin edin

Addım 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Diaqram Arduinonun dönən kodlayıcıya olan əlaqələrini göstərir (yuxarıdan görünən kodlayıcı).

  • 45 mm -lik 4 teli kəsin və hər iki ucunu 4 mm izolyasiya edin.
  • Arduino GND kodlayıcının sağ üst və alt orta konnektorlarına qoşun
  • Arduino D2 kodlayıcının sol alt hissəsinə qoşun
  • Arduino D3 kodlayıcının sağ alt hissəsinə qoşun
  • Arduino D4 -ü kodlayıcının sol üst hissəsinə qoşun

Addım 11: Kassada quraşdırma

Kassada quraşdırma
Kassada quraşdırma

Bütün elektronikanı korpusun alt hissəsinə quraşdırın:

  • Arduino'yu şaquli yuvaya sürüşdürün
  • Aşağıdakı bölmədə real vaxt saatını sürüşdürün
  • Güc qaynağını və röleyi yuxarı bölmədə sürüşdürün, rölin yuvalarına oturduğundan əmin olun.

Addım 12: Şebekəyə / İşığa Bağlanmaq

Şebekəyə / İşığa keçid
Şebekəyə / İşığa keçid
Şebekəyə / İşığa keçid
Şebekəyə / İşığa keçid

XƏBƏRDARLIQ

AC Şəbəkə ilə işləyərkən lazımi qayğı və ehtiyat tədbirləri gördüyünüzdən əmin olun, AC Şəbəkəsinin ayrıldığından əmin olun

Bu layihəni izləməyim nəticəsində və ya nəticəsi olaraq yaranan hər hansı bir itki və ya ziyana görə heç bir məsuliyyət daşımıram

  • AC Şəbəkə fazasını rölin A1 (sol) vintli terminal blokuna qoşun.
  • Keçid ediləcək işığın fazasını rölin B1 (sağ) vintli terminal blokuna qoşun.
  • AC şəbəkə neytral telini, işıq neytral telini və elektrik təchizatı neytral telini birləşdirmək üçün ayrıca vintli terminal blokundan istifadə edin.
  • Gərginliyi aradan qaldırmaq üçün elektrik kabellərinin hər birinə bir sarğı sarın.

Addım 13: Kassanı bitirmək

Qutunun bitirilməsi
Qutunun bitirilməsi

Bu mərhələdə korpusda montaj tamamlanır

  • OLED ekranı korpusun orta hissəsindəki ekran montaj deliyindən sürüşdürün.
  • Döner kodlayıcıyı orta hissədəki çuxurdan sürüşdürün, fırlanma əleyhinə xətlərin yuxarı qalxmasını təmin edin. Daxil olan yuyucudan və qozdan istifadə edərək fırlanan enkoderi quraşdırın.
  • Korpusun üst hissəsini montaj edin və altdan dörd M3x25mm vintini bağlayaraq korpusu bağlayın.

Addım 14: Arduino proqramlaşdırılması

XƏBƏRDARLIQ

Arduino, Arduino daxili güc tənzimləyicisini istifadə etmək əvəzinə, sabit +5V enerji təchizatı ilə işləyir. Buna görə, Arduino enerji təchizatından enerji alanda USB -yə qoşulmaq təhlükəsiz deyil.

Arduino USB bağlantısını istifadə etməzdən əvvəl həmişə 230VAC şəbəkəsini ayırın.

GitHub -dan Arduino timer proqramını əldə edin.

Bu proqram burada əldə edilə bilən Arduino IDE -dən istifadə edir.

Proqram aşağıdakı əlavə kitabxanalardan istifadə edir:

SSD1303Ascii

Arduino Wire kitabxanası

Dusk2dawn kitabxanasının da istifadə edildiyini, lakin interfeysindəki dəyişiklik səbəbiylə kod olaraq daxil olduğunu unutmayın.

Doğru alacakaranlıq / şəfəq hesablamasını təmin etmək üçün uzunluq və enlik və saat qurşağı təyin olunmalıdır.

Dusk2dawn nümunəsində təsvir edildiyi kimi, hər hansı bir yerin uzunluq və enlemini tapmağın asan bir yolu, Google Xəritələrdə yeri tapmaq, xəritədə yeri sağ vurmaq və "Burada nə var?" Seçməkdir. Aşağıda koordinatları olan bir kart görəcəksiniz.

Uzunluq və enlik proqramda, Dusk2Dawn.cpp 19 və 20 -ci sətirlərdə kodlaşdırılmışdır:

/* Məkanınızın eni və uzunluğunu burada təyin etməlisiniz.

* * İPUCU: Hər hansı bir yer üçün uzunluq və enlemi tapmağın asan bir yolu, Google Xəritədə yer tapmaq, xəritədə sağa vurmaq və "Burada nə var?" Seçin. Aşağıda * koordinatları olan bir kart görəcəksiniz. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrext

Saat dilimi də Dusk2Dawn.cpp 24 xəttində kodlaşdırılmışdır. Varsayılan olaraq Hollandiya (GMT + 1) olaraq təyin edilmişdir:

/* Saat diliminizi (GMT ilə əvəzlənmiş) bura daxil edin.

*/ #define TIMEZONE 1

Arduino -nu ilk dəfə proqramlaşdırarkən EEPROM yaddaşını işə salmaq lazımdır. Bunun üçün timer.cpp 11 -ci sətirini EEPROM başlatma etmək üçün dəyişdirin:

// ilk dəfə proqramlaşdırma zamanı true olaraq dəyişin

#define INITIALIZE_EEPROM_MEMORY saxta

Proqramı Arduinoya yükləyin və Arduino'yu yükləyin.

EEPROM başlanğıcını deaktiv edin və proqramı yenidən Arduino -ya yükləyin. Taymer indi yenidən başladıqda keçid vaxtı parametrlərini xatırlayacaq.

Addım 15: Vaxtın qurulması və vaxtın dəyişdirilməsi

İstifadəçi qarşılıqlı anlayışları:

  • Qısa mətbuat seçimləri təsdiqləmək üçün istifadə olunur. Bundan əlavə, əsas timer ekranında qısa bir müddət işığı yandırır və ya söndürür.
  • Əsas düymə ekranından menyuya daxil olmaq üçün uzun basın. Menyunun hər hansı bir yerində uzun bir basmaq əsas taymer ekranına qayıdacaq.
  • '>' Seçim kursu. Bu kursor menyuda seçilmiş seçimi göstərir.

Əsas taymer ekranı

Əsas timer ekranı göstərir:

Həftənin günü Su

Cari vaxt 16:00

Cari timer vəziyyəti və növbəti keçid vaxtı Timer 17: 12 -ə qədər OFF

Şəfəq və axşam vaxtı Şəfəq 08:05 Gecə 17:10

Doğru vaxtın təyin edilməsi

Menyuya daxil olmaq üçün uzun basın. Aşağıdakı variantlar göstərilir:

Vaxtı Ayarla Həftə günü proqramı Həftə sonu Proqram Seçimləri

Real vaxt saatının tarixini və vaxtını təyin etmək üçün vaxtı təyin et seçin. Doğru dəyərləri daxil edin:

İlMayDayTime

Taymer avtomatik olaraq həftənin gününü təyin edir. Yaz vaxtına keçid də avtomatik olaraq edilir. Yaz saatı yalnız Avropa saat qurşağı üçün tətbiq olunur.

Taymer proqramının qurulması

Taymerin biri həftə günləri, biri həftə sonu üçün 2 proqramı var. Qeyd edək ki, cümə günü həftə sonu hesab olunur, işıqlar bir az daha qala bilər.

Hər bir taymerin bir açma və sönmə anı var. An ya ola bilər:

  • Vaxt: Tam olaraq göstərilən vaxt
  • Şəfəq: Hesablanmış şəfəq vaxtına əsaslanaraq keçin
  • Alacakaranlıq: Hesablanan qaranlıq vaxtına əsaslanaraq keçin

Alacakaranlıq və şəfəq üçün 59 dəqiqə əvvəl və ya sonra bir düzəltmə dəyəri daxil etmək mümkündür.

Nümunələr:

İşığı bütün gecə yandırmaq üçün (axşam + 10 dəq) yandırın, (şəfəq - 10 dəq) söndürün

Axşam işığı yandırmaq üçün, qaranlıqda yandır, zamanında söndürün: 22:30.

Seçimlər

Seçimlər ekranında ekranın dəyişdirilməsi üçün bir zaman aşımı təyin edilə bilər.

Ekran söndürüldükdə, fırlanan enkoder düyməsinə basmaq əsas taymer ekranına qayıdır.

Tövsiyə: