İçindekiler:

Çocuk Uyku Eğitim Saati: 6 Adım (Resimli)
Çocuk Uyku Eğitim Saati: 6 Adım (Resimli)

Video: Çocuk Uyku Eğitim Saati: 6 Adım (Resimli)

Video: Çocuk Uyku Eğitim Saati: 6 Adım (Resimli)
Video: Bebeklere Uyku Eğitimi Nasıl Verilir - UYKU EĞİTİMİ 2024, Temmuz
Anonim
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati
Çocuk Uyku Eğitimi Saati

4 yaşındaki ikizlerimin biraz daha uzun süre uyumayı öğrenmeleri için bir saate ihtiyacım vardı (Cumartesileri sabahları 5:30'da kalkmak zorunda kalmaktan bıktım), ama henüz saati okuyamıyorlar. Çok popüler bir alışveriş sitesinde birkaç ürüne göz attıktan sonra, "Sadece bir tane yapmak ne kadar zor olur?" diye düşündüm.

İşte bu projede istediğimi düşündüm. Üç farklı renk görüntülemek için (çoğunlukla başka bir projeden yaklaşık elli tanesine sahip olduğum için) bazı RGB LED'leri kullanırdı. Kırmızı, tekrar uyumak anlamına gelir, uyanmak için çok erken. Sarı, kalkıp odalarında sessizce oynayabilecekleri anlamına gelir. Yeşil, elbette kalkabileceğiniz anlamına gelir. Ayrıca zamanı ayarlayabilmek istedim, çünkü bazı günlerde daha uzun uyumak istiyorum (Hafta Sonu/Tatil vs Hafta içi vb.).

Gereçler

Ahududu Pi Sıfır W

İki RGB LED

Altı 220 Ohm direnç

Burada bulunan dosyalar (.stl, python, html)

Gerektiğinde çeşitli küçük vidalar, teller ve küçük parçalar.

1. Adım: 3D Baskı

3D Baskı
3D Baskı
3D Baskı
3D Baskı
3D Baskı
3D Baskı

Kızım gerçekten tek boynuzlu atları sever, bu yüzden bu proje için Thingiverse.com'da bulunabilen ve Creative Commons Non-Commercial lisansı altında kullanılabilen Apachcreation's Unicorn Trophy'nin bir remiksi olan Riven02'nin Unicorn Nightlight'ını remiksledim. Tek boynuzlu at tabanını ahududu pi sıfır için bir güç kablosuna uyacak şekilde değiştirdim. Etrafımda biraz AMZ3D Red PLA vardı, bu yüzden tek boynuzlu at tabanı ve kafası kırmızı olacak. Korna için şeffaf/yarı saydam PLA kullandım. Kullandığım.stl dosyaları ve ayarları şunlardır:

tek boynuzlu at.stl

  • Katman Yüksekliği: 0.02
  • Duvar Kalınlığı:.8
  • Duvar Hattı Sayısı: 2
  • Dolgu: %15
  • Dolgu Deseni: Izgara

UnicornBase.stl

  • Katman Yüksekliği: 0.02
  • Duvar Kalınlığı:.8
  • Duvar Hattı Sayısı: 2
  • Dolgu: %15
  • Dolgu Deseni: Izgara

Horn.stl

  • Katman Yüksekliği: 0.02
  • Duvar Kalınlığı: 0.8
  • Duvar Hattı Sayısı: 3
  • Dolgu: 0

Adım 2: Devre

Devre
Devre
Devre
Devre
Devre
Devre

Devre oldukça kolay. RGB'nin farklı renkleri için açma/kapamayı kontrol etmek için altı farklı GPIO pini seçtim. Bu pinler ve ilgili LED Renkleri şunlardır:

  • Pin 11 - RGB 1 KIRMIZI
  • 13'ü RGB 1 YEŞİL'e sabitleyin
  • 15'i RGB 1 MAVİ'ye sabitleyin
  • Pin 16 - RGB 2 KIRMIZI
  • 18'i RGB 2 YEŞİL'e sabitleyin
  • 36'yı RGB 2 MAVİ'ye sabitleyin
  • 39'u Toprağa Sabitle

Her pim 220 ohm'luk bir akım sınırlama direnci ile dirence bağlanmıştır (tabii ki toprak hariç). Direnci hatta lehimledim ve ısıyla daralan makaronla kapladım.

Adım 3: Ahududu Pi Hazırlama

Bir web arayüzü kullanarak uyku eğitmeni saati için zaman ayarlayabilmek istedim. Bu yüzden Raspberry Pi üzerinde bir Apache ve PHP Sunucusu kurmam gerekiyordu. Raspberry Pi'ye yeni yazılım yüklerken her zaman yapmanız gereken ilk şey, yazarak güncel olduğundan emin olmaktır:

sudo apt-get güncellemesi

Ondan sonra, gerçekten işe başlayabiliriz. Bunu Apache2'yi kurarak yapacağız:

sudo apt-get install apache2 -y

bu Apache web sunucusunu kurmalıdır. Bunu Raspberry pi'de bir tarayıcı kullanarak ve şuraya giderek test edebilirsiniz:

localhost/

veya başka bir bilgisayarın tarayıcısından Raspberry Pi'nizin ip adresine giderek. IP adresi türünüzü bulmak için:

ana bilgisayar adı -I

Bunları yapmak, varsayılan bir Apache Web Sunucusu sayfasına götürecektir. Bu, /var/www/html/ dizininde bulunan index.html değiştirilerek değiştirilebilir. Kendi index.html dosyamla değiştirilebilir.

Ardından, PHP dosyalarını çalıştırabilmek için Apache web sunucusunu kuracağız. Yazarak başlayın:

sudo apt-get kurulum php libapache2-mod-php -y

şimdi, sleepset.php dosyasını /var/www/html dizinine index.html dosyasıyla yerleştirebilmelisiniz.

Kendi ağınızda bu sayfaya gitmek için Raspberry Pi'nizi statik bir ip adresi ile ayarlamanız gerekir (veya ağınız ara sıra yenilendiğinde yeni ip adresini bulmaya çalışabilirsiniz). Bunun çalışması için birkaç dosyayı düzenlemeniz gerekecek. /etc/dhcpcd.conf dosyasını aşağıdakilerle düzenlemeniz gerekir:

arayüz wlan0

statik ip_adresi=192.168.1.statik yönlendiriciler=192.168.1.1 statik etki alanı_adı_sunucuları=192.168.1.1

Ağ bilgilerinizle değiştirin. Şimdi yapmanız gereken tek şey yeniden başlatmak.

sudo yeniden başlatma

Google drive bağlantısındaki dosyaların yerleşimi şu şekilde olmalıdır:

  • index.html ve sleepset.php /var/www/html dizinine yerleştirilmelidir
  • sleepset.txt ve sleeptrainer1_1.py /home/pi/pythoncode dizinine yerleştirilmelidir (ipucu: bu dizini oluşturmanız gerekir)

Bu dosyaları doğru dizine yerleştirdikten sonra, başlangıçta sleeptrainer1_1.py programını çalıştırmak için rc.local dosyasının değiştirilmesi gerekir. rc.local dosyasını değiştirmek için kök düzeyinde erişime ihtiyacınız olacak, bu nedenle şunu yazın:

sudo nano /etc/rc.local

Düzenleyicide aşağı kaydırın ve çıkış 0 satırından hemen önce şunu ekleyin:

python /home/pi/pythoncode/sleeptrainer1_1.py &

Burada unutulmaması gereken iki şey var:

  1. LINUX'un sleeptraner1_1.py dosyasının rc.local ile aynı dizinde bulunduğunu düşünmemesi için mutlak dosya yolunu kullanın.
  2. Sondaki ve işaretini (&) unutmayın. bu, LINUX'un bu dosyayı arka planda çalıştırmasına ve önyüklemeye devam etmesine izin verecektir.

Şimdi, kaydetmeniz istendiğinde ctrl-x ve ardından y yazarak dosyayı kaydedin ve ardından ENTER'a basın.

Ardından sudo yeniden başlatma yazın.

Raspberry Pi şifrenizi (en azından) passwd komutunu kullanarak değiştirmeniz gerektiğini burada bir yerde belirtmelisiniz. Bunu henüz yapmadıysanız, şimdi iyi bir zaman olacaktır.

Adım 4: Kod

Sleeptrainer1_1.py dosyasındaki kod aşağıdadır. Sleepset.txt dosyasında okunanlarla zamanları karşılaştırmak için bir datetime nesnesi kullandım. Metin dosyası sadece iki satırdır, ilki saat, ikincisi dakika içindir. sleeptrainer1_1.py, işlemciyi bağlamamak için döngü yinelemeleri arasında bir dakika uyur. Yeşil ışık başlangıçta çok parlak çıkıyordu, bu yüzden sarı yapmak için kırmızı ile kullanıldığında karartmak için darbe genişlik modülasyonu kullandım.

Python kodu:

RPi. GPIO'yu GPIO olarak içe aktar

tarihten itibaren tarihsaati dt olarak içe aktar GPIO.setmode(GPIO. BOARD) GPIO.setwarnings(False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup(red1, GPIO. OUT) GPIO.setup(red2, GPIO. OUT) GPIO.setup(green1, GPIO. OUT) GPIO.setup(green2, GPIO. OUT) GPIO.setup(blue1, GPIO. OUT) GPIO.setup(blue2, GPIO. OUT) p1 = GPIO. PWM(green1, 100) p2 = GPIO. PWM(green2, 100) def readset(): setfile = open("/home/pi/pythoncode/sleepset.txt", 'r') a = setfile. readline() b = setfile.readline() a = int(a) b = int(b) dönüş a, b def ledlight(color): if (color == "red"): GPIO.output(red1, GPIO. YÜKSEK) GPIO.output(kırmızı2, GPIO. HIGH) p1.stop() p2.stop() GPIO.output(mavi1, GPIO. LOW) GPIO.output(mavi2, GPIO. LOW) elif (renk == "mavi"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.stop() p2.stop() GPIO.output(mavi1, GPIO. HIGH) GPIO.output(mavi2, GPIO. YÜKSEK) elif (renk == "yeşil"): GPIO.output(kırmızı1, GPIO. LOW) GPIO.output(kırmızı2, GPIO. LOW) p1.start(100) p2.start(100) GPIO.output(mavi1, GPIO. LOW) GPIO.output(mavi2, GPIO. LOW) elif (renk == "sarı"): p1.start(60) p2.start(60) GPIO.output(kırmızı1, GPIO. HIGH) GPIO.output (kırmızı2, GPIO. HIGH) GPIO.output(mavi1, GPIO. LOW) GPIO.output(mavi2, GPIO. LOW) elif (renk == "kapalı"): GPIO.output(kırmızı1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) p1.stop() p2.stop() while True: settime = readset() saat, dakika = settime if dakika == 0: if dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat-2) < dt.now() < dt(dt.now(.yıl, dt.now().ay, dt.now().gün, saat-1, dakika+30): ledlight("kırmızı") elif dt(dt.now().yıl, dt.now(.ay, dt.now().gün, saat-1, dakika+30) < dt.now() < dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat, dakika): ledlight("sarı") elif dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat, dakika) < dt.now() < dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat+1, dakika): ledlight("yeşil") başka: ledlight("kapalı") elif dt(dt.now().yıl, dt.now().ay, dt.now().gün, ho ur-2) < dt.now() < dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat, dakika-30): ledlight("kırmızı") elif dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat, dakika-30) < dt.now() < dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat, dakika): ledlight("sarı") elif dt(dt.now().yıl, dt.now().ay, dt.now(.gün, saat, dakika) < dt.now() < dt(dt.now().yıl, dt.now().ay, dt.now().gün, saat+1, dakika): ledlight("green") başka: ledlight ("kapalı") time.sleep(60)

index.html dosyası, HTML'de tasarlanmış temel bir formdur. İki metin kutusunun içeriğini alır ve bunları form işleme için sleepset.php dosyasına iletir. PHP dosyası, güncellenmiş verilerle sleepset.txt dosyasının üzerine yazar.

Adım 5: Hepsini Bir Araya Getirmek

Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy

Kodlama bitti ve tüm parçalar basıldı, montaj zamanı. Hepsini bir araya getirmek için şu adımları takip ettim:

  1. Kornanın Alt kısmındaki RGB LED'lere göre boyutlandırılmış iki küçük delik açın ve LED'leri bu deliklere yerleştirin.
  2. Tek boynuzlu at kafasındaki deliğe korna yerleştirin ve sıkı olana kadar çekin. Kornayı sabitlemek için içeriden yapıştırıcı kullanın.
  3. Raspberry Pi Zero W'yi tek boynuzlu at kafasının içine takın. (Sıcak Tutkal Tabancası Kullanarak Belki)
  4. Tek boynuzlu at kafasını tek boynuzlu at tabanına takın.
  5. Güç kablosunu takın ve tüm düzeneği duvara takın.
  6. Saati takın.

Bu noktada, işleyen bir Çocuk Uyku Eğitmeni Saatim var.

Adım 6: Bir Yıl Sonra…

Bir yıl sonra …
Bir yıl sonra …

Bir yıl sonra:

Kızlarım biraz daha uyuyor. Odamızda küçük çocukların "Baba ışık yeşil" demesiyle uyanmaya alıştık. ve bu harika. Uzun lafın kısası, artık planladığımız bir Cumartesi günü sabah 5:30'da uyanıyoruz.

Gelecekte geliştirmeyi planladığım şeyler:

  • Belki bir mikrofon ve hoparlör gibi bazı sensörler veya başka öğeler eklemek.
  • Belki de çocuklarım yakında okula başlayacakları için çalar saat olarak kullanmak üzere bir hoparlörle çalışmak için kodu düzenleyin.

Önerilen: