Inhoudsopgave:

RaspberryPi islamitische gebeden horloge & alarm - Ajarnpa
RaspberryPi islamitische gebeden horloge & alarm - Ajarnpa

Video: RaspberryPi islamitische gebeden horloge & alarm - Ajarnpa

Video: RaspberryPi islamitische gebeden horloge & alarm - Ajarnpa
Video: Fitbit Versa 2 Smartwatch and Activity Tracker with Alexa 2024, Juni-
Anonim
RaspberryPi islamitische gebeden horloge & alarm
RaspberryPi islamitische gebeden horloge & alarm
RaspberryPi islamitische gebeden horloge & alarm
RaspberryPi islamitische gebeden horloge & alarm

Moslims over de hele wereld hebben elke dag vijf gebeden en elk gebed moet op een bepaald tijdstip van de dag plaatsvinden. vanwege de elliptische manier waarop onze planeet rond de zon beweegt, waardoor de tijden voor op- en ondergang van de zon het hele jaar door verschillen, waardoor ook de gebedstijd wisselvallig is, daarom hebben we een islamitisch horloge nodig om ons moslims te herinneren aan onze gebedstijden elk dag.

Elke moslim heeft een manier om toegang te krijgen tot de dagelijkse gebedstijden via het internet islamitische websites, lokale islamitische kalenders of zelfs via tv, en de meesten van ons hebben islamitische horloge-apparaten die de kenmerken hebben om ons de gebedstijden te geven, evenals gebedsalarmen. Maar wat als we ons eigen gebedshorloge en alarmapparaat zouden maken!

Voordat u aan het project begint te werken, zijn er enkele overwegingen die nuttig voor u kunnen zijn tijdens het lezen van deze Instructable. Ik woon in Saoedi-Arabië, dus sommige van mijn stappen en waarden zullen verschillen van die van jou, en ik zal daar tijdens het werk expliciet op wijzen. Er zijn stappen en afbeeldingen die Arabische woorden kunnen bevatten sinds ik de interface in het Arabisch heb gemaakt, maar ik zal er ook op wijzen hoe je het in het Engels kunt maken, dus laat je helemaal geen zorgen maken over de Arabische woorden in de afbeeldingen, dit project kan gedaan in elke taal (wat geweldig is!:D) Excuseer ook mijn typefouten, want Engels is niet mijn eerste taal.

Op naar ons project! Dit project zal worden opgedeeld in X Major-stappen, die aan het einde van Xth-stap ons project mooi en klaar zullen hebben! De stappen zullen als volgt zijn:

1-Configureren en voorbereiden van de RaspberryPi

2-De RTC-module installeren

3-Het Azan Alarm-programma maken

4-De wijzerplaten implementeren

5-De gebruikersinterface maken en

Zoals bij elk project, moeten we eerst de onderdelen voorbereiden die we nodig hebben. de onderdelen die we nodig hebben voor dit project zijn:

1-RaspberryPi Computerkit Amazon VS || Amazon KSA

Je kunt elke Rpi-versie gebruiken, zorg er alleen voor dat deze wifi heeft. Ik gebruikte Rpi3B+

2-RTC Realtime klokmodule Amazon US || Amazon KSA

U kunt elk RTC-modulemodel gebruiken, zorg er gewoon voor dat het I2C heeft

3-LCD-monitor

Elk LCD-scherm is voldoende!

4-muis en toetsenbord

en dat is het!! Dat is alles wat je nodig hebt om je eigen Azan-klok en alarm te maken

Stap 1: Hoofdstuk 1: Instellen en configureren van de RaspberryPI

Hoofdstuk 1: Instellen en configureren van de RaspberryPI
Hoofdstuk 1: Instellen en configureren van de RaspberryPI

Eerste dingen eerst! We moeten de Raspberry pi voorbereiden om ermee te kunnen werken.

Raspberry pi is niets anders dan een computer, het heeft RAM en ROM, het heeft een CPU, GPU, I/O……. Een computer! net als degene waar we games op spelen en waarmee we op internet surfen, alleen het belangrijkste is dat het erg klein is! wat de framboos een zeer goede keuze maakt voor het maken en uitvoeren van projecten op. omdat de raspberry pi klein is, heeft hij zeer beperkte specificaties dat hij geen groot, veeleisend besturingssysteem zoals Windows of macOS kan bedienen, in plaats daarvan gaan we Linux als besturingssysteem gebruiken om het apparaat te gebruiken. er zijn duizenden, zo niet tienduizenden Linux-distro's die we zouden kunnen gebruiken, maar één perfecte distro is perfect geoptimaliseerd voor de raspberrypi die we gaan gebruiken, genaamd Raspbian.

Stap 2: 1-1: Download de benodigde bestanden

1-1: Download de benodigde bestanden
1-1: Download de benodigde bestanden
1-1: Download de benodigde bestanden
1-1: Download de benodigde bestanden
1-1: Download de benodigde bestanden
1-1: Download de benodigde bestanden

-Ga naar de officiële Rasbian-downloadpagina op https://www.raspberrypi.org/software/operating-sy… en download het Raspberry Pi-besturingssysteem met desktopbestand

-Ga tijdens het downloaden naar https://win32diskimager.org/ en download en installeer win32DiskImager, je kunt elke gewenste software voor het branden van afbeeldingen gebruiken

zodra de download is voltooid, heb je een.img-bestand met het RaspberryPi-besturingssysteem. steek vervolgens uw SD-geheugenkaart in de computer (meestal met een USB-kaartlezer) en start de win32diskimager-software. de stappen voor het branden van de afbeelding in het SD-geheugen zijn heel eenvoudig, u hoeft alleen maar 1- Selecteer uw geheugenletter 2-selecteer uw OS-bestanden die u hebt gedownload en 3-Klik op schrijven! Zorg ervoor dat je de juiste apparaatletter uit de lijst hebt geselecteerd en dat je geheugen leeg is, want als je op schrijven drukt, krijg je een waarschuwing dat alles op het apparaat wordt gewist! Druk op ja om het schrijven te bevestigen en wacht tot het klaar is. dit kan tot 20 minuten duren.

Als het klaar is, heb je het volledige Rapbian-besturingssysteem in het geheugen, je kunt doorgaan en het in de Rapberry Pi plaatsen, de Raspberry Pi via HDMI op de monitor aansluiten, de muis en het toetsenbord via USB aansluiten en tot slot de stroom.

Stap 3: 1-2: Het Raspbian-systeem configureren

Nadat u de kabels en de stroom hebt aangesloten, ziet u dat het besturingssysteem is ingeschakeld, het zal automatisch opnieuw opstarten en vervolgens wordt de Raspbian-gebruikersinterface weergegeven (die lijkt op Windows). het eerste dat u ziet, is een welkomstvenster, dat u door de stappen leidt om uw RaspberryPi voor de eerste keer te configureren. de vensters en stappen zijn als volgt:

1-Druk op volgende in het eerste "Welkom"-venster

2-Volgend venster zal zijn om uw locatie te configureren. selecteer uw land, taal en tijdzone. daarna wordt het ten zeerste aanbevolen om "Gebruik Engelse taal" aan te vinken, aangezien dit de interfacetaal van het besturingssysteem zal zijn. JE MOET DE "US ENGLISH KEYBOARD LAYOUT BOX" CONTROLEREN. WE HEBBEN ENGELS TOETSENBORD NODIG OM TE WERKEN!

3-Vervolgens wordt u gevraagd een wachtwoord in te voeren voor uw Raspberry, dit is belangrijk voor de veiligheid, maar we laten dit voor dit project ongewijzigd. merk op dat de standaard gebruikersnaam en wachtwoord zijn:

gebruikersnaam:pi

wachtwoord:framboos

4-Volgende venster zal de raspberryPi verbinden met uw WiFi-netwerk. selecteer je wifi-naam en voer je wifi-wachtwoord in

5-vervolgens wordt u gevraagd om de raspberry pi-bibliotheken en systeembestanden bij te werken. deze stap zal enorm veel tijd in beslag nemen (misschien in uren), maar het is een zeer belangrijke stap voor elke keer dat een nieuwe Raspberry Pi wordt ingesteld.

6- zodra de update is voltooid, wordt u gevraagd het systeem opnieuw op te starten. doe dat nu.

Goed gedaan! Nu we een bijgewerkt systeem hebben, moeten we nog wat meer dingen doen om het systeem te configureren om te werken, maar nu zullen we de Linux-opdrachtregel gaan gebruiken.

Stap 4: 1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen

1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen
1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen
1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen
1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen
1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen
1-3:De opdrachtregel gebruiken om Rpi-instellingen in te stellen

Zodra u klaar bent met opnieuw opstarten vanaf de systeemupdate, toont het systeem het bureaublad van de gebruiker zodra het opstarten is voltooid. als je nu naar de linkerbovenhoek van het scherm kijkt, vind je enkele knoppen, een knop met het raspberryPi-logo, de Rpi-menuknop, een wereldbolvorm die de internetbrowser is, een mappenknop die … mappen is en tot slot een knop met een zwart schermvenster, de belangrijkste knop in elk Linux-systeem, de opdrachtregel. ga je gang en druk op die knop, je ziet een zwart venster verschijnen.

De opdrachtregel is hoe iedereen met elkaar omgaat en het linux-systeem gebruikt, net zoals Windows zijn eigen opdrachtregel heeft, alleen in weduwen hoeven we die niet vaak te gebruiken. in linux is dit het basisding dat elke linux-gebruiker moet leren en beheersen. de opdrachtregel kan worden gebruikt door …. COMMANDO'S! wat u in het zwarte venster ziet, is de opdrachtprompt die wacht tot de opdracht door de gebruiker is geschreven en uitgevoerd. in deze gids zullen we alle commando's geven die je nodig hebt om dit project uit te voeren, dus maak je geen zorgen.

het allereerste Linux-commando dat we gaan gebruiken is een ander configuratiecommando, merk op dat alle commando's vanaf nu in een codevak worden geplaatst, zodat je het kunt onderscheiden van reguliere stappen. Neem je toetsenbord mee en typ het volgende en druk op enter:

sudo raspi-config

Als je dat goed doet, zie je dat het scherm blauw is geworden, met een grijs vakje in het midden (zie afbeelding). we zullen dat gebruiken om onze definitieve configuratie te maken voordat we beginnen met coderen.

nu moet je de pijltjestoetsen op het toetsenbord gebruiken om door dit menu te navigeren.

1-Ga naar Interface-opties >> I2C >> JA >> druk op enter. dit is het inschakelen van het I2c-communicatieprotocol, zodat we de RTC. kunnen gebruiken

2-Ga naar Geavanceerde opties >> Breid bestandssysteem uit.

en dat is alle configuratie die je nodig hebt vanuit dit venster. op de hoofdpagina, ga naar beneden en druk op enter op "voltooien" en "JA" om het systeem opnieuw op te starten.

Zodra het systeem opnieuw is opgestart, zijn we allemaal klaar met configureren! het toestel is klaar voor de grote stappen! De volgende stap is het installeren van de RTC-module en deze gebruiken met het systeem.

Stap 5: Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module

Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module
Hoofdstuk 2: Montage, configuratie en gebruik van de RTC-module

RTC (of Real-Time Clock) module is een klein apparaatje met een kleine batterij erop, het doet wat de naam al aangeeft, Clocking! dus wanneer u de stekker uit het stopcontact haalt, blijft de klok werken en stopt niet. Waarom hebben we dit nodig? wel, de raspberry pi heeft echt geen methode om klokgegevens op te slaan als hij eenmaal is uitgeschakeld, hij vertrouwt op verbinding met internet bij het opstarten om de datum en tijd bij te werken, maar het probleem is dat we niet altijd internettoegang hebben, en dit daarom hebben we de RTC-module nodig. de RTC zal fungeren als een klok voor de raspberry pi, dus zodra de Rpi is opgestart, zal het de datum en tijd van de RTC nemen, waardoor de RaspberryPi-tijd de hele tijd wordt bijgewerkt.

er zijn meerdere modellen en looks voor de RTC, er zijn de DS1307 en DS3231. u kunt elke RTC-module gebruiken die u vindt, zolang deze I2C-protocolcommunicatie heeft (u kunt aangeven dat u SDA- en SCL-pinnen op de modulepinnen kunt vinden.

zoals alles in deze gids, heb ik andere handleidingen gebruikt om mijn doel in het project te bereiken, deze instructable zal je begeleiden en je precies vertellen wat je moet doen om dit project te maken, maar als je moet wijzigen of meer diepgang nodig hebt in een van de stappen, zal ik de meer vruchtbare gids aan het einde van elke stap koppelen.

Zodra u uw RTC-module gereed hebt (soldeer de header-pinnen en plaats de batterij), kunt u deze als volgt op de RapberryPi-pinnen aansluiten:

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

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

Vcc============> PIN 1 (3,3 V)

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

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

of afhankelijk van welke RTC-module je hebt, kun je deze direct op de RaspberryPi monteren (zorg ervoor dat de pinnen correct zijn!!!, anders zou je de Rpi/RTC kunnen beschadigen)

Nadat u de RTC hebt aangesloten, gaan we de Raspberry configureren.

Stap 6: 2-1: Module-instelling

2-1: Module-instelling
2-1: Module-instelling
2-1: Module-instelling
2-1: Module-instelling

Ga voordat je begint naar de opdrachtregel en typ:

datum

Dit geeft de huidige datum en tijd op de Raspberry terug, noteer dat zeer nuttige commando en noteer de huidige datum en tijd zodat we kunnen controleren of de module werkt of niet.

laten we nu beginnen met de installatie, typ het volgende om de Rpi-bibliotheken regel voor regel bij te werken:

sudo apt-get update

sudo apt-get -y upgrade

zodra dat is gebeurd, moeten we systeembestanden wijzigen om de i2c-module in te schakelen en RTC toevoegen, om een bestandssysteem te wijzigen, gaan we software gebruiken genaamd Nano. nano is een lichte ingebouwde software die in feite een teksteditor is, net als die in weduwen. dus elke opdracht die begint met nano gevolgd door de bestandsnaam, opent dat bestand in nano-teksteditor. je hebt gemerkt dat we ook iets hebben gebruikt dat Sudo heet, kortom, sudo werkt als een garantie voor het linux-systeem dat het systeem vertelt dat de gebruiker die die opdracht heeft gegeven de apparaateigenaar is, niet iemand anders, en privileges geeft zoals bewerken/ verwijderen voor de gebruiker. als we bijvoorbeeld een nano-bestand zonder sudo zouden openen, zouden we dat bestand kunnen bekijken, maar we kunnen het niet bewerken of verwijderen.

nu moeten we het modulebestand wijzigen, we kunnen dit doen door te typen:

sudo nano /etc/modules

zodra je dat doet, vind je de inhoud van dat bestand (zie foto). gebruik de pijltjestoetsen om de cursor aan het einde van de tekst te plaatsen en voeg het volgende toe:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

druk op CTRL+S om op te slaan en op CTRL+X om af te sluiten

Stap 7: 2-2: I2C-interface

2-2: I2C-interface
2-2: I2C-interface

Nu we de RTC hebben aangesloten en i2c hebben ingeschakeld, laten we alles met elkaar verbinden.

typ het volgende in de opdrachtprompt:

i2cdetect -y 1

je krijgt een reeks lege plekken, maar je zult merken dat er ergens een nummer is, dat nummer is het adres van je RTC-module. in mijn geval is het 68. noteer dat nummer. als u dat tweecijferige nummer niet ziet, betekent dit dat u waarschijnlijk de RTC verkeerd hebt aangesloten.

nu moeten we het rc.local-bestand wijzigen, zodat we de RTC-module bij het opstarten kunnen inschakelen en de datum en tijd in het systeem kunnen opslaan. Open eerst het bestand rc.local:

sudo nano /etc/rc.local

Voeg vóór de exit0-regel het volgende toe:

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

hwclock -s

waarbij 0x68 het i2c-adres van uw apparaat is. als je klaar bent, druk je op CTRL+S CTRL+X en start je je systeem opnieuw op door:

sudo reboot

Stap 8: 2-3: De RTC testen

2-3: De RTC. testen
2-3: De RTC. testen

Zodra het systeem opnieuw is opgestart, kunnen we controleren of de RTC werkt of niet. eerste loop:

sudo hwclock -r

u krijgt de datum en tijd terug op de RTC-module. als je iets anders krijgt, zorg er dan voor dat je de stappen correct hebt uitgevoerd.

nu, om de tijd en datum op de RTC te wijzigen, moeten we eerst de datum en tijd op het systeem wijzigen, DAARNA de wijzigingen in de RTC aanbrengen. voer hiervoor uit:

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

en natuurlijk, verander de datum en tijd in overeenstemming met uw lokale tijd en datum, voordat u op enter drukt. zodra u de tijd op de Rpi goed hebt, voert u het volgende uit om de datum en tijd op de RTC op te slaan:

sudo hwclock -w

aaaah dat is het! je kunt controleren of het werkt door hwclock -r en kijken of de datum op de RTC correct is of niet, dan de rpi loskoppelen van internet en dan een tijdje uitschakelen en dan weer aanzetten en kijken of het de juiste heeft tijd en datum. u bent klaar!

Volledige gids over het instellen van de RTC-module vindt u hier

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

Stap 9: Hoofdstuk 3: Het Azan-alarmprogramma maken

Hoofdstuk 3: Het Azan-alarmprogramma maken
Hoofdstuk 3: Het Azan-alarmprogramma maken

een horloge maken is één ding, zeker, we kunnen naar de klok en de gebedstijden kijken en zien wanneer de tijd komt, maar zou niet eens VEEL beter zijn als we een geluidsalarm zouden kunnen toevoegen om ons op de hoogte te stellen van de gebedstijden? NOG BETER, we maken dat alarm als het geluid van AZAN! laten we eens kijken hoe we dit kunnen bereiken.

voor onze programmering gaan we python gebruiken als onze favoriete programmeertaal, aangezien python perfect samengaat met RaspberryPi. om een codebestand in python te maken, doen we hetzelfde als het openen van een tekstbestand, maar nu slaan we het op als.py. om het programma uit te voeren, hebben we de python-omgeving van de raspbery nodig, gelukkig wordt Raspbian geleverd met python en python3 vooraf geïnstalleerd! dus alles wat we hoeven te doen is programmeren. in deze gids zullen we niet praten over de taal en leren hoe het werkt en de functies, maar ik zal je de nodige codes geven zodat je het project kunt maken.

om te beginnen hebben we een geluidsbestand nodig van ons favoriete azan-geluid (in. WAV) we hebben twee bestanden nodig, een voor al-fajr azan en een andere voor gewone azan. als je dat eenmaal hebt, zet je het op een stick en kopieer je het naar het bureaublad van de raspberrypi.

nu hebben we de bestanden, ik was op zoek naar een manier om geluidsaudio af te spelen op de raspberryPi en tot mijn verbazing waren er niet veel manieren waarop ik dit kon doen, maar ik vond dit antwoord op stackoverflow dat me gaf wat ik nodig had

stackoverflow.com/questions/20021457/playi…

ik heb die methode getest en het werkte! dus laten we eens kijken hoe we deze methode in ons project kunnen implementeren …

Stap 10: 3-1: Laten we een geluid spelen

3-1: Laten we een geluid spelen!
3-1: Laten we een geluid spelen!

Navigeer eerst naar het bureaublad door:

cd-bureaublad

maak vervolgens een nieuw python-codebestand door:

sudo nano AzanPlay.py

dit zal een nieuw bestand maken met de naam AzanPlay met de extensie op een python-bestand.py, we zullen een leeg zwart scherm hebben zodat we onze code kunnen schrijven. schrijf gewoon deze regels op (pas op dat u geen inspringing of spaties wijzigt, want dit is UITERST belangrijk in python):

van pygame import mixer

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

Waar /Desktop/ is waar je je geluidsbestanden plaatst, en 'Adhan-Makkah.wav' is mijn audiobestand, dat is de Azan-geluidsopname in mekka.

om onze code nu te testen, voeren we deze uit met python door te typen:

python AzanPlay.py

en je zult het geluid van je HDMI-LCD of je AUX-poort op de Raspberrypi laten verdwijnen. als u het niet uit de LCD-luidsprekers hoort, sluit dan een hoofdtelefoon aan op de AUX en controleer.

Stap 11: 3-2: Ontvang gebedstijden

3-2: Gebedstijden ophalen
3-2: Gebedstijden ophalen

Zoals we weten, verschillen gebedstijden van de ene plaats op aarde tot de andere, en zelfs voor een specifieke locatie verschilt het door de jaren heen, dat betekent dat we een manier moeten vinden om onze gebedstijden in het systeem de hele tijd up-to-date te houden, en daarvoor hebben we specifieke en zeer complexe functies en berekeningen nodig om het goed te doen. Gelukkig heeft onze broer Hamid Zarrabi-Zadeh alle functies die we nodig hebben in één functie gemaakt die we gemakkelijk kunnen gebruiken om de tijd te krijgen, afhankelijk van onze locatie en huidige tijd, GEWELDIG! je kunt de bibliotheek en bronbestanden vinden op

praytimes.org/

Dus we gaan deze geweldige bestanden gebruiken om onze gebedstijden te krijgen en deze in het systeem te implementeren. download eerst de codes van de website en plaats deze in een /adhan/-map (we hebben zowel de JS- als de Python-codes nodig).

Laten we nu naar die map gaan en de bibliotheek testen, en wat het kan doen:

cd adhaan

daar moeten we een nieuw testbestand in python maken, zodat we de functie kunnen testen:

sudo nano testAd.py

binnenin, schrijf deze code op:

import gebedstijden

van datetime importdatum tmm = praytimes. PrayTimes().getTimes(date.today(), [LONGTITUDE, LATITUDE], GMT) print(tmm)

Voordat u het bestand opslaat, moet u LATITUDE wijzigen met uw locatie Latitude, hetzelfde met LONGTITUDE, en GMT wijzigen in uw tijdzone. in mijn geval zal het zijn:

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

afdrukken (tmm)

Ten slotte, CTRL-S en CTRL-X en voer vervolgens de code uit:

python testAd.py

ten slotte krijgt u uw gebedstijden voor vandaag terug voor uw locatie.

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

Super goed! nu we onze gebedstijd hebben en we nu weten hoe we geluiden moeten spelen, laten we deze twee codes samenvoegen tot één hoofdcode.

Stap 12: 3-3: De definitieve Azan-alarmcode maken

door de vorige twee codes af te ronden, leerden we hoe we de juiste gebedstijden kunnen krijgen op basis van onze locatie en hoe we het Azan-geluid kunnen spelen. nu gaan we deze twee codes samenvoegen tot één code die we gaan gebruiken als ons laatste project, en deze code zal op de achtergrond werken, want wanneer de Azan-tijd komt, zal het het Azan-geluid spelen.

Ik heb de hele code geschreven, je kunt het kopiëren en plakken, en je eigen wijzigingen aanbrengen zoals je wilt. De code is:

import tijd

from pygame import mixer import string import prayertimes van datetime import date while (1): tmm = praytimes. PrayTimes().getTimes(date.today(), [21.3236, 39.1022], 3) FAJR=tmm['fajr'] DHUHR =tmm['isha'] 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() == True: doorgaan als currTime == DHUHR: mixer.init() mixer.music.load('/home/pi/Desktop/Adhan- Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: doorgaan als currTime == ASR: mixer.init() mixer.music.load('/home/pi/Desktop/ Adhan-Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: doorgaan als currTime == MAGHRIB: mixer.init() mixer.music.load('/home/pi/ Desktop/Adhan-Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: doorgaan als currTime == ISHA: mixer.init() mixer.music.load('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: doorgaan

Als je naar de code kijkt en deze vergelijkt met wat we eerder hebben gemaakt, zul je zien dat we niet veel nieuws hebben gedaan. Eerst hebben we onze benodigde bibliotheken toegevoegd en daarna hebben we een oneindige lus geopend. in de loop berekenen we constant de gebedstijd met onze locatie en tijdzone, en slaan we het hele resultaat op in variabele tmm. dan slaan we elke gebedstijd van tmm op in een onafhankelijke variabele. dat stelt ons in staat om tijden te vergelijken. vervolgens nemen we de systeemtijd en slaan deze op in een onafhankelijke variabele. ten slotte blijven we de systeemtijd vergelijken met de gebedstijden, als de systeemtijd overeenkomt met een van de gebedstijden, wordt het Azan-geluid afgespeeld.

Stap 13: Hoofdstuk 4: De wijzerplaten implementeren

Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren
Hoofdstuk 4: De wijzerplaten implementeren

Om het project er beter uit te laten zien, kwam ik op het idee om wijzerplaten aan het LCD-scherm toe te voegen, zodat het er goed uitziet voor de gebruiker (nou ja, beter dan de opdrachtregel in ieder geval), dus ik heb een ontwerper ingehuurd om meerdere gezichten te ontwerpen om het horloge, het zou leeg moeten zijn zonder gegevens, omdat de gegevens moeten worden toegevoegd via HTML, waardoor de horlogeontwerpen als achtergrond worden gemaakt, en de andere gegevens zoals gebedstijden kunnen als HTML-elementen bovenop de achtergrond worden toegevoegd.

Helaas is mijn kennis en ervaring in HTML op het moment van schrijven van deze instructiebekwaamheid zeer beperkt, dus ik zal niet veel details bespreken, omdat ik zeker weet dat ik dingen op een verkeerde manier zal doen, en dat doe ik niet mensen willen verwarren. maar als je ook maar een beetje ervaring hebt met JS en HTML, zou je moeten weten hoe je vanaf dit punt verder moet. tot nu toe heb ik een enkel gezicht gemaakt (de blauwe). het plan is om 14 wijzerplaten te maken! 7 gezichten voor elke dag van de week, en nog eens 7 als een ander thema. aangezien het eerste thema hoort te zijn met Azkar aan het rollen, en het andere thema zou islamitische GIFS moeten hebben in plaats van de Azkar. hoe dan ook, ik zal alle ontwerpen in deze instructable opnemen, zodat je het kunt downloaden.

Stap 14: Hoofdstuk 5: Een gebruikersinterface implementeren

Hoofdstuk 5: Een gebruikersinterface implementeren
Hoofdstuk 5: Een gebruikersinterface implementeren

In het laatste hoofdstuk van onze reis zullen we enkele optionele wijzigingen aanbrengen om het project nog gebruiksvriendelijker te maken, voor het geval we het project in een moskee of een openbare plaats willen implementeren. zoals we eerder zeiden, heeft elke stad zijn eigen timing voor de gebeden, en om dit project toegankelijk te maken voor een grotere groep mensen, zullen we een gebruikersinterface maken zodat we onze gewenste stad en thema kunnen selecteren zodra we het project aanzetten.

Om dit te doen, gaan we een python GUI-bibliotheek gebruiken met de naam "TKinter".

Dit is de code die ik heb geïmplementeerd om me de keuze te geven tussen vijf steden in Saoedi-Arabië, waaronder Mekka:

importeer tkinter als tk

from tkinter import * from 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", width = 80, command = self.open_jeddah1) self.button2 = Button(self, text = "Makkah", width = 80, command = self.open_makkah1) self.button3 = Button(self, text = "Riyadh", width = 80, command = self.open_riyadh1) self.button4 = Button(self, text = "Madina", width = 80, command = self.open_madina1) self.button5 = Button(self, text = "Qasim", width = 80, command = self.open_qasaim1) self.button1.grid(rij = 0, kolom = 1, columnspan = 2, sticky = W+E+N+S) self.button2.grid(rij = 1, kolom = 1, columnspan = 2, sticky = W+E+N+S) self.button3.grid(rij = 2, kolom = 1, kolomspan = 2, kleverig = W+E+N+S) self.button4.grid(rij = 3, kolom = 1, kolomspan = 2, kleverig = W+E+N+S) self.button5.grid(rij = 4, kolom = 1, columnspan = 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(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(order)) 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() if _name_ == '_main_': main()

De code ziet er misschien groot uit, maar het bewerken ervan is heel eenvoudig. we hebben in feite een nieuw venster gemaakt, vijf naamknoppen geplaatst en vijf functies gedefinieerd die bij elke druk op de knop moeten worden opgeroepen. zodra u op de knop drukt, zal het programma het overeenkomstige HTML-bestand openen in de map Steden, waarvan elke stads-HTML de stadscoördinaten heeft wanneer het de tijd krijgt van praytimes(). zodra u op de knop drukt, voert de python-code een linux-code uit waarin het het HTML-bestand opent met behulp van de chroombrowser, en u heeft de wijzerplaat klaar om weer te geven, met de optie voor volledig scherm aan.

Stap 15: (Optioneel): Een luidsprekerschakelaar toevoegen

(Optioneel): Een luidsprekerschakelaar toevoegen
(Optioneel): Een luidsprekerschakelaar toevoegen
(Optioneel): Een luidsprekerschakelaar toevoegen
(Optioneel): Een luidsprekerschakelaar toevoegen

Zoals we zagen, wanneer de gebedstijd komt, wordt het Azan-geluid afgespeeld en komt het geluid uit de standaard geluidsuitvoer (HDMI- of AV-uitvoer) en aangezien we het op HDMI-uitvoer zetten, komt het geluid van het LCD-scherm. maar wat als ons LCD-geluid niet genoeg is? wat als we dit bijvoorbeeld in een echte moskee willen implementeren? met brede buitenspeakers? dan kunnen we nog een HEEL gemakkelijke stap toevoegen om dat te bereiken. voor een reeds gebouwd luidsprekersysteem hoeven we het alleen maar AAN en UIT te zetten en de reeds bestaande microfoon te nemen en deze naast de LCD-luidsprekers te plaatsen.

Dit is eenvoudig. we zullen de reeds bestaande moskeemicrofoon gebruiken die is aangesloten op de luidspreker, we hebben alleen de raspberryPi nodig om de stroom te regelen die het hele geluidssysteem AAN en UIT schakelt. om dit te doen, moeten we een SSR gebruiken: SOLID STATE RELAY. dit soort relais kan fungeren als een schakelaar, net als het gemiddelde blauwe relais, het verschil is dat SSR's een grote hoeveelheid AC-stroomsterkte kunnen weerstaan, wat niet van toepassing is in de blauwe (meestal max. 10A), en de SSR's nodig hebben slechts twee draden in plaats van 3: DC+ en DC- en dat is alles! aan het andere uiteinde van de SSR kunnen we de voedingskabel van het luidsprekersysteem aansluiten, op die manier, wanneer we spanning aan de SSR geven, zal het het AC-circuit van het luidsprekersysteem sluiten, of we sluiten de spanning af om een open circuit te maken, het uitschakelen van de luidsprekers.

er is één addertje onder het gras, de RaspberryPi-pinnen geven 3.3v af, niet 5v die we nodig hebben om de SSR te besturen. dus we hebben een transistor nodig om het signaal van de RPi-pin te nemen, en 5V van de RPi 5v-pin. daarvoor hebben we nodig:

1-Solid State Relay (alles boven 25A is goed)

2-2n2222 npn-transistor

3-220ohm weerstand

volg het fritzing-circuit voor verbinding.

nu in de code, zullen we wat dingen toevoegen die dit laten werken. eerst zullen we vóór de while-lus enkele regels toevoegen om de GPIO-pinnen te initialiseren:

Voeg in de importsectie toe:

importeer RPi. GPIO als GPIO

Voeg vóór de while-lus toe:

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

Nu, in de while-lus, moeten we voor elk Azan-commando het relais inschakelen, 10 seconden wachten, het afspelen van de Azan beëindigen en dan het relais uitschakelen. we hoeven maar twee regels toe te voegen, de eerste is:

GPIO.output (ledPin, GPIO. HIGH)

tijd.slaap(10)

deze moet worden toegevoegd na elke if-instructie (IDENTATIE IS BELANGRIJK!), de andere regel is:

GPIO.output (ledPin, GPIO. LOW)

Deze moet worden toegevoegd na de regel "doorgaan". het zou er voor elke Azan-tijd zo uit moeten zien:

if currTime == FAJR:

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

Aanbevolen: