Mục lục:

Ánh sáng ban đêm tiếng ồn trắng: 11 bước (có hình ảnh)
Ánh sáng ban đêm tiếng ồn trắng: 11 bước (có hình ảnh)

Video: Ánh sáng ban đêm tiếng ồn trắng: 11 bước (có hình ảnh)

Video: Ánh sáng ban đêm tiếng ồn trắng: 11 bước (có hình ảnh)
Video: Tiếng ồn trắng là gì? 2 Lưu Ý Bắt Buộc Phải Biết Khi Luyện Ngủ Cho Trẻ Bằng Tiếng Ồn Trắng 2024, Tháng bảy
Anonim
Ánh sáng ban đêm tiếng ồn trắng
Ánh sáng ban đêm tiếng ồn trắng
Ánh sáng ban đêm tiếng ồn trắng
Ánh sáng ban đêm tiếng ồn trắng

Đây là dự án tôi thực hiện cho đứa con 1 tuổi nhân dịp Giáng sinh. Thành thật mà nói, đó là một món quà tỉnh táo cho tôi và vợ tôi. Đó là một máy tiếng ồn trắng có thể phát nhiều âm thanh khác nhau được chọn thông qua giao diện web và cũng kết hợp đèn thay đổi màu sắc dựa trên thời gian (đèn màu đỏ có nghĩa là ở trên giường, màu vàng có nghĩa là bạn có thể chơi trong phòng của mình và màu xanh lá cây có nghĩa là không sao để đi ra). Vì con trai tôi còn quá nhỏ để biết thời gian, nên một chiếc đèn ngủ màu có vẻ là một ý tưởng thực sự hay.

Đó là một dự án thực sự dễ dàng, và vì tôi đã viết mã, nên nó có thể là 1/5 trong thang độ khó. Nếu bạn có những đứa trẻ mới biết đi làm phiền bạn quá sớm vào buổi sáng, bạn sẽ muốn làm một chiếc.

Bước 1: Danh sách bộ phận

Danh sách các bộ phận
Danh sách các bộ phận
Danh sách các bộ phận
Danh sách các bộ phận
Danh sách các bộ phận
Danh sách các bộ phận

1. Raspberry Pi Zero W

2. Một số loại ốp lưng (Tôi đã sử dụng cái này từ Amazon)

3. Blinkt từ Pimoroni

4. Loa Phat từ Pimoroni (Bạn cũng có thể sử dụng một số DAC khác với loa giá rẻ)

Bạn sẽ cần phải có một số kỹ năng hàn cơ bản để ghép loa phat với nhau, có link hướng dẫn từng bước từ trang sản phẩm nên bạn không thể vặn vít được.

5. [TÙY CHỌN] Cáp micro USB gắn bảng điều khiển - từ Adafruit

6. một số dây kết nối hoặc jumper

Đó là nó!

Bước 2: Ghi Raspbian và kết nối các bảng

Ghi Raspbian và kết nối các bảng
Ghi Raspbian và kết nối các bảng

Tôi đang sử dụng Raspian Stretch lite cho bản dựng này. Vì vậy, hãy ghi nó vào thẻ nhớ microSD với bất kỳ công cụ nào phù hợp với bạn, sau đó kích hoạt pi. Nếu bạn cần trợ giúp để có được một chiếc pi không đầu để kết nối với wifi của nhà bạn và kích hoạt ssh, có rất nhiều hướng dẫn trực tuyến có thể chỉ cho bạn cách làm điều đó, nhưng bạn sẽ cần phải đảm bảo rằng bạn đã làm điều đó cho phần còn lại của điều này làm việc.

Sử dụng https://pinout.xyz, bạn có thể kéo cả hai bảng lên và lấy sơ đồ chân của chúng trên trang web này. Bo mạch Blinkt chỉ yêu cầu 4 kết nối, và Loa Phat cần 9 kết nối.

Nó sẽ giống như bức ảnh khi hoàn thành. Bây giờ chúng ta cần kiểm tra xem mọi thứ đang hoạt động.

Bước 3: Cài đặt phần mềm cần thiết

Bây giờ chúng tôi đã kết nối, chúng tôi sẽ cần cài đặt phần mềm cần thiết để chạy các bảng Blinkt và Loa Phat. SSH vào số pi, và bạn sẽ thấy mình trong thư mục chính. Nhập theo chỉ dẫn:

curl https://get.pimoroni.com/blinkt | bấu víu

và sau khi hoàn tất, điều này:

curl -sS https://get.pimoroni.com/speakerphat | bấu víu

Điều đó sẽ cài đặt mọi thứ cần thiết cho cả hai bảng Pimoroni. Nếu bạn nhập lệnh ls, bạn sẽ thấy một thư mục Pimoroni. Vì vậy, bây giờ chúng ta hãy viết một số mã và kiểm tra bảng Blinkt.

Bước 4: Viết một số mã và thử nghiệm nó

Tạo một thư mục có tên "scripts" bằng cách nhập các đoạn mã mkdir và chúng tôi sẽ giữ mọi thứ chúng tôi cần để chạy trong đó. Vì vậy, các tập lệnh cd để đưa bạn vào thư mục đó.

Bây giờ, những gì chúng tôi muốn là đèn mờ màu đỏ cho ban đêm, đèn mờ màu vàng cho thời gian chơi yên tĩnh và đèn xanh sáng hơn một chút khi có thể xuất hiện. Đối với tôi, tôi muốn đèn đỏ từ 7:30 tối đến 6:15 sáng, và lúc 6:15 sáng, chúng sẽ chuyển sang màu vàng trong một giờ, và cuối cùng là màu xanh lá cây lúc 7:15 sáng. Tôi cũng muốn chúng tắt lúc 8:30 sáng khi không có ai ở trong phòng.

Có hai cách để làm điều này. Cách đầu tiên (cách tôi đã chọn) là với bốn tập lệnh khác nhau, chạy từ các công việc cron. Cách khác để làm điều đó, là một tập lệnh, bao gồm một hàm thời gian được chạy khi khởi động. Tôi thực sự đã viết kịch bản để thực hiện theo cách đó trước tiên, nhưng nó có vẻ kém hiệu quả hơn so với thực hiện dựa trên cron, vì vậy tôi đã chuyển nó lên. Nếu bạn muốn phương pháp "một tập lệnh", hãy cho tôi biết và tôi có thể đăng nó trong phần nhận xét.

Vì vậy, hãy bắt đầu với script màu đỏ. Nhập touch red.py, sau đó gõ nano red.py. Sau đó nhập mã sau.

#! / usr / bin / env python

nhập nháy mắt flasht.set_clear_on_exit (Sai).)

Làm tương tự cho yellow.py và green.py.

yellow.py:

#! / usr / bin / env python

nhập nháy mắt flasht.set_clear_on_exit (Sai) nháy mắt (0,2) nháy mắt (0,2) nháy mắt (2, 128, 128, 0). flasht.set_pixel (5, 128, 128, 0) #sets pixel 2, 3, 4 và 5 thành màu vàng Flasht.show ()

green.py:

#! / usr / bin / env python

nhập nháy mắt flasht.set_clear_on_exit (Sai) nháy mắt

Và cuối cùng, chúng tôi muốn một tập lệnh để xóa Blinkt khi không cần thiết (lightsout.py):

#! / usr / bin / env python

nhập nháy nháy flasht.set_clear_on_exit (Đúng) nháy mắt_brightness (0,1) nháy mắt thiết lập_all (0, 0, 0) # đặt tất cả các pixel thành tắt nháy mắt ()

Đó là nó. Để kiểm tra, hãy nhập python red.py và xem liệu hai pixel ở giữa có sáng lên màu đỏ hay không. Sau đó gõ python lightsout.py để xóa nó. Đó là nó! Tiếp theo, chúng ta sẽ phải đặt chúng trong tab cron để chúng chạy vào lúc chúng ta muốn.

Bước 5: Thêm các tập lệnh đó vào Cron

Trong thiết bị đầu cuối SSH, loại crontab -e

cuộn đến cuối tệp và thêm các dòng sau:

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

Điều đó thiết lập các tập lệnh để chạy vào các thời điểm được mô tả trong bước trước, hãy tiếp tục và điều chỉnh các tập lệnh này cho phù hợp với nhu cầu của bạn.

Đó là nó cho đèn ngủ! Siêu dễ dàng. Bây giờ chúng ta hãy chuyển sang thiết lập phần White Noise của bản dựng này.

Bước 6: Kiểm tra Loa Phát

Cách dễ nhất (theo ý kiến của tôi) để kiểm tra Loa Phat là cài đặt sox và chạy một số tĩnh từ dòng lệnh.

sudo apt-get install sox

Sau khi cài đặt xong, chúng ta có thể thử một số lệnh chơi mẫu. Điều này sẽ nghe giống như sóng.

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

Thật thư thái! Ctrl + c sẽ dừng nó. Nhưng, đó là gì? Có một loạt các đèn LED trên mặt của Loa Phat đang sáng lên và chúng tôi không thể để điều đó làm ảnh hưởng đến đèn Blinkt của chúng tôi. Vì vậy, hãy tắt chúng đi.

Để làm điều này, chúng tôi sẽ cần sửa đổi tệp /etc/asound.conf và xóa plugin VU meter, vì vậy nó thậm chí sẽ không cố gắng điều khiển đèn LED ngay từ đầu. Tôi đã làm điều này bằng cách đổi tên nó. Nhập lệnh này mv /etc/asound.conf /etc/asound.conf.bak Tôi đã tìm thấy điều này thông qua một chút Google Googling, vì vậy có thể có một cách tốt hơn.

Sox hoạt động và điều đó thật tuyệt, nhưng tôi đã lên kế hoạch sử dụng một số MP3 có thể lặp lại cho phần tiếng ồn trắng của máy này, vì vậy tôi cần một máy nghe nhạc khác, tốt nhất là thứ gì đó thực sự nhẹ. mpg123 là những gì tôi đã giải quyết. Cài đặt ngay bây giờ với sudo apt-get install mpg123

Ok, bây giờ chúng ta đã biết Loa Phát hoạt động như mong đợi, thời gian để xây dựng giao diện và các script tương ứng.

Bước 7: Thiết lập một máy chủ web và ứng dụng web nhỏ

Flask là một khuôn khổ web vi mô được viết bằng Python. Nó cung cấp tất cả các chức năng chúng ta cần cho máy chủ web (sẽ hoạt động như một ứng dụng). Cài đặt nó bằng lệnh sau:

pip3 cài đặt bình

Điều đó sẽ mất một thời gian, vì vậy hãy đợi nó ra. Sau khi hoàn tất, chúng tôi sẽ cần xây dựng các thư mục mà chúng tôi sẽ cần lấy từ khi trang web chạy và các thư mục này có tên cụ thể. Hãy bắt đầu với một nơi để lưu trữ trang web. Từ thư mục chính, tạo một thư mục mới có tên là www với mkdir www. Bây giờ cd www vào thư mục đó. Ở đây chúng ta cần thêm hai thư mục, một thư mục được gọi là tĩnh và một thư mục khác được gọi là mẫu.

Chúng tôi cũng cần một nơi để đặt các tệp MP3 có thể lặp lại của chúng tôi. Tôi đã tạo một thư mục trong thư mục chính có tên là "âm thanh" cho việc này. Tôi đã tìm thấy các tệp MP3 của mình bằng cách tìm kiếm các tệp MP3 whitenoise có thể lặp lại trên Google. Rất nhiều địa điểm miễn phí để đến. Tôi đã sử dụng WinSCP để tải các tệp lên.

Bạn có thể muốn kiểm tra chúng bằng lệnh omxplayer bên dưới phát với phần --vol - ### để quay ở mức âm lượng phù hợp cho phòng của bạn. Một lần nữa Ctrl + C sẽ dừng trình phát.

Bây giờ chúng ta đã có tất cả những thứ đó, hãy viết một số python để dựng máy chủ web khi pi khởi động. Quay lại thư mục www và bắt đầu một tệp mới có tên webapp.py (nano webapp.py) và chèn mã sau

webbapp.py:

#! / usr / bin / python

from flask import Flask, render_template, request, redirect import os app = Flask (_ name_) @ app.route ('/') def index (): return render_template ('index.html') @ app.route ('/ rain', method = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~ / scripts / sound / rain.mp3") return redirect ('/') @ app.route ('/ wave', method = ['POST']) def wave (): os.system ("mpg123 -f 20500 --loop -1 ~ / scripts / sound / wave.mp3") return redirect ('/') @ app.route ('/ whitenoise', method = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~ / scripts / sound / whitenoise.mp3") trả về redirect (' / ') @ app.route (' / stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") return redirect (' / ') if _name_ ==' _main_ ': app.run (gỡ lỗi = True, host = '0.0.0.0')

Như bạn có thể thấy, ứng dụng web này sẽ có 5 trang, một trang cho chỉ mục, 3 trang cho 3 âm thanh khác nhau (sóng, mưa và tiếng ồn ào) và 1 trang nữa để dừng lại. Tất cả 4 trang không lập chỉ mục đều chuyển hướng trở lại chỉ mục ('/') sau khi chúng thực thi lệnh được gửi đến omxplayer, vì vậy chúng tôi chỉ cần tạo một index.html và không cần gì khác. Tôi đang sử dụng killall ở đây làm chức năng dừng, vì tôi không thể tìm ra cách tốt hơn để gửi lệnh "dừng" tới omxplayer. Nếu bạn biết cách tốt hơn để làm điều này, tôi rất muốn nghe nó!

Bây giờ chúng ta hãy tập hợp index.html.

Bước 8: Xây dựng trang web

Xây dựng trang web
Xây dựng trang web
Xây dựng trang web
Xây dựng trang web
Xây dựng trang web
Xây dựng trang web
Xây dựng trang web
Xây dựng trang web

Đây là những hình ảnh tôi đã sử dụng cho bản dựng của mình, nhưng hãy thoải mái tạo hình ảnh của riêng bạn. Tất cả chúng cần được lưu trong thư mục tĩnh mà chúng tôi đã tạo trước đó. Tệp index.html mà chúng tôi sẽ tạo ở đây cần phải nằm trong thư mục mẫu. Điều đó khá quan trọng, nếu không, không cái nào trong số nó sẽ hoạt động. Đây là mã cho index.html của tôi (một lần nữa, đây chỉ là html đơn giản, vì vậy hãy sửa đổi nó theo bất kỳ cách nào phù hợp với bạn).

Vì Guiductable sẽ không cho phép tôi đăng HTML thô, đây là một liên kết đến tệp khi nó tồn tại trên Dropbox của tôi:

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

Nhưng trong trường hợp nó chết đi, tệp HTML chỉ là một số CSS ưa thích và một bảng 2x2 đơn giản với 4 biểu tượng đó dưới dạng các nút với các giá trị bài đăng như sau:

form action = "/ whitenoise" method = "post"

input src = "/ static / whitenoise.png" value = "Tiếng ồn trắng"

Sẽ khá dễ dàng để làm cho mình một cái.

Bước cuối cùng là đảm bảo webapp.py chạy khi khởi động, một lần nữa, tôi đã làm điều này bằng cách thêm nó vào crontab. Vì vậy, một lần nữa gõ crontab -e và thêm phần sau vào cuối:

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

Sau đó, khởi động lại pi, trỏ trình duyệt trên một máy khác (điện thoại của bạn) tới IP của pi (tốt nhất nếu bạn có thể làm điều này tĩnh) và xem nó có hoạt động hay không. Nhấp vào các nút và xem bạn có bị nhiễu hay không.

Trên điện thoại Android, bạn có thể đánh dấu một trang web trên màn hình chính của mình, đó là những gì tôi đã làm với điều này để làm cho nó trông giống như một ứng dụng. Nếu bạn muốn thực sự trông "chuyên nghiệp", hãy tìm hoặc tạo một tệp.ico phù hợp và cung cấp cho trang web biểu tượng của riêng nó sẽ xuất hiện trên màn hình chính của điện thoại và trông giống một ứng dụng hơn. Rất nhiều hướng dẫn trực tuyến về cách thêm biểu tượng (biểu tượng yêu thích) vào trang web.

Bước 9: Kẹt tất cả mọi thứ vào một trường hợp

Kẹt mọi thứ vào một trường hợp
Kẹt mọi thứ vào một trường hợp
Kẹt mọi thứ vào một trường hợp
Kẹt mọi thứ vào một trường hợp
Kẹt mọi thứ vào một trường hợp
Kẹt mọi thứ vào một trường hợp

Bây giờ mọi thứ đã được kiểm tra và đang hoạt động, đã đến lúc để nhét tất cả vào một chiếc case.

Tôi đã chế tạo một giá đỡ cho Raspberry Pi Zero bằng cách sử dụng một số nhựa còn sót lại mà tôi có xung quanh nhà. Sau đó, tôi đã khoan một số lỗ để gắn micro USB vào bảng điều khiển và sử dụng một số tệp kim hoàn để cắt bỏ lỗ. Cáp gắn bảng điều khiển hơi cứng, vì vậy tôi có thể mua một bộ chuyển đổi góc vuông cho cổng micro USB trên Pi trong tương lai.

Tôi khoét một lỗ nhỏ trên đỉnh của thùng máy để loa phát ra ngoài bằng cách khoan hai lỗ và kết nối chúng với một Dremel. Sau đó khoan các lỗ trên nắp để lắp Loa Phát. Đối với những gì nó đáng giá, sau khi chụp bức ảnh này, tôi đã quay lại và tạo thêm một vài lỗ nữa vì tiếng ồn thực sự bị mắc kẹt bên trong vỏ máy. Tôi đã gắn Blinkt bằng cách sử dụng thứ bột nhồi áp phích đó bởi vì thứ đó không có bất kỳ lỗ gắn kết nào, nhưng bột bả có vẻ giữ tốt, vì vậy nó sẽ làm được.

Bước 10: Đó là Nó

Đó là nó!
Đó là nó!

Cắm nó vào và bạn đã hoàn tất. Đây là của tôi chỉ chạy sau 8 giờ tối. Bản thân đèn LED màu xanh lá cây trên pi không sáng như bức ảnh này làm cho nó xuất hiện.

Một số chỉnh sửa sau này tôi đã thực hiện:

Tôi đã thêm 4 trang nữa vào tệp webapp.py và index.html. 4 đó là "đỏ", "vàng", "xanh lá cây" và "tắt". Khá tự giải thích. Tôi muốn có khả năng chuyển nó từ màu xanh lục trở lại màu vàng nếu vợ và tôi cảm thấy mệt mỏi hơn và không muốn bị làm phiền.

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

Về cơ bản là 4 lần, chạy 4 tập lệnh khác nhau, sau đó thêm một số nút trong chỉ mục gọi các trang đó.

Thay đổi khác mà tôi đã lưu ý, nhưng tôi đã khoan thêm một số lỗ và mở rộng lỗ hiện có xung quanh loa vì tiếng ồn không thoát ra khỏi vỏ loa đủ tốt.

Nếu tôi thực hiện bất kỳ sửa đổi bổ sung nào, tôi chắc chắn sẽ quay lại đây và liệt kê chúng.

Bước 11: Phụ lục

Sau khi xây dựng điều này, tôi nhận ra rằng cả tôi và vợ thường để điện thoại ở tầng dưới khi đưa con đi ngủ hoặc ngủ trưa. Vì vậy, tôi đã thêm một nút nhấn tạm thời vào chân vật lý 36 và bao gồm mã sau (tôi gọi nó là button.py) để chạy khi khởi động trong rc.local:

#! / usr / bin / env python

nhập RPi. GPIO làm thời gian nhập GPIO nhập os nhập quy trình phụ nhập lại GPIO.setmode (GPIO. BOARD) # Sử dụng nút Sơ đồ đánh số chân vật lý = 36 # Nút được kết nối với chân vật lý 16 GPIO.setup (nút, GPIO. IN, pull_up_down = GPIO. ["ps", "ax"], stdout = subprocess. PIPE) cho x trong 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")

Như bạn có thể thấy, tôi cũng đã chuyển sang mpg123 từ omxplayer vì nó nhẹ và dễ sử dụng hơn nhiều.

TUY NHIÊN, vì một số lý do khi tôi đặt tập lệnh này trong rc.local, nó thực sự chạy khi khởi động mà không gặp bất kỳ sự cố nào. Nhưng âm thanh thực sự rất hay. Khi tôi chạy script như bình thường, không có vấn đề gì như vậy. Tôi đang có một khoảng thời gian để khắc phục sự cố này, vì vậy nếu ai có bất kỳ ý tưởng nào, vui lòng cho tôi biết! Cảm ơn.

Đề xuất: