Obsah:

Nočné svetlo s bielym šumom: 11 krokov (s obrázkami)
Nočné svetlo s bielym šumom: 11 krokov (s obrázkami)

Video: Nočné svetlo s bielym šumom: 11 krokov (s obrázkami)

Video: Nočné svetlo s bielym šumom: 11 krokov (s obrázkami)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Nočné svetlo s bielym šumom
Nočné svetlo s bielym šumom
Nočné svetlo s bielym šumom
Nočné svetlo s bielym šumom

Toto je projekt, ktorý som urobila pre svoje 1-ročné dieťa na Vianoce. Úprimne povedané, bol to pre mňa a moju manželku zdravý rozum. Je to prístroj s bielym šumom, ktorý dokáže prehrávať niekoľko rôznych zvukov vybraných prostredníctvom webového rozhrania, a tiež obsahuje svetlá, ktoré menia farbu podľa času (červené svetlá znamenajú byť v posteli, žlté znamená, že môžete hrať vo svojej miestnosti, a zelené znamená, že je to v poriadku vyjsť von). Keďže môj syn je príliš mladý na to, aby poznal čas, nočné svetlo založené na farbách sa mi zdalo ako naozaj dobrý nápad.

Je to skutočne ľahký projekt, a keďže som kód už napísal, je to možno 1 z 5 na stupnici obtiažnosti. Ak máte batoľatá, ktoré z vás sakra otravujú príliš skoro ráno, budete si ich chcieť vyrobiť.

Krok 1: Zoznam dielov

Zoznam položiek
Zoznam položiek
Zoznam položiek
Zoznam položiek
Zoznam položiek
Zoznam položiek

1. Raspberry Pi Zero W

2. Nejaký prípad (použil som tento z Amazonu)

3. Blinkt od Pimoroni

4. Reproduktor Phat od Pimoroni (Môžete použiť aj iný DAC s lacnými reproduktormi)

Na zostavenie phat reproduktora budete potrebovať nejaké základné spájkovacie schopnosti, na stránke produktu je odkaz s podrobnými pokynmi, aby ste to nemohli pokaziť.

5. [VOLITEĽNÉ] Kábel micro USB na montáž na panel - od spoločnosti Adafruit

6. niektoré spojovacie vodiče alebo prepojky

To je všetko!

Krok 2: Napálte Raspbian a zapojte dosky

Napaľte Raspbian a zapojte dosky
Napaľte Raspbian a zapojte dosky

Na túto zostavu používam Raspian Stretch lite. Vypálte to na kartu microSD pomocou akéhokoľvek nástroja, ktorý vám vyhovuje, a potom spustite počítač. Ak potrebujete pomoc so získaním bezhlavého pi na pripojenie k domácej sieti Wi -Fi a povolením ssh, existuje množstvo online návodov, ktoré vám ukážu, ako to urobiť, ale vo zvyšku tohto postupu sa budete musieť uistiť, že ste to urobili. pracovať.

Pomocou https://pinout.xyz môžete vytiahnuť obe dosky a získať ich výstupy na tomto webe. Dosky Blinkt vyžadujú iba 4 pripojenia a reproduktor Phat potrebuje 9.

Po dokončení by mal vyzerať ako na fotografii. Teraz musíme vyskúšať, či všetko funguje.

Krok 3: Inštalácia požadovaného softvéru

Teraz, keď sme pripojení, budeme musieť nainštalovať softvér potrebný na spustenie dosiek Blinkt a Speaker Phat. SSH do pí a ocitnete sa v domovskom adresári. Zadaj nasledujúce:

zvinutie https://get.pimoroni.com/blinkt | bash

a potom, keď je to hotové, toto:

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

Tým sa nainštaluje všetko potrebné pre obe dosky Pimoroni. Ak zadáte príkaz ls, mal by sa vám zobraziť adresár Pimoroni. Takže teraz napíšeme nejaký kód a otestujeme dosku Blinkt.

Krok 4: Napíšte nejaký kód a otestujte ho

Vytvorte adresár s názvom „skripty“zadaním skriptov mkdir a ponecháme tam všetko potrebné na spustenie. Takže cd skripty, aby ste sa dostali do tohto priečinka.

Teraz chceme červené tlmené svetlá pre nočný čas, žlté tlmené svetlá pre tichý čas hrania a mierne jasnejšie zelené svetlá, keď je v poriadku vyjsť. Chcel som pre mňa červené svetlá od 19:30 do 6:15 ráno a o 6:15 ráno hodinu žltnú a potom o 7:15 konečne zelené. Tiež som chcel, aby vypli o 8:30, keď v miestnosti pravdepodobne nikto nebol.

Existujú dva spôsoby, ako to urobiť. Prvý (spôsob, akým som sa to rozhodol) je so štyrmi rôznymi skriptmi, spustenými z cron jobs. Ďalším spôsobom, ako to urobiť, je jeden skript, ktorý obsahuje funkciu času, ktorá sa spustí pri spustení. V skutočnosti som napísal scenár, aby som to najskôr urobil tak, ale zdalo sa mi to menej efektívne ako to robiť na základe cronu, tak som to prepol. Ak chcete metódu „jeden skript“, dajte mi vedieť a môžem to zverejniť v komentároch.

Začnime teda červeným skriptom. Napíšte touch red.py a potom nano red.py. Potom zadajte nasledujúci kód.

#!/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) #sets Pixels 3 and 4 to red blinkt.show ()

To isté urobte pre yellow.py a green.py.

yellow.py:

#!/usr/bin/env python

import 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) #nastaví pixely 2, 3, 4 a 5 na žlté blinkt.show ()

green.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0,2) blinkt.set_all (0, 128, 0) #nastaví všetky pixely na zelené blinkt.show ()

A nakoniec chceme, aby skript vyčistil Blinkt, keď nie je potrebný (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) #nastaví všetky pixely na vypnutie blinkt.show ()

To je všetko. Ak chcete otestovať typ python red.py a zistiť, či sa dva stredné pixely rozsvietia červeno. Potom ho zrušte zadaním príkazu python lightsout.py. To je všetko! Ďalej ich budeme musieť nastaviť na karte cron, aby sa spustili, keď to chceme.

Krok 5: Pridanie týchto skriptov do Cronu

V termináli SSH zadajte crontab -e

posuňte sa na koniec súboru a pridajte nasledujúce riadky:

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

To nastaví skripty na spustenie v časoch popísaných v predchádzajúcom kroku, pokračujte a upravte ich tak, aby vyhovovali vašim potrebám.

To je pre nočné svetlo všetko! Super ľahké. Teraz prejdeme k nastaveniu časti White Noise v tejto zostave.

Krok 6: Testovanie reproduktora Phat

Najjednoduchší spôsob (podľa môjho názoru) na otestovanie reproduktora Phat je nainštalovanie sox a spustenie statickej elektriny z príkazového riadka.

sudo apt-get install sox

Akonáhle je nainštalovaný, môžeme vyskúšať niekoľko ukážkových príkazov na prehrávanie. Tento by mal znieť ako vlny.

hrať -n syntetizátor brownnoise syntetizátor pinknoise mix syntetizátor 0 0 0 10 10 40 lichobežník amod 0,1 30

Aké relaxačné! Ctrl+c to zastaví. Ale čo to je? Na prednej strane reproduktora Phat sa rozsvieti veľa diód LED a nemôžeme rušiť naše svetlá Blinkt. Vypnime ich teda.

Aby sme to urobili, budeme musieť upraviť súbor /etc/asound.conf a odstrániť doplnok merača VU, aby sa v prvom rade ani nepokúšal ovládať diódy LED. Urobil som to jednoduchým premenovaním. Zadajte tento príkaz mv /etc/asound.conf /etc/asound.conf.bak Našiel som to trochou Googlingu, takže môže existovať lepší spôsob.

Sox funguje, a to je skvelé, ale plánoval som použiť niekoľko loopovateľných MP3 pre časť s bielym šumom tohto zariadenia, takže som potreboval iný prehrávač, najlepšie niečo skutočne ľahké. mpg123 je to, na čom som sa usadil. Nainštalujte to teraz pomocou sudo apt-get install mpg123

Ok, teraz, keď vieme, že Speaker Phat funguje podľa očakávania, je čas vytvoriť rozhranie a zodpovedajúce skripty.

Krok 7: Nastavenie malého webového servera a webovej aplikácie

Flask je mikrowebový framework napísaný v Pythone. Poskytuje všetky funkcie, ktoré potrebujeme pre webový server (ktorý bude fungovať ako aplikácia). Nainštalujte ho pomocou nasledujúceho príkazu:

pip3 nainštalujte banku

Bude to nejaký čas trvať, takže počkajte. Hneď ako to bude hotové, budeme musieť vytvoriť priečinky, z ktorých budeme musieť pri spustení webovej stránky čerpať, a tieto priečinky majú konkrétne názvy. Začnime s miestom na hostenie webovej stránky. Z domovského adresára vytvorte nový adresár s názvom www s mkdir www. Teraz cd www do tohto adresára. Tu potrebujeme ďalšie dva adresáre, jeden s názvom statický a druhý s názvom šablóny.

Potrebujeme tiež miesto, kam by sme dali naše slučkové MP3. Na to som v domovskom adresári vytvoril adresár s názvom „zvuky“. Svoje MP3 som našiel tak, že som na Googli hľadal loopable whitenoise MP3s. Veľa voľných miest na ťahanie. Na nahranie súborov som použil WinSCP.

Môžete ich vyskúšať pomocou nižšie uvedeného príkazu omxplayer a hrať s časťou --vol -###, aby ste vytočili správnu úroveň hlasitosti pre svoju izbu. Prehrávač opäť zastaví Ctrl+C.

Teraz, keď máme všetky k dispozícii, napíšeme nejaký python, ktorý by postavil webový server pri spustení pí. Vráťte sa do adresára www a spustite nový súbor s názvom webapp.py (nano webapp.py) a vložte nasledujúci kód

webbapp.py:

#!/usr/bin/python

z banky importujte banku, render_template, požiadavku, presmerujte import os app = Flask (_ name_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain', methods = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/skripty/zvuky/rain.mp3") návratové presmerovanie ('/') @app.route ('/vlny', metódy = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/skripty/zvuky/vlny.mp3") návratové presmerovanie ('/') @app.route ('/whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/skripty/zvuky/whitenoise.mp3") vrátiť presmerovanie (' /') @app.route ('/stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')

Ako vidíte, táto webová aplikácia bude mať 5 stránok, jednu pre index, 3 pre 3 rôzne zvuky (vlna, dážď a bielenie) a 1 ďalší na zastavenie. Všetky 4 neindexové stránky sa po vykonaní príkazu odoslaného do omxplayer presmerujú späť na index ('/'), takže potrebujeme vytvoriť iba jeden index.html a nič iné. Tu používam killall ako funkciu zastavenia, pretože som nenašiel lepší spôsob, ako odoslať príkaz „stop“do omxplayera. Ak poznáte lepší spôsob, ako to urobiť, rád by som to počul!

Teraz dáme dohromady index.html.

Krok 8: Vytvorenie webovej stránky

Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky
Budovanie webovej stránky

Toto sú obrázky, ktoré som použil pri svojej stavbe, ale pokojne si ich vytvorte. Všetky je potrebné uložiť do statického priečinka, ktorý sme vytvorili predtým. Súbor index.html, ktorý tu vytvoríme, musí byť v priečinku šablón. To je dosť dôležité, inak nič z toho nebude fungovať. Tu je kód pre môj index.html (opäť je to len jednoduchý html, takže ho upravte akýmkoľvek spôsobom, ktorý vám vyhovuje).

Pretože Instructables mi nedovolí odoslať surový HTML, tu je odkaz na súbor, ktorý existuje v mojom Dropboxe:

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

Ale v prípade, že to niekedy umrie, súbor HTML je len nejaký efektný CSS a jednoduchá tabuľka 2x2 s týmito 4 ikonami ako tlačidlami s hodnotami príspevkov:

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

vstup src = "/static/whitenoise.png" value = "biely šum"

Malo by byť celkom jednoduché stať sa ním.

Posledným krokom je uistiť sa, že webapp.py beží pri štarte, znova som to urobil pridaním do programu crontab. Takže ešte raz zadajte crontab -e a na koniec pridajte nasledujúce:

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

Potom reštartujte pi, namierte prehliadač na inom počítači (telefóne) na IP pi (najlepšie, ak to môžete urobiť staticky) a zistite, či to funguje. Kliknite na tlačidlá a zistite, či je šum.

Na telefóne s Androidom si môžete uložiť webovú stránku do záložiek na domovskej obrazovke. To som urobil, aby vyzerala a vyzerala ako aplikácia. Ak chcete, aby to vyzeralo „profesionálne“, nájdite alebo vytvorte vhodný súbor.ico a dajte webovej stránke vlastnú ikonu, ktorá sa zobrazí na domovskej obrazovke vášho telefónu a bude sa oveľa viac podobať na aplikáciu. Veľa online návodov, ako pridať ikonu (favicon) na webovú stránku.

Krok 9: Všetko zasuňte do puzdra

Jamujte všetko do puzdra
Jamujte všetko do puzdra
Jamujte všetko do puzdra
Jamujte všetko do puzdra
Jamujte všetko do puzdra
Jamujte všetko do puzdra

Teraz, keď je všetko testované a funguje, je čas všetko vložiť do kufra.

Postavil som stojan pre Raspberry Pi Zero pomocou zvyšného plastu, ktorý som mal okolo domu. Potom som vyvŕtal niekoľko otvorov pre montáž na panel micro USB a pomocou niektorých súborov klenotníkov zarovnal otvor s otvorom. Kábel pre montáž na panel je trochu tuhý, takže si možno niekedy v budúcnosti kúpim pravouhlý adaptér pre port micro USB na Pi.

V hornej časti puzdra som vyrezal malý otvor, cez ktorý sa reproduktor bude hrať, vyvŕtaním dvoch otvorov a spojením s Dremel. Potom boli do veka vyvŕtané otvory na pripevnenie reproduktora Phat. Za to, čo stojí za to, po nasnímaní tejto fotky som sa vrátil a urobil niekoľko ďalších dier, pretože hluk bol skutočne zachytený vo vnútri puzdra. Namontoval som Blinkt pomocou týchto plagátových tmelov, pretože vec nemá žiadne montážne otvory, ale zdá sa, že tmel dobre drží, takže to bude stačiť.

Krok 10: To je ono

To je všetko!
To je všetko!

Pripojte ho a máte hotovo. Tu je môj spustený tesne po 20:00. Zelená LED dióda na píle nie je taká jasná, ako sa zdá na tejto fotografii.

Niektoré neskoršie úpravy, ktoré som vykonal:

Do súborov webapp.py a index.html som pridal ďalšie 4 stránky. Tieto 4 sú „červené“, „žlté“, „zelené“a „vypnuté“. Dosť samozrejmé. Chcel som možnosť prepnúť zo zelenej späť na žltú, ak sme sa s manželkou cítili extra unavení a nechceli sme byť obťažovaní.

@app.route ('/red', methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") návratové presmerovanie ('/')

V zásade 4 krát spustenie 4 rôznych skriptov a potom niekoľko ďalších tlačidiel v indexe, ktoré tieto stránky volajú.

Ďalšiu zmenu som už zaznamenal, ale vyvŕtal som niekoľko ďalších otvorov a rozšíril existujúci otvor okolo reproduktora, pretože hluk neunikol dostatočne dobre do krytu.

Ak vykonám ďalšie úpravy, určite sa sem vrátim a uvediem ich zoznam.

Krok 11: Dodatok

Keď som to postavil, uvedomil som si, že ja a moja manželka často nechávame telefóny dole, keď ukladáme dieťa do postele alebo si pospíme. Preto som na fyzický pin 36 pridal chvíľkové tlačidlo a vložil nasledujúci kód (nazval som ho button.py), ktorý sa má spustiť pri štarte v rc.local:

#!/usr/bin/env python

import RPi. GPIO ako GPIO importný čas import os import subprocess import re GPIO.setmode (GPIO. BOARD) # Use Physical Pin Numbering Scheme button = 36 # Button is connected to physical pin 16 GPIO.setup (button, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Vytvorte z tlačidla vstup, aktivujte potiahnutý odpor pri True: ak GPIO.input (tlačidlo) == 0: # Počkajte na stlačenie tlačidla returnprocess = False # Pôvodne nastavené, aby zvuk bol vypnutý s = podproces. Popen (["ps", "ax"], stdout = subprocess. PIPE) pre x v 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")

Ako vidíte, tiež som prešiel na mpg123 z omxplayer, pretože je oveľa ľahší a jednoduchšie sa používa.

NIČO však z nejakého dôvodu, keď vložím tento skript do súboru rc.local, skutočne pri spustení beží bez problémov. Ale zvuk je skutočne trhaný. Keď spustím skript ako obvykle, v tmeli, žiadne také problémy. Riešenie tohto problému trvá dlho, takže ak má niekto nejaké nápady, dajte mi vedieť! Vďaka.

Odporúča: