Агуулгын хүснэгт:

Цагаан дуу чимээтэй шөнийн гэрэл: 11 алхам (зурагтай)
Цагаан дуу чимээтэй шөнийн гэрэл: 11 алхам (зурагтай)

Видео: Цагаан дуу чимээтэй шөнийн гэрэл: 11 алхам (зурагтай)

Видео: Цагаан дуу чимээтэй шөнийн гэрэл: 11 алхам (зурагтай)
Видео: zohiomj 2024, Долдугаар сарын
Anonim
Цагаан дуу чимээтэй шөнийн гэрэл
Цагаан дуу чимээтэй шөнийн гэрэл
Цагаан дуу чимээтэй шөнийн гэрэл
Цагаан дуу чимээтэй шөнийн гэрэл

Энэ бол 1 настай хүүдээ зул сарын баяраар зориулж хийсэн төсөл юм. Үнэнийг хэлэхэд энэ нь надад болон миний эхнэрт өгсөн эрүүл саруул бэлэг байлаа. Энэ бол вэб интерфэйсээр сонгосон олон янзын дууг тоглуулах чадвартай, мөн цаг хугацаанаас хамаарч өнгөө өөрчилдөг гэрлүүдийг багтаасан цагаан дуу чимээний машин юм (улаан гэрэл нь орондоо, шар нь өрөөндөө тоглож болно гэсэн үг, ногоон бол зүгээр гэсэн үг юм) гарч ирэх). Хүү маань цагийг хэлэхэд дэндүү бага байгаа тул өнгөнд суурилсан шөнийн гэрэл үнэхээр сайхан санаа мэт санагдсан.

Энэ бол үнэхээр хялбар төсөл бөгөөд би кодыг аль хэдийн биччихсэн болохоор энэ нь хүндрэлийн хуваарийн 5 -аас 1 нь байж магадгүй юм. Хэрэв танд бага насны хүүхдүүд өглөө эрт санаа зовдог бол та үүнийг хийхийг хүсч байна.

Алхам 1: эд ангиудын жагсаалт

Эд ангиудын жагсаалт
Эд ангиудын жагсаалт
Эд ангиудын жагсаалт
Эд ангиудын жагсаалт
Эд ангиудын жагсаалт
Эд ангиудын жагсаалт

1. Raspberry Pi Zero W

2. Зарим төрлийн хэрэг (би үүнийг Амазоноос ашигласан)

3. Пиморонигийн Блинкт

4. Пиморонигийн Phat спикер (Та бас хямд чанга яригчтай өөр DAC ашиглаж болно)

Чанга яригчийг нэгтгэхийн тулд та гагнуурын анхан шатны ур чадвартай байх ёстой бөгөөд бүтээгдэхүүний хуудаснаас алхам алхмаар зааварчилгаа авах линк байдаг тул та үүнийг эвдэж чадахгүй.

5. [ЗААВАЛ БИШ] Микро USB кабель суурилуулах самбар - Adafruit -ээс

6. зарим холбох утас эсвэл холбогч

Ингээд л боллоо!

Алхам 2: Raspbian -ийг шатааж, самбарыг холбоно уу

Raspbian -ийг шатааж, самбарыг залга
Raspbian -ийг шатааж, самбарыг залга

Би энэ бүтцэд Raspian Stretch lite ашиглаж байна. Үүнийг өөрт тохирсон ямар ч хэрэгслээр microSD -д шатаагаад pi -г асаана уу. Хэрэв танд гэрийнхээ wifi -д холбогдох, ssh -ийг идэвхжүүлэхийн тулд толгойгүй пи авахад тусламж хэрэгтэй байгаа бол үүнийг хэрхэн хийхийг харуулах олон онлайн хичээлүүд байгаа боловч үлдсэн хугацаанд та үүнийг хийсэн эсэхээ шалгах хэрэгтэй болно. ажиллах.

Http://pinout.xyz -ийг ашигласнаар та хоёр самбарыг дээш нь татаж, энэ сайтаас тэдний товчлуурыг авах боломжтой. Blinkt самбар нь зөвхөн 4 холболтыг шаарддаг бөгөөд чанга яригч Phat 9 хэрэгтэй.

Энэ нь дууссаны дараа зураг шиг харагдах ёстой. Одоо бид бүх зүйл ажиллаж байгааг шалгах хэрэгтэй.

Алхам 3: Шаардлагатай програм хангамжийг суулгах

Одоо бид холбогдсон тул Blinkt болон Speaker Phat самбарыг ажиллуулахад шаардлагатай програм хангамжийг суулгах шаардлагатай болно. SSH -ийг pi руу оруулаарай, та өөрийгөө гэрийн лавлах санд олох болно. Дараахийг оруулна уу.

буржгар https://get.pimoroni.com/blinkt | bash

тэгээд дууссаны дараа энэ нь:

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

Энэ нь Pimoroni хавтангийн аль алинд шаардлагатай бүх зүйлийг суулгах болно. Хэрэв та ls командыг оруулбал Pimoroni лавлахыг харах ёстой. Тиймээс одоо код бичээд Blinkt самбарыг туршиж үзье.

Алхам 4: Зарим код бичиж, тест хийх

Mkdir скриптүүдийг бичиж "скриптүүд" гэсэн лавлах үүсгэ, бид тэнд ажиллуулахад хэрэгтэй бүх зүйлээ хадгалах болно. Ийм фолдерт орохын тулд cd скриптүүд.

Одоо бидний хүсч байгаа зүйл бол шөнийн цагаар улаан бүдэг гэрэл, нам гүм тоглоход зориулсан шар бүдэг гэрэл, зүгээр байхад гарч ирэх үед арай тод ногоон гэрэл юм. Миний хувьд оройн 19:30 цагаас өглөөний 6:15 хүртэл улаан гэрэл асаахыг хүсч байсан бөгөөд өглөөний 6:15 цагт тэд нэг цагийн турш шар болж, дараа нь өглөөний 7:15 цагт ногоон болж хувирна. Тэднийг өрөөнд хэн ч байх магадлал багатай байхад 8.30 цагт унтраахыг хүссэн.

Үүнийг хийх хоёр арга бий. Эхнийх нь (миний хийхээр сонгосон арга) бол cron ажлаас ажилладаг дөрвөн өөр скрипт юм. Үүнийг хийх өөр нэг арга бол эхлүүлэх үед ажилладаг цагийн функцийг багтаасан нэг скрипт юм. Би үнэндээ үүнийг ингэж хийх скриптийг бичсэн боловч энэ нь крон дээр суурилсантай харьцуулахад үр ашиг багатай мэт санагдсан тул би үүнийг сольсон. Хэрэв та "нэг скрипт" аргыг хүсч байвал надад мэдэгдээрэй, би үүнийг сэтгэгдэл дээр байрлуулж болно.

Тиймээс улаан бичгээс эхэлье. Touch red.py, дараа нь nano red.py гэж бичнэ үү. Дараа нь дараах кодыг оруулна уу.

#!/usr/bin/env python

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))

Yellow.py, green.py дээр ч мөн адил хий.

шар.

#!/usr/bin/env python

blinkt blinkt.set_clear_on_exit (Худал) 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) #2, 3, 4, 5 пикселүүдийг шар blinkt.show () болгож тохируулна

green.py:

#!/usr/bin/env python

blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #бүх пикселийг ногоон blinkt.show () болгож тохируулна

Эцэст нь бид Blinkt -ийг шаардлагагүй үед арилгах скриптийг хүсч байна (lightsout.py):

#!/usr/bin/env python

blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #бүх пикселийг blinkt.show () унтраахаар тохируулна

Ингээд л боллоо. Python red.py гэж бичээд хоёр дунд пиксел нь улаан асч байгаа эсэхийг шалгаарай. Дараа нь цэвэрлэхийн тулд python lightsout.py гэж бичнэ үү. Ингээд л боллоо! Дараа нь бид тэдгээрийг cron таб дээр тохируулах ёстой бөгөөд ингэснээр тэд хүссэн үедээ ажиллах болно.

Алхам 5: Тэдгээр скриптүүдийг Крон руу нэмэх

SSH терминал дээр crontab -e гэж бичнэ үү

файлын төгсгөл хүртэл гүйлгээд дараах мөрүүдийг нэмнэ үү.

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

Энэ нь скриптүүдийг өмнөх алхамд заасан хугацаанд ажиллуулахаар тохируулж өгдөг бөгөөд үүнийг хэрэгцээнд нийцүүлэн тохируулна уу.

Энэ бол шөнийн гэрэлд зориулагдсан зүйл юм! Супер хялбар. Одоо энэ барилгын Цагаан Дуу чимээний хэсгийг тохируулах ажлыг үргэлжлүүлье.

Алхам 6: Илтгэгч Phat -ийг шалгах

Илтгэгч Phat -ийг турших хамгийн хялбар арга бол (миний бодлоор) sox суулгаж, тушаалын мөрөөс статик ажиллуулах явдал юм.

sudo apt-get суулгах sox

Үүнийг суулгасны дараа бид хэдэн жишээ тоглуулах командыг туршиж үзэх боломжтой. Энэ нь долгион шиг сонсогдох ёстой.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 трапец амод 0.1 30

Ямар тайвширсан юм бэ! Ctrl+c үүнийг зогсоох болно. Гэхдээ, энэ юу вэ? Чанга яригч Phat -ийн нүүрэн талд олон тооны LED гэрэл асдаг бөгөөд бидний Blinkt гэрлүүдэд энэ нь саад болохгүй. Тиймээс тэдгээрийг унтраацгаая.

Үүнийг хийхийн тулд бид /etc/asound.conf файлыг өөрчилж, VU тоолуурын залгаасыг устгах хэрэгтэй болно. Би үүнийг зүгээр л нэрийг нь өөрчилснөөр хийсэн. Энэ тушаалыг бичнэ үү

Сокс сайн ажилладаг, гэхдээ энэ нь гайхалтай, гэхдээ би энэ машины цагаан дуу чимээтэй хэсэгт зориулагдсан хэд хэдэн MP3-ийг ашиглахаар төлөвлөж байсан тул надад өөр тоглуулагч хэрэгтэй байсан. mpg123 бол миний шийдсэн зүйл юм. Үүнийг одоо sudo apt-get install mpg123 ашиглан суулгаарай

За, одоо Phat спикер хүлээгдэж буй байдлаар ажилладаг болохыг бид мэдсэн тул интерфэйс болон холбогдох скриптүүдийг бүтээх цаг болжээ.

Алхам 7: Жижиг вэб сервер болон вэб апп тохируулах

Flask бол Python дээр бичигдсэн бичил вэб хүрээ юм. Энэ нь вэб серверт шаардлагатай бүх функцийг хангаж өгдөг (энэ нь програмын үүрэг гүйцэтгэх болно). Үүнийг дараах тушаалаар суулгана уу.

pip3 колбыг суулгах

Үүнд хэсэг хугацаа шаардагдах тул түр хүлээгээрэй. Үүнийг дуусгасны дараа бид вэбсайт ажиллаж байх үед авах шаардлагатай фолдеруудаа бүрдүүлэх шаардлагатай бөгөөд эдгээр фолдерууд тодорхой нэртэй болно. Вэбсайт байршуулах газраас эхэлье. Гэрийн лавлахаас mkdir www ашиглан www нэртэй шинэ лавлах үүсгээрэй. Одоо тэр лавлах руу www www оруулна уу. Энд бидэнд статик, нөгөө нь загвар гэж нэрлэдэг хоёр лавлах хэрэгтэй болно.

Мөн бидэнд давталттай MP3 -уудаа байрлуулах газар хэрэгтэй байна. Би үүний тулд "лавлах" нэртэй гэрийн лавлахад лавлах хийсэн. Би MP3 -уудаа Google дээрээс давталттай whitenoise MP3 хайх замаар олсон. Маш олон чөлөөт газрууд байдаг. Би файлуудыг байршуулахдаа WinSCP -ийг ашигласан.

Та доорх omxplayer командыг ашиглан --vol -### хэсгийг тоглуулж өрөөнийхөө дууны түвшинг тохируулахыг хүсч болно. Дахин Ctrl+C нь тоглогчийг зогсоох болно.

Одоо бүгд бэлэн байгаа тул pi эхлэх үед вэб серверийг босгохын тулд питон бичье. Www лавлах руу буцаж ороод webapp.py (nano webapp.py) нэртэй шинэ файлыг эхлүүлээд дараах кодыг оруулна уу.

webbapp.py:

#!/usr/bin/python

колбоны импортоос Колбо, render_template, хүсэлт, дахин чиглүүлэх импорт os app = Flask (_ name_) @app.route ('/') def index (): render_template ('index.html') @app.route ('/rain') буцах, арга = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") буцах дахин чиглүүлэх ('/') @app.route ('/долгион', арга = ['POST']) def долгион (): os.system ("mpg123 -f 20500 --loop -1 ~/скрипт/дуу/долгион.mp3") буцах чиглүүлэлт ('/') @app.route ('/whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") буцах чиглүүлэлт (' /') @app.route ('/stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") _name_ ==' _main_ 'бол дахин чиглүүлэлтийг буцаана ('/'): app.run (debug = Үнэн, хост = '0.0.0.0')

Таны харж байгаагаар энэ вэб аппликейшн нь 5 хуудастай бөгөөд нэг нь индекс, 3 нь 3 өөр дуу чимээ (долгион, бороо, цайралт), 1 хуудас зогсох болно. Бүх 4 индексгүй хуудас omxplayer руу илгээсэн тушаалыг гүйцэтгэсний дараа index ('/') руу дахин чиглүүлдэг тул бидэнд зөвхөн нэг index.html үүсгэх хэрэгтэй бөгөөд өөр юу ч байхгүй. Би энд stopall -ийг зогсоох функц болгон ашиглаж байна, учир нь omxplayer руу "зогсоох" командыг илгээх илүү сайн арга олдсонгүй. Хэрэв та үүнийг хийх илүү сайн арга замыг мэддэг бол үүнийг сонсох дуртай байсан!

Одоо index.html -ийг нэгтгэе.

Алхам 8: Вэбсайт бүтээх

Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх
Вэбсайт бүтээх

Эдгээр нь миний бүтээхэд ашигласан зургууд юм, гэхдээ өөрсдөө зурахдаа чөлөөтэй байгаарай. Тэд бүгд бидний өмнө хийсэн статик фолдерт хадгалагдах ёстой. Энд хийх гэж буй index.html файл нь templates хавтсанд байх ёстой. Энэ нь маш чухал, эс тэгвээс аль нь ч ажиллахгүй болно. Энд миний index.html -ийн код байна (дахин хэлэхэд энэ бол зүгээр л энгийн html тул өөрт тохирсон хэлбэрээр өөрчилж болно).

Instructables нь түүхий HTML бичлэг оруулахыг зөвшөөрдөггүй тул миний Dropbox дээр байгаа файлын линк энд байна:

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

Гэхдээ хэзээ нэгэн цагт үхэх тохиолдолд HTML файл нь зүгээр л гоёмсог CSS бөгөөд эдгээр 4 дүрс бүхий энгийн 2x2 хүснэгт нь дараах утгатай товчлуурууд юм.

хэлбэр арга хэмжээ = "/whitenoise" арга = "бичлэг"

src = "/static/whitenoise.png" input = "Цагаан дуу чимээ"

Өөрийгөө ийм болгоход маш хялбар байх ёстой.

Сүүлийн алхам бол webapp.py -ийг эхлүүлэх үед ажиллаж байгаа эсэхийг шалгах явдал юм, үүнийг би үүнийг crontab дээр нэмж хийлээ. Тиймээс дахин crontab -e гэж бичээд дараахь зүйлийг эцэс хүртэл нэмнэ үү.

@дахин ачаалах python3 /home/pi/www/webapp.py

Дараа нь pi -г дахин ачаалж, өөр машин дээрх хөтөчийг (таны утас) pi -ийн IP руу чиглүүлээрэй (хэрэв та үүнийг статик болгож чадвал хамгийн сайн), энэ нь ажиллаж байгаа эсэхийг шалгаарай. Товчлуурыг дарж, чимээ шуугиан байгаа эсэхийг үзээрэй.

Андройд утсан дээр та вэбсайтыг үндсэн дэлгэц дээрээ хавчуурга хийх боломжтой бөгөөд үүнийг апп шиг харагдуулж, мэдрүүлэхийн тулд би үүнийг хийсэн. Хэрэв та үүнийг үнэхээр "мэргэжлийн" харагдуулахыг хүсч байвал тохиромжтой.ico файлыг хайж олоод вэбсайтад өөрийн утасны дэлгэц дээр гарч ирэх аппликейшн шиг харагдах өөрийн дүрсийг өг. Вэбсайтад дүрс (favicon) хэрхэн нэмэх талаар олон онлайн хичээлүүд.

Алхам 9: Бүгдийг нэг хэрэгт оруулах

Бүгдийг нэг хэрэгт оруулах
Бүгдийг нэг хэрэгт оруулах
Бүгдийг нэг хэрэгт оруулах
Бүгдийг нэг хэрэгт оруулах
Бүгдийг нэг хэрэгт оруулах
Бүгдийг нэг хэрэгт оруулах

Одоо бүх зүйл шалгагдаж, ажиллаж байгаа тул бүгдийг нэг хэрэгт оруулах цаг болжээ.

Би Raspberry Pi Zero -д зориулж байшингийн эргэн тойронд үлдсэн хуванцарыг ашиглан бэхэлгээний бэхэлгээ хийсэн. Дараа нь би микро USB самбарын нүхэнд өрөмдөж, зарим үнэт эдлэлийн файлуудыг ашиглан нүхийг дөрвөлжин болгов. Самбарыг холбох кабель нь арай хатуу тул ирээдүйд би Pi дээр микро USB портод зориулж зөв өнцгийн адаптер худалдаж авч магадгүй юм.

Би хоёр дээд цооног өрөмдөж, Дремелээр холбож чанга яригчийг тоглуулахын тулд хайрцагны дээд хэсэгт жижиг нүх гаргав. Дараа нь чанга яригч Phat -ийг холбохын тулд тагны нүхийг өрөмдсөн. Үнэнийг хэлэхэд энэ зургийг авсны дараа би буцаж очоод дахиад хэд хэдэн нүх гаргав, учир нь дуу чимээ үнэхээр хайрцгийн дотор баригдсан байв. Би уг плакатны шаваасаар би Blinkt -ийг суулгасан, учир нь уг зүйлд бэхэлгээний нүх байхгүй, гэхдээ шаваас нь сайн хадгалагдаж байгаа юм шиг санагдах болно.

Алхам 10: Энэ бол боллоо

Энэ л боллоо!
Энэ л боллоо!

Үүнийг залгаарай. Энд миний уурхай 20.00 цагийн дараа л гүйж байна. Пи дээрх ногоон LED нь энэ гэрэл зураг шиг тод биш байна.

Миний хийсэн сүүлд хийсэн засварууд:

Би webapp.py болон index.html файлуудад 4 хуудас нэмж орууллаа. Эдгээр 4 нь "улаан", "шар", "ногоон", "унтраасан" байна. Өөрийгөө маш сайн тайлбарладаг. Эхнэр бид хоёр хэт ядарч, санаа зовохыг хүсэхгүй байгаа бол би үүнийг ногооноос шар өнгөтэй болгож өөрчлөхийг хүсч байсан.

@app.route ('/red', methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") буцах чиглүүлэлт ('/')

Үндсэндээ 4 удаа 4 өөр скрипт ажиллуулж, дараа нь эдгээр хуудсуудыг дууддаг индекс дэх өөр хэдэн товчлуурыг ажиллуулна.

Нөгөө өөрчлөлтийг би аль хэдийн тэмдэглэж байсан боловч дуу чимээ нь хашлагаас хангалттай сайн гарч чадаагүй тул би хэд хэдэн цооног өрөмдөж, чанга яригчийн эргэн тойронд байгаа нээлхийг өргөжүүлсэн.

Хэрэв би нэмэлт өөрчлөлт оруулах юм бол энд буцаж ирээд жагсаах болно.

Алхам 11: Нэмэлт

Үүнийг барьсны дараа би эхнэртэйгээ хоёулаа хүүхдээ хэвтүүлэх эсвэл унтуулахаар утсаа доош нь тавьдаг болохыг ойлгосон. Тиймээс би 36 -р физик зүү дээр түр зуурын товчлуур нэмж, rc.local дээр эхлүүлэх үед ажиллуулахын тулд дараах кодыг орууллаа (үүнийг button.py гэж нэрлэв):

#!/usr/bin/env python

RPi. GPIO -г GPIO болгон импортлох хугацаа импортлох импортлох дэд процессийг GPIO.setmode (GPIO. BOARD) # Физик зүү дугаарлах схемийг ашиглах товчлуур = 36 # Button нь физик зүү 16 GPIO.setup (товчлуур, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Товчлуурыг оролт болгоно, Татах эсэргүүцлийг идэвхжүүлнэ. Үнэн бол: GPIO.input (товчлуур) == 0: # Товчлуурыг хүлээнэ үү returnprocess = False # Эхлээд дуугүй байхаар тохируулагдсан s = дэд процесс. Нээлттэй (["ps", "ax"], stdout = subprocess. PIPE) for 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 ") өөр: os.system (" killall mpg123 ") os.систем ("python /home/pi/scripts/lightsout.py")

Таны харж байгаагаар би omxplayer -ээс mpg123 руу шилжсэн, учир нь энэ нь илүү хөнгөн бөгөөд ашиглахад хялбар юм.

Гэсэн хэдий ч яагаад ч юм би энэ скриптийг rc.local -д оруулах үед энэ нь үнэхээр эхлүүлэх үед ямар ч асуудалгүй ажилладаг. Гэхдээ аудио үнэхээр тасархай байна. Би скриптийг ердийн байдлаар ажиллуулахад ийм асуудал гардаггүй. Надад энэ асуудлыг шийдэх цаг гарлаа, тиймээс санаа оноо байвал надад мэдэгдээрэй! Баярлалаа.

Зөвлөмж болгож буй: