Innholdsfortegnelse:

RaspberryPi Islamic Prayers Watch & Alarm: 15 trinn (med bilder)
RaspberryPi Islamic Prayers Watch & Alarm: 15 trinn (med bilder)

Video: RaspberryPi Islamic Prayers Watch & Alarm: 15 trinn (med bilder)

Video: RaspberryPi Islamic Prayers Watch & Alarm: 15 trinn (med bilder)
Video: Prayer Times Display Alarm Using RaspberryPi with 50 Inch LED Display 2024, November
Anonim
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm
RaspberryPi Islamic Prayers Watch & Alarm

Muslimer rundt om i verden har fem bønner hver dag, og hver bønn må være på en bestemt tid på dagen. På grunn av den elliptiske måten planeten vår beveger seg rundt solen, noe som gjør at solen stiger og faller, varierer timene gjennom året, noe som også gjør bønnetiden inkonstant, og derfor trenger vi en islamsk vakt for å minne oss muslimer på våre bønnetider hver dag.

Hver muslim har en måte å få tilgang til den daglige bønnetiden via islamske Internett -nettsteder, lokale islamske kalendere eller til og med via TV, og de fleste av oss har islamske klokker som har funksjonene til å gi oss bønnetider, så vel som bønnealarmer.. Men hva om vi laget vår egen Prayers Watch og Alarm -enhet!

Før du begynner å jobbe med prosjektet, er det få hensyn som du kan være nyttig for deg mens du leser denne instruksjonsboken. Jeg bor i Saudi -Arabia, så noen av trinnene og verdiene mine vil avvike fra dine, og jeg vil eksplisitt peke dem under arbeidet. Det er trinn og bilder som kan inneholde arabiske ord siden jeg gjorde grensesnittet på arabisk, men jeg vil også påpeke hvordan du lager det på engelsk, så ikke la de arabiske ordene på bildene bekymre deg i det hele tatt, dette prosjektet kan være gjort på et hvilket som helst språk (som er fantastisk!: D) Unnskyld også skrivefeil da engelsk ikke er mitt førstespråk.

Videre til prosjektet vårt! Dette prosjektet vil bli delt inn i X Major -trinn, som vi ved slutten av Xth -trinnet skal ha prosjektet vårt fint og klart! Trinnene vil være som følger:

1-Konfigurere og forberede RaspberryPi

2-Installere RTC-modulen

3-Lage Azan Alarm-programmet

4-Implementering av urskiven

5-Lage brukergrensesnittet og

Som hvert prosjekt må vi først forberede delene vi trenger. delene vi trenger for dette prosjektet er:

1-RaspberryPi datasett Amazon USA || Amazon KSA

Du kan bruke hvilken som helst Rpi -versjon, bare sørg for at den har Wifi. Jeg brukte Rpi3B+

2-RTC klokkemodul i sanntid Amazon USA || Amazon KSA

Du kan bruke hvilken som helst RTC -modulmodell, bare sørg for at den har I2C

3-LCD-skjerm

Enhver LCD vil gjøre

4-mus og tastatur

og det er det!! Det er alt du trenger for å lage din egen Azan -klokke og alarm

Trinn 1: Kapittel 1: Konfigurere og konfigurere RaspberryPI

Kapittel 1: Konfigurere og konfigurere RaspberryPI
Kapittel 1: Konfigurere og konfigurere RaspberryPI

Første ting først! Vi må forberede Raspberry pi for å jobbe med den.

Bringebær pi er ingenting annet enn en datamaskin, den har RAM og ROM, den har en CPU, GPU, I/O …. En datamaskin! akkurat som det vi spiller spill på og surfer på nettet med, bare det viktigste er at det er veldig lite! som gjør bringebæret til et veldig godt valg for å lage og gjennomføre prosjekter på. Fordi bringebær -pi er liten, har den svært begrensede spesifikasjoner for at den ikke kan betjene et stort krevende operativsystem som Windows eller macOS, i stedet skal vi bruke Linux som operativsystem for å bruke enheten. det er tusenvis om ikke titusenvis av Linux -distroer som vi kan bruke, men en perfekt distro er perfekt optimalisert spesielt for raspberrypi som vi skal bruke, kalt Raspbian.

Trinn 2: 1-1: Last ned de nødvendige filene

1-1: Last ned de nødvendige filene
1-1: Last ned de nødvendige filene
1-1: Last ned de nødvendige filene
1-1: Last ned de nødvendige filene
1-1: Last ned de nødvendige filene
1-1: Last ned de nødvendige filene

-Gå til den offisielle Rasbian-nedlastningssiden på https://www.raspberrypi.org/software/operating-sy… og last ned Raspberry Pi OS med skrivebordsfil

-Når det lastes ned, kan du gå til https://win32diskimager.org/ og laste ned og installere win32DiskImager, du kan bruke hvilken som helst bildebrennende programvare du liker

Når nedlastingen er ferdig, har du en.img -fil som inneholder RaspberryPi OS. Deretter kobler du SD -minnekortet til datamaskinen (vanligvis med en USB -kortleser) og starter win32diskimager -programvare. trinnene for å brenne bildet inn i SD-minnet er veldig enkle, du trenger bare å 1- Velg minnebokstav 2-velg OS-filene du lastet ned og skriv 3-klikk! Sørg for at du har valgt riktig enhetsbokstav fra listen, og at minnet er tomt, da du ved å trykke skrive vil bli forfremmet med en advarsel som forteller deg at alt på enheten vil bli slettet! Trykk ja for å bekrefte skrivingen og vent til den er ferdig. dette kan ta opptil 20 minutter.

Når det er gjort, har du hele Rapbian OS på minnet. Du kan fortsette og sette det i Rapberry Pi, koble Raspberry Pi til skjermen via HDMI, koble musen og tastaturet via USB og til slutt koble til makt.

Trinn 3: 1-2: Konfigurering av Raspbian-systemet

Etter at du har koblet til kablene og strømmen, ser du at operativsystemet har slått på, det starter automatisk på nytt og deretter viser det Raspbian brukergrensesnittet (som ligner på Windows). det første du ser er et velkomstvindu, som tar deg gjennom trinnene for å konfigurere RaspberryPi for første gang. vinduene og trinnene vil være som følger:

1-Trykk på neste i det første "Velkommen" -vinduet

2-Neste vindu vil være å konfigurere posisjonen din. velg ditt land, språk og tidssone. etter det, er det sterkt anbefalt å sjekke "Bruk engelsk språk", da dette vil være operativsystemets grensesnittspråk. DU MÅ KONTROLLERE "US ENGLISH KEYBOARD LAYOUT BOX" VI TRENGER ENGELSK TASTATUR FOR Å ARBEIDE!

3-Deretter blir du bedt om å skrive inn et passord for bringebæret ditt, dette er viktig for sikkerheten, men vi lar det være uendret for dette prosjektet. Vær oppmerksom på at standard brukernavn og passord er:

brukernavn: pi

passord: bringebær

4-Neste vindu kobler raspberryPi til ditt WiFi-nettverk. velg wifi -navnet ditt og skriv inn wifi -passordet

5-neste, blir du bedt om å oppdatere bringebær Pi-bibliotekene og systemfilene. dette trinnet vil ta mye tid (kanskje i timer), men det er et veldig viktig skritt for hver gang en ny bringebærpi blir satt opp.

6-Når oppdateringen er ferdig, blir du bedt om å starte systemet på nytt. gjør det nå.

Flott arbeid! Nå har vi et oppdatert system, vi trenger fortsatt å gjøre noen flere ting for å konfigurere systemet til å fungere, men vil nå begynne å bruke LinuxCommand Line.

Trinn 4: 1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger

1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger
1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger
1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger
1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger
1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger
1-3: Bruk kommandolinjen til å sette opp Rpi-innstillinger

Når du er ferdig med å starte på nytt fra systemoppdateringen, vil systemet vise brukerens skrivebord når den er fullført. nå hvis du ser øverst til venstre på skjermen, finner du noen knapper, En knapp med raspberryPi-logo som er Rpi-menyknappen, en globusform som er nettleseren, en mappeknapp som er …..mapper og til slutt en knapp med et svart skjermvindu, som er den viktigste knappen i et linux -system, kommandolinjen. Fortsett og trykk på den knappen, du vil se et svart vindu dukke opp.

Kommandolinjen er hvordan alle samhandler og bruker linux -systemet, akkurat som windows har sin egen kommandolinje bare i enker, vi trenger ikke bruke det veldig ofte. i linux er det det grunnleggende hver linux -bruker må lære og mestre. kommandolinjen kan brukes av …. KOMMANDOER! det du ser i det svarte vinduet er ledeteksten som venter på at kommandoen skal skrives av brukeren og utføres. i denne guiden vil vi gi all kommandoen du trenger for å utføre dette prosjektet, så ikke bekymre deg.

den aller første Linux -kommandoen vi skal bruke er en annen konfigurasjonskommando. Vær oppmerksom på at alle kommandoene fra nå av vil bli satt i en kodeboks, slik at du kan skille den fra vanlige trinn. Ta med tastaturet og skriv inn følgende og trykk enter:

sudo raspi-config

Hvis du gjør det riktig, ser du at skjermen ble blå, med en grå boks i midten (se bildet). vi vil bruke det til å lage vår endelige konfigurasjon før vi begynner å kode.

nå må du bruke piltastene på tastaturet for å navigere i denne menyen.

1-Gå til grensesnittalternativer >> I2C >> JA >> trykk enter. dette er aktivere I2c kommunikasjonsprotokoll slik at vi kan bruke RTC

2-Gå til Avanserte alternativer >> Utvid filsystemet.

og det er all konfigurasjonen du trenger fra dette vinduet. på hovedsiden, gå ned og trykk enter på "fullfør" og "JA" for å starte systemet på nytt.

Når systemet er ferdig med å starte på nytt, er vi alle ferdige med å konfigurere! enheten er klar for de store trinnene! Det neste trinnet vil være å installere RTC -modulen og bruke den med systemet.

Trinn 5: Kapittel 2: Montering, konfigurering og bruk av RTC -modulen

Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen
Kapittel 2: Montering, konfigurering og bruk av RTC -modulen

RTC (eller sanntidsklokke) -modul er en liten enhet som har et lite batteri på, den gjør det navnet tilsier, Clocking! så når du kobler den fra strømmen, fortsetter klokken å fungere og stopper ikke. Hvorfor trenger vi dette? Raspberry pi har virkelig ingen metode for å lagre klokkedata når den er slått av, den er avhengig av å koble til internett ved oppstart for å oppdatere dato og klokkeslett, men problemet er at vi ikke alltid har internettilgang, og dette Derfor trenger vi RTC -modulen. RTC vil fungere som en klokke for bringebærpi, så når Rpi er startet vil det ta dato og klokkeslett fra RTC, som vil holde RaspberryPi -tiden oppdatert hele tiden.

det er flere modeller og ser etter RTC, det er DS1307 og DS3231. du kan bruke hvilken som helst RTC -modul du finner så lenge den har I2C -protokollkommunikasjon (du kan indikere at du finner SDA- og SCL -pinner på modulpinnene.

Som alt i denne guiden, brukte jeg andre guider for å oppnå målet mitt i prosjektet. Denne instruktøren vil veilede deg og fortelle deg nøyaktig hva du skal gjøre for å gjøre dette prosjektet, men hvis du trenger å endre eller du trenger mer dybde i noen av trinn, vil jeg koble den mer fruktbare guiden på slutten av hvert trinn.

Når du har fått RTC -modulen klar (lodd toppene og sett på batteriet), kan du koble den til RapberryPi -pinnene som følger:

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

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

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

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

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

eller avhengig av hvilken RTC -modul du har, kan du montere den direkte på RaspberryPi (Pass på at pinnene er riktige !!! da du kan skade Rpi/RTC hvis ikke)

Når du har koblet til RTC, la oss konfigurere bringebæret.

Trinn 6: 2-1: Moduloppsett

2-1: Moduloppsett
2-1: Moduloppsett
2-1: Moduloppsett
2-1: Moduloppsett

Før du starter, gå til kommandolinjen og skriv:

Dato

Dette vil gi gjeldende dato og klokkeslett på bringebæret, notere den meget nyttige kommandoen og notere gjeldende dato og klokkeslett, slik at vi kan sjekke når modulen fungerer eller ikke.

La oss begynne oppsettet, skriv inn følgende for å oppdatere Rpi -bibliotekene, en linje om gangen:

sudo apt-get oppdatering

sudo apt -get -y oppgradering

Når det er gjort, må vi endre systemfiler for å aktivere i2c -modulen og legge til RTC, for å endre et filsystem skal vi bruke en programvare som heter Nano. nano er en lett innebygd programvare som i utgangspunktet er et tekstredigeringsprogram, akkurat som i enker. så enhver kommando som starter med nano etterfulgt av filnavnet, åpner den filen i nano -tekstredigerer. du har lagt merke til at vi også brukte noe som heter Sudo, kort sagt, sudo fungerer som en forsikring for linux -systemet som forteller systemet at brukeren som utførte denne kommandoen er enhetseieren, ikke noen andre, og gir privilegier som redigering/ slette for brukeren. for eksempel hvis vi åpnet en nanofil uten sudo, ville vi kunne se den filen, men vi kan ikke redigere den eller slette den.

nå må vi endre modulfilen, vi kan gjøre dette ved å skrive:

sudo nano /etc /modules

Når du gjør det, finner du innholdet i filen (se bilde). bruk piltastene til å sette markøren på slutten av teksten og legg til følgende:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

Trykk CTRL+S for å lagre, og CTRL+X for å avslutte

Trinn 7: 2-2: I2C-grensesnitt

2-2: I2C-grensesnitt
2-2: I2C-grensesnitt

Nå har vi koblet til RTC og aktivert i2c, la oss koble alt sammen.

skriv inn følgende i ledeteksten:

i2cdetect -y 1

du får en rekke blanke, men du vil legge merke til at det er et tall et sted, det tallet er din RTC -moduladresse. i mitt tilfelle er det 68. legg merke til det tallet. Hvis du ikke ser det tosifrede nummeret, betyr det at du sannsynligvis har koblet RTC feil.

nå må vi endre rc.local -filen slik at vi kan aktivere RTC -modulen ved oppstart og la den lagre dato og klokkeslett i systemet. åpne først rc.local -filen:

sudo nano /etc/rc.local

Legg til følgende før exit0 -linjen:

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

klokka -s

hvor 0x68 er enhetens i2c -adresse. når du er ferdig, trykk CTRL+S CTRL+X, og start deretter systemet på nytt ved å:

sudo omstart

Trinn 8: 2-3: Testing av RTC

2-3: Testing av RTC
2-3: Testing av RTC

Når systemet er startet på nytt, kan vi sjekke om RTC fungerer eller ikke. første forsøk:

sudo hwclock -r

du får tilbake dato og klokkeslett på RTC -modulen. Hvis du har fått noe annet, må du kontrollere at du har utført trinnene riktig.

nå, for å endre klokkeslett og dato på RTC, må vi først endre dato og klokkeslett på systemet, og deretter skrive endringene til RTC. for å gjøre det, kjør:

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

og selvfølgelig, endre dato og klokkeslett i henhold til din lokale tid og dato, før du trykker enter. Når du får tiden til Rpi til høyre, kjører du følgende for å lagre dato og klokkeslett på RTC:

sudo hwclock -w

aaaaand det er det! du kan sjekke om det fungerer med hwclock -r og se om datoen på RTC er riktig eller ikke, deretter koble rpi fra internett og deretter slå den av en stund og deretter slå den på igjen og se om den har riktig tid og dato. du er ferdig!

Full guide til hvordan du konfigurerer RTC -modulen finner du her

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

Trinn 9: Kapittel 3: Lage Azan Alarm Program

Kapittel 3: Lage Azan Alarm Program
Kapittel 3: Lage Azan Alarm Program

Å lage en klokke er en ting, sikkert, vi kan se på klokken og bønnetidene og se når tiden kommer, men det ville ikke vært enda bedre hvis vi kunne legge til en lydalarm for å varsle oss om bønnetider? SELV BEDRE gjør vi den alarmen som lyden av AZAN! la oss se hvordan vi kan oppnå dette.

for vår programmering, kommer vi til å bruke python som vårt foretrukne programmeringsspråk ettersom python passer perfekt med RaspberryPi. For å lage en kodefil i python, gjør vi det samme som å åpne en tekstfil, men nå lagrer vi den som.py. For å kjøre programmet, trenger vi python -miljø installert av raspbery, heldigvis kommer Raspbian med python og python3 forhåndsinstallert! så alt vi trenger å gjøre er å programmere. i denne guiden vil vi ikke snakke om språket og lære hvordan det fungerer og funksjonene, men jeg vil gi deg de nødvendige kodene slik at du kan lage prosjektet.

For å starte trenger vi en lydfil med vår foretrukne azan-lyd (i. WAV), vi trenger to filer, en for al-fajr azan og en annen for vanlig azan. Når du får det, legg det på en stick -stasjon og kopier det på skrivebordet til raspberrypi.

nå har vi filene, jeg var på utkikk etter en måte å spille lydlyder på raspberryPi og til min overraskelse var det ikke mange måter vi kunne gjøre dette på, men jeg fant dette svaret på stackoverflow som ga meg det jeg trengte

stackoverflow.com/questions/20021457/playi…

Jeg testet den metoden og den fungerte! så la oss se hvordan vi kan implementere denne metoden i prosjektet vårt …

Trinn 10: 3-1: La oss spille en lyd

3-1: La oss spille en lyd!
3-1: La oss spille en lyd!

naviger først til skrivebordet etter:

cd Desktop

lag deretter en ny python -kodefil ved å:

sudo nano AzanPlay.py

dette vil lage en ny fil som heter AzanPlay med utvidelsen på en python -fil.py, vi vil ha en tom svart skjerm som lar oss skrive koden vår. bare skriv ned disse linjene (vær forsiktig så du ikke endrer innrykk eller mellomrom, da dette er ekstremt viktig i python):

fra pygame importmikser

mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () mens mixer.music.get_busy () == True: fortsett

Hvor / Desktop / er hvor du legger lydfilene dine, og 'Adhan-Makkah.wav' er min lydfil, som er Azan-lydopptaket i makkah.

nå for å teste koden vår, kjører vi den med python ved å skrive:

python AzanPlay.py

og du får lyden til å visne fra HDMI LCD eller AUX -porten på Raspberrypi. Hvis du ikke hører det fra LCD -høyttalerne, kobler du en hodetelefon til AUX og sjekker.

Trinn 11: 3-2: Få bønnetider

3-2: Få bønnetider
3-2: Få bønnetider

Som vi vet, varierer bønnetider fra et sted på jorden til et annet, og selv for et bestemt sted er det forskjellig gjennom årene, det betyr at vi må finne en måte å holde våre bønnetider i systemet oppdatert hele tiden, og for det trenger vi spesifikke og veldig komplekse funksjoner og beregninger for å få det riktig. Heldigvis har vår bror Hamid Zarrabi-Zadeh gjort alle funksjonene vi trenger til en funksjon som vi enkelt kan bruke til å få tiden avhengig av vår beliggenhet og nåværende tid, FANTASTISK! du finner biblioteket og kildefilene på

praytimes.org/

Så vi kommer til å bruke disse fantastiske filene for å få våre bønnetider og implementere dem i systemet. Last ned kodene fra nettstedet og legg det inn i en / adhan / mappe (vi trenger både JS- og Python -kodene).

nå, la oss gå til den mappen og teste biblioteket, og hva det kan gjøre:

cd adhan

der må vi lage en ny testfil i python, slik at vi kan teste funksjonen:

sudo nano testAd.py

inne, skriv ned denne koden:

importer bønnetid

fra datetime import dato tmm = praytimes. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) print (tmm)

Før du lagrer filen, må du endre LATITUDE med posisjonen din Latitude, det samme med LONGTITUDE, og endre GMT til tidssonen din. i mitt tilfelle vil det være:

tmm = bønnetid. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)

trykk (tmm)

Til slutt, CTRL-S og CTRL-X og kjør deretter koden:

python testAd.py

Til slutt får du tilbedelsestidene dine for i dag, for din beliggenhet.

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

Flott! nå som vi har vår bønnetid og vi nå vet hvordan vi spiller lyder, la oss slå sammen disse to kodene til en hovedkode.

Trinn 12: 3-3: Lag den endelige Azan-alarmkoden

ved å fullføre de to foregående kodene, lærte vi hvordan vi kan få de nøyaktige bønnetidene i henhold til vår beliggenhet og hvordan du spiller Azan -lyden. nå skal vi slå sammen disse to kodene til en kode som vi skal bruke som vårt siste prosjekt, og denne koden vil jobbe med bakgrunnen, som når Azan -tiden kommer, vil den spille Azan -lyden.

Jeg har skrevet hele koden, du kan kopiere den og lime den inn og gjøre dine egne endringer som du finner passende. Koden er:

importtid

fra pygame importmikser import streng import bønnetid fra datetime import dato mens (1): tmm = praytimes. 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 () mens mixer.music.get_busy () == True: fortsett hvis currTime == DHUHR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan- Makkah.wav ') mixer.music.play () mens mixer.music.get_busy () == True: fortsett hvis currTime == ASR: mixer.init () mixer.music.load ('/home/pi/Desktop/ Adhan-Makkah.wav ') mixer.music.play () mens mixer.music.get_busy () == True: fortsett hvis currTime == MAGHRIB: mixer.init () mixer.music.load ('/home/pi/ Desktop/Adhan-Makkah.wav ') mixer.music.play () mens mixer.music.get_busy () == True: fortsett hvis currTime == ISHA: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play () mens mixer.music.get_busy () == True: fortsett

Hvis du ser på koden og sammenligner den med det vi har laget tidligere, vil du se at vi ikke gjorde noe særlig nytt, først inkluderte vi de nødvendige bibliotekene våre, og så åpnet vi en uendelig loop. i løkken, beregner vi konstant bønnetiden med vår plassering og tidssone, og lagrer hele resultatet i variabel tmm. deretter lagrer vi hver bønnetid fra tmm til en uavhengig variabel. som lar oss sammenligne tider. Deretter tar vi systemtiden og lagrer den i en uavhengig variabel. Til slutt fortsetter vi å sammenligne systemtiden med bønnetidene. Hvis systemtiden samsvarer med noen av bønnetider, vil den spille Azan -lyden.

Trinn 13: Kapittel 4: Implementere urskiven

Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven
Kapittel 4: Implementere urskiven

For å få prosjektet til å se bedre ut, hadde jeg ideen om å legge urskiver til LCD -skjermen, så det ser fint ut for brukeren (vel, bedre enn kommandolinjen i det minste), så jeg har ansatt en designer for å designe flere ansikter til klokken, den skal være tom uten data, ettersom dataene skal legges til gjennom HTML, slik at klokkeutformingen blir som bakgrunn, og andre data som bønnetider kan legges til som HTML -elementer på toppen av bakgrunnen.

Dessverre, når jeg skrev denne instruksjonen, er min kunnskap og erfaring med HTML svært begrenset, så jeg vil ikke diskutere mange detaljer fordi jeg vet at jeg vil gjøre ting på en feil måte, og det gjør jeg ikke vil forvirre folk. men hvis du har en liten erfaring med JS og HTML, bør du vite hvordan du skal fortsette fra dette punktet. så langt har jeg laget et enkelt ansikt (det blå). planen er å lage 14 urskiver! 7 ansikter hver dag i uken, og ytterligere 7 som et annet tema. som det første temaet skal være med Azkar -rulling, og det andre temaet skal ha islamske GIFS i stedet for Azkar. Uansett vil jeg inkludere alle designene i denne instruksjonsfulle, slik at du kan laste den ned.

Trinn 14: Kapittel 5: Implementering av et brukergrensesnitt

Kapittel 5: Implementere et brukergrensesnitt
Kapittel 5: Implementere et brukergrensesnitt

I det siste kapitlet av reisen vil vi gjøre noen valgfrie endringer for å gjøre prosjektet enda brukervennlig, hvis vi ønsker å implementere prosjektet i en moské eller et offentlig sted. Som vi sa før, har hver by sin egen tid for bønner, og for å gjøre dette prosjektet tilgjengelig for en bredere gruppe mennesker, vil vi lage et brukergrensesnitt, slik at vi kan velge ønsket by og tema når vi starter prosjektet.

For å gjøre dette, skal vi bruke et python GUI -bibliotek kalt "TKinter".

Dette er koden jeg har implementert for å gi meg muligheten til å velge mellom fem byer i Saudi -Arabia, inkludert Makkah:

importer tkinter som tk

fra tkinter import * fra tkinter import ttk import codecs import os class 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 = Knapp (self, text = "Riyadh", høyde = 5, bredde = 80, kommando = self.open_riyadh1) self.button4 = Knapp (self, text = "Madina", høyde = 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, kolonnespenn = 2, klebrig = W+E+N+S) self.button2.grid (rad = 1, kolonne = 1, kolonnespenn = 2, klebrig = W+E+N+S) self.button3.grid (rad = 2, kolonne = 1, kolonnespenn = 2, klebrig = W+E+N+S) self.button4.grid (rad = 3, kolonne = 1, kolonnespenn = 2, klebrig = W+E+N+S) self.button5.grid (rad = 4, kolonne = 1, kolonnespenn = 2, sticky = 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 (rekkefølge) def open_makkah1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/makkah/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (rekkefølge) def open_riyadh1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (bestill) 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 () hvis _name_ == '_main_': main ()

Koden kan se stor ut, men det er veldig enkelt å redigere den. vi laget i utgangspunktet et nytt vindu, satte fem navneknapper og definerte fem funksjoner som skulle kalles på hvert knappetrykk. Når du trykker på knappen, åpner programmet den tilsvarende HTML -filen i Cities -mappen, som hver by HTML har bykoordinater når den får tiden fra bønnetider (). Når du trykker på knappen, vil python -koden ekskludere en linux -kode der den åpner HTML -filen ved hjelp av kromleseren, og du vil ha urskiven klar til visning, med fullskjermalternativ på.

Trinn 15: (Valgfritt): Legge til en høyttalerbryter

(Valgfritt): Legge til en høyttalerbryter
(Valgfritt): Legge til en høyttalerbryter
(Valgfritt): Legge til en høyttalerbryter
(Valgfritt): Legge til en høyttalerbryter

Som vi så, når bønnen kommer, spilles Azan -lyden, og lyden kommer ut av standard lydutgang (HDMI eller AV -utgang), og siden vi setter den på HDMI -utgang, kommer lyden fra LCD -skjermen. men hva om LCD -lyden vår ikke er nok? for eksempel hva hvis vi ønsker å implementere dette inne i en ekte moske? med brede ytre høyttalere? så kan vi legge til et VELDIG enkelt trinn for å oppnå det. For et allerede bygget høyttalers lydsystem trenger vi bare å slå det PÅ og AV, og ta den allerede eksisterende mikrofonen og sette den ved siden av LCD -høyttalerne.

Det er enkelt å gjøre det. vi vil bruke den eksisterende moskémikrofonen som er koblet til høyttaleren, vi trenger bare raspberryPi for å kontrollere strømmen som slår hele lydsystemet PÅ og AV. For å gjøre det, må vi bruke en SSR: SOLID STATE RELAY. disse typer reléer kan fungere som en bryter, omtrent som det gjennomsnittlige blå reléet, forskjellen er at SSR kan tåle en stor mengde AC -strøm gjennom den, noe som ikke er aktuelt i de blå (vanligvis maks 10A), og SSR -behovene bare to ledninger i stedet for 3: DC+ og DC- og det er det! i den andre enden av SSR kan vi koble høyttalersystemets strømkabel, på den måten, når vi gir spenning til SSR, vil den stenge vekselstrømskretsen til høyttalersystemet, eller vi slår av spenningen for å lage en åpen krets, slå av høyttalerne.

det er en fangst, RaspberryPi -pinnene gir 3.3v, ikke 5v som vi trenger for å kontrollere SSR. så vi trenger en transistor for å ta signalet fra RPi -pinnen, og 5V fra RPi 5v -pinnen. for å gjøre det trenger vi:

1-solid state relé (alt over 25A er bra)

2-2n2222 npn transistor

3-220ohm motstand

følg fritzing -kretsen for tilkobling.

nå i koden, vil vi legge til noen ting som får dette til å fungere. Først, mens while -løkken, legger vi til noen linjer for å initialisere GPIO -pinnene:

I importdelen legger du til:

importer RPi. GPIO som GPIO

Legg til:

GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) relé = 40 GPIO.setup (ledPin, GPIO. OUT)

Nå, i mens -løkken, for hver spill -Azan -kommando, må vi slå på stafetten, vente i 10 sekunder, fullføre avspillingen av Azan og deretter slå av stafetten. vi trenger bare å legge til to linjer, den første er:

GPIO.output (ledPin, GPIO. HIGH)

tid. sover (10)

denne bør legges til etter hver if -setning (IDENTASJON ER VIKTIG!), den andre linjen er:

GPIO.output (ledPin, GPIO. LOW)

Denne bør legges til etter "fortsett" -linjen. det skal se slik ut for hver Azan -tid:

hvis currTime == FAJR:

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

Anbefalt: