Mündəricat:

Məni Oyandır - Ağıllı Zəngli Saat: 6 addım
Məni Oyandır - Ağıllı Zəngli Saat: 6 addım

Video: Məni Oyandır - Ağıllı Zəngli Saat: 6 addım

Video: Məni Oyandır - Ağıllı Zəngli Saat: 6 addım
Video: Bu dərsi bilən var?😂😂 2024, Noyabr
Anonim
Məni Oyandır - Ağıllı Zəngli Saat
Məni Oyandır - Ağıllı Zəngli Saat

Məni oyandır, ağıllı bir işıq olaraq da istifadə edilə bilən ağıllı bir zəngli saatdır.

Daxili ledstrip otağınıza daxil olan təbii işığı simulyasiya edir. Bu, gününüzə sakit və təbii bir şəkildə başlamağa imkan verir.

Zəngli saat, vaxtı oxumaq üçün 4*7 seqmentli ekran, sevdiyiniz musiqi ilə oyanmaq üçün dinamiklər, toxunma düyməsi, LED şeridinin parlaqlığını uyğunlaşdırmaq üçün bir ldr və ekrana baxmaq üçün istifadə edə biləcəyiniz bir temperatur sensoru ilə də təchiz olunmuşdur. otağınızın temperaturu.

Təchizat

Tam ödədiyim qiymətlərin siyahısını burada tapa bilərsiniz:

Mikro nəzarətçilər və kompüterlər:

Raspberry Pi 4I moruq pi 4 4GB istifadə etdi, lakin hər hansı bir moruq pi modeli 3+ yaxşı olmalıdır

Arduino Uno

Arduino, 4*7 seqmentli saat ekranını idarə etmək üçün istifadə olunur.

Sensorlar:

  • TMP36: temperatur sensoru
  • LDR: İşıqdan asılı rezistor

Aktuatorlar:

  • WS2801: Fərdi olaraq ünvanlı ledstrip
  • LCD ekran: 16*2 LCD ekran.
  • 4*7 seqmentli saat ekranı

IC -lər:

  • 74HC595: LCD ekran üçün Shiftregister
  • MCP3008: 8-bit analoqdan rəqəmsal çeviriciyə
  • Məntiq səviyyəsi çeviricisi: raspi və arduino arasında ünsiyyət qurmaq üçün istifadə olunur

Başqa şeylər:

  • Dinamikləri gücləndirmək üçün adafruit MAX9744 gücləndiricisi
  • İstənilən dinamik, Visaton 4Ohm 8Watt tam diapazonlu dinamikdən istifadə etdim (Art. No. 2240)
  • Gücləndiricini gücləndirmək üçün 9 voltluq enerji təchizatı
  • Led zolağını və digər komponentləri təmin etmək üçün 5 voltluq bir enerji təchizatı. Leddəki hər bir ledin 60mA -nı boğa biləcəyini unutmayın, buna görə enerji təchizatınızın kifayət qədər olduğundan əmin olun.
  • Bir neçə 220 Ohm rezistor
  • Çantanıza qoymaq üçün kiçik bir çörək taxtası.

Alətlər:

  • Bir lehimləmə dəmiri.
  • Davanı düzəltmək üçün bir şey (taxta effekti əldə etmək üçün PLA və PETG ilə 3D printerdən və bəzi vinil etiketlərdən istifadə etdim.)

Addım 1: Raspberry Pi qurmaq

Moruq pi bizim əsas mikro nəzarətçimizdir.

Raspberry pi yerli veb serverimizi, verilənlər bazamızı idarə edir, led zolağını, dinamikləri,…

1 -ci hissə: Raspbian qurmaq

Raspbian qurmaq üçün bu təlimatı istifadə edin:

SSH -nin aktiv olduğundan əmin olun

2 -ci hissə: Bağlanmaq

İnternetə qoşulmaq üçün moruq pi terminalına giriş əldə etməlisiniz. Macun istifadə etməyi məsləhət görürəm. Terminal tipində:

wpa_passphrase "Şəbəkəniz" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"Şəbəkəniz" wifi şəbəkənizin adıdır və "YourSSID" şəbəkənizin paroludur.

Şəbəkəni əlavə etdikdən sonra Raspberry Pi -ni yenidən başladın.

'Ping 8.8.8.8' əmrini yazın, şəbəkəniz qurulduqda və işləyirsə cavab alsanız google serverlərinə bir paket göndərəcək!

3 -cü hissə: Lazım olan proqramları quraşdırın

Bu layihəni işə salmaq üçün bəzi əlavə proqramlar quraşdırmalıyıq.

Başlamadan əvvəl hər şeyin təkmilləşdirildiyinə əmin olmaq üçün bu 2 əmri işlədin.

sudo apt yeniləmə

sudo apt upgrade

Bu bir müddət çəkə bilər.

Apache

sudo apt install apache2 -y

sudo apt php libapache2-mod-php -y quraşdırın

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php -mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python borusu

Bəzi python kitabxanalarını işə salmaq üçün pip quraşdırmalıyıq

pip3 mysql-connector-python qurun

pip3 flask-socketio qurun

pip3 flask-cors quraşdırın

pip3 gevent quraşdırın

pip3 gevent-websocket quraşdırın

Addım 2: Elektronikaya qoşulun

Elektronikaya qoşulma
Elektronikaya qoşulma
Elektronikaya qoşulma
Elektronikaya qoşulma

2 sxem əlavə etdim, 1 test məqsədləri üçün bir çörək taxtası sxemidir. İlk sxem qurmağı və kodu işə salmağa çalışmağı məsləhət görürəm.

Aşağıdakı fritzing fayllarını əlavə etdim.

Addım 3: Verilənlər Bazası Dizaynı

Verilənlər bazası dizaynı
Verilənlər bazası dizaynı

Bu mənim hazırladığım verilənlər bazası sxemidir. Sözlər holland dilindədir, amma hər cədvəli ətraflı izah edəcəyəm.

Cədvəl 1: tblMuziek

Bu olduqca sadə bir masa. Sənətçinin adını, mahnı adını və mahnının fayl adını saxlayır.

Cədvəl 2: tblLedstrip

Bu cədvəl, LED zolağının vəziyyətini saxlayır. Smartlight funksiyası üçün buna ehtiyacımız var.

Cədvəl 3: tblSensoren

Bu cədvəl həyəcan siqnalımızdakı sensorları izləyir. Sensorun adını və MCP3008 kanalını saxlayırıq

Cədvəl 4: tblMeting

Bu cədvəldə sensorlarımızın dəyərləri vaxtları ilə birlikdə saxlanılır.

Cədvəl 5: tblWekker

Bu cədvəl zəngli saatınızın parolunu və adını saxlayır (məsələn, yataq otağı) Bu cədvəl məcburi deyil, ancaq evinizdə 1 -dən çox zəngli saatınız olacağını güman etdiyim üçün əlavə etdim.

Cədvəl 6: tblAlarm

Bu, bəlkə də ən vacib cədvəldir. Qurduğunuz həyəcanı və saatın nə etməli olduğunu izləyir (hansı mahnını ifa etmək, hansı ardıcıllığa səbəb olmaq, hansı günlərdə sönmək lazımdır …). 2 tarixi izləmək çox vacibdir. Zəngli saatın hansı saatda sönməsi lazım olduğunu saxlamaq üçün 1 tarix istifadə olunur. Digəri isə həyəcan siqnalı son dəfə nə vaxt çaldı. Hansı iş gününün başlamalı olduğunu bilmək üçün 7 rəqəmdən ibarət bir varchar istifadə etdim. İlk rəqəm Bazar ertəsi, ikinci Çərşənbə axşamıdır,… 1 -dirsə, o zaman sönməlidir, 0 olarsa olmamalıdır. Misal: 1111100, bu siqnalın Bazar ertəsi, Çərşənbə, Çərşənbə, Cümə axşamı və Cümə günləri sönməsi deməkdir.

Addım 4: Arduino Quraşdırması

Bu addım çox asandır. Arduino faylını yükləyə biləcəyiniz növbəti addımda mənim github -a bir keçid olacaq.

Proqram nə edir?

Proqram, serial məlumatlarının pi -dən daxil olmasını gözləyir.

Məlumat əldə edildikdən sonra ipdən ayrılır və pi -yə bir təsdiq göndərir.

String bu kimi bir şey olacaq: '1201' bu 12:01 olduğu anlamına gəlir. Ümumi bir anod 7 seqmentli ekran istifadə etdim, bu rəqəmlərin yüksək olması və A, B, C, D, E, F, G və DP -nin açılması üçün aşağı olması deməkdir. Ümumi bir katoddan istifadə edirsinizsə, HIGH -u LOW -a və LOW -u HIGH -a dəyişməlisiniz.

Burada 7 seqmentli ekranın necə işlədiyinə dair daha çox məlumat olan bir link var. (kitabxanadan istifadə etməklə):

www.instructables.com/id/Using-a-4-digit-7…

Kitabxanadan istifadə etmədən 7 seqmentli ekran haqqında bir link:

create.arduino.cc/projecthub/SAnwandter1/p…

Addım 5: Raspberry Pi Backend

Raspberry Pi arxa tərəfi
Raspberry Pi arxa tərəfi

Kodumu Github istifadə edərək yükləyə bilərsiniz. (https://github.com/VanHevelNico/WakeMeUp)

Proqramı necə qurmaq olar:

Arxa plitə istifadə edərək pitonda yazılmışdır. Bu proqramı (app.py) avtomatik olaraq başlatan bir xidmət edə bilərsiniz.

Ön kodunu əvvəllər endirdiyimiz apache serverinin html faylına qoymalısınız. (/var/html)

Proqram necə işləyir?

Zəngli saat açıldıqda saatınızın ip ünvanına gedin (lcd -də göstəriləcək)

Brauzerinizdə həmin ip ünvanına gedən kimi kompüteriniz müştəri ilə əlaqə qurduğunu söyləyərək arxa tərəfə socket.io sorğusu göndərəcək. Arxa tərəf bunu alanda aşağıda izah edəcəyim bir neçə mövzu başlayacaq.

Qurmaq

Bu lazım olan bütün obyektləri intialize edir.

GetTemp

Bu mcp3008 kanal 0 -ı oxuyur və ikili məlumatları həqiqi temperatura çevirir və cari tarix və saatı məlumat bazasına qoyur.

GetTempGrafiek

Bu, temperatur sensörünün keçmiş 20 dəyərini alır və onu ön ucuna yayır.

tijd_sturen

Bu üsul cari vaxtı alır və dəqiqənin dəyişib -dəyişmədiyini yoxlayır. Proqram dəyişdirilərsə, serial vaxtından istifadə edərək yeni vaxtı arduinoya göndərir

çekAlarmen

Bu ən vacib üsuldur. Açılan bütün həyəcan siqnallarını alır və bu həyəcan siqnallarından hər hansı birinin indiki vaxtdan 5 dəqiqə əvvəl keçməli olub -olmadığını yoxlayır (bu, hər bir siqnalın lazım olduğu anda sönməsini təmin etmək üçün buferdir). Siqnal sönməli olsa, musiqiyə, lentə başlayacağıq … Gücə həssas olan rezistoru davamlı oxuyuruq və dəyəri 1000 -dən aşağı düşəndə (fsr basıldığını oxuyun) Siqnalı çeviririk və həyəcan siqnalını yeniləyirik. verilənlər bazası. Siqnalın sonuncu dəfə açıldığı tarixi cari tarixə qoyduq.

statusLight

Bu üsul, LED zolağının dəyərini çıxarır və lazım olduqda led şeridi işə salır.

lichtAanpassen

Bu ledstrip və həyəcan işığının ziddiyyət təşkil etməməsini təmin etmək üçün əlavə bir üsuldur.

Addım 6: Dava

Dava
Dava
Dava
Dava
Dava
Dava

Dosyalarımın linkini burada tapa bilərsiniz:

Kassanı çap etmək üçün 3d printerdən istifadə etdim. 4 fərqli hissədə çap olunur:

  1. Dinamik üçün deşikləri və 7 seqmentli ekran üçün bəzi divarları olan ön plaka
  2. Şəffaf PETG -də led zolaq üçün xarici üzük.
  3. Orta hissə
  4. Arxa panel lcd üçün bir çuxur və kabellər üçün bir çuxur.

Orijinal modeldə 7 seqmentli ekran üçün heç bir çuxur yox idi, lakin buna ehtiyac var, çünki əks halda 7 seqmentli ekranın işığı yanmaz.

Gördüyünüz kimi bütün komponentləri taxdıqdan sonra son nəticənin daha yaxşı görünməsi üçün taxta görünüşlü vinil stikerlərdən istifadə etdim. Saat ekranı stikerdə parlayır və bu da çox gözəl görünüşlü bir effekt yaradır.

Tövsiyə: