Obsah:

Noční světlo s bílým šumem: 11 kroků (s obrázky)
Noční světlo s bílým šumem: 11 kroků (s obrázky)

Video: Noční světlo s bílým šumem: 11 kroků (s obrázky)

Video: Noční světlo s bílým šumem: 11 kroků (s obrázky)
Video: Zavřete oči a poslouchejte 😂😂😂 2024, Prosinec
Anonim
Noční světlo s bílým šumem
Noční světlo s bílým šumem
Noční světlo s bílým šumem
Noční světlo s bílým šumem

Toto je projekt, který jsem vytvořil pro svého 1letého dítěte na Vánoce. Upřímně řečeno, pro mě a mou ženu to byl zdravý rozum. Je to stroj s bílým šumem, který dokáže přehrávat více různých zvuků vybraných prostřednictvím webového rozhraní, a také obsahuje světla, která mění barvu podle času (červená světla znamenají být v posteli, žlutá znamená, že můžete hrát ve svém pokoji, a zelená znamená, že je to v pořádku vyjít ven). Vzhledem k tomu, že můj syn je příliš mladý na to, aby poznal čas, zdálo se, že noční osvětlení založené na barvách je opravdu dobrý nápad.

Je to opravdu snadný projekt, a protože jsem kód již napsal, je to možná 1 z 5 na stupnici obtížnosti. Pokud máte batolata, která z vás sakra obtěžují příliš brzy ráno, budete si ho chtít vyrobit.

Krok 1: Seznam dílů

Seznam dílů
Seznam dílů
Seznam dílů
Seznam dílů
Seznam dílů
Seznam dílů

1. Raspberry Pi Zero W

2. Nějaký případ (použil jsem tento z Amazonu)

3. Blinkt od Pimoroni

4. Reproduktor Phat od Pimoroni (Můžete také použít nějaký jiný DAC s levnými reproduktory)

K sestavení phat reproduktoru budete potřebovat nějaké základní pájecí dovednosti, ze stránky produktu je odkaz na podrobné pokyny, takže to nemůžete pokazit.

5. [VOLITELNÉ] Kabel micro USB pro montáž na panel - od společnosti Adafruit

6. některé propojovací vodiče nebo propojky

A je to!

Krok 2: Vypálte Raspbian a zapojte desky

Vypálte Raspbian a připojte desky
Vypálte Raspbian a připojte desky

Pro tuto verzi používám Raspian Stretch lite. Vypálte to na microSD pomocí jakéhokoli nástroje, který vám vyhovuje, a poté spusťte pi. Pokud potřebujete pomoc při získávání bezhlavého pi pro připojení k domácí síti Wi -Fi a povolení ssh, existuje spousta online návodů, které vám ukážou, jak to udělat, ale budete se muset ujistit, že jste to udělali po zbytek tohoto pracovat.

Pomocí https://pinout.xyz můžete stáhnout obě desky a získat jejich vývody na tomto webu. Desky Blinkt vyžadují pouze 4 připojení a reproduktor Phat potřebuje 9.

Po dokončení by to mělo vypadat jako na fotografii. Nyní musíme vyzkoušet, zda vše funguje.

Krok 3: Instalace požadovaného softwaru

Nyní, když jsme připojeni, budeme muset nainstalovat software potřebný ke spuštění desek Blinkt a Speaker Phat. SSH do pí a ocitnete se v domovském adresáři. Zadejte následující:

stočit https://get.pimoroni.com/blinkt | bash

a pak, když je to hotové, toto:

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

Tím se nainstaluje vše potřebné pro obě desky Pimoroni. Pokud zadáte příkaz ls, měl by se vám zobrazit adresář Pimoroni. Pojďme tedy napsat nějaký kód a otestovat desku Blinkt.

Krok 4: Napište nějaký kód a otestujte ho

Vytvořte adresář s názvem „skripty“zadáním skriptů mkdir a ponecháme tam vše, co potřebujeme pro spuštění. Takže cd skripty, abyste se dostali do této složky.

Nyní chceme červená tlumená světla pro noční dobu, žlutá tlumená světla pro tichý čas přehrávání a mírně jasnější zelená světla, když je v pořádku vyjít. Chtěl jsem pro mě červená světla od 19:30 do 6:15 a v 6:15 ráno hodinu žloutnou a pak v 7:15 konečně zelenou. Také jsem chtěl, aby vypnuli v 8:30, když v místnosti pravděpodobně nikdo nebyl.

To lze provést dvěma způsoby. První (způsob, jakým jsem se rozhodl to udělat) je se čtyřmi různými skripty, spouštěnými z cron jobs. Druhý způsob, jak to udělat, je jeden skript, který obsahuje časovou funkci, která je spuštěna při spuštění. Vlastně jsem napsal skript, abych to udělal nejprve takovým způsobem, ale zdálo se mi to méně efektivní než dělat to na základě cronu, tak jsem to přepnul. Pokud chcete metodu „jeden skript“, dejte mi vědět a já to mohu zveřejnit v komentářích.

Začněme tedy červeným skriptem. Zadejte touch red.py, poté nano red.py. Poté zadejte následující 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 ()

Totéž proveďte pro 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 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šechny pixely na zelené blinkt.show ()

A nakonec chceme, aby skript vymazal Blinkt, když to není potřeba (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šechny pixely na blinkt.show ()

A je to. Chcete -li otestovat typ python red.py a zjistit, zda se dva prostřední pixely rozsvítí červeně. Poté vymažte zadáním python lightsout.py. A je to! Dále je budeme muset nastavit na kartě cron, aby se spustily, když to chceme.

Krok 5: Přidání těchto skriptů do Cronu

V terminálu SSH zadejte crontab -e

přejděte na konec souboru a přidejte následující řádky:

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

Tím se nastaví skripty, které se budou spouštět v časech popsaných v předchozím kroku, pokračujte a upravte je tak, aby vyhovovaly vašim potřebám.

To je pro noční světlo vše! Super snadné. Nyní přejdeme k nastavení části White Noise této sestavy.

Krok 6: Testování reproduktoru Phat

Nejjednodušší způsob (podle mého názoru) k otestování reproduktoru Phat je instalace sox a spuštění nějaké statiky z příkazového řádku.

sudo apt-get install sox

Jakmile je nainstalován, můžeme vyzkoušet několik ukázkových příkazů k přehrávání. Tenhle by měl znít jako vlny.

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

Jak relaxační! Ctrl+c to zastaví. Ale co to je? Na přední straně reproduktoru Phat se rozsvítí spousta LED diod a to nemůže zasahovat do našich světel Blinkt. Vypněme je tedy.

K tomu budeme muset upravit soubor /etc/asound.conf a odebrat plugin měřiče VU, aby se vůbec nepokoušel vůbec řídit LED diody. Udělal jsem to jednoduchým přejmenováním. Zadejte tento příkaz mv /etc/asound.conf /etc/asound.conf.bak Našel jsem to trochu Googlingem, takže by mohl existovat lepší způsob.

Sox funguje, a to je skvělé, ale plánoval jsem použít několik smyčkových MP3 pro část s bílým šumem tohoto stroje, takže jsem potřeboval jiný přehrávač, nejlépe něco opravdu lehkého. mpg123 je to, na čem jsem se usadil. Nainstalujte si to nyní pomocí sudo apt-get install mpg123

Dobře, teď, když víme, že Speaker Phat funguje podle očekávání, je čas na vytvoření rozhraní a odpovídajících skriptů.

Krok 7: Nastavení malého webového serveru a webové aplikace

Flask je mikro webový framework napsaný v Pythonu. Poskytuje všechny funkce, které potřebujeme pro webový server (který bude fungovat jako aplikace). Nainstalujte jej pomocí následujícího příkazu:

pip3 instalujte baňku

Bude to nějakou dobu trvat, takže počkejte. Jakmile bude hotový, budeme muset vybudovat složky, ze kterých budeme muset při spuštění webu stahovat, a tyto složky mají konkrétní názvy. Začněme místem pro hostování webu. Z domovského adresáře vytvořte nový adresář s názvem www s mkdir www. Nyní cd www do tohoto adresáře. Zde potřebujeme další dva adresáře, jeden s názvem statický a druhý s názvem šablony.

Také potřebujeme místo, kam bychom dali naše smyčkové MP3. K tomu jsem v domovském adresáři vytvořil adresář s názvem „zvuky“. Našel jsem své MP3 hledáním smyčkových bílých MP3 na Google. Spousta volných míst k vytažení. K nahrání souborů jsem použil WinSCP.

Možná je budete chtít vyzkoušet pomocí níže uvedeného příkazu omxplayer a hrát s částí --vol -### a vytočit správnou úroveň hlasitosti pro váš pokoj. Přehrávač opět zastaví Ctrl+C.

Nyní, když máme všechny na svém místě, pojďme napsat nějaký python, který postaví webový server, když se pi spustí. Vraťte se do adresáře www a spusťte nový soubor s názvem webapp.py (nano webapp.py) a vložte následující kód

webbapp.py:

#!/usr/bin/python

z baňky import Flask, render_template, request, redirect 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ávrat přesměrování ('/') @app.route ('/vlny', metody = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/skripty/zvuky/vlny.mp3") návrat přesměrování ('/') @app.route ('/whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/skripty/zvuky/whitenoise.mp3") návrat přesměrování (' /') @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')

Jak vidíte, tato webová aplikace bude mít 5 stránek, jeden pro rejstřík, 3 pro 3 různé zvuky (vlna, déšť a bělení) a 1 další pro zastavení. Všechny 4 neindexové stránky se přesměrují zpět na index ('/') poté, co provedou příkaz odeslaný do omxplayer, takže potřebujeme vytvořit pouze jeden index.html a nic jiného. Zde používám killall jako funkci zastavení, protože jsem nemohl najít lepší způsob, jak poslat příkaz „stop“do omxplayeru. Pokud víte o lepším způsobu, jak to udělat, rád bych to slyšel!

Nyní pojďme sestavit index.html.

Krok 8: Vytvoření webové stránky

Budování webových stránek
Budování webových stránek
Budování webových stránek
Budování webových stránek
Budování webových stránek
Budování webových stránek
Budování webových stránek
Budování webových stránek

Toto jsou obrázky, které jsem použil pro svoji stavbu, ale klidně si vytvořte vlastní. Všechny je třeba uložit do statické složky, kterou jsme vytvořili dříve. Soubor index.html, který zde vytvoříme, musí být ve složce šablon. To je docela důležité, jinak nic z toho nebude fungovat. Zde je kód pro můj index.html (opět je to jen jednoduchý html, takže jej upravte jakýmkoli způsobem, který vám vyhovuje).

Protože Instructables mi nedovolí zveřejňovat nezpracované HTML, zde je odkaz na soubor, který existuje v mém Dropboxu:

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

Ale v případě, že to někdy zemře, soubor HTML je jen nějaký fantastický CSS a jednoduchá tabulka 2x2 s těmito 4 ikonami jako tlačítka s hodnotami příspěvků:

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

vstup src = "/static/whitenoise.png" value = "White Noise"

Mělo by být docela snadné, abyste se stali jedním.

Posledním krokem je zajistit, aby webapp.py běžel při spuštění, opět jsem to udělal přidáním do crontabu. Takže ještě jednou zadejte crontab -e a na konec přidejte následující:

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

Poté restartujte pi, namiřte prohlížeč na jiném počítači (vašem telefonu) na IP pi (nejlépe, pokud to můžete udělat staticky) a zjistěte, zda to funguje. Klikněte na tlačítka a zjistěte, zda je slyšet hluk.

Na telefonu Android si můžete přidat záložku webové stránky na domovskou obrazovku, což jsem s tím udělal, aby to vypadalo a vypadalo jako aplikace. Pokud chcete, aby to opravdu vypadalo „profesionálně“, najděte nebo vytvořte vhodný soubor.ico a dejte webu vlastní ikonu, která se zobrazí na domovské obrazovce vašeho telefonu a bude vypadat mnohem více jako aplikace. Spousta online návodů, jak přidat ikonu (favicon) na web.

Krok 9: Uložte vše do pouzdra

Zasekněte vše do pouzdra
Zasekněte vše do pouzdra
Zasekněte vše do pouzdra
Zasekněte vše do pouzdra
Zasekněte vše do pouzdra
Zasekněte vše do pouzdra

Nyní, když je vše testováno a funguje, je čas vše nacpat do pouzdra.

Postavil jsem distanční držák pro Raspberry Pi Zero pomocí zbytkového plastu, který jsem měl kolem domu. Poté jsem vyvrtal několik otvorů pro montáž na panel micro USB a pomocí některých šperkařských pilníků vyčníval z otvoru. Kabel pro montáž na panel je trochu tuhý, takže si možná někdy v budoucnu koupím pravoúhlý adaptér pro port micro USB na Pi.

Vyřízl jsem malý otvor v horní části pouzdra, aby se reproduktor mohl hrát, vyvrtáním dvou otvorů a jejich spojením s Dremel. Poté vyvrtal otvory ve víku pro montáž reproduktoru Phat. Za to, co stojí za to, po pořízení této fotografie jsem se vrátil a udělal několik dalších děr, protože hluk byl opravdu zachycen uvnitř pouzdra. Namontoval jsem Blinkt pomocí těch plakátových tmelů, protože ta věc nemá žádné montážní otvory, ale zdá se, že tmel dobře drží, takže to půjde.

Krok 10: To je ono

A je to!
A je to!

Zapojte a máte hotovo. Tady je moje spuštěná těsně po 20:00. Zelená LED na pi sama o sobě není tak jasná, jak tato fotografie vypadá.

Některé pozdější úpravy, které jsem provedl:

Do souborů webapp.py a index.html jsem přidal další 4 stránky. Ty 4 jsou „červené“, „žluté“, „zelené“a „vypnuté“. Docela samozřejmé. Chtěl jsem možnost přepnout ze zelené zpět na žlutou, pokud jsme se s manželkou cítili extra unavení a nechtěli jsme být obtěžováni.

@app.route ('/red', methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") návrat přesměrování ('/')

V zásadě 4krát, spuštěním 4 různých skriptů, pak v rejstříku několik dalších tlačítek, která tyto stránky vyvolávají.

Další změnu jsem již zaznamenal, ale vyvrtal jsem další otvory a rozšířil stávající otvor kolem reproduktoru, protože hluk neunikal dostatečně dobře ozvučnici.

Pokud udělám nějaké další úpravy, určitě se sem vrátím a uvedu je.

Krok 11: Dodatek

Poté, co jsem to vybudoval, jsem si uvědomil, že moje žena a já často necháváme své telefony dole, když ukládáme dítě do postele nebo si zdřímneme. Přidal jsem tedy momentální tlačítko na fyzický kolík 36 a vložil následující kód (nazval jsem ho button.py), který se spustí při spuštění v rc.local:

#!/usr/bin/env python

import RPi. GPIO jako čas importu GPIO import os import podproces import re GPIO.setmode (GPIO. BOARD) # Použijte tlačítko schématu číslování fyzického pinu = 36 # Tlačítko je připojeno k fyzickému pinu 16 GPIO.setup (tlačítko, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Vytvořte tlačítko jako vstup, aktivujte Pull UP rezistor při True: pokud GPIO.input (tlačítko) == 0: # Počkejte na stisknutí tlačítka returnprocess = False # Původně nastaveno, aby zvuk byl vypnutý s = podproces. Popen (["ps", "ax"], stdout = subprocess. PIPE) pro x in 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")

Jak vidíte, také jsem přešel na mpg123 z omxplayeru, protože je mnohem lehčí a jednodušší na použití.

Nicméně z nějakého důvodu, když jsem vložil tento skript do rc.local, skutečně běží při spuštění bez problémů. Ale zvuk je opravdu trhaný. Když spustím skript normálně, v tmelu, žádné takové problémy. Mám potíže s řešením problémů, takže pokud má někdo nějaké nápady, dejte mi prosím vědět! Dík.

Doporučuje: