Daftar Isi:

White Noise Night Light: 11 Langkah (dengan Gambar)
White Noise Night Light: 11 Langkah (dengan Gambar)

Video: White Noise Night Light: 11 Langkah (dengan Gambar)

Video: White Noise Night Light: 11 Langkah (dengan Gambar)
Video: Cara Setting Kamera Iphone Biar Jernih 2024, Juli
Anonim
Cahaya Malam Kebisingan Putih
Cahaya Malam Kebisingan Putih
Cahaya Malam Kebisingan Putih
Cahaya Malam Kebisingan Putih

Ini adalah proyek yang saya buat untuk anak saya yang berusia 1 tahun untuk Natal. Sejujurnya, itu adalah hadiah kewarasan untuk saya dan istri saya. Ini adalah mesin white noise yang dapat memainkan beberapa suara berbeda yang dipilih melalui antarmuka web, dan juga menggabungkan lampu yang berubah warna berdasarkan waktu (lampu merah berarti berada di tempat tidur, kuning berarti Anda dapat bermain di kamar Anda, dan hijau berarti tidak apa-apa untuk keluar). Karena putra saya terlalu muda untuk mengetahui waktu, lampu malam berbasis warna sepertinya merupakan ide yang sangat bagus.

Ini adalah proyek yang sangat mudah, dan karena saya sudah menulis kodenya, ini mungkin 1 dari 5 pada skala kesulitan. Jika Anda memiliki balita yang mengganggu Anda terlalu pagi, Anda pasti ingin membuatnya.

Langkah 1: Daftar Bagian

Daftar Suku Cadang
Daftar Suku Cadang
Daftar Suku Cadang
Daftar Suku Cadang
Daftar Suku Cadang
Daftar Suku Cadang

1. Raspberry Pi Nol W

2. Beberapa jenis kasing (saya menggunakan yang ini dari Amazon)

3. Blinkt dari Pimoroni

4. Speaker Phat dari Pimoroni (Anda juga bisa menggunakan beberapa DAC lain dengan speaker murah)

Anda perlu memiliki beberapa keterampilan menyolder dasar untuk menyatukan phat speaker, ada tautan dengan petunjuk langkah demi langkah dari halaman produk, jadi Anda tidak dapat mengacaukannya.

5. [OPSIONAL] Kabel micro USB yang dipasang di panel - dari Adafruit

6. beberapa kabel penghubung atau jumper

Itu dia!

Langkah 2: Bakar Raspbian dan Hubungkan Papan

Bakar Raspbian dan Hubungkan Papan
Bakar Raspbian dan Hubungkan Papan

Saya menggunakan Raspian Stretch lite untuk build ini. Jadi bakar itu ke microSD dengan alat apa pun yang cocok untuk Anda, lalu jalankan pi. Jika Anda memerlukan bantuan untuk mendapatkan pi tanpa kepala untuk terhubung ke wifi rumah Anda dan mengaktifkan ssh, ada banyak tutorial online yang dapat menunjukkan cara melakukannya, tetapi Anda harus memastikan bahwa Anda telah melakukannya selama sisa ini bekerja.

Menggunakan https://pinout.xyz Anda dapat menarik kedua papan dan mendapatkan pinout mereka di situs ini. Papan Blinkt hanya membutuhkan 4 koneksi, dan Speaker Phat membutuhkan 9.

Seharusnya terlihat seperti foto setelah selesai. Sekarang kita perlu menguji apakah semuanya berfungsi.

Langkah 3: Menginstal Perangkat Lunak yang Diperlukan

Sekarang setelah kita terhubung, kita perlu menginstal perangkat lunak yang diperlukan untuk menjalankan papan Blinkt dan Speaker Phat. SSH masuk ke pi, dan Anda akan menemukan diri Anda di direktori home. Masukkan berikut:

curl https://get.pimoroni.com/blinkt | pesta

dan kemudian setelah selesai, ini:

curl -sS https://get.pimoroni.com/speakerphat | pesta

Itu akan menginstal semua yang diperlukan untuk kedua papan Pimoroni. Jika Anda memasukkan perintah ls, Anda akan melihat direktori Pimoroni. Jadi sekarang mari kita menulis beberapa kode dan menguji papan Blinkt.

Langkah 4: Menulis Beberapa Kode dan Mengujinya

Buat direktori yang disebut "skrip" dengan mengetik skrip mkdir dan kami akan menyimpan semua yang kami butuhkan untuk berjalan di sana. Jadi cd skrip untuk memasukkan diri Anda ke folder itu.

Sekarang, yang kita inginkan adalah lampu redup merah untuk waktu malam, lampu redup kuning untuk waktu bermain yang tenang, dan lampu hijau yang sedikit lebih terang saat boleh keluar. Bagi saya, saya menginginkan lampu merah dari pukul 19:30 hingga 06:15, dan pada pukul 6:15, lampu itu akan berubah menjadi kuning selama satu jam, dan akhirnya hijau pada pukul 07:15. Saya juga ingin mereka mematikannya pada jam 8:30 pagi ketika tidak ada orang yang mungkin berada di ruangan itu.

Ada dua cara untuk melakukan ini. Yang pertama (cara yang saya pilih untuk melakukannya) adalah dengan empat skrip berbeda, dijalankan dari pekerjaan cron. Cara lain untuk melakukannya, adalah satu skrip, yang menyertakan fungsi waktu yang dijalankan saat startup. Saya sebenarnya menulis skrip untuk melakukannya terlebih dahulu, tetapi tampaknya kurang efisien daripada melakukannya berdasarkan cron, jadi saya mengubahnya. Jika Anda menginginkan metode "satu skrip", beri tahu saya dan saya dapat mempostingnya di komentar.

Jadi, mari kita mulai dengan skrip merah. Ketik touch red.py, lalu nano red.py. Kemudian masukkan kode berikut.

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit(False) blinkt.set_brightness(0.3) blinkt.set_pixel(3, 128, 0, 0) blinkt.set_pixel(4, 128, 0, 0) #mengatur piksel 3 dan 4 menjadi blinkt.show()

Lakukan hal yang sama untuk yellow.py dan green.py.

kuning.py:

#!/usr/bin/env python

impor blinkt blinkt.set_clear_on_exit(False) blinkt.set_brightness(0.2) blinkt.set_pixel(2, 128, 128, 0) blinkt.set_pixel(3, 128, 128, 0) blinkt.set_pixel(4, 128, 128, 0) blinkt.set_pixel(5, 128, 128, 0) #mengatur piksel 2, 3, 4, dan 5 menjadi kuning blinkt.show()

hijau.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit(False) blinkt.set_brightness(0.2) blinkt.set_all(0, 128, 0) #set semua piksel ke blinkt.show() hijau

Dan akhirnya, kami ingin skrip menghapus Blinkt saat tidak diperlukan (lightsout.py):

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit(True) blinkt.set_brightness(0.1) blinkt.set_all(0, 0, 0) #set semua piksel ke nonaktif blinkt.show()

Itu dia. Untuk menguji ketik python red.py dan lihat apakah dua piksel tengah menyala merah. Kemudian ketik python lightsout.py untuk menghapusnya. Itu dia! Selanjutnya kita harus mengaturnya di tab cron sehingga mereka berjalan saat kita menginginkannya.

Langkah 5: Menambahkan Skrip Itu ke Cron

Di terminal SSH ketik crontab -e

gulir ke akhir file dan tambahkan baris berikut:

15 6 * * * python /home/pi/scripts/yellow.py15 7 * * * python /home/pi/scripts/green.py 30 8 * * * python /home/pi/scripts/lightsout.py 30 19 * * * python /home/pi/scripts/red.py

Itu mengatur skrip untuk dijalankan pada waktu yang dijelaskan pada langkah sebelumnya, lanjutkan dan sesuaikan ini agar sesuai dengan kebutuhan Anda.

Itu saja untuk lampu malam! Sangat mudah. Sekarang mari kita beralih ke pengaturan bagian White Noise dari build ini.

Langkah 6: Menguji Phat Speaker

Cara termudah (menurut saya) untuk menguji Speaker Phat adalah dengan menginstal sox dan menjalankan beberapa statis dari baris perintah.

sudo apt-get install sox

Setelah itu diinstal, kita dapat mencoba beberapa contoh perintah putar. Yang ini seharusnya terdengar seperti ombak.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapezium amod 0.1 30

Bagaimana santai! Ctrl+c akan menghentikannya. Tapi, apa itu? Ada banyak LED di seluruh permukaan Speaker Phat yang menyala, dan kami tidak dapat membiarkan hal itu mengganggu lampu Blinkt kami. Jadi mari kita matikan.

Untuk melakukan ini, kita perlu memodifikasi file /etc/asound.conf dan menghapus plugin VU meter, jadi plugin itu bahkan tidak akan mencoba untuk menggerakkan LED. Saya melakukan ini hanya dengan mengganti namanya. Ketik perintah ini mv /etc/asound.conf /etc/asound.conf.bak Saya menemukan ini melalui sedikit Googling, jadi mungkin ada cara yang lebih baik.

Sox berfungsi, dan itu bagus, tetapi saya berencana menggunakan beberapa MP3 yang dapat diulang untuk bagian white noise dari mesin ini, jadi saya membutuhkan pemutar yang berbeda, lebih disukai sesuatu yang sangat ringan. mpg123 adalah apa yang saya tetapkan. Instal itu sekarang dengan Sudo apt-get install mpg123

Ok, sekarang kita tahu Speaker Phat berfungsi seperti yang diharapkan, saatnya membangun antarmuka dan skrip yang sesuai.

Langkah 7: Menyiapkan Server Web dan Aplikasi Web Kecil

Flask adalah kerangka kerja web mikro yang ditulis dengan Python. Ini menyediakan semua fungsionalitas yang kita butuhkan untuk server web (yang akan bertindak sebagai aplikasi). Instal dengan perintah berikut:

pip3 menginstal labu

Itu akan memakan waktu, jadi tunggu saja. Setelah selesai, kita perlu membangun folder yang perlu kita tarik saat situs web berjalan, dan folder ini memiliki nama tertentu. Mari kita mulai dengan tempat untuk meng-host situs web. Dari direktori home, buat direktori baru bernama www dengan mkdir www. Sekarang cd www ke direktori itu. Di sini kita membutuhkan dua direktori lagi, satu disebut static dan yang lain disebut templates.

Kami juga membutuhkan tempat untuk meletakkan MP3 loopable kami. Saya membuat direktori di direktori home yang disebut "suara" untuk ini. Saya menemukan MP3 saya dengan mencari MP3 whitenoise loopable di Google. Banyak tempat gratis untuk menarik. Saya menggunakan WinSCP untuk mengunggah file.

Anda mungkin ingin mengujinya dengan perintah omxplayer di bawah ini dengan memainkan bagian --vol -### untuk memutar di tingkat volume yang tepat untuk ruangan Anda. Sekali lagi Ctrl + C akan menghentikan pemain.

Sekarang setelah kita memiliki semua itu, mari kita menulis beberapa python untuk membuat server web berdiri saat pi dijalankan. Kembali ke direktori www dan mulai file baru bernama webapp.py (nano webapp.py) dan masukkan kode berikut

webbapp.py:

#!/usr/bin/python

dari flask import Flask, render_template, request, redirect import os app = Flask(_name_) @app.route('/') def index(): return render_template('index.html') @app.route('/rain', metode = ['POST']) def rain(): os.system("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect('/') @app.route ('/waves', metode = ['POST']) def gelombang(): os.system("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") return redirect('/') @app.route('/whitenoise', metode = ['POST']) def whitenoise(): os.system("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") return redirect(' /') @app.route('/stop', methods = ['POST']) def stop(): os.system("killall mpg123") return redirect('/') if _name_ == '_main_': app.run(debug=Benar, host='0.0.0.0')

Seperti yang Anda lihat, webapp ini akan memiliki 5 halaman, satu untuk indeks, 3 untuk 3 suara berbeda (gelombang, hujan, dan whitenoise) dan 1 lagi untuk berhenti. Semua 4 halaman non-indeks mengarahkan kembali ke indeks ('/') setelah mereka menjalankan perintah yang dikirim ke omxplayer, jadi kita hanya perlu membuat satu index.html, dan tidak ada yang lain. Saya menggunakan killall di sini sebagai fungsi stop, karena saya tidak dapat menemukan cara yang lebih baik untuk mengirim perintah "stop" ke omxplayer. Jika Anda tahu cara yang lebih baik untuk melakukan ini, saya akan senang mendengarnya!

Sekarang mari kita kumpulkan index.html.

Langkah 8: Membangun Situs Web

Membangun Situs Web
Membangun Situs Web
Membangun Situs Web
Membangun Situs Web
Membangun Situs Web
Membangun Situs Web
Membangun Situs Web
Membangun Situs Web

Ini adalah gambar yang saya gunakan untuk bangunan saya, tetapi jangan ragu untuk membuatnya sendiri. Semuanya harus disimpan di folder statis yang kami buat sebelumnya. File index.html yang akan kita buat di sini harus ada di folder templates. Itu cukup penting, jika tidak, tidak ada yang akan berhasil. Berikut adalah kode untuk index.html saya (sekali lagi, ini hanya html sederhana, jadi modifikasilah dengan cara apa pun yang sesuai untuk Anda).

Karena Instructables tidak mengizinkan saya memposting HTML mentah, berikut ini tautan ke file seperti yang ada di Dropbox saya:

www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…

Tetapi jika itu pernah mati, file HTML hanyalah beberapa CSS mewah, dan tabel 2x2 sederhana dengan 4 ikon itu sebagai tombol dengan nilai posting seperti:

bentuk tindakan="/whitenoise" metode="posting"

Seharusnya cukup mudah untuk membuatnya sendiri.

Langkah terakhir adalah memastikan webapp.py berjalan saat startup, sekali lagi, saya melakukan ini dengan menambahkannya ke crontab. Jadi sekali lagi ketik crontab -e dan tambahkan yang berikut ini di akhir:

@reboot python3 /home/pi/www/webapp.py

Kemudian reboot pi, arahkan browser di komputer lain (ponsel Anda) ke IP pi (paling baik jika Anda dapat membuatnya statis) dan lihat apakah itu berfungsi. Klik tombol dan lihat apakah Anda mendapatkan suara bising.

Di ponsel Android, Anda dapat menandai situs web ke layar beranda, yang saya lakukan dengan ini agar terlihat dan terasa seperti aplikasi. Jika Anda ingin benar-benar membuatnya terlihat "pro", temukan atau buat file.ico yang sesuai dan berikan ikonnya sendiri pada situs web yang akan muncul di layar beranda ponsel Anda dan lebih mirip aplikasi. Banyak tutorial online tentang cara menambahkan ikon (favicon) ke situs web.

Langkah 9: Masukkan Semuanya ke dalam Kasus

Masukkan Semuanya ke dalam Kasus
Masukkan Semuanya ke dalam Kasus
Masukkan Semuanya ke dalam Kasus
Masukkan Semuanya ke dalam Kasus
Masukkan Semuanya ke dalam Kasus
Masukkan Semuanya ke dalam Kasus

Sekarang semuanya telah diuji dan berfungsi, saatnya memasukkan semuanya ke dalam kasing.

Saya membangun standoff mount untuk Raspberry Pi Zero menggunakan beberapa plastik sisa yang saya miliki di sekitar rumah. Saya kemudian mengebor beberapa lubang untuk panel mount micro USB, dan menggunakan beberapa file perhiasan yang dikuadratkan dari lubang tersebut. Kabel pemasangan panel agak kaku, jadi saya dapat membeli adaptor sudut kanan untuk port micro USB pada Pi suatu saat nanti.

Saya memotong lubang kecil di bagian atas casing agar speaker dapat dimainkan dengan mengebor dua lubang dan menghubungkannya dengan Dremel. Kemudian bor lubang di tutupnya untuk memasang Speaker Phat. Apa untungnya, setelah mengambil foto ini saya kembali dan membuat beberapa lubang lagi karena suara itu benar-benar terperangkap di dalam casing. Saya memasang Blinkt menggunakan benda-benda poster dempul karena benda itu tidak memiliki lubang pemasangan, tetapi dempul tampaknya bertahan dengan baik, jadi itu akan dilakukan.

Langkah 10: Itu Dia

Itu dia!
Itu dia!

Pasang dan selesai. Ini milik saya yang berjalan tepat setelah jam 8 malam. LED hijau pada pi itu sendiri tidak seterang foto ini.

Beberapa editan selanjutnya yang saya buat:

Saya menambahkan 4 halaman lagi ke file webapp.py dan index.html. 4 itu adalah "merah", "kuning", "hijau", dan "mati". Cukup jelas. Saya ingin kemampuan untuk mengubahnya dari hijau kembali ke kuning jika istri dan saya merasa sangat lelah dan tidak ingin diganggu.

@app.route('/red', methods = ['POST']) def red(): os.system("python ~/scripts/red.py") return redirect('/')

Pada dasarnya itu 4 kali, menjalankan 4 skrip berbeda, lalu beberapa tombol lagi di indeks yang memanggil halaman-halaman itu.

Perubahan lain yang sudah saya catat, tetapi saya mengebor beberapa lubang lagi dan melebarkan lubang yang ada di sekitar speaker karena suara tidak keluar dari enklosur dengan cukup baik.

Jika saya membuat modifikasi tambahan, saya pasti akan kembali ke sini dan mencantumkannya.

Langkah 11: Tambahan

Setelah membangun ini, saya menyadari bahwa saya dan istri saya sama-sama sering meninggalkan ponsel kami di lantai bawah ketika meletakkan anak itu untuk tidur atau tidur siang. Jadi saya menambahkan tombol tekan sesaat ke pin fisik 36, dan menyertakan kode berikut (saya menyebutnya button.py) untuk dijalankan saat startup di rc.local:

#!/usr/bin/env python

import RPi. GPIO sebagai GPIO import time import os import subprocess import re GPIO.setmode(GPIO. BOARD) # Gunakan Physical Pin Numbering Scheme button=36 # Button terhubung ke physical pin 16 GPIO.setup(button, GPIO. IN, pull_up_down =GPIO. PUD_UP) # Jadikan tombol sebagai input, Aktifkan Pull UP Resistor saat Benar: jika GPIO.input(button)==0: # Tunggu tombol tekan returnprocess = False # Awalnya disetel ke suara mati s = subproses. Buka(["ps", "ax"], stdout=subprocess. PIPE) untuk x di s.stdout: if re.search("mpg123", x): returnprocess = True if returnprocess == False: os.system("mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 &") os.system("python /home/pi/scripts/red.py") else: os.system("killall mpg123") os.system("python /home/pi/scripts/lightsout.py")

Seperti yang Anda lihat, saya juga beralih ke mpg123 dari omxplayer karena jauh lebih ringan dan mudah digunakan.

NAMUN, untuk beberapa alasan ketika saya meletakkan skrip ini di rc.local itu memang berjalan saat startup tanpa masalah. Tapi audionya benar-benar berombak. Ketika saya menjalankan skrip seperti biasa, di dempul, tidak ada masalah seperti itu. Saya kesulitan memecahkan masalah ini, jadi jika ada yang punya ide, beri tahu saya! Terima kasih.

Direkomendasikan: