Kazalo:

Ura in alarm za islamske molitve RaspberryPi: 15 korakov (s slikami)
Ura in alarm za islamske molitve RaspberryPi: 15 korakov (s slikami)

Video: Ura in alarm za islamske molitve RaspberryPi: 15 korakov (s slikami)

Video: Ura in alarm za islamske molitve RaspberryPi: 15 korakov (s slikami)
Video: Часть 3. Аудиокнига Натаниэля Хоторна «Дом с семью фронтонами» (главы 8–11) 2024, Junij
Anonim
RaspberryPi Islamske molitvene ure in alarm
RaspberryPi Islamske molitvene ure in alarm
RaspberryPi Islamske molitvene ure in alarm
RaspberryPi Islamske molitvene ure in alarm

Muslimani po vsem svetu imajo vsak dan pet molitev in vsaka molitev mora biti v določenem času dneva. zaradi eliptičnega načina premikanja našega planeta okoli sonca, zaradi česar se časi vzhajanja in spuščanja sonca med letom razlikujejo, zaradi česar je tudi čas molitve neskladen, zato potrebujemo islamsko uro, ki nas muslimane opozarja na čas molitve dan.

Vsak musliman ima način dostopa do dnevnih časov molitve prek internetnih islamskih spletnih mest, lokalnih islamskih koledarjev ali celo po televiziji. Večina nas ima islamske ure, ki nam omogočajo čas molitve in molitvene alarme. Kaj pa, če bi izdelali svojo napravo za molitveno uro in alarm!

Preden začnete delati na projektu, obstaja nekaj pomislekov, ki bi vam lahko bili koristni pri branju tega navodila. Živim v Savdski Arabiji, zato se bodo nekateri moji koraki in vrednote razlikovali od vaših, na kar bom izrecno opozoril med delom. Obstajajo koraki in slike, ki bi lahko vsebovali arabske besede, saj sem povezovanje izvedel v arabščini, vendar bom tudi pokazal, kako to narediti v angleščini, zato naj vas arabske besede na slikah sploh ne skrbijo, ta projekt je lahko narejeno v katerem koli jeziku (kar je super!: D) Oprostite mi tudi pri tipkanju, saj angleščina ni moj prvi jezik.

Naprej k našemu projektu! Ta projekt bo razdeljen na korake X Major, do konca X. koraka pa bo naš projekt lep in pripravljen! Koraki bodo naslednji:

1-Konfiguriranje in priprava RaspberryPi

2-Namestitev modula RTC

3-Izdelava programa Azan Alarm

4-Izvajanje obraznih ur

5-Izdelava uporabniškega vmesnika in.

Kot vsak projekt moramo najprej pripraviti dele, ki jih potrebujemo. deli, ki jih potrebujemo za ta projekt, so:

1-RaspberryPi Računalniški komplet Amazon ZDA || Amazon KSA

Uporabite lahko katero koli različico Rpi, samo se prepričajte, da ima Wi -Fi. Uporabil sem Rpi3B+

2-RTC Modul ure v realnem času Amazon US || Amazon KSA

Uporabite lahko kateri koli model modula RTC, samo preverite, ali ima I2C

3-LCD monitor

Vsak LCD bo ustrezal

4-miška in tipkovnica

in to je to!! To je vse, kar potrebujete za izdelavo lastne ure in alarma Azan

1. korak: 1. poglavje: Nastavitev in konfiguriranje RaspberryPI

1. poglavje: Nastavitev in konfiguriranje RaspberryPI
1. poglavje: Nastavitev in konfiguriranje RaspberryPI

Najprej Najprej! Za delo z njim moramo pripraviti Raspberry pi.

Raspberry pi ni nič drugega kot računalnik, ima RAM in ROM, ima CPU, GPU, I/O … Računalnik! tako kot tisti, s katerim igramo igre in brskamo po spletu, glavna stvar je, da je zelo majhen! zaradi česar je malina zelo dobra izbira za izdelavo in izvajanje projektov. ker je malina pi majhna, ima zelo omejene specifikacije, da ne more upravljati velikih zahtevnih operacijskih sistemov, kot sta windows ali macOS, namesto tega bomo za uporabo naprave uporabljali Linux kot operacijski sistem. obstaja na tisoče, če ne celo deset tisoč distribucij Linuxa, ki bi jih lahko uporabili, vendar je en popoln distro popolnoma optimiziran posebej za maline, ki jih bomo uporabljali, imenovan Raspbian.

2. korak: 1-1: Prenesite potrebne datoteke

1-1: Prenesite potrebne datoteke
1-1: Prenesite potrebne datoteke
1-1: Prenesite potrebne datoteke
1-1: Prenesite potrebne datoteke
1-1: Prenesite potrebne datoteke
1-1: Prenesite potrebne datoteke

-Pojdite na uradno stran za prenos Rasbian na naslovu https://www.raspberrypi.org/software/operating-sy… in prenesite OS Raspberry Pi z namizno datoteko

-Med prenosom pojdite na https://win32diskimager.org/ in prenesite in namestite win32DiskImager, lahko uporabite katero koli programsko opremo za zapisovanje slik, ki vam je všeč

ko je prenos končan, boste imeli datoteko.img, ki vsebuje OS RaspberryPi. nato priključite pomnilniško kartico SD v računalnik (običajno s čitalnikom kartic USB) in zaženite programsko opremo win32diskimager. koraki za zapisovanje slike v pomnilnik SD so zelo preprosti, morate le 1- Izbrati pomnilniško črko 2-Izberite datoteke OS, ki ste jih prenesli, in 3-Click write! Prepričajte se, da ste s seznama izbrali pravo črko naprave in da je vaš pomnilnik prazen, saj boste s pritiskom na pik napredovali z opozorilom, ki vam pove, da bo vse v napravi izbrisano! Pritisnite da, da potrdite zapis in počakajte, da se konča. to lahko traja do 20 minut.

Ko bo to končano, boste imeli v pomnilniku celoten operacijski sistem Rapbian, lahko ga vstavite v Rapberry Pi, povežete Raspberry Pi z monitorjem prek HDMI -ja, povežete miško in tipkovnico prek USB -ja in nazadnje priključite moč.

Korak 3: 1-2: Konfiguriranje sistema Raspbian

Ko priključite kable in napajanje, boste videli, da se je operacijski sistem vklopil, samodejno se bo znova zagnal in nato prikazal uporabniški vmesnik Raspbian (ki je podoben oknom). prva stvar, ki jo boste videli, je okno dobrodošlice, ki vas bo popeljalo skozi korake pri prvi konfiguraciji vašega RaspberryPi. okna in koraki bodo naslednji:

1-Pritisnite Naprej v prvem oknu "Dobrodošli"

2-Next okno bo za nastavitev vaše lokacije. izberite državo, jezik in časovni pas. potem je zelo priporočljivo, da preverite »Uporabi angleški jezik«, saj bo to jezik vmesnika operacijskega sistema. MORATE PREVERITI "ŠKATLICO ZA IZGRADNJO USPISNE ENGLESKE TIPKOVNICE" ZA DELO POTREBUJEMO ENGLESKO TIPKOVNICO!

3-Nato boste morali vnesti geslo za malino, to je pomembno zaradi varnosti, vendar ga pri tem projektu ne bomo spremenili. upoštevajte, da sta privzeto uporabniško ime in geslo:

uporabniško ime: pi

geslo: malina

Okno 4-Next bo povezovalo raspberryPi z vašim omrežjem WiFi. izberite ime wifi in vnesite geslo za wifi

5, nato boste morali posodobiti knjižnice maline pi in sistemske datoteke. ta korak bo trajal veliko časa (morda v urah), vendar je zelo pomemben korak pri vsaki nastavitvi novega malinovega pi.

6-ko bo posodobitev končana, boste morali znova zagnati sistem. naredi to zdaj.

Odlično delo! Zdaj imamo posodobljen sistem, še vedno moramo narediti nekaj stvari, da sistem konfiguriramo za delovanje, zdaj pa bomo začeli uporabljati ukazno vrstico LinuxCommand.

4. korak: 1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi

1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi
1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi
1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi
1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi
1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi
1-3: Uporaba ukazne vrstice za nastavitev nastavitev Rpi

Ko končate ponovni zagon iz posodobitve sistema, bo sistem po zagonu prikazal namizje uporabnika. zdaj, če pogledate v zgornji levi del zaslona, boste našli nekaj gumbov, gumb z logotipom raspberryPi, ki je gumb menija Rpi, obliko globusa, ki je internetni brskalnik, gumb za mape, ki je …..mape in končno, gumb s črnim zaslonom, ki je najpomembnejši gumb v katerem koli sistemu Linux, ukazna vrstica. pojdi naprej in pritisni ta gumb, videl boš črno okno.

Ukazna vrstica je način, kako vsi sodelujejo in uporabljajo sistem linux, tako kot ima windows svojo ukazno vrstico samo v vdovah, ki jih ne rabimo pogosto. v linuxu je to osnovno, kar se mora naučiti in obvladati vsak uporabnik linuxa. ukazno vrstico lahko uporabljajo …. KOMANDE! v črnem oknu vidite ukazni poziv, ki čaka, da uporabnik napiše ukaz in ga izvede. v tem priročniku bomo dali vse ukaze, ki jih potrebujete za izvedbo tega projekta, zato ne skrbite.

prvi ukaz Linuxa, ki ga bomo uporabili, je še en konfiguracijski ukaz. Upoštevajte, da bodo od zdaj naprej vsi ukazi postavljeni v kodno polje, tako da ga lahko ločite od običajnih korakov. Prinesite tipkovnico in vnesite naslednje ter pritisnite enter:

sudo raspi-config

Če to storite pravilno, boste videli, da je zaslon postal modr, s sivim okvirčkom na sredini (glej sliko). to bomo uporabili za dokončno konfiguracijo, preden začnemo s kodiranjem.

za krmarjenje po tem meniju boste morali uporabiti puščične tipke na tipkovnici.

1-Pojdite na Možnosti vmesnika >> I2C >> DA >> pritisnite enter. to omogoča komunikacijski protokol I2c, da lahko uporabimo RTC

2-Pojdite na Napredne možnosti >> Razširi datotečni sistem.

in to je vsa konfiguracija, ki jo potrebujete v tem oknu. na glavni strani se pomaknite navzdol in pritisnite enter na "finish" in "YES", da znova zaženete sistem.

Ko sistem konča ponovni zagon, smo vsi končali s konfiguracijo! naprava je pripravljena na velike korake! Naslednji korak bo namestitev modula RTC in uporaba s sistemom.

5. korak: 2. poglavje: Montaža, konfiguracija in uporaba modula RTC

Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC
Poglavje 2: Montaža, konfiguracija in uporaba modula RTC

Modul RTC (ali ura v realnem času) je majhna naprava, ki ima na sebi malo baterije in deluje, kar ime pove, Ura! zato, ko ga izključite iz napajanja, ura še naprej deluje in se ne ustavi. zakaj to potrebujemo? No, malina pi res nima načina shranjevanja podatkov o uri, ko je izklopljen, se pri zagonu zanaša na povezavo z internetom, da posodobi datum in uro, vendar je težava v tem, da nimamo vedno dostopa do interneta. zato potrebujemo modul RTC. RTC bo deloval kot ura za malinovo pi, zato bo po zagonu Rpi vzel datum in čas iz RTC, kar bo ves čas posodabljalo čas RaspberryPi.

obstaja več modelov in išče RTC, obstajata DS1307 in DS3231. lahko uporabite kateri koli modul RTC, ki ga najdete, če ima komunikacijo s protokolom I2C (lahko označite, da na zatičih modula najdete zatiče SDA in SCL.

tako kot karkoli v tem priročniku sem za dosego svojega cilja v projektu uporabil druga navodila, ta navodila vam bodo vodila in vam povedala, kaj točno morate narediti za ta projekt, če pa morate spremeniti ali potrebujete več poglobitve v katero koli korake, na koncu vsakega koraka povežem bolj ploden vodnik.

Ko pripravite modul RTC (spajkajte nožice glave in vstavite baterijo), ga lahko povežete z zatiči RapberryPi na naslednji način:

PIN RTC ---------------- Pin Rpi

GND ===========> PIN 6 (GND)

Vcc ============> PIN 1 (3.3V)

SDA ===========> PIN 3 (SDA)

SCL ===========> PIN 5 (SCL)

ali odvisno od tega, kateri modul RTC imate, ga lahko namestite neposredno na RaspberryPi (Preverite, ali so zatiči pravilni !!!, ker lahko poškodujete Rpi/RTC, če ne)

Ko povežete RTC, nastavimo Raspberry.

Korak 6: 2-1: Nastavitev modula

2-1: Nastavitev modula
2-1: Nastavitev modula
2-1: Nastavitev modula
2-1: Nastavitev modula

Preden začnete, pojdite v ukazno vrstico in vnesite:

datum

S tem boste vrnili trenutni datum in čas na malini, upoštevali ta zelo uporaben ukaz ter trenutni datum in čas, da bomo lahko preverili, kdaj modul deluje ali ne.

Zdaj začnimo z namestitvijo, za posodobitev knjižnic Rpi vnesite eno za drugo:

sudo apt-get posodobitev

sudo apt -get -y nadgradnja

Ko to naredimo, moramo spremeniti sistemske datoteke, da omogočimo modul i2c in dodamo RTC, da spremenimo datotečni sistem, ki ga bomo uporabili s programsko opremo, imenovano Nano. nano je lahka vgrajena programska oprema, ki je v bistvu urejevalnik besedil, tako kot tista v vdovah. zato bo vsak ukaz, ki se začne z nano, ki mu sledi ime datoteke, odprl to datoteko v urejevalniku besedila nano. opazili ste, da smo uporabili tudi nekaj, kar se imenuje Sudo, skratka, sudo deluje kot zagotovilo za sistem linux, ki sistemu pove, da je uporabnik, ki je naredil ta ukaz, lastnik naprave in ne nekdo drug, in daje privilegije, kot je urejanje/ brisanje uporabniku. na primer, če bi odprli nano datoteko brez sudo, bi si to datoteko lahko ogledali, vendar je ne moremo urediti ali izbrisati.

Zdaj moramo spremeniti datoteko modulov, to lahko storimo tako, da vnesemo:

sudo nano /etc /moduli

ko to storite, boste našli vsebino te datoteke (glejte sliko). s puščičnimi tipkami postavite kazalec na konec besedila in dodajte naslednje:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

pritisnite CTRL+S za shranjevanje in CTRL+X za izhod

Korak 7: 2-2: Vmesnik I2C

2-2: Vmesnik I2C
2-2: Vmesnik I2C

Zdaj smo povezali RTC in omogočili i2c, povežimo vse skupaj.

v ukazni poziv vnesite naslednje:

i2cdetect -y 1

dobili boste niz praznih mest, vendar boste opazili, da je nekje številka, ta številka je naslov vašega modula RTC. v mojem primeru je 68. upoštevaj to številko. če ne vidite te dvomestne številke, to pomeni, da ste verjetno napačno povezani z RTC.

zdaj moramo spremeniti datoteko rc.local, da lahko pri zagonu omogočimo modul RTC in pustimo, da datum in čas shranita v sistem. najprej odprite datoteko rc.local:

sudo nano /etc/rc.local

Pred vrstico exit0 dodajte naslednje:

echo ds1307 0x68>/sys/class/i2c-adapter/i2c-1/new_device

hwclock -s

kjer je 0x68 naslov i2c vaše naprave. Ko končate, pritisnite CTRL+S CTRL+X, nato znova zaženite sistem tako:

sudo ponovni zagon

8. korak: 2-3: Preizkusite RTC

2-3: Testiranje RTC
2-3: Testiranje RTC

Ko se sistem znova zažene, lahko preverimo, ali RTC deluje ali ne. najprej zaženi:

sudo hwclock -r

datum in čas boste dobili na modulu RTC. če ste dobili kaj drugega, se prepričajte, da ste korake naredili pravilno.

zdaj, če želimo spremeniti čas in datum na RTC, moramo najprej spremeniti datum in čas v sistemu, nato pa potrdimo spremembe na RTC. če želite to narediti, zaženite:

datum sudo -s "29. AVGUN 1997 13:00:00"

in seveda spremenite datum in čas v skladu z vašim lokalnim časom in datumom, preden pritisnete enter. ko dobite čas na desni strani Rpi, zaženite naslednje, da shranite datum in čas na RTC:

sudo hwclock -w

aaaa in to je to! lahko preverite, ali deluje, s hwclock -r in preverite, ali je datum na RTC pravilen ali ne, nato odklopite rpi iz interneta in ga nato za nekaj časa izklopite, nato pa znova vklopite in preverite, ali ima pravilno čas in datum. končal si!

Celoten vodnik o nastavitvi modula RTC najdete tukaj

www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/

9. korak: 3. poglavje: Ustvarjanje alarmnega programa Azan

3. poglavje: Ustvarjanje alarmnega programa Azan
3. poglavje: Ustvarjanje alarmnega programa Azan

izdelava ure je ena stvar, seveda, lahko pogledamo na uro in čas molitve in vidimo, kdaj bo prišel čas, vendar ne bi bilo NIČ bolje, če bi dodali zvočni alarm, ki bi nas obvestil o času molitve? Še bolje je, da sprožimo ta alarm kot zvok AZANA! poglejmo, kako lahko to dosežemo.

za naše programiranje bomo uporabljali python kot naš prednostni programski jezik, saj se python odlično ujema z RaspberryPi. za izdelavo kodne datoteke v pythonu naredimo enako kot odpiranje besedilne datoteke, zdaj pa jo shranimo kot.py. za zagon programa potrebujemo nameščeno okolje maline python, na srečo ima Raspbian vnaprej nameščena python in python3! zato moramo samo programirati. v tem priročniku ne bomo govorili o jeziku in poučevali, kako deluje in funkcije, vendar vam bom dal potrebne kode, da boste lahko naredili projekt.

Za začetek potrebujemo zvočno datoteko našega želenega azanskega zvoka (v. WAV). Potrebujemo dve datoteki, eno za al-fajr azan in drugo za navaden azan. ko to dobite, ga postavite na ključni pogon in ga kopirajte na namizje raspberrypi.

zdaj imamo datoteke, iskal sem način za predvajanje zvočnih zvokov na raspberryPi in na moje presenečenje ni bilo veliko načinov, kako bi to lahko naredil, vendar sem našel ta odgovor na stackoverflow, ki mi je dal tisto, kar sem potreboval

stackoverflow.com/questions/20021457/playi…

preizkusil sem to metodo in delovala je! pa poglejmo, kako lahko to metodo uporabimo v našem projektu …

10. korak: 3-1: Predvajajmo zvok

3-1: Predvajajmo zvok!
3-1: Predvajajmo zvok!

najprej se pomaknite na namizje tako:

cd namizje

nato naredite novo datoteko kode python z:

sudo nano AzanPlay.py

tako bo nastala nova datoteka z imenom AzanPlay s končnico na datoteki python.py, imeli bomo prazen črni zaslon, ki nam bo omogočal pisanje naše kode. preprosto zapišite te vrstice (pazite, da ne spremenite zamikov ali presledkov, saj je to v Pythonu IZredno pomembno):

iz uvoznega mešalnika pygame

mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () medtem ko mixer.music.get_busy () == Res: nadaljuj

Kjer / Namizje / je mesto, kamor vložite zvočne datoteke, in 'Adhan-Makkah.wav' je moja zvočna datoteka, ki je zvočni posnetek Azan v meki.

zdaj, da preizkusimo našo kodo, jo zaženemo s pythonom tako, da vnesemo:

python AzanPlay.py

in vaš zvok bo izginil z vašega HDMI LCD ali vašega AUX vhoda, ki je na Raspberrypiju. če tega ne slišite iz zvočnikov LCD, priključite slušalke v AUX in preverite.

11. korak: 3-2: Pridobite čas molitve

3-2: Pridobite čas molitve
3-2: Pridobite čas molitve

Kot vemo, se časi molitve razlikujejo od kraja do kraja na zemlji in celo za določeno lokacijo se razlikujejo skozi leta, kar pomeni, da moramo najti način, kako naj se čas molitve v sistemu ves čas posodablja in za to potrebujemo posebne in zelo zapletene funkcije in izračune, da to naredimo pravilno. Na srečo je naš brat Hamid Zarrabi-Zadeh vse funkcije, ki jih potrebujemo, združil v eno funkcijo, ki jo lahko enostavno uporabimo za pridobivanje časa, odvisno od naše lokacije in trenutnega časa, NEVERJETNO! knjižnico in izvorne datoteke najdete na

praytimes.org/

Torej, te čudovite datoteke bomo uporabili za pridobivanje časa molitve in njegovo implementacijo v sistem. najprej prenesite kode s spletnega mesta in jih vnesite v mapo / adhan / (potrebujemo kode JS in Python).

Zdaj pa pojdimo v to mapo in preizkusimo knjižnico in kaj lahko naredi:

cd adhan

tam moramo narediti novo preskusno datoteko v pythonu, da lahko preizkusimo funkcijo:

sudo nano testAd.py

notri zapišite to kodo:

uvozi čas molitve

od datuma uvoza datum -čas tmm = časi molitve. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) tiskanje (tmm)

Preden shranite datoteko, morate spremeniti LATITUDE s svojo lokacijo Latitude, enako kot LONGTITUDE in spremeniti GMT v svoj časovni pas. v mojem primeru bo to:

tmm = čas molitve. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)

tisk (tmm)

Končno CTRL-S in CTRL-X in nato zaženite kodo:

python testAd.py

končno vam bodo današnji časi molitve vrnjeni za vašo lokacijo.

{'isha': '18: 58 ',' asr ': '15: 22', 'sončni zahod': '17: 43 ',' dhuhr ': '12: 17', 'maghrib': '17: 43 ', 'imsak': '05: 23 ',' midnight ': '00: 17', 'sunrise': '06: 52 ',' fajr ': '05: 33'}

Super! zdaj, ko imamo čas za molitev in zdaj znamo igrati zvoke, združimo ti dve kodi skupaj v eno glavno kodo.

Korak 12: 3-3: Ustvarjanje zadnje kode alarma Azan

z dokončanjem prejšnjih dveh kod smo se naučili, kako natančno določiti čas molitve glede na našo lokacijo in kako predvajati zvok Azan. Zdaj bomo ti dve kodi združili v eno kodo, ki jo bomo uporabili kot naš končni projekt, in ta koda bo delovala v ozadju, saj bo, ko bo prišel čas Azana, predvajala zvok Azan.

Napisal sem celotno kodo, lahko jo kopirate in prilepite ter po lastni presoji naredite svoje spremembe. Koda je:

čas uvoza

iz mešalnika za uvoz pygame uvozni niz uvozi časi molitve od datuma uvoza datum -čas medtem ko (1): tmm = časi molitve. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3) FAJR = tmm ['fajr'] DHUHR = tmm ['dhuhr'] ASR = tmm ['asr'] MAGHRIB = tmm ['maghrib'] ISHA = tmm ['isha'] tempT = time.strftime (str ('%H')) currTime = tempT tempT = time.strftime (str ('%M')) currTime = currTime + ':' + tempT if currTime == FAJR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-fajr. wav ') mixer.music.play () while mixer.music.get_busy () == Res: nadaljuj, če je currTime == DHUHR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan- Makkah.wav ') mixer.music.play () while mixer.music.get_busy () == True: nadaljuj, če je currTime == ASR: mixer.init () mixer.music.load ('/home/pi/Desktop/ Adhan-Makkah.wav ') mixer.music.play () while mixer.music.get_busy () == Res: nadaljuj, če je currTime == MAGHRIB: mixer.init () mixer.music.load ('/home/pi/ Namizni/Adhan-Makkah.wav ') mixer.music.play () medtem ko mixer.music.get_busy () == Res: nadaljuj, če je currTime == ISHA: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () medtem ko mixer.music.get_busy () == True: nadaljevanje

Če pogledate kodo in jo primerjate s tistimi, ki smo jih naredili prej, boste videli, da nismo naredili nič novega, sprva smo vključili potrebne knjižnice, nato pa smo odprli neskončno zanko. v zanki nenehno izračunamo čas molitve z našo lokacijo in časovnim pasom ter celoten rezultat shranimo v spremenljivko tmm. nato shranimo vsak čas molitve od tmm do neodvisne spremenljivke. to nam bo omogočilo primerjavo časov. Nato vzamemo sistemski čas in ga shranimo v neodvisno spremenljivko. nazadnje sistemski čas primerjamo s časom molitve, če se sistemski čas ujema s katerim koli časom molitve, bo predvajal zvok Azan.

13. korak: 4. poglavje: Izvajanje stražnih obrazov

Poglavje 4: Izvajanje stražnih obrazov
Poglavje 4: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov
4. poglavje: Izvajanje stražnih obrazov

Da bi bil projekt lepši, sem se zamislil, da bi na LCD prikazovalnike dodal ure, tako da je uporabniku videti lepo (vsaj bolje od ukazne vrstice), zato sem najel oblikovalca za oblikovanje več obrazov ura bi morala biti prazna brez podatkov, saj je treba podatke dodati prek HTML -ja, oblikovanje ure kot ozadje, druge podatke, kot je čas molitve, pa lahko dodamo kot elemente HTML na vrhu ozadja.

Na žalost je moje znanje in izkušnje v HTML -ju v času pisanja tega navodila zelo omejeno, zato ne bom razpravljal o podrobnostih, saj vem, da bom stvari naredil na napačen način, in ne želijo zmesti ljudi. če pa imate vsaj malo izkušenj z JS in HTML, bi morali vedeti, kako nadaljevati od te točke. doslej sem naredil en sam obraz (modrega). načrt je izdelati 14 urnih številčnic! 7 obrazov za vsak dan v tednu in še 7 za drugo temo. saj naj bi bila prva tema z Azkarjem, druga pa naj bi imela namesto Azkarja islamske GIFS. ne glede na to, vse modele bom vključil v ta navodila, da jih boste lahko prenesli.

14. korak: 5. poglavje: Izvajanje uporabniškega vmesnika

Poglavje 5: Izvajanje uporabniškega vmesnika
Poglavje 5: Izvajanje uporabniškega vmesnika

V zadnjem poglavju našega potovanja bomo naredili nekaj neobveznih sprememb, da bo projekt celo prijazen do uporabnika, če želimo projekt izvesti v mošeji ali na katerem drugem javnem mestu. kot smo že povedali, vsako mesto ima svoj čas za molitve, in da bo ta projekt dostopen širši resničnosti ljudi, bomo naredili uporabniški vmesnik, da bomo lahko izbrali želeno mesto in temo, ko bomo vklopili projekt.

Če želite to narediti, bomo uporabili knjižnico grafičnega vmesnika python, imenovano "TKinter".

To je koda, ki sem jo uvedel, da sem lahko izbiral med petimi mesti v Savdski Arabiji, vključno z Meko:

uvozi tkinter kot tk

iz tkinter uvoz * iz tkinter uvoz ttk uvoz kodeki uvoz os razred karl (okvir): def _init _ (samo): tk. Frame._ init _ (samo) self.pack () self.master.title ("čas Azan") self. button1 = Button (self, text = "Jeddah", height = 5, width = 80, command = self.open_jeddah1) self.button2 = Button (self, text = "Makkah", height = 5, width = 80, command = self.open_makkah1) self.button3 = Button (self, text = "Riyadh", height = 5, width = 80, command = self.open_riyadh1) self.button4 = Button (self, text = "Madina", height = 5, width = 80, command = self.open_madina1) self.button5 = Button (self, text = "Qasim", height = 5, width = 80, command = self.open_qasaim1) self.button1.grid (vrstica = 0, stolpec = 1, razpon stolpcev = 2, lepljivo = W+E+N+S) self.button2.grid (vrstica = 1, stolpec = 1, razpon stolpcev = 2, lepljivo = W+E+N+S) self.button3.grid (vrstica = 2, stolpec = 1, razpon stolpcev = 2, lepljivo = W+E+N+S) self.button4.grid (vrstica = 3, stolpec = 1, razpon stolpcev = 2, lepljivo = W+E+N+S) self.button5.grid (vrstica = 4, stolpec = 1, razpon stolpcev = 2, lepljivo = W+E+N+S) def open_jeddah1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/jeddah/Sunday1.html --start-fullscreen --no-sandbox" os.system (order) def open_makkah1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/makkah/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (naročilo) def open_riyadh1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (naročilo) def open_madina1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/madina/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (order) def open_qasaim1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/qasaim/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (order) def main (vrstni red)): karl (). mainloop () če je _name_ == '_main_': main ()

Koda je morda videti velika, vendar je urejanje zelo enostavno. v bistvu smo naredili novo okno, dali pet imenskih gumbov in določili pet funkcij, ki jih je treba klicati ob vsakem pritisku gumba. ko pritisnete gumb, bo program odprl ustrezno datoteko HTML v mapi Mesta, ki ima vsak mestni HTML s koordinatami mest, ko dobi čas med molitvami (). ko pritisnete gumb, bo koda python izvlekla kodo linux, v kateri bo odprla datoteko HTML z brskalnikom chromium, in prikazali boste uro za prikaz z vklopljeno možnostjo celozaslonskega prikaza.

15. korak: (izbirno): Dodajanje stikala za zvočnik

(Izbirno): Dodajanje stikala za zvočnik
(Izbirno): Dodajanje stikala za zvočnik
(Izbirno): Dodajanje stikala za zvočnik
(Izbirno): Dodajanje stikala za zvočnik

Kot smo videli, ko pride čas molitve, se predvaja zvok Azan in zvok prihaja iz privzetega zvočnega izhoda (izhod HDMI ali AV), in ker ga dajemo na izhod HDMI, bo zvok prišel z LCD -ja. kaj pa, če naš LCD zvok ni dovolj? kaj na primer, če želimo to izvesti v pravi mošeji? s širokimi zunanjimi zvočniki? potem lahko dodamo še en ZELO enostaven korak za to. za že zgrajen zvočni sistem zvočnikov ga moramo le vklopiti in izklopiti ter vzeti že obstoječi mikrofon in ga postaviti poleg LCD zvočnikov.

To je enostavno. uporabili bomo že obstoječi mošejski mikrofon, ki je priključen na zvočnik, potrebovali bomo samo malinovo piko za nadzor moči, ki vklopi in izklopi celoten zvočni sistem. za to bomo morali uporabiti SSR: SOLID STATE RELAY. te vrste relejev lahko delujejo kot stikalo, podobno kot povprečni modri rele, razlika je v tem, da lahko SSR vzdržijo veliko količino izmenične napetosti, ki v tem primeru ne velja za modre (običajno največ 10A), zato potrebujejo SSR samo dve žici namesto 3: DC+ in DC- in to je to! na drugem koncu SSR -ja lahko priključimo napajalni kabel sistema zvočnikov, tako da bo, ko bomo dali napetost na SSR, zaprl izmenični tok v sistemu zvočnikov, ali pa bomo izklopili napetost, da bomo ustvarili odprto vezje, izklop zvočnikov.

Obstaja en ulov, vendar zatiči RaspberryPi oddajajo 3.3v, ne 5v, ki jih potrebujemo za nadzor SSR. zato potrebujemo tranzistor za sprejem signala z vtiča RPi in 5V iz vtiča RPi 5v. za to potrebujemo:

1-polprevodniški rele (vse nad 25A je dobro)

2-2n2222 npn tranzistor

Upor 3-220 ohmov

za priključitev sledite krogu fritzinga.

zdaj bomo v kodo dodali nekaj stvari, zaradi katerih to deluje. najprej bomo pred zanko while dodali nekaj vrstic za inicializacijo zatičev GPIO:

V razdelku za uvoz dodajte:

uvozite RPi. GPIO kot GPIO

Pred zanko while dodajte:

GPIO.setmode (GPIO. BOARD) Rele GPAR.setwarnings (False) = 40 GPIO.setup (ledPin, GPIO. OUT)

Zdaj moramo v zanki while za vsak ukaz Azan vklopiti rele, počakati 10 sekund, dokončati predvajanje Azana in nato izklopiti rele. Dodati moramo le dve vrstici, prva je:

Izhod GPIO. (ledPin, GPIO. HIGH)

time.sleep (10)

to je treba dodati za vsako izjavo if (IDENTACIJA JE POMEMBNA!), druga vrstica je:

Izhod GPIO. (ledPin, GPIO. LOW)

To je treba dodati za vrstico »nadaljevanje«. izgledalo bi tako za vsak čas Azana:

če je currTime == FAJR:

GPIO.output (ledPin, GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-fajr.wav') mixer.music.play () while mixer.music.get_busy () == Res: nadaljuj GPIO.output (ledPin, GPIO. LOW)

Priporočena: