INHOUDSOPGAWE:

RaspberryPi Islamic Prayers Watch & Alarm: 15 stappe (met foto's)
RaspberryPi Islamic Prayers Watch & Alarm: 15 stappe (met foto's)

Video: RaspberryPi Islamic Prayers Watch & Alarm: 15 stappe (met foto's)

Video: RaspberryPi Islamic Prayers Watch & Alarm: 15 stappe (met foto's)
Video: Prayer Times Display Alarm Using RaspberryPi with 50 Inch LED Display 2024, Junie
Anonim
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm

Moslems regoor die wêreld het elke dag vyf gebede, en elke gebed moet op 'n sekere tyd van die dag wees. As gevolg van die elliptiese manier waarop ons planeet om die son beweeg, wat veroorsaak dat die tyd van die son opkom en daal, kan die gebedstyd ook konstant wees, en daarom het ons 'n Islamitiese horlosie nodig om ons Moslems te herinner aan ons gebedstye dag.

Elke Moslem het toegang tot die daaglikse gebedstyd deur middel van die Islamitiese webwerwe op die internet, plaaslike Islamitiese kalenders of selfs per TV, en die meeste van ons het Islamitiese horlosietoestelle wat die funksie bied om gebedstye te gee, sowel as gebedsalarms.. Maar wat as ons ons eie gebedshorlosie en alarmtoestel maak!

Voordat u aan die projek begin werk, is daar min oorwegings wat u nuttig kan vind as u hierdie instruksies lees. Ek woon in Saoedi -Arabië, so sommige van my stappe en waardes sal van u s'n verskil, en ek sal dit uitdruklik tydens die werk aanwys. Daar is stappe en foto's wat Arabiese woorde kan insluit, aangesien ek die koppelvlak in Arabies gemaak het, maar ek sal ook wys hoe u dit in Engels kan maak, sodat die Arabiese woorde op die foto's u glad nie bekommer nie; hierdie projek kan gedoen in enige taal (wat wonderlik is!: D) Verskoon ook my tikfoute, want Engels is nie my eerste taal nie.

Op na ons projek! Hierdie projek sal verdeel word in X belangrike stappe, wat teen die einde van die Xde stap ons projek gereed en gereed sal hê! Die stappe sal soos volg wees:

1-Konfigurasie en voorbereiding van die RaspberryPi

2-Installeer die RTC-module

3-Maak die Azan Alarm-program

4-Implementering van die horlosies

5-Maak die gebruikerskoppelvlak en

Soos elke projek, moet ons eers die onderdele voorberei wat ons benodig. die dele wat ons nodig het vir hierdie projek is:

1-RaspberryPi-rekenaarstel Amazon VS || Amazon KSA

U kan enige Rpi -weergawe gebruik, maar maak seker dat dit Wifi het. Ek het Rpi3B+ gebruik

2-RTC Real-time klokmodule Amazon VS || Amazon KSA

U kan enige RTC -module -model gebruik, maar maak seker dat dit I2C het

3-LCD monitor

Enige LCD sal doen

4-muis en sleutelbord

en dit is ….. IT !! Dit is al wat u nodig het om u eie Azan -klok en alarm te maak

Stap 1: Hoofstuk 1: Die opstel en konfigurasie van die RaspberryPI

Hoofstuk 1: Die opstel en konfigurasie van die RaspberryPI
Hoofstuk 1: Die opstel en konfigurasie van die RaspberryPI

Eerste dinge eerste! Ons moet die framboos pi voorberei om daarmee te werk.

Framboos pi is niks anders as 'n rekenaar nie, dit het RAM en ROM, dit het 'n SVE, GPU, I/O …. 'n rekenaar! net soos die een waarop ons speletjies speel en op die internet blaai, net die belangrikste ding dat dit baie klein is! wat die framboos 'n baie goeie keuse maak vir die maak en implementering van projekte. Omdat die framboos pi klein is, het dit baie beperkte spesifikasies dat dit nie 'n groot veeleisende bedryfstelsel soos Windows of macOS kan gebruik nie, maar ons gaan Linux as 'n bedryfstelsel gebruik om die toestel te gebruik. daar is duisende indien nie tienduisende Linux -distros wat ons kan gebruik nie, maar een perfekte distro is perfek geoptimaliseer spesifiek vir die raspberrypi wat ons gaan gebruik, genaamd Raspbian.

Stap 2: 1-1: Laai die nodige lêers af

1-1: Laai die nodige lêers af
1-1: Laai die nodige lêers af
1-1: Laai die nodige lêers af
1-1: Laai die nodige lêers af
1-1: Laai die nodige lêers af
1-1: Laai die nodige lêers af

-Gaan na die amptelike Rasbian-aflaai-bladsy op https://www.raspberrypi.org/software/operating-sy… en laai die Raspberry Pi OS met lessenaarlêer af

-Terwyl dit afgelaai word, gaan na https://win32diskimager.org/ en laai en installeer win32DiskImager, u kan enige sagteware vir beeldverbranding gebruik wat u wil

sodra die aflaai klaar is, het u 'n.img -lêer met die RaspberryPi OS. Koppel dan u SD -geheue kaart in die rekenaar (gewoonlik met 'n USB -kaartleser) en begin win32diskimager sagteware. die stappe om die prentjie in die SD-geheue in te brand, is baie eenvoudig; u hoef net 1-Kies u geheue letter 2-kies u OS-lêers wat u afgelaai het en skryf met 3 klik! Maak seker dat u die regte apparaatletter uit die lys gekies het en dat u geheue leeg is, want deur op skryf te druk, word u bevorder met 'n waarskuwing wat u vertel dat alles op die toestel uitgevee sal word! Druk ja om die skrywe te bevestig en wag totdat dit klaar is. dit kan tot 20 minute neem.

As dit klaar is, het u die volledige Rapbian -bedryfstelsel op die geheue, kan u dit in die Rapberry Pi sit, die Raspberry Pi aan die monitor koppel via HDMI, die muis en die sleutelbord via USB verbind en laastens die krag.

Stap 3: 1-2: Konfigurasie van die Raspbian-stelsel

Nadat u die kabels en die krag aangesluit het, sien u dat die bedryfstelsel aangeskakel is, dat dit outomaties herlaai en dan die Raspbian -gebruikerskoppelvlak (wat soortgelyk aan vensters lyk) vertoon. Die eerste ding wat u sal sien, is 'n verwelkomingsvenster, wat u deur die stappe neem om u RaspberryPi vir die eerste keer op te stel. die vensters en trappe sal soos volg wees:

1-Druk volgende op die eerste "Welkom" -venster

2-Volgende venster is om u ligging op te stel. kies u land, taal en tydsone. daarna word dit sterk aanbeveel om die 'Gebruik Engelse taal' na te gaan, aangesien dit die taal van die bedryfstelsel -koppelvlak is. U MOET DIE "ONS ENGELSE KEYBOARD LAYOUT BOX" nagaan, ONS HET ENGELSE KEYBOARD NODIG OM TE WERK!

3-Vervolgens word u gevra om 'n wagwoord vir u framboos in te voer; dit is belangrik vir sekuriteit, maar ons laat dit onveranderd vir hierdie projek. Let daarop dat die standaard gebruikersnaam en wagwoord:

gebruikersnaam: pi

wagwoord: framboos

4-Volgende venster verbind die raspberryPi met u WiFi-netwerk. kies u wifi -naam en voer u wifi -wagwoord in

5 daarna word u gevra om die framboos Pi-biblioteke en stelsellêers op te dateer. hierdie stap sal baie tyd neem (miskien in ure), maar dit is 'n baie belangrike stap vir elke keer dat 'n nuwe framboospi opgestel word.

6-sodra die opdatering gedoen is, word u gevra om die stelsel weer te begin. doen dit nou.

Goeie werk! As ons 'n opgedateerde stelsel het, moet ons nog 'n paar dinge doen om die stelsel te laat werk, maar nou sal ons die Linux Command Line begin gebruik.

Stap 4: 1-3: Gebruik die opdragreël om Rpi-instellings op te stel

1-3: Gebruik die opdragreël om Rpi-instellings op te stel
1-3: Gebruik die opdragreël om Rpi-instellings op te stel
1-3: Gebruik die opdragreël om Rpi-instellings op te stel
1-3: Gebruik die opdragreël om Rpi-instellings op te stel
1-3: Gebruik die opdragreël om Rpi-instellings op te stel
1-3: Gebruik die opdragreël om Rpi-instellings op te stel

Sodra u klaar is met die herlaai van die stelselopdatering, sal die stelsel die lessenaar van die gebruiker wys sodra dit klaar gestart is. As u nou links bo op die skerm kyk, vind u 'n paar knoppies, 'n knoppie met raspberryPi-logo, die Rpi-menu-knoppie, 'n aardbolvorm wat die internetblaaier is, 'n knoppie met dopgehou … en laastens 'n knoppie met 'n swart skermvenster, wat die belangrikste knoppie in enige Linux -stelsel is, The Command line. druk op die knoppie, 'n swart venster verskyn.

Die opdragreël is hoe almal interaksie het en die Linux -stelsel gebruik, net soos Windows sy eie opdragreël het, slegs in weduwees hoef ons dit nie gereeld te gebruik nie. In Linux is dit die basiese ding wat elke Linux -gebruiker moet leer en bemeester. die opdragreël kan gebruik word deur …. COMMANDS! wat u in die swart venster sien, is die opdragprompt wat wag totdat die opdrag deur die gebruiker geskryf en uitgevoer word. in hierdie gids gee ons al die opdragte wat u nodig het om hierdie projek uit te voer, dus moenie bekommerd wees nie.

die heel eerste Linux -opdrag wat ons gaan gebruik, is 'n ander konfigurasieopdrag, let op dat al die opdragte van nou af in 'n kodeboks geplaas sal word, sodat u dit kan onderskei van gewone stappe. Bring u sleutelbord en tik die volgende en druk enter:

sudo raspi-config

As u dit korrek doen, sal u sien dat die skerm blou geword het, met 'n grys blokkie in die middel (sien prentjie). ons sal dit gebruik om ons finale opset te maak voordat ons begin kodering.

nou moet u met u pyltjie -sleutels op die sleutelbord deur hierdie spyskaart gaan.

1-Gaan na koppelvlakopsies >> I2C >> JA >> druk enter. Dit maak die I2c -kommunikasieprotokol moontlik sodat ons die RTC kan gebruik

2-Gaan na Gevorderde opsies >> Brei lêerstelsel uit.

en dit is al die konfigurasie wat u in hierdie venster benodig. Gaan op die hoofblad af en druk enter op "klaar" en "JA" om die stelsel weer te begin.

Sodra die stelsel herlaai is, is ons klaar met die opstel! die toestel is gereed vir die groot treë! Die volgende stap is die installering van die RTC -module en gebruik dit saam met die stelsel.

Stap 5: Hoofstuk 2: Monteer, instel en gebruik die RTC -module

Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module
Hoofstuk 2: Monteer, instel en gebruik die RTC -module

RTC (of Real-Time Clock) -module is 'n klein toestel met 'n bietjie battery, dit doen wat die naam impliseer: Clocking! dus as u die krag ontkoppel, werk die klok aan en stop nie. hoekom het ons dit nodig? die framboos pi het regtig geen manier om klokdata te stoor sodra dit afgeskakel is nie; dit maak staat op verbinding met die internet tydens die opstart om die datum en tyd op te dateer, maar die probleem is dat ons nie altyd internettoegang het nie, en dit daarom het ons die RTC -module nodig. die RTC sal dien as 'n horlosie vir die framboospi, en sodra die Rpi opgestart is, neem dit die datum en tyd van die RTC, wat die RaspberryPi -tyd heeltyd opgedateer sal hou.

daar is verskeie modelle en soek na die RTC, daar is die DS1307 en DS3231. u kan enige RTC -module gebruik wat u vind, solank dit I2C -protokolkommunikasie het (u kan aandui dat u SDA- en SCL -penne op die modulepenne kan vind.

Soos alles in hierdie gids, het ek ander gidse gebruik om my doel in die projek te bereik; hierdie instruksies sal u lei en presies vertel wat u moet doen om hierdie projek te maak, maar as u dit moet aanpas of meer diepte benodig stappe, skakel ek die vrugbaarder gids aan die einde van elke stap.

As u u RTC -module gereed het (soldeer die koppenne en sit die battery aan), kan u dit soos volg aan die RapberryPi -penne koppel:

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

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

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

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

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

of afhangende van watter RTC -module u het, kan u dit direk op die RaspberryPi monteer (maak seker dat die penne korrek is !

Sodra u die RTC gekoppel het, laat ons die Framboos opstel.

Stap 6: 2-1: Opstel van die module

2-1: Opstel van die module
2-1: Opstel van die module
2-1: Opstel van die module
2-1: Opstel van die module

Gaan na die opdragreël voordat u begin en tik:

datum

Dit gee die huidige datum en tyd op die Framboos terug, let op die baie nuttige opdrag en let op die huidige datum en tyd sodat ons kan kyk of die module werk of nie.

laat ons nou begin met die opstelling, tik die volgende om die Rpi -biblioteke een vir een op te dateer:

sudo apt-get update

sudo apt -get -get -y -opgradering

sodra dit klaar is, moet ons stelsellêers verander om die i2c -module moontlik te maak en RTC by te voeg, om 'n lêerstelsel te verander, gaan ons 'n sagteware met die naam Nano gebruik. nano is 'n ligte ingeboude sagteware wat basies 'n teksredakteur is, net soos die in weduwees. so 'n opdrag wat met nano begin, gevolg deur die lêernaam, sal die lêer in die nano -teksredakteur oopmaak. U het opgemerk dat ons ook iets met die naam Sudo gebruik, kortom, sudo dien as 'n versekering vir die Linux -stelsel wat die stelsel vertel dat die gebruiker wat die opdrag gemaak het, die eienaar van die toestel is, nie iemand anders nie, en dat dit voorregte soos redigering/ vir die gebruiker verwyder. As ons byvoorbeeld 'n nano -lêer sonder sudo oopmaak, sou ons die lêer kon sien, maar ons kan dit nie wysig of verwyder nie.

nou moet ons die modules lêer verander; ons kan dit doen deur te tik:

sudo nano /etc /modules

sodra u dit gedoen het, vind u die inhoud van die lêer (sien foto). Gebruik die pyltjie sleutels om die wyser aan die einde van die teks te plaas en voeg die volgende by:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

druk CTRL+S om te stoor, en CTRL+X om te verlaat

Stap 7: 2-2: I2C-koppelvlak

2-2: I2C-koppelvlak
2-2: I2C-koppelvlak

Nou het ons die RTC gekoppel en i2c aangeskakel, kom ons verbind alles saam.

tik die volgende in die opdragprompt:

i2cdetect -y 1

u kry 'n verskeidenheid spasies, maar u sal agterkom dat daar êrens 'n nommer is, die nommer is u RTC -module -adres. in my geval is dit 68. let op die nommer. As u nie die tweesyfergetal sien nie, beteken dit dat u waarskynlik die RTC verkeerd gekoppel het.

nou moet ons die rc.local -lêer verander sodat ons die RTC -module tydens opstart kan aktiveer en die datum en tyd op die stelsel kan stoor. Maak eers die rc.local -lêer oop:

sudo nano /etc/rc.local

Voeg die volgende by voor die exit0 -reël:

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

uur -s

waar 0x68 die i2c -adres van u toestel is. Sodra u klaar is, druk CTRL+S CTRL+X, herlaai dan u stelsel deur:

sudo herlaai

Stap 8: 2-3: Toets die RTC

2-3: Toets die RTC
2-3: Toets die RTC

Sodra die stelsel herlaai is, kan ons kyk of die RTC werk of nie. hardloop eers:

sudo hwclock -r

u kry die datum en tyd op die RTC -module terug. As u iets anders gegee het, maak seker dat u die stappe korrek uitgevoer het.

nou, om die tyd en datum op die RTC te verander, moet ons eers die datum en tyd op die stelsel verander, en dan die veranderinge aan die RTC aanbring. voer dit uit:

sudo date -s "29 AUG 1997 13:00:00"

en natuurlik, verander die datum en tyd volgens u plaaslike tyd en datum, voordat u op enter druk. Sodra u die tyd op die Rpi reg gekry het, voer die volgende uit om die datum en tyd op die RTC te stoor:

sudo hwclock -w

aaaaand dit is dit! U kan kyk of dit werk by hwclock -r en kyk of die datum op die RTC korrek is of nie, ontkoppel dan die rpi van die internet en skakel dit 'n geruime tyd af en skakel dit dan weer aan en kyk of dit die korrekte het tyd en datum. jy's klaar!

Die volledige gids vir die opstel van die RTC -module kan hier gevind word

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

Stap 9: Hoofstuk 3: Maak die Azan -alarmprogram

Hoofstuk 3: Maak die Azan -alarmprogram
Hoofstuk 3: Maak die Azan -alarmprogram

Om 'n horlosie te maak is een ding, ons kan sekerlik na die horlosie en die gebedstye kyk en sien wanneer die tyd aanbreek, maar sou dit nie beter gewees het as ons 'n geluidssignaal byvoeg om ons in kennis te stel van die gebedstye nie? NOG BETER maak ons die alarm as die geluid van AZAN! kom ons kyk hoe ons dit kan bereik.

vir ons programmering, gaan ons python as ons programmeertaal gebruik, aangesien python perfek pas met RaspberryPi. Om 'n kodelêer in python te maak, doen ons dieselfde as om 'n tekslêer oop te maak, maar nou stoor ons dit as.py. Om die program uit te voer, het ons 'n python -omgewing van die raspbery geïnstalleer, maar gelukkig is Raspbian met python en python3 vooraf geïnstalleer! so al wat ons hoef te doen is om te programmeer. In hierdie gids praat ons nie oor die taal en leer ons hoe dit werk en die funksies nie, maar ek gee u die nodige kodes sodat u die projek kan doen.

Om te begin, benodig ons 'n klanklêer van ons azan-klank wat ons verkies (in. WAV), ons benodig twee lêers, een vir al-fajr azan en 'n ander vir gewone azan. sodra u dit kry, plaas dit op 'n stick drive en kopieer dit op die lessenaar van die raspberrypi.

nou het ons die lêers, ek was op soek na 'n manier om klank -klanke op die raspberryPi te speel, en tot my verbasing was daar nie veel maniere waarop ek dit kon doen nie, maar ek het hierdie antwoord op stackoverflow gevind wat my gegee het wat ek nodig gehad het

stackoverflow.com/questions/20021457/playi…

Ek het die metode getoets en dit het gewerk! laat ons kyk hoe ons hierdie metode in ons projek kan implementeer …

Stap 10: 3-1: Kom ons speel 'n geluid

3-1: Kom ons speel 'n klank!
3-1: Kom ons speel 'n klank!

Navigeer eers na die lessenaar deur:

cd Desktop

maak dan 'n nuwe python -kode lêer deur:

sudo nano AzanPlay.py

dit sal 'n nuwe lêer genaamd AzanPlay maak met die uitbreiding op 'n python -lêer.py, ons sal 'n leë swart skerm hê sodat ons ons kode kan skryf. Skryf slegs hierdie reëls neer (wees versigtig om geen inkeping of spasies te verander nie, want dit is uiters belangrik in luislang):

van pygame invoermenger

mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort

Waar / Desktop / is waar u u klanklêers geplaas het, en 'Adhan-Makkah.wav' is my klanklêer, wat die Azan-klankopname in makkah is.

Om ons kode te toets, voer ons dit met python uit deur te tik:

python AzanPlay.py

en die geluid speel af van u HDMI LCD of u AUX -poort op die Raspberrypi. As u dit nie van die LCD -luidsprekers hoor nie, steek 'n koptelefoon in die AUX en kyk.

Stap 11: 3-2: Kry gebedstye

3-2: Kry gebedstye
3-2: Kry gebedstye

Soos ons weet, verskil gebedstye van plek tot plek op aarde, en selfs vir 'n spesifieke plek verskil dit deur die jare, dit beteken dat ons 'n manier moet vind om ons gebedstye in die stelsel voortdurend opgedateer te hou, en daarvoor het ons spesifieke en baie komplekse funksies en berekeninge nodig om dit reg te kry. Gelukkig het ons broer Hamid Zarrabi-Zadeh al die funksies wat ons nodig het in een funksie gemaak wat ons maklik kan gebruik om die tyd te kry, afhangende van ons ligging en huidige tyd, AMAZING! U kan die biblioteek en bronlêers vind by

praytimes.org/

Dus, ons gaan hierdie wonderlike lêers gebruik om ons gebedstye te kry en dit in die stelsel te implementeer. Laai eers die kodes van die webwerf af en plaas dit in 'n / adhan / map (ons benodig beide die JS- en Python -kodes).

Gaan nou na die vouer en toets die biblioteek en wat dit kan doen:

cd adhan

daar moet ons 'n nuwe toetslêer in python maak sodat ons die funksie kan toets:

sudo nano testAd.py

binnekant, skryf hierdie kode neer:

bid bid

vanaf datetime invoer datum tmm = bidtye. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) druk (tmm)

Voordat u die lêer stoor, moet u LATITUDE verander met u Latitude -ligging, dieselfde met LONGTITUDE en GMT na u tydsone verander. in my geval sal dit wees:

tmm = bidtye. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)

druk (tmm)

Laastens, CTRL-S en CTRL-X en voer dan die kode uit:

python testAd.py

Uiteindelik kry u u gebedstye vir vandag, vir u ligging, terug.

{'isha': '18: 58 ',' asr ': '15: 22', 'sonsondergang': '17: 43 ',' dhuhr ': '12: 17', 'maghrib': '17: 43 ', 'imsak': '05: 23 ',' middernag ': '00: 17', 'sonsopkoms': '06: 52 ',' fajr ': '05: 33'}

Puik! noudat ons gebedstyd het en ons nou weet hoe om klanke te speel, laat ons hierdie twee kodes saamsmelt tot een hoofkode.

Stap 12: 3-3: Maak die finale Azan-alarmkode

deur die vorige twee kodes af te handel, het ons geleer hoe om die akkurate gebedstye volgens ons ligging te kry en hoe ons die Azan -klank speel. nou, ons gaan hierdie twee kodes saamvoeg in een kode wat ons as ons finale projek gaan gebruik, en hierdie kode werk op die agtergrond, want as die tyd van Azan aanbreek, speel dit die Azan -klank.

Ek het die hele kode geskryf, u kan dit kopieer en plak en u eie veranderings aanbring soos u dit goedvind. Die kode is:

invoer tyd

vanaf pygame invoermenger invoerreeks invoer bidtye vanaf datatydse invoerdatum terwyl (1): tmm = bidtye. PrayTimes (). getTimes (datum.vandaag (), [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 () terwyl mixer.music.get_busy () == Waar: gaan voort as currTime == DHUHR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan- Makkah.wav ') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort as currTime == ASR: mixer.init () mixer.music.load ('/home/pi/Desktop/ Adhan-Makkah.wav ') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort as currTime == MAGHRIB: mixer.init () mixer.music.load ('/home/pi/ Desktop/Adhan-Makkah.wav ') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort as currTime == ISHA: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort

As u na die kode kyk en dit vergelyk met wat ons voorheen gemaak het, sal u sien dat ons niks nuuts gedoen het nie; eers het ons die nodige biblioteke ingesluit en dan 'n oneindige lus oopgemaak. in die lus, bereken ons voortdurend die gebedstyd met ons ligging en tydsone en stoor die hele resultaat in veranderlike tmm. dan stoor ons elke gebedstyd van tmm tot 'n onafhanklike veranderlike. dit sal ons toelaat om tye te vergelyk. Vervolgens neem ons die stelseltyd en stoor dit in 'n onafhanklike veranderlike. Laastens vergelyk ons die stelseltyd met die gebedstye; as die stelseltyd by enige van die gebedstye pas, speel dit die Azan -klank.

Stap 13: Hoofstuk 4: Implementering van die horlosies

Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies
Hoofstuk 4: Implementering van die horlosies

Om die projek beter te laat lyk, het ek die idee gehad om horlosies op die LCD te voeg, sodat dit vir die gebruiker mooi lyk (ten minste beter as die opdragreël), daarom het ek 'n ontwerper aangestel om verskeie gesigte te ontwerp die horlosie, dit moet leeg wees sonder data, aangesien die data deur HTML bygevoeg moet word, sodat die horlosie -ontwerpe as agtergrond kan word, en die ander data, soos gebedstye, as HTML -elemente bo -op die agtergrond kan bygevoeg word.

Ongelukkig, op die oomblik dat ek hierdie instruksie skryf, is my kennis en ervaring in HTML baie beperk, so ek sal nie veel besonderhede bespreek nie, want ek weet dat ek dinge op 'n verkeerde manier sal doen, en ek doen dit nie wil mense verwar. maar as u selfs 'n geringe ervaring in JS en HTML het, moet u weet hoe u vanaf hierdie punt moet voortgaan. tot dusver het ek 'n enkele gesig gemaak (die blou). die plan is om 14 horlosies te maak! 7 gesigte vir elke dag van die week, en nog 7 as 'n ander tema. soos die eerste tema veronderstel is om met Azkar te rol, en die ander tema moet Islamitiese GIFS hê in plaas van die Azkar. ongeag, ek sal al die ontwerpe in hierdie instruksies insluit, sodat u dit kan aflaai.

Stap 14: Hoofstuk 5: Implementering van 'n gebruikerskoppelvlak

Hoofstuk 5: Implementering van 'n gebruikerskoppelvlak
Hoofstuk 5: Implementering van 'n gebruikerskoppelvlak

In die laaste hoofstuk van ons reis sal ons 'n paar opsionele wysigings aanbring om die projek selfs gebruikersvriendelik te maak, as ons die projek in 'n moskee of op 'n openbare plek wil implementeer. Soos ons vroeër gesê het, het elke stad sy eie tydsberekening vir die gebede, en om hierdie projek vir 'n groter groep mense te verkry, maak ons 'n gebruikerskoppelvlak sodat ons die gewenste stad en tema kan kies sodra ons die projek aanskakel.

Om dit te doen, gaan ons 'n python GUI -biblioteek met die naam "TKinter" gebruik.

Dit is die kode wat ek geïmplementeer het om my die keuse te gee tussen vyf stede in Saoedi -Arabië, insluitend Makkah:

voer tkinter in as tk

vanaf tkinter invoer * vanaf tkinter invoer ttk invoer codecs invoer os klas karl (Frame): def _init _ (self): tk. Frame._ init _ (self) self.pack () self.master.title ("Azan Time") 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 (row = 0, column = 1, kolomspan = 2, taai = W+E+N+S) self.button2.grid (ry = 1, kolom = 1, kolomspan = 2, taai = W+E+N+S) self.button3.grid (ry = 2, kolom = 1, kolomspan = 2, klewerig = W+E+N+S) self.button4.grid (ry = 3, kolom = 1, kolomspan = 2, klewerig = W+E+N+S) self.button5.grid (ry = 4, kolom = 1, kolomspan = 2, taai = 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 (bestelling) def open_riyadh1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (bestelling) 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 (): karl (). mainloop () as _name_ == '_main_': main ()

Die kode kan groot lyk, maar dit is baie maklik om dit te wysig. ons het basies 'n nuwe venster gemaak, vyf name knoppies gesit en vyf funksies gedefinieer wat elke knoppie druk. sodra u op die knoppie gedruk het, sal die program die ooreenstemmende HTML -lêer in die Cities -lêergids oopmaak, wat elke stad se HTML die stadskoördineer wanneer dit tyd kry van gebedstye (). sodra u op die knoppie gedruk het, sal die python -kode 'n Linux -kode uitskakel waarin die HTML -lêer met die chroomblaaier oopgemaak word, en u sal die horlosie gereed hê om te vertoon, met die volle skerm opsie.

Stap 15: (opsioneel): Voeg 'n luidsprekerskakelaar by

(Opsioneel): Voeg 'n luidsprekerskakelaar by
(Opsioneel): Voeg 'n luidsprekerskakelaar by
(Opsioneel): Voeg 'n luidsprekerskakelaar by
(Opsioneel): Voeg 'n luidsprekerskakelaar by

Soos ons gesien het, as die gebedstyd aanbreek, speel die Azan -klank, en die geluid kom uit die standaardklankuitset (HDMI- of AV -uitset), en aangesien ons dit op HDMI -uitset plaas, kom die geluid van die LCD. maar wat as ons LCD -klank nie genoeg is nie? byvoorbeeld, wat as ons dit in 'n ware moskee wil implementeer? met wye buitensprekers? dan kan ons nog 'n BAIE maklike stap byvoeg om dit te bereik. Vir 'n reeds gemaakte luidsprekerklankstelsel hoef ons dit net AAN en UIT te neem, die bestaande mikrofoon te neem en langs die LCD -luidsprekers te plaas.

Dit is maklik. ons sal die bestaande moskeemikrofoon gebruik wat aan die luidspreker gekoppel is; ons benodig net die raspberryPi om die krag wat die hele klankstelsel aan- en af skakel, te beheer. Om dit te kan doen, moet ons 'n SSR: SOLID STATE RELAY gebruik. Hierdie tipe relais kan as 'n skakelaar dien, net soos die gemiddelde blou aflos, die verskil is dat SSR's 'n groot hoeveelheid AC -stroom kan weerstaan, wat nie van toepassing is op die blou nie (gewoonlik maksimum 10A), en die SSR's benodig slegs twee drade in plaas van 3: DC+ en DC- en dit is dit! aan die ander kant van die SSR kan ons die kragkabel van die luidsprekerstelsel aansluit; sodra ons spanning aan die SSR gee, sluit dit die wisselstroombaan van die luidsprekerstelsel, of sluit ons die spanning af om 'n oop kring te maak, die luidsprekers afskakel.

Daar is een punt: die RaspberryPi -penne lewer 3.3v, nie 5v wat ons nodig het om die SSR te beheer nie. dus benodig ons 'n transistor om die sein van die RPi -pen af te neem, en 5V van die RPi 5v -pen. om dit te kan doen, benodig ons:

1-Solid State Relay (enigiets bo 25A is goed)

2-2n2222 npn transistor

3-220ohm weerstand

volg die fritzing circuit vir verbinding.

nou in die kode, sal ons 'n paar dinge byvoeg wat dit laat werk. Eerstens, voor die tydlus, voeg ons 'n paar reëls by om die GPIO -penne te initialiseer:

Voeg in die invoerafdeling:

voer RPi. GPIO in as GPIO

Voeg voor die while lus by:

GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (Onwaar) aflos = 40 GPIO.setup (ledPin, GPIO. OUT)

Nou, in die tyd -lus, moet ons vir elke afspeel -Azan -opdrag die aflos aanskakel, 10 sekondes wag, die Azan speel en dan die aflos afskakel. ons hoef net twee reëls by te voeg, die eerste een is:

GPIO.output (ledPin, GPIO. HIGH)

tyd. slaap (10)

hierdie een moet bygevoeg word na elke verklaring (IDENTASIE IS BELANGRIK!), die ander reël is:

GPIO.output (ledPin, GPIO. LOW)

Hierdie een moet bygevoeg word na die reël "voortgaan". dit moet vir elke Azan -tyd so lyk:

as currTime == FAJR:

GPIO.output (ledPin, GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-fajr.wav') mixer.music.play () terwyl mixer.music.get_busy () == Waar: gaan voort met GPIO.output (ledPin, GPIO. LOW)

Aanbeveel: