Isi kandungan:

Jam Latihan Tidur Kanak-kanak: 6 Langkah (dengan Gambar)
Jam Latihan Tidur Kanak-kanak: 6 Langkah (dengan Gambar)

Video: Jam Latihan Tidur Kanak-kanak: 6 Langkah (dengan Gambar)

Video: Jam Latihan Tidur Kanak-kanak: 6 Langkah (dengan Gambar)
Video: Menggambar, Melukis & Mewarnai Kamar Tidur Yang indah untuk Anak dan Balita | Gambar Dasar #198 2024, Julai
Anonim
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak
Jam Latihan Tidur Kanak-kanak

Saya memerlukan jam untuk menolong anak kembar saya yang berusia 4 tahun belajar untuk tidur lebih lama (saya sudah cukup untuk bangun pada jam 5:30 pagi pada hari Sabtu), tetapi mereka belum dapat membaca masa. Setelah melayari beberapa item di laman membeli-belah yang sangat popular, saya berfikir, "Betapa sukarnya hanya membuatnya ?!"

Jadi inilah yang saya fikir saya mahukan dalam projek ini. Ia akan menggunakan beberapa LED RGB (kebanyakannya kerana saya mempunyai kira-kira lima puluh dari projek lain) untuk memaparkan tiga warna yang berbeza. Merah bermaksud kembali tidur, terlalu awal untuk bangun. Kuning bermaksud mereka boleh bangun dan bermain dengan tenang di bilik mereka. Hijau, tentu saja anda boleh bangun. Saya juga ingin dapat menyesuaikan waktu, kerana saya ingin tidur lebih lama pada beberapa hari (Hujung Minggu / Cuti vs Hari Minggu dan sebagainya).

Bekalan

Raspberry Pi Zero W

Dua LED RGB

Enam perintang 220 Ohm

Fail (.stl, python, html) terdapat di sini

Pelbagai skru kecil, wayar, dan bahagian kecil yang diperlukan.

Langkah 1: Percetakan 3D

Percetakan 3D
Percetakan 3D
Percetakan 3D
Percetakan 3D
Percetakan 3D
Percetakan 3D

Anak perempuan saya sangat menyukai unicorn, jadi untuk projek ini saya mencampurkan semula Riven02's Unicorn Nightlight, yang merupakan gabungan dari Apachcreation's Unicorn Trophy, yang boleh didapati di Thingiverse.com dan digunakan di bawah lesen Creative Commons Bukan Komersial. Saya mengubah suai asas unicorn agar sesuai dengan kabel kuasa untuk raspberry pi zero. Saya kebetulan mempunyai beberapa PLA Merah AMZ3D, jadi dasar dan kepala unicorn akan menjadi merah. Saya menggunakan PLA yang jelas / lut sinar untuk tanduk. Fail dan tetapan.stl yang saya gunakan adalah:

Unicorn.stl

  • Tinggi Lapisan: 0.02
  • Ketebalan Dinding:.8
  • Kiraan Garisan Dinding: 2
  • Isi: 15%
  • Corak Isi: Grid

UnicornBase.stl

  • Tinggi Lapisan: 0.02
  • Ketebalan Dinding:.8
  • Kiraan Garisan Dinding: 2
  • Isi: 15%
  • Corak Isi: Grid

Horn.stl

  • Tinggi Lapisan: 0.02
  • Ketebalan Dinding: 0.8
  • Kiraan Garisan Dinding: 3
  • Isi: 0

Langkah 2: Litar

Litar
Litar
Litar
Litar
Litar
Litar

Litarnya cukup mudah. Saya memilih enam pin GPIO yang berbeza untuk mengawal on / off untuk pelbagai warna RGB. Pin dan Warna LED yang sesuai adalah:

  • Pin 11 hingga RGB 1 MERAH
  • Pin 13 hingga RGB 1 HIJAU
  • Pin 15 hingga RGB 1 BIRU
  • Pin 16 hingga RGB 2 MERAH
  • Pin 18 hingga RGB 2 HIJAU
  • Pin 36 hingga RGB 2 BIRU
  • Pin 39 ke Tanah

Setiap pin disambungkan ke perintang melalui perintang penghad arus 220 ohm (dengan pengecualian tentu saja tanah.)

Langkah 3: Penyediaan Raspberry Pi

Saya mahu dapat menetapkan waktu untuk jam pelatih tidur menggunakan antara muka web. Oleh itu, saya perlu menyediakan Pelayan Apache dan PHP pada Raspberry Pi. Perkara pertama yang harus selalu anda lakukan semasa memasang perisian baru pada Raspberry Pi adalah memastikannya terkini dengan menaip:

sudo apt-get kemas kini

Selepas itu, kita benar-benar boleh memulakan perniagaan. Kami akan melakukannya dengan memasang Apache2:

sudo apt-get install apache2 -y

ini harus memasang pelayan web Apache. Anda boleh mengujinya dengan menggunakan penyemak imbas di Raspberry pi dan menavigasi ke:

localhost /

atau dengan menavigasi dari penyemak imbas komputer lain ke alamat ip Raspberry Pi anda. Untuk mencari jenis alamat ip anda:

nama hos -I

Melakukan ini akan menyebabkan halaman Pelayan Web Apache lalai. Ini boleh diubah dengan menggantikan index.html yang terletak di direktori / var / www / html /. Ia boleh diganti dengan fail index.html saya sendiri.

Selanjutnya kita akan menyediakan pelayan web Apache untuk dapat menjalankan fail PHP. Mulakan dengan menaip:

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

anda kini boleh meletakkan fail sleepset.php di / var / www / html dengan fail index.html.

Untuk menavigasi ke halaman ini di rangkaian anda sendiri, anda perlu menyiapkan Raspberry Pi anda dengan alamat ip statik (atau anda hanya boleh mencuba mengetahui alamat ip baru apabila rangkaian anda memperbaharui sekarang dan kemudian). Anda perlu mengedit beberapa fail agar ini berfungsi. Anda perlu mengedit fail /etc/dhcpcd.conf dengan yang berikut:

antara muka wlan0

statik ip_address = 192.168.1.static routers = 192.168.1.1 static domain_name_servers = 192.168.1.1

Ganti dengan maklumat rangkaian anda. Satu-satunya perkara yang perlu anda lakukan sekarang ialah but semula.

rebo sudo

Penempatan fail dari pautan pemacu Google harus seperti berikut:

  • index.html dan sleepset.php harus diletakkan di direktori / var / www / html
  • sleepset.txt dan sleeptrainer1_1.py harus diletakkan di dalam direktori / home / pi / pythoncode (petunjuk: anda mesti membuat direktori ini)

Setelah meletakkan fail-fail ini di direktori yang betul, fail rc.local perlu diubah untuk menjalankan program sleeptrainer1_1.py pada permulaan. Anda memerlukan akses peringkat akar untuk mengubah suai fail rc.local, jadi ketik:

sudo nano /etc/rc.local

Di editor, tatal ke bawah, dan tepat sebelum garis keluar 0, tambahkan:

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

Terdapat dua perkara yang perlu diingat di sini:

  1. Gunakan jalan masuk mutlak sehingga LINUX tidak menyangka bahawa fail sleeptraner1_1.py terletak di direktori yang sama dengan rc.local.
  2. Jangan lupa ampersand (&) di akhir. ini akan membolehkan LINUX menjalankan fail ini di latar belakang dan meneruskan boot.

Sekarang, simpan fail dengan menaip ctrl-x dan kemudian y apabila diminta untuk menyimpan dan kemudian ENTER.

Kemudian taip rebo sudo.

Perlu disebut di suatu tempat di sini bahawa (minimum) anda harus menukar kata laluan Raspberry Pi anda menggunakan arahan passwd. Sekiranya anda belum melakukannya, sekarang adalah masa yang sesuai.

Langkah 4: Kodnya

Berikut adalah kod dari fail sleeptrainer1_1.py. Saya menggunakan objek datetime untuk membandingkan masa dengan yang dibaca dalam fail sleepset.txt. Fail teks hanya dua baris, yang pertama untuk jam, yang kedua untuk minit. sleeptrainer1_1.py tidur selama satu minit antara lelaran gelung untuk tidak mengikat pemproses. Lampu hijau awalnya keluar terlalu terang, jadi saya menggunakan modulasi lebar nadi untuk meredupkannya ketika digunakan dengan warna merah untuk membuat kuning.

Kod Python:

import RPi. GPIO sebagai GPIO

dari datetime import datetime sebagai dt import time 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) return a, b def ledlight (color): if (color == "red"): GPIO.output (red1, GPIO. TINGGI) GPIO.output (merah2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (warna == "biru"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (biru2, GPIO. TINGGI) elif (warna == "hijau"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (warna == "kuning"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () sementara True: settime = readset () jam, minit = penyelesaian jika minit == 0: if dt (dt.now (). year, dt.now (). month, dt.now (). day, hour-2) <dt.now () <dt (dt.now (), tahun, dt.now (). bulan, dt.now (). hari, jam-1, minit + 30): lampu sorot ("merah") elif dt (dt.now (). tahun, dt.now (bulan, dt.now (). hari, jam-1, minit + 30) <dt.now () <dt (dt.now (). tahun, dt.now (). bulan, dt.now ().day, hour, minute): lampu suluh ("kuning") elif dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour + 1, minute): ledlight ("green") other: ledlight ("off") elif dt (dt.now (). tahun, dt.now (). bulan, dt.now (). hari, ho ur-2) <dt.now () <dt (dt.now (). tahun, dt.now (). bulan, dt.now (). hari, jam, minit-30): lampu suluh ("merah") elif dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute-30) <dt.now () <dt (dt.now (). tahun, dt.now (). bulan, dt.now (). hari, jam, minit): lampu suluh ("kuning") elif dt (dt.now (). tahun, dt.now (). bulan, dt.now (), hari, jam, minit) <dt.now () <dt (dt.now (). tahun, dt.now (). bulan, dt.now (). hari, jam + 1, minit): lampu suluh ("hijau") lain-lain: waktu lampu ("mati") waktu. tidur (60)

File index.html adalah bentuk asas yang dirancang dalam HTML. Ia mengambil kandungan dua kotak teks dan meneruskannya ke fail sleepset.php untuk pengendalian borang. Fail PHP hanya menimpa fail sleepset.txt dengan data yang dikemas kini.

Langkah 5: Menggabungkan Semuanya

Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya

Dengan pengekodan selesai dan semua bahagian dicetak, sudah tiba masanya untuk pemasangan. Saya mengikuti langkah-langkah ini untuk menyatukan semuanya:

  1. Bor dua lubang kecil bersaiz LED RGB di Bahagian Bawah tanduk dan letakkan LEDS di lubang-lubang ini.
  2. Letakkan tanduk ke dalam lubang di kepala unicorn dan tarik sehingga ia ketat. Gunakan gam dari dalam untuk menahan tanduk.
  3. Pasang Raspberry Pi Zero W ke bahagian dalam kepala unicorn. (Menggunakan Hot Glue Gun Mungkin)
  4. Pasang kepala unicorn ke pangkal unicorn.
  5. Pasang kabel kuasa, dan pasangkan seluruh unit ke dinding.
  6. Pasangkan jam.

Pada titik ini saya mempunyai Jam Tidur Anak-anak yang berfungsi.

Langkah 6: Setahun Kemudian …

Satu tahun kemudian …
Satu tahun kemudian …

Satu tahun kemudian:

Gadis-gadis saya tidur sedikit lebih lama. Kami sudah terbiasa dengan anak-anak kecil di kamar kami dengan berkata, "Ayah, lampu itu hijau." dan itu bagus. Singkat cerita, kami hanya bangun pada pukul 5:30 pagi pada hari Sabtu apabila kami merancangnya lagi.

Perkara yang saya rancangkan untuk diperbaiki pada masa akan datang:

  • Mungkin menambah beberapa sensor atau item lain seperti mikrofon dan pembesar suara.
  • Mungkin edit kod untuk bekerja dengan pembesar suara untuk digunakan sebagai jam penggera kerana anak-anak saya akan segera memulakan persekolahan.

Disyorkan: