Tartalomjegyzék:

RaspberryPi iszlám imaóra és riasztás: 15 lépés (képekkel)
RaspberryPi iszlám imaóra és riasztás: 15 lépés (képekkel)

Videó: RaspberryPi iszlám imaóra és riasztás: 15 lépés (képekkel)

Videó: RaspberryPi iszlám imaóra és riasztás: 15 lépés (képekkel)
Videó: Giga Mikaberidze - Es Zgva Rom Shavia (BMW X5M vs ML63) 2024, Június
Anonim
RaspberryPi iszlám imák Watch & Alarm
RaspberryPi iszlám imák Watch & Alarm
RaspberryPi iszlám imák Watch & Alarm
RaspberryPi iszlám imák Watch & Alarm

A muszlimok világszerte öt imát tartanak minden nap, és minden imádkozásnak a nap egy bizonyos időpontjában kell történnie. mivel a bolygónk elliptikus módon mozog a Nap körül, ami miatt a nap felkelő és leeső időzítései évről évre eltérőek, emiatt az imaidő is inkonzisztens, ezért iszlám órára van szükségünk, hogy emlékeztessen bennünket a muszlimokra imádságunk idején nap.

Minden muszlimnak módja van az internetes iszlám weboldalakon, a helyi iszlám naptárakon vagy akár a TV -n keresztül elérni a napi imádkozási időjárást, és a legtöbbünk rendelkezik iszlám órás eszközökkel, amelyek az imaidőt megadják, valamint az ima riasztásokat. De mi van, ha saját imaórát és ébresztőeszközt készítünk!

Mielőtt elkezdené a projekt kidolgozását, néhány olyan megfontolás van, amely hasznos lehet az Ön számára, amikor elolvassa ezt az Utasítást. Szaúd -Arábiában élek, így egyes lépéseim és értékeim eltérnek a tiédtől, és a munka során kifejezetten rámutatok ezekre. Vannak lépések és képek, amelyek arab szavakat is tartalmazhatnak, mivel a felületet arabul készítettem, de rámutatok arra is, hogyan kell angolul elkészíteni, így ne hagyja, hogy a képeken szereplő arab szavak egyáltalán aggasztják Önt, ez a projekt bármilyen nyelven elkészítve (ami fantasztikus!: D) Ezenkívül elnézést a gépelési hibákért, mivel az angol nem az első nyelvem.

Irány a projektünk! Ez a projekt X fő lépésre oszlik, amelyek az X. lépés végére szépen és készen állnak a projektünkre! A lépések a következők lesznek:

1-A RaspberryPi konfigurálása és előkészítése

2-Az RTC modul telepítése

3-Az Azan Alarm program elkészítése

4-Az óralapok megvalósítása

5-A felhasználói felület létrehozása és

Mint minden projektnél, először is elő kell készítenünk a szükséges alkatrészeket. A projekthez szükséges alkatrészek a következők:

1-RaspberryPi Számítógép-készlet Amazon USA || Amazon KSA

Bármilyen Rpi verziót használhat, csak győződjön meg róla, hogy van Wifi. Rpi3B+ -ot használtam

2-RTC Valós idejű óra modul Amazon USA || Amazon KSA

Bármilyen RTC modulmodell használható, csak győződjön meg róla, hogy rendelkezik I2C -vel

3-LCD monitor

Bármilyen LCD megteszi

4-egér és billentyűzet

és ez az!! Mindössze annyit kell tennie, hogy saját Azan órát és ébresztőt készítsen

1. lépés: 1. fejezet: A RaspberryPI beállítása és konfigurálása

1. fejezet: A RaspberryPI beállítása és konfigurálása
1. fejezet: A RaspberryPI beállítása és konfigurálása

Először is! Fel kell készítenünk a Raspberry pi -t, hogy dolgozhassunk vele.

A Raspberry pi nem más, mint egy számítógép, van RAM és ROM, CPU, GPU, I/O ……. A számítógép! csakúgy, mint amin játszunk és böngészünk az interneten, csak az a lényeg, hogy nagyon kicsi! ami a málnát nagyon jó választássá teszi projektek készítéséhez és megvalósításához. mivel a málna pi kicsi, nagyon korlátozott specifikációkkal rendelkezik, hogy nem tud nagy igényes operációs rendszert működtetni, mint például a Windows vagy a MacOS, ehelyett Linuxot fogunk használni operációs rendszerként az eszköz használatához. több ezer, ha nem tízezer Linux disztribúciót tudunk használni, de egy tökéletes disztró tökéletesen optimalizálva van a Raspbian nevű raspberrypi számára.

2. lépés: 1-1: Töltse le a szükséges fájlokat

1-1: Töltse le a szükséges fájlokat
1-1: Töltse le a szükséges fájlokat
1-1: Töltse le a szükséges fájlokat
1-1: Töltse le a szükséges fájlokat
1-1: Töltse le a szükséges fájlokat
1-1: Töltse le a szükséges fájlokat

-Menjen a hivatalos Rasbian Letöltés oldalra a https://www.raspberrypi.org/software/operating-sy… címen, és töltse le a Raspberry Pi OS with Desktop fájlt

-Amíg letöltődik, menjen a https://win32diskimager.org/ oldalra, és töltse le és telepítse a win32DiskImager programot, bármilyen tetszőleges képíró szoftvert használhat.

a letöltés befejezése után lesz egy.img fájlja, amely tartalmazza a RaspberryPi operációs rendszert. Ezután csatlakoztassa az SD memóriakártyát a számítógéphez (általában USB -kártyaolvasóval), és indítsa el a win32diskimager szoftvert. a lépések a kép SD-memóriába írásához nagyon egyszerűek, csak 1- Válassza ki a memória betűjét 2-válassza ki a letöltött operációs rendszer fájljait és 3-kattintással írja! Győződjön meg arról, hogy a megfelelő eszközbetűt választotta ki a listából, és a memóriája üres, mivel az írás megnyomásával figyelmeztetésben részesül, amely azt jelzi, hogy az eszközön lévő adatok törlődnek! Nyomja meg az igent az írás megerősítéséhez, és várja meg, amíg befejeződik. ez akár 20 percet is igénybe vehet.

Ha elkészült, akkor a teljes Rapbian operációs rendszer a memóriában lesz, és mehet a Rapberry Pi -be, csatlakoztathatja a Raspberry Pi -t a monitorhoz HDMI -n keresztül, csatlakoztathatja az egeret és a billentyűzetet USB -n keresztül, és végül csatlakoztassa a erő.

3. lépés: 1-2: A Raspbian rendszer konfigurálása

A kábelek és a tápellátás csatlakoztatása után látni fogja, hogy az operációs rendszer be van kapcsolva, automatikusan újraindul, majd megjeleníti a Raspbian felhasználói felületet (amely hasonlít az ablakokhoz). az első dolog, amit látni fog, egy üdvözlő ablak, amely végigvezeti Önt a RaspberryPi első konfigurálásának lépésein. az ablakok és lépések a következők:

1-Nyomja meg a következő gombot az első "Üdvözöljük" ablakban

2-A következő ablak a tartózkodási hely konfigurálása lesz. válassza ki országát, nyelvét és időzónáját. ezt követően erősen ajánlott ellenőrizni az "Angol nyelv használata" lehetőséget, mivel ez lesz az operációs rendszer kezelőfelületének nyelve. ELLENŐRIZNI A "US MAGYAR Billentyűzet elrendezési doboz" MUNKÁRA ANGOL BILLENTYŰZETET KELL!

3-Ezután meg kell adnia a málna jelszavát, ez fontos a biztonság szempontjából, de változatlanul hagyjuk ezt a projektet. ne feledje, hogy az alapértelmezett felhasználónév és jelszó:

felhasználónév: pi

jelszó: málna

4-A következő ablakban a raspberryPi kapcsolódik a WiFi hálózathoz. válassza ki a wifi nevét, és írja be a wifi jelszavát

A következő lépésben felkérik a málna pi könyvtárak és a rendszerfájlok frissítésére. ez a lépés hatalmas időt vesz igénybe (talán órákban), de nagyon fontos lépés minden alkalommal, amikor új málna pi készül.

6-a frissítés befejeztével a rendszer újraindítja a rendszert. tedd ezt most.

Nagyszerű munka! Most van egy frissített rendszerünk, még néhány dolgot kell tennünk a rendszer működésének beállításához, de most elkezdjük használni a LinuxCommand Line -t.

4. lépés: 1-3: A parancssor használata az Rpi beállítások beállításához

1-3: A parancssor használata az Rpi beállítások beállításához
1-3: A parancssor használata az Rpi beállítások beállításához
1-3: A parancssor használata az Rpi beállítások beállításához
1-3: A parancssor használata az Rpi beállítások beállításához
1-3: A parancssor használata az Rpi beállítások beállításához
1-3: A parancssor használata az Rpi beállítások beállításához

Miután befejezte az újraindítást a rendszerfrissítésről, a rendszer a rendszerindítást követően megjeleníti a felhasználó asztalát. Ha most a képernyő bal felső sarkába nézel, találsz néhány gombot, egy gombot raspberryPi logóval, amely az Rpi menügomb, egy gömb alakú, amely az internetes böngésző, egy mappa gomb, amely … és végül egy gomb fekete képernyős ablakkal, amely minden linuxos rendszer legfontosabb gombja, a Parancssor. Ha megnyomja a gombot, megjelenik egy fekete ablak.

A parancssor az, ahogyan mindenki interakcióba lép és használja a linux rendszert, ahogyan a windowsnak is csak az özvegyeknél van saját parancssora, nem kell túl gyakran használni. a linuxban ez az alapvető dolog, amit minden linux felhasználónak meg kell tanulnia és el kell sajátítania. a parancssort használhatják a …. COMMANDS! amit a fekete ablakban lát, az a parancssor, amely arra vár, hogy a felhasználó megírja a parancsot és végrehajtsa. ebben az útmutatóban minden parancsot megadunk a projekt végrehajtásához, ezért ne aggódjon.

a legelső Linux parancs, amelyet használni fogunk, egy másik konfigurációs parancs, vegye figyelembe, hogy ezentúl az összes parancs egy kóddobozba kerül, így meg tudja különböztetni a szokásos lépéstől. Hozza elő a billentyűzetet, írja be a következőt, és nyomja meg az enter billentyűt:

sudo raspi-config

Ha ezt helyesen teszi, látni fogja, hogy a képernyő kékre vált, és közepén szürke kis doboz található (lásd a képet). ezt használjuk a végső konfiguráció elkészítéséhez, mielőtt elkezdjük a kódolást.

Most a billentyűzet nyilaival kell navigálnia ebben a menüben.

1-Ugrás az Interfész beállításai >> I2C >> IGEN >> nyomja meg az Enter billentyűt. ez lehetővé teszi az I2c kommunikációs protokollt, hogy használhassuk az RTC -t

2-Ugrás a Speciális beállítások >> Fájlrendszer kibontása ponthoz.

és ez az összes konfiguráció, amire szüksége van ebből az ablakból. a főoldalon menjen le, és nyomja meg az Enter billentyűt a "befejezés" és az "IGEN" gomb megnyomásával a rendszer újraindításához.

Miután a rendszer befejezte az újraindítást, mindannyian befejeztük a konfigurálást! a készülék készen áll a nagy lépésekre! A következő lépés az RTC modul telepítése és a rendszerrel való használata.

5. lépés: 2. fejezet: Az RTC modul felszerelése, konfigurálása és használata

2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata
2. fejezet: Az RTC modul felszerelése, konfigurálása és használata

Az RTC (vagy valós idejű óra) modul egy kicsi eszköz, amelyen van egy kis akkumulátor, és azt teszi, amit a név is sugall, Óra! így amikor lekapcsolja a tápfeszültségről, az óra tovább működik, és nem áll le. Miért van erre szükségünk? Nos, a málna pi valóban nem tudja tárolni az óraadatokat, miután kikapcsolták, a rendszerindításkor csatlakozik az internethez, hogy frissítse a dátumot és az időt, de a probléma az, hogy nem mindig van internet -hozzáférésünk, és ez ezért van szükségünk az RTC modulra. az RTC a málna pi órájaként fog működni, így az Rpi indításakor a dátumot és időt veszi az RTC -ből, amely folyamatosan frissíti a RaspberryPi időt.

több modell létezik és az RTC -t keresi, vannak a DS1307 és a DS3231. Használhat bármilyen RTC modult, amelyet talál, amennyiben rendelkezik I2C protokoll kommunikációval (jelezheti, hogy SDA és SCL csapokat talál a modul csapjain.

mint bármi más ebben az útmutatóban, más útmutatókat is használtam a projektben elért célom eléréséhez, ez az oktatóanyag útmutatást ad Önnek, és pontosan megmondja, mit kell tennie a projekt megvalósításához, de ha módosítani vagy mélyebbre van szüksége a lépéseket, minden lépés végén linkelni fogom a gyümölcsözőbb útmutatót.

Ha készen áll az RTC modulra (forrasztja a fejlécet és helyezze be az akkumulátort), akkor a következőképpen csatlakoztathatja a RapberryPi csapokhoz:

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

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

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

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

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

vagy attól függően, hogy milyen RTC modult kapott, közvetlenül a RaspberryPi -re szerelheti (Győződjön meg róla, hogy a csapok helyesek !!! mert károsíthatja az Rpi/RTC -t)

Miután csatlakoztatta az RTC -t, konfiguráljuk a Málnát.

6. lépés: 2-1: Modul beállítása

2-1: Modul beállítása
2-1: Modul beállítása
2-1: Modul beállítása
2-1: Modul beállítása

Mielőtt elkezdené, menjen a parancssorba, és írja be:

dátum

Ez visszaadja a Raspberry aktuális dátumát és idejét, vegye figyelembe ezt a nagyon hasznos parancsot, és jegyezze fel az aktuális dátumot és időt, hogy ellenőrizni tudjuk, hogy a modul működik -e vagy sem.

Most kezdjük a telepítést, írja be az alábbiakat az Rpi könyvtárak soronkénti frissítéséhez:

sudo apt-get update

sudo apt -get -y frissítés

ha ez megtörtént, módosítanunk kell a rendszerfájlokat az i2c modul engedélyezéséhez, és hozzá kell adnunk az RTC -t, a fájlrendszer módosításához a Nano nevű szoftvert fogjuk használni. A nano egy könnyű beépített szoftver, amely alapvetően szövegszerkesztő, akárcsak az özvegyeknél. így minden parancs, amely nano -val kezdődik, majd a fájl neve, megnyitja azt a fájlt a nano szövegszerkesztőben. észrevette, hogy mi is használtunk valamit, amit Sudo -nak hívnak, röviden, a sudo biztosítékként hat a linux rendszerre, amely azt mondja a rendszernek, hogy a parancsot kiadó felhasználó az eszköz tulajdonosa, nem valaki más, és olyan jogosultságokat ad, mint a szerkesztés/ törlés a felhasználónak. például ha sudo nélkül nyitnánk meg egy nano fájlt, akkor megtekinthetnénk azt, de nem tudjuk szerkeszteni vagy törölni.

most módosítanunk kell a modulok fájlt, ezt a következőképpen írhatjuk be:

sudo nano /etc /modules

Miután ezt megtette, megtalálja a fájl tartalmát (lásd a képen). a nyílbillentyűkkel vigye a kurzort a szöveg végére, és adja hozzá a következőt:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

a mentéshez nyomja meg a CTRL+S billentyűt, a kilépéshez pedig a CTRL+X billentyűt

7. lépés: 2-2: I2C interfész

2-2: I2C interfész
2-2: I2C interfész

Most összekapcsoltuk az RTC -t és engedélyeztük az i2c -t, kössünk össze mindent.

írja be a következőt a parancssorba:

i2cdetect -y 1

üres tömböt kap, de észre fogja venni, hogy valahol van egy szám, ez a szám az RTC modul címe. az én esetemben ez 68. vegye figyelembe ezt a számot. Ha nem látja ezt a kétjegyű számot, akkor valószínűleg rosszul csatlakoztatta az RTC -t.

most módosítanunk kell az rc.local fájlt, hogy engedélyezhessük az RTC modult a rendszerindításkor, és hagyjuk, hogy elmentse a dátumot és az időt a rendszerbe. először nyissa meg az rc.local fájlt:

sudo nano /etc/rc.local

Az exit0 sor előtt adja hozzá a következőket:

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

hwclock -s

ahol 0x68 az eszköz i2c címe. Ha elkészült, nyomja meg a CTRL+S CTRL+X billentyűt, majd indítsa újra a rendszert:

sudo újraindítás

8. lépés: 2-3: Az RTC tesztelése

2-3: Az RTC tesztelése
2-3: Az RTC tesztelése

A rendszer újraindítása után ellenőrizhetjük, hogy az RTC működik -e vagy sem. első futás:

sudo hwclock -r

visszaadja a dátumot és az időt az RTC modulon. ha mást kap, győződjön meg arról, hogy helyesen hajtotta végre a lépéseket.

most, hogy módosítsuk az időt és a dátumot az RTC -n, először módosítanunk kell a dátumot és az időt a rendszeren, EZT követően az RTC módosításait. ehhez fuss:

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

és természetesen az Enter billentyű leütése előtt módosítsa a dátumot és az időt a helyi idő és dátum szerint. amint megkapja az időt az Rpi jobb oldalán, futtassa a következőt a dátum és az idő mentéséhez az RTC -n:

sudo hwclock -w

ááá és ennyi! ellenőrizheti, hogy működik -e a hwclock -r segítségével, és megnézheti, hogy az RTC -n lévő dátum helyes -e vagy sem, majd válassza le az rpi -t az internetről, majd kapcsolja ki egy ideig, majd kapcsolja be újra, és nézze meg, hogy megfelelő -e idő és dátum. végeztél!

Az RTC modul beállításával kapcsolatos teljes útmutató itt található

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

9. lépés: 3. fejezet: Azan riasztási program létrehozása

3. fejezet: Azan riasztási program elkészítése
3. fejezet: Azan riasztási program elkészítése

Az óra készítése egy dolog, persze, megnézhetjük az órát és az imaidőt, és láthatjuk, hogy mikor jön el az ideje, de nem is lenne sokkal jobb, ha hangjelzést adnánk, hogy értesítsen minket az imaidőkről? Még jobb, az ébresztést az AZAN hangjaként adjuk! nézzük meg, hogyan tudjuk ezt megvalósítani.

programozásunkhoz a python -t fogjuk használni a preferált programozási nyelvünkként, mivel a python tökéletesen illeszkedik a RaspberryPi -hez. egy kódfájl létrehozásához python -ban ugyanazt tesszük, mint egy szöveges fájl megnyitása, de most.py -ként mentjük. a program futtatásához a raspbery -ből telepített python környezetre van szükségünk, szerencsére a Raspbianhoz előre telepített python és python3 tartozik! tehát csak programoznunk kell. ebben az útmutatóban nem beszélünk a nyelvről, és nem tanítjuk meg annak működését és funkcióit, de megadom a szükséges kódokat, hogy elkészíthesse a projektet.

kezdéshez szükségünk van egy hangfájlra az előnyben részesített azan hangunkról (. WAV-ban), két fájlra van szükségünk, az egyik az al-fajr azanra, a másik a normál azanra. ha megkapja, tegye rá egy meghajtóra, és másolja a málna asztali asztalára.

most már megvannak a fájlok, kerestem a módját, hogy hogyan játszhassak le hangos audiot a málnaPi -n, és meglepetésemre nem sok módon tudtuk ezt megtenni, de ezt a választ találtam a stackoverflow -n, ami megadta nekem, amire szükségem volt

stackoverflow.com/questions/20021457/playi…

kipróbáltam ezt a módszert és bevált! hát lássuk, hogyan tudjuk megvalósítani ezt a módszert a projektünkben…

10. lépés: 3-1: Játsszunk hangot

3-1: Játsszunk hangot!
3-1: Játsszunk hangot!

először navigáljon az asztalhoz:

cd Asztal

majd készítsen új python kódfájlt:

sudo nano AzanPlay.py

ez egy új AzanPlay nevű fájlt fog létrehozni a.py python fájl kiterjesztésével, üres fekete képernyőnk lesz, hogy lehetővé tegyük a kódunk írását. egyszerűen írja le ezeket a sorokat (ügyeljen arra, hogy ne változtasson behúzást vagy szóközöket, mert ez PITHON -ban rendkívül fontos):

a pygame import mixerből

mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play (), míg mixer.music.get_busy () == Igaz: folytatás

Hol / Asztal / ahová teszi a hangfájlokat, és az "Adhan-Makkah.wav" az én hangfájlom, ami az Azan hangfelvétel makkah-ban.

most, hogy teszteljük a kódunkat, futtatjuk azt python segítségével a következő beírással:

python AzanPlay.py

és a hang elhalványul a HDMI LCD -ről vagy a Raspberrypi AUX -portjáról. ha nem hallja az LCD hangszórókból, csatlakoztasson fejhallgatót az AUX -hoz, és ellenőrizze.

11. lépés: 3-2: Szerezz imaidőt

3-2: Kérjen imaidőt
3-2: Kérjen imaidőt

Mint tudjuk, az imaidők földönként különböznek egymástól, sőt, egy adott helyen is, az évek során változik, ami azt jelenti, hogy meg kell találnunk a módját annak, hogy az imaidőt folyamatosan frissítsük a rendszerben, és ehhez specifikus és nagyon összetett függvényekre és számításokra van szükségünk a helyes végrehajtáshoz. Szerencsére testvérünk, Hamid Zarrabi-Zadeh minden szükséges funkciót egyetlen funkcióvá tett, amellyel könnyen elérhetjük a tartózkodási helyünktől és az aktuális időtől függő időt, AMAZING! a könyvtárat és a forrásfájlokat a címen találja

praytimes.org/

Tehát ezeket a fantasztikus fájlokat fogjuk használni, hogy megkapjuk az imaidőt, és megvalósítsuk a rendszerben. először töltse le a kódokat a webhelyről, és tegye egy / adhan / mappába, (mind a JS, mind a Python kódra van szükségünk).

Most menjünk arra a mappára, és teszteljük a könyvtárat, és mit tehet:

cd adhan

ott új tesztfájlt kell készítenünk a pythonban, hogy tesztelni tudjuk a függvényt:

sudo nano testAd.py

írja be ezt a kódot:

importálási időpontok

dátum -importálás dátumától tmm = praytimes. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) print (tmm)

A fájl mentése előtt módosítania kell a LATITUDE -t a hely szélességével, ugyanazt a LONGTITUDE -val, és a GMT -t az időzónára. az én esetemben ez lesz:

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

nyomtatás (tmm)

Végül CTRL-S és CTRL-X, majd futtassa a kódot:

python testAd.py

végül visszaadod a mai imaidőt, a helyedért.

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

Nagy! Most, hogy lejárt az imaidőnk, és már tudjuk, hogyan kell lejátszani a hangokat, egyesítsük ezt a két kódot egy fő kódba.

12. lépés: 3-3: A végső Azan riasztási kód elkészítése

az előző két kód befejezésével megtanultuk, hogyan kapjuk meg a pontos imaidőt a tartózkodási helyünknek megfelelően, és hogyan játsszuk le az Azan hangot. Most ezt a két kódot egyesítjük egy kódba, amelyet végső projektünkként fogunk használni, és ez a kód dolgozni fog a háttérben, mivel amikor az Azan ideje eljön, az Azan hangot játssza le.

Megírtam a teljes kódot, lemásolhatja és beillesztheti, és saját belátása szerint módosíthatja. A kód:

importálási idő

a pygame import keverőből import karakterlánc import praytimes a dátum és idő dátum dátumától, míg (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 () míg mixer.music.get_busy () == Igaz: folytassa, ha currTime == DHUHR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan- Makkah.wav ') mixer.music.play (), míg mixer.music.get_busy () == Igaz: folytassa, ha currTime == ASR: mixer.init () mixer.music.load ('/home/pi/Desktop/ Adhan-Makkah.wav ') mixer.music.play (), míg mixer.music.get_busy () == Igaz: folytassa, ha currTime == MAGHRIB: mixer.init () mixer.music.load ('/home/pi/ Asztali/Adhan-Makkah.wav ') mixer.music.play (), míg a mixer.music.get_busy () == Igaz: folytassa, ha currTime == ISHA: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play (), míg mixer.music.get_busy () == Igaz: folytatás

Ha megnézi a kódot, és összehasonlítja azt, amit korábban készítettünk, látni fogja, hogy nem sok újat csináltunk, először a szükséges könyvtárakat vettük fel, majd megnyitottuk a végtelen ciklust. a ciklusban folyamatosan kiszámítjuk az imák idejét a helyünkkel és az időzónával, és a teljes eredményt változó tmm -ben tároljuk. akkor minden imaidőt eltárolunk a tmm -től egy független változóig. így összehasonlíthatjuk az időket. ezután vesszük a rendszer idejét és tároljuk egy független változóban. végül összehasonlítjuk a rendszeridőt az imaidőkkel, ha a rendszeridő megegyezik bármelyik imaidővel, akkor az Azan hangot játssza le.

13. lépés: 4. fejezet: Az óralapok megvalósítása

4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása
4. fejezet: A figyelőfelületek megvalósítása

Annak érdekében, hogy a projekt jobban nézzen ki, az volt az ötletem, hogy órajeleket adok az LCD -hez, így jól néz ki a felhasználó számára (legalábbis jobb, mint a parancssor), ezért felbéreltem egy tervezőt, hogy több arcot tervezzen az órát, üresnek kell lennie, adat nélkül, mivel az adatokat HTML -en keresztül kell hozzáadni, így az óraterveket háttérként kell megadni, és a többi adatot, például az imádságidőt HTML -elemként lehet hozzáadni a háttérhez.

Sajnos az utasítás megírásának időpontjában a HTML ismereteim és tapasztalataim nagyon korlátozottak, ezért nem fogok sok részletet megbeszélni, mert tudom, hogy rosszul fogom csinálni a dolgokat, és nem meg akarja zavarni az embereket. de ha van némi tapasztalata a JS és a HTML terén, akkor tudnia kell, hogyan kell innen folytatni. eddig egyetlen arcot csináltam (a kéket). a terv az, hogy 14 óralap készül! 7 arc a hét mindennapjaira, és további 7 másik téma. mivel az első téma állítólag az Azkar gördülése, a másik téma pedig az iszlám GIFS -t. ettől függetlenül minden tervrajzot bele fogok foglalni ebbe az oktatóanyagba, így letöltheti.

14. lépés: 5. fejezet: Felhasználói felület megvalósítása

5. fejezet: Felhasználói felület megvalósítása
5. fejezet: Felhasználói felület megvalósítása

Utunk utolsó fejezetében néhány opcionális módosítást hajtunk végre, hogy a projekt még felhasználóbaráttá váljon, arra az esetre, ha a projektet mecsetben vagy bármely nyilvános helyen szeretnénk megvalósítani. amint azt korábban már említettük, minden városnak megvan a saját időzítése az imákhoz, és hogy ez a projekt hozzáférhető legyen az emberek szélesebb köréhez, létrehozunk egy felhasználói felületet, hogy kiválaszthassuk a kívánt várost és témát, amint bekapcsoljuk a projektet.

Ehhez a "TKinter" nevű python GUI könyvtárat fogjuk használni.

Ezt a kódot valósítottam meg annak érdekében, hogy választhassak Szaúd -Arábia öt városa, köztük Mekka között:

importálja a tkintert tk -ként

from tkinter import * from tkinter import * from tkinter import ttk import codec import import os class karl (Frame): def _init _ (self): tk. Frame._ init _ (self) self.pack () self.master.title ("Azan Time") self. button1 = Gomb (saját, szöveg = "Jeddah", magasság = 5, szélesség = 80, parancs = self.open_jeddah1) self.button2 = Gomb (ön, szöveg = "Mekka", magasság = 5, szélesség = 80, parancs = self.open_makkah1) self.button3 = Gomb (self, text = "Riyadh", height = 5, width = 80, command = self.open_riyadh1) self.button4 = Button (self, text = "Madina", magasság = 5, width = 80, command = self.open_madina1) self.button5 = Button (self, text = "Qasim", height = 5, width = 80, command = self.open_qasaim1) self.button1.grid (sor = 0, oszlop = 1, oszloppanel = 2, ragadós = W+E+N+S) self.button2.grid (sor = 1, oszlop = 1, oszloppanel = 2, ragadós = W+E+N+S) self.button3.grid (sor = 2, oszlop = 1, oszloppanel = 2, ragadós = W+E+N+S) self.button4.grid (sor = 3, oszlop = 1, oszloppanel = 2, ragadós = W+E+N+S) self.button5.grid (sor = 4, oszlop = 1, oszloppanel = 2, ragadós = 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 (order) 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 (saját): 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 ()

A kód nagynak tűnhet, de szerkesztése nagyon egyszerű. alapvetően új ablakot készítettünk, öt névgombot helyeztünk el, és öt funkciót határoztunk meg, amelyeket minden gombnyomásra meg kell hívni. ha megnyomja a gombot, a program megnyitja a megfelelő HTML -fájlt a Cities mappában, amely minden város HTML -nek megvan a város koordinátája, amikor megkapja az időt a praytimes -ből (). Miután megnyomta a gombot, a python -kód egy linux -kódot ad ki, amelyben megnyitja a HTML -fájlt a chromium böngésző segítségével, és készen áll az óralap megjelenítésére, teljes képernyős beállítással.

15. lépés: (Opcionális): Hangszóró kapcsoló hozzáadása

(Opcionális): Hangszóró kapcsoló hozzáadása
(Opcionális): Hangszóró kapcsoló hozzáadása
(Opcionális): Hangszóró kapcsoló hozzáadása
(Opcionális): Hangszóró kapcsoló hozzáadása

Amint láttuk, amikor az ima ideje eljön az Azan hangjáték, és a hang az alapértelmezett hangkimenetből (HDMI vagy AV kimenet) jön ki, és mivel HDMI kimenetre helyezzük, a hang az LCD -ről érkezik. de mi van, ha az LCD hangunk nem elég? például mi van, ha ezt egy igazi mecsetben akarjuk megvalósítani? széles külső hangszórókkal? akkor még egy NAGYON egyszerű lépést tehetünk hozzá ennek eléréséhez. egy már megépített hangszóró hangrendszer esetén csak be- és kikapcsoljuk, és meg kell vennünk a már meglévő mikrofont, és az LCD hangszórók mellé kell helyeznünk.

Ezt könnyű megtenni. a meglévő mecset mikrofont fogjuk használni, amely a hangszóróhoz van csatlakoztatva, csak a raspberryPi-re lesz szükségünk, hogy vezéreljük a teljes hangrendszert be- és kikapcsoló áramellátást. Ehhez SSR -t kell használnunk: SOLID STATE RELAY. az ilyen típusú relék kapcsolóként működhetnek, hasonlóan az átlagos kék reléhez, a különbség az, hogy az SSR -ek nagy mennyiségű váltakozó áramerősséget képesek elviselni rajta, ami a kéknél nem alkalmazható (általában legfeljebb 10A), és az SSR -eknek szüksége van csak két vezeték 3 helyett: DC+ és DC- és ennyi! az SSR másik végéhez csatlakoztathatjuk a hangszórórendszer tápkábelét, így amikor feszültséget adunk az SSR -nek, az lezárja a hangszóró rendszer váltakozó áramkörét, vagy lekapcsoljuk a feszültséget, hogy nyitott áramkör legyen, a hangszórók kikapcsolása.

van egy fogás, a RaspberryPi csapok 3.3v -ot adnak ki, nem pedig 5v -t, amire szükségünk van az SSR vezérléséhez. tehát szükségünk van egy tranzisztorra, hogy vegye a jelet az RPi érintkezőről, és 5 V -ot az RPi 5 voltos tűről. ehhez szükségünk van:

1-szilárdtest relé (minden 25A felett jó)

2-2n2222 npn tranzisztor

3-220ohm ellenállás

kövesse a fritzáló áramkört a csatlakoztatáshoz.

most a kódban hozzáadunk néhány dolgot, ami ezt a munkát segíti. először a while ciklus előtt adunk hozzá néhány sort a GPIO csapok inicializálásához:

Az importálás szakaszban adja hozzá:

importálja az RPi. GPIO -t GPIO -ként

A while ciklus előtt adja hozzá:

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

Most, a while ciklusban az Azan parancs minden lejátszásához be kell kapcsolnunk a relét, várni kell 10 másodpercet, befejezni az Azan lejátszását, majd kikapcsolni a relét. csak két sort kell hozzáadnunk, az első:

GPIO.kimenet (ledPin, GPIO. HIGH)

time.sleep (10)

ezt minden if utasítás után hozzá kell adni (AZONOSÍTÁS FONTOS!), a másik sor:

GPIO.kimenet (ledPin, GPIO. LOW)

Ezt a "folytatás" sor után kell hozzáadni. így kell kinéznie minden Azan -alkalommal:

ha currTime == FAJR:

GPIO.output (ledPin, GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-fajr.wav') mixer.music.play () közben mixer.music.get_busy () == Igaz: folytassa a GPIO.output (ledPin, GPIO. LOW)

Ajánlott: